何ですか MongoDB? Archi構造、特徴、事例
⚡ スマートサマリー
MongoDB これは、テーブルと行の代わりにコレクションとドキュメントを使用する、大量データストレージに使用されるドキュメント指向のNoSQLデータベースです。このリソースでは、これについて説明します。 MongoDB 機能、ドキュメントの例、主要なアーキテクチャコンポーネント、使用する理由、データモデリング、およびリレーショナルデータベースとの違いについて説明します。

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


