MongoDBは、ドキュメント指向のデータモデルを使用するオープンソースのデータベース管理システム(DBMS)です。リレーショナルモデルを使用せず、クエリ言語としてSQLを使用しないため、NoSQLデータベースと見なされます。
ドキュメント指向モデルにより、MongoDBは、固定スキーマを必要としない半構造化データを格納できます。 JSONドキュメントを使用することでこれを実現できます。
MongoDBは、Facebook、Google、Nokia、MTV Networks、Cisco、Forbesなど、世界最大の企業のいくつかで使用されています。
MongoDBはクロスプラットフォームのDBMSでもあり、執筆時点で現在Windows、Mac、Solaris、およびさまざまなLinuxディストリビューションをサポートしています。
MongoDBデータベースは、データを格納するためにドキュメント指向モデルを使用するという点でリレーショナルデータベースとは異なります。ドキュメント指向モデルでは、データはコレクションのドキュメント内に保存されます。リレーショナルモデルでは、データはテーブルの行内に格納されます。
コレクション
MongoDBでは、コレクションはドキュメントのグループです。コレクションには通常、同様のトピック(ユーザー、製品、投稿など)を持つドキュメントが含まれます。
したがって、コレクションは多くの点でリレーショナルモデルのテーブルに似ています。
ドキュメント
MongoDBでは、ドキュメントは JSONとして保存されます ドキュメント。 JSON(JavaScript Object Notation)は、データ交換を容易にする標準です。 JSONドキュメントは、データを階層的に表示でき、人間とコンピューターの両方で読み取ることができるという点でXMLドキュメントに似ています。
これがJSONドキュメントの例です。これは、MongoDBデータベース内のドキュメントがどのように見えるかです。
{ artistname : "Deep Purple", albums : [ { album : "Machine Head", year : 1972, genre : "Rock" }, { album : "Stormbringer", year : 1974, genre : "Rock" } ] }
_id
フィールドは、ドキュメントの一意の識別子です。 MongoDBでは、このフィールドを使用して各ドキュメントを取得/参照できます。これを提供するか、MongoDBに生成させることができます。
JSONを使用することで、JavaScriptや最も一般的なプログラミング言語を使用して、変換をほとんどまたはまったく行わずに、クエリ結果を簡単に解析できます。これは、JSONドキュメントが、C、C ++、C#、Java、JavaScript、Perl、Pythonなどの最も一般的なプログラミング言語に馴染みのある名前/ペアと配列規則を使用しているためです。これにより、MongoDBを使用するアプリケーションに組み込む必要のあるビジネスロジックの量が削減されます。
舞台裏では、MongoDBは実際にJSONドキュメントをBSONと呼ばれるバイナリエンコード形式で保存します。 BSONは、追加のデータ型をサポートし、さまざまな言語でのエンコードとデコードを効率的に行うことでJSONを拡張します。
スキーマレス
コレクション内の各JSONドキュメントには、独自の構造を含めることができます。したがって、MongoDBデータベースに入力できるデータのタイプを制限する固定スキーマはありません。
これは、データを入力する前に、最初にスキーマを作成する(つまり、テーブル、列、データ型などを定義する)必要があるリレーショナルデータベースとは対照的です。データがスキーマに準拠していない場合、データはデータベースに保存されません。
MongoDBデータベースでは、各ドキュメントに必要なフィールドまたはフィールドの数を指定する規則はありません。たとえば、コレクションの1つのドキュメントに名前、住所、電話番号が含まれ、別のドキュメントに名前と電子メールアドレスが含まれる場合があります。