何ですか MongoDB?導入、 Archi構造、特徴、事例
何ですか MongoDB?
MongoDB は、大容量データ ストレージに使用されるドキュメント指向の NoSQL データベースです。従来のリレーショナル データベースのようにテーブルと行を使用する代わりに、 MongoDB コレクションやドキュメントを活用します。ドキュメントは、データの基本単位であるキーと値のペアで構成されます。 MongoDB。コレクションにはドキュメントのセットと、リレーショナル データベース テーブルと同等の機能が含まれます。 MongoDB は2000年代半ば頃に登場したデータベースです。
MongoDB オプション
- 各データベースにはコレクションが含まれており、コレクションにはドキュメントが含まれています。 各ドキュメントは、フィールドの数が異なる場合があります。 各ドキュメントのサイズと内容は互いに異なる場合があります。
- ドキュメントの構造は、開発者がそれぞれのプログラミング言語でクラスとオブジェクトを構築する方法により一致しています。 開発者は、クラスは行や列ではなく、キーと値のペアによる明確な構造を持っているとよく言います。
- 行 (またはドキュメントで呼ばれるドキュメント) MongoDB) スキーマを事前に定義する必要はありません。代わりに、フィールドをその場で作成できます。
- 内で利用可能なデータモデル MongoDB 階層的な関係を表現したり、配列やその他のより複雑な構造をより簡単に保存したりできるようになります。
- スケーラビリティ – MongoDB 環境は非常にスケーラブルです。世界中の企業がクラスターを定義しており、その中にはデータベース内に約数百万のドキュメントを持つ100以上のノードを実行している企業もあります。
MongoDB 例
以下の例は、ドキュメントをどのようにモデル化できるかを示しています。 MongoDB.
- _id フィールドは次のように追加されます。 MongoDB コレクション内のドキュメントを一意に識別します。
- 注意すべき点は、RDBMS では通常、注文データ (OrderID、Product、および Quantity ) が別のテーブルに保存されるのに対し、 MongoDB 実際には、コレクション自体に埋め込みドキュメントとして保存されます。これは、データのモデル化方法における重要な違いの 1 つです。 MongoDB.
の主要コンポーネント MongoDB Archi構造
以下に、で使用される一般的な用語のいくつかを示します。 MongoDB
- _id – これはあらゆる場合に必須のフィールドです。 MongoDB 書類。 _id フィールドは、 MongoDB 書類。 _id フィールドはドキュメントの主キーのようなものです。 _id フィールドなしで新しいドキュメントを作成する場合、 MongoDB フィールドが自動的に作成されます。たとえば、上記の顧客テーブルの例を見ると、Mongo DB はコレクション内の各ドキュメントに 24 桁の一意の識別子を追加します。
_Id | 顧客ID | 顧客名 | オーダーID |
---|---|---|---|
563479cc8a8a4246bd27d784 | 11 | Guru99 | 111 |
563479cc7a8a4246bd47d784 | 22 | トレバー・スミス | 222 |
563479cc9a8a4246bd57d784 | 33 | ニコール | 333 |
- 収集 – これは次のグループ化です。 MongoDB 書類。コレクションは、次のような他の RDMS で作成されるテーブルと同等です。 Oracle またはMS SQL。コレクションは単一のデータベース内に存在します。概要からわかるように、コレクションはいかなる構造も強制しません。
- カーソル – これはクエリの結果セットへのポインタです。 クライアントはカーソルを反復処理して結果を取得できます。
- データベース – これは、テーブルのコンテナである RDMS のようなコレクションのコンテナです。各データベースは、ファイル システム上に独自のファイル セットを取得します。あ MongoDB サーバーには複数のデータベースを保存できます。
- ドキュメント – のレコード MongoDB コレクションは基本的にドキュメントと呼ばれます。ドキュメントはフィールド名と値で構成されます。
- フィールド – ドキュメント内の名前と値のペア。ドキュメントには 11 個以上のフィールドがあります。フィールドはリレーショナル データベースの列に似ています。次の図は、キーと値のペアを持つフィールドの例を示しています。次の例では、CustomerID と XNUMX はドキュメントで定義されているキーと値のペアの XNUMX つです。
- JSONの – これはとして知られています Javaスクリプト オブジェクト表記。これは、構造化されたデータを表現するための、人間が判読可能なプレーンテキスト形式です。JSON は現在、多くのプログラミング言語でサポートされています。
_id フィールドと通常のコレクション フィールドの主な違いについて簡単に説明します。 _id フィールドは、コレクション内のドキュメントを一意に識別するために使用され、によって自動的に追加されます。 MongoDB コレクションが作成されたとき。
なぜ使うの? MongoDB?
以下に、なぜ使い始めるのかについての理由をいくつか示します。 MongoDB
- ドキュメント指向 – 以来 MongoDB NoSQL タイプ データベースでは、データをリレーショナル タイプ形式で保持するのではなく、データをドキュメントに保存します。これにより、 MongoDB 非常に柔軟で、実際のビジネス世界の状況や要件に適応できます。
- アドホッククエリ – MongoDB フィールドによる検索、範囲クエリ、正規表現検索をサポートします。ドキュメント内の特定のフィールドを返すクエリを作成できます。
- インデックス作成 – インデックスを作成して、検索のパフォーマンスを向上させることができます。 MongoDB。内の任意のフィールド MongoDB 文書にインデックスを付けることができます。
- レプリケーション – MongoDB レプリカ セットで高可用性を実現できます。レプリカ セットは 2 つ以上の mongo DB インスタンスで構成されます。各レプリカ セット メンバーは、いつでもプライマリ レプリカまたはセカンダリ レプリカの役割を果たすことができます。プライマリ レプリカは、クライアントと対話し、すべての読み取り/書き込み操作を実行するメイン サーバーです。セカンダリ レプリカは、組み込みのレプリケーションを使用してプライマリのデータのコピーを維持します。プライマリ レプリカに障害が発生すると、レプリカ セットは自動的にセカンダリに切り替わり、セカンダリがプライマリ サーバーになります。
- 負荷分散 – MongoDB シャーディングの概念を使用して、データを複数に分割することで水平方向にスケーリングします。 MongoDB インスタンス。 MongoDB 複数のサーバー上で実行し、負荷のバランスを調整したり、データを複製したりして、ハードウェア障害が発生した場合でもシステムを稼動し続けることができます。
におけるデータモデリング MongoDB
「はじめに」セクションで見たように、次のデータは MongoDB 柔軟なスキーマを持っています。とは異なり SQL データベースでは、データを挿入する前にテーブルのスキーマを宣言する必要があります。 MongoDBのコレクションはドキュメント構造を強制しません。この種の柔軟性こそが、 MongoDB とても強力です。
Mongoでデータをモデリングするときは、次の点に注意してください。
- アプリケーションのニーズは何ですか – アプリケーションのビジネス ニーズを調べ、アプリケーションに必要なデータとデータの種類を確認します。 これに基づいて、文書の構造が適切に決定されるようにしてください。
- データ取得パターンとは – クエリの使用量が多くなることが予想される場合は、データ モデルでインデックスを使用してクエリの効率を向上させることを検討してください。
- データベース内で挿入、更新、削除が頻繁に行われていますか?インデックスの使用を再検討するか、必要に応じてデータ モデリング設計にシャーディングを組み込んで全体の効率を向上させます。 MongoDB 環境。
との差 MongoDB & RDBMS
以下に、主な用語の違いをいくつか示します。 MongoDB およびRDBMS
RDBMS | MongoDB | Difference |
---|---|---|
表 | 収集 | In RDBMSの場合、テーブルにはデータの保存に使用される列と行が含まれますが、 MongoDB、これと同じ構造はコレクションとして知られています。コレクションにはドキュメントが含まれており、ドキュメントにはフィールドが含まれており、フィールドはキーと値のペアです。 |
行 | ドキュメント | RDBMS では、行はテーブル内の単一の暗黙的に構造化されたデータ項目を表します。で MongoDB、データはドキュメントに保存されます。 |
コラム | フィールド | RDBMS では、列はデータ値のセットを表します。これらは MongoDB フィールドとして知られています。 |
ジョイン | 埋め込みドキュメント | RDBMS では、データがさまざまなテーブルに分散される場合があり、すべてのデータの完全なビューを表示するために、データを取得するためにテーブル間で結合が形成されることがあります。で MongoDB、データは通常 1 つのコレクションに保存されますが、埋め込みドキュメントを使用して分離されます。したがって結合という概念はありません MongoDB. |
用語の違いとは別に、その他のいくつかの違いを以下に示します。
- リレーショナル データベースは、データの整合性を強化することで知られています。これは明示的な要件ではありません MongoDB.
- RDBMS ではデータが 正規化 まず、孤立したレコードや重複を防ぐためです。データを正規化するには、より多くのテーブルが必要になります。その結果、より多くのテーブル結合が発生し、より多くのキーとインデックスが必要になります。データベースが成長し始めると、パフォーマンスが問題になり始める可能性があります。繰り返しますが、これは明示的な要件ではありません MongoDB. MongoDB 柔軟性があり、最初にデータを正規化する必要はありません。