データ モデリングとは、データベース内のデータの組織と、関連するエンティティ間のリンクを指します。
MongoDB は柔軟なデータモデルを持ち、次のことができます。
アプリケーションの変更に合わせてデータモデルを進化させます。既存のドキュメントを書き直したり、スキーマ移行を実行したりすることなく、新しいフィールドと新しいコンテンツタイプを追加します。データモデルを反復的に変更する方法については、データモデルの変更を参照してください。
アプリケーションコードでの使用方法に合わせて、データをモデル化してください。
必要に応じて、スキーマ検証を使用して固定構造を強制します。
MongoDBのデータ モデリングの主要原則は、まとめてアクセスされるデータはまとめて保存する必要があるということです。パフォーマンスを最適化するには、アプリケーションのデータアクセスパターンに基づいてデータモデルを構造化する必要があります。
詳細については、MongoDBのデータモデリングのベストプラクティスを参照してください。
ユースケース
ドキュメントモデルの柔軟性を活用する次の例を考えてみましょう。
お客様の会社で、各従業員がどの部門で働いているかを追跡しているとします。部門情報を
employeeコレクションに埋め込むと、1 回のクエリで関連情報を返すことができます。eコマースアプリケーションでは、製品ページの最新 5 件のレビューが表示されます。頻繁にアクセスされないため、古いレビューを含むすべてのレビューを別のコレクションに保存できます。
お客様の衣料品店では、製品カタログ用に単一ページのアプリケーションを作成する必要があるとします。製品によって属性が異なるため、ドキュメントフィールドとフィールドタイプが異なる場合があります。これらの違いに関係なく、すべての製品を 同じコレクションに保存できます。
はじめる
データモデルが論理的な構造を持ち、最適なパフォーマンスを実現できるようにするには、データベースを本番環境の増やすで 使用する前にスキーマを計画してください。データモデルを決定して実装するには、スキーマ設計プロセスに従います。
詳細
ドキュメントの関係
ドキュメントフィールドの値には、他のドキュメント、配列、ドキュメントの配列など、任意のBSON データ型を含めることができます。これらのオブジェクトは、データモデル内のさまざまなタイプの 関係 を表すために使用できます。
1 対 1 の関係: 各ドキュメントは他のドキュメント1 つにのみ関連付けられています。例、ユーザーの 医療レコードは 1 つだけです。
1 対多の関係: 各ドキュメントは、複数の他のドキュメントに関連付けられています。例、ウェブアプリケーションユーザーは多数の書き込みやコメントを持つことができます。
多対多の関係: 各ドキュメントは複数の他のドキュメントに関連付けることができ、その逆も同様です。例、学生は複数のコースに登録でき、各コースに複数の学生を含めることができます。
MongoDBでは、データを埋め込みまたは参照することで関係をモデル化できます。最適なデータリンク方法を選択することで、アプリケーションの特定のアクセス パスワードなしに合わせてデータモデルを最適化できます。
MongoDBでの関係のモデル化の詳細については、以下を参照してください。
スキーマ設計: リレーショナル データベースとドキュメント データベースの違い
MongoDBのようなドキュメントデータベースのスキーマを設計する場合は、関係データベースとの次の重要な違いを考慮してください。
関係データベースの動作 | ドキュメント データベースの動作 |
|---|---|
データを挿入する前に、テーブルのスキーマを決定する必要があります。関係データベースでデータモデルを変更することはできますが、固定されたスキーマでは、変更が依存関係参照にどのように影響するかを考慮して、より多くの事前計画が必要です。 | アプリケーションのニーズが変化するにつれて、データモデルは時間の経過とともに簡単に変更できます。 |
アプリケーションに必要なデータを返すには、多くの場合、複数の異なるテーブルのデータを結合する必要があります。 | 柔軟なデータモデルにより、アプリケーションのデータアクセスパターンに従ってデータを保存できます。例、データを埋め込むと、複数のコレクションにまたがる複雑な結合を回避できると同時に、パフォーマンスが向上し、配置のワークロードが軽減されます。 |