Docs Menu
Docs Home
/
MongoDBマニュアル
/ /

埋め込みデータと参照の比較

項目一覧

  • 埋め込みデータモデル
  • ユースケース
  • 埋め込みデータのクエリ
  • 参考文献
  • ユースケース
  • クエリ正規化データモデル
  • 詳細

効果的なデータモデルは、アプリケーションのニーズをサポートします。 スキーマ設計の 1 つの重要な決定は、データを埋め込む、参照を使用するかです。

関連データを単一のドキュメントに埋め込むことができます。 次の例では、 contactaccessフィールドは埋め込みドキュメントです。

関連するすべての情報を含む埋め込みフィールドを持つデータモデル。

埋め込みデータモデルは、頻繁にアクセスされるデータが複数のコレクションに重複するため、多くの場合非正規化されます。

埋め込みデータモデルを使用すると、アプリケーションは同じデータベースレコード内の関連情報をクエリできます。その結果、アプリケーションでは一般的な操作を完了するために必要なクエリ数と更新数が少なくなります。

埋め込みデータモデルは、以下のシナリオで使用します。

  • エンティティ間に「含む」の関係がある場合。 たとえば、 addressを含むcontactsドキュメント。 「 ドキュメントを使用した 1 対 1 の関係のモデル化 」を参照してください。

  • エンティティ間に1対多の関係がある場合。これらの関係では、「多数」または子ドキュメントが「1 つ」または親ドキュメントに関連して表示されます。「埋め込みドキュメントによる 1 対多の関係のモデル化」を参照してください。

埋め込みには、以下のようなメリットがあります。

  • 読み取り操作のパフォーマンス向上

  • 1 回のデータベース操作で関連データを取得できる

  • 1 回のアトミックな書き込み操作で関連データを更新できる

埋め込みドキュメント内のデータをクエリするには、ドット表記を使用します。 配列と埋め込みドキュメント内のデータのクエリの例については、以下を参照してください。

注意

ドキュメント サイズの制限

MongoDB のドキュメントは16メガバイト未満である必要があります。

大規模なバイナリ データの場合は、 GridFS を検討してください。

参照とは、あるドキュメントから別のドキュメントへのリンク(参照と呼ばれます)を含めることで、データ間の関係を保存するものです。 次の例では、 contactドキュメントとaccessドキュメントにuserドキュメントへの参照が含まれています。

参照を使用してドキュメントをリンクするデータモデル。``contact`` ドキュメントと ``access`` ドキュメントの両方に ``user`` ドキュメントへの参照が含まれています。

参照により、データが複数のコレクションに分割され、重複が行われないため、正規化されたデータモデルが作成されます。

次のシナリオで関連データをリンクするには、参照を使用します。

  • 埋め込みを使用するとデータの重複が発生しますが、重複の影響を考慮するのに十分な読み取りパフォーマンス上の利点は得られません。 たとえば、埋め込みデータが頻繁に変更される場合。

  • 複雑な多対多の関係または大規模な階層データセットを表す必要があります。

  • 関連エンティティは、単独で頻繁にクエリされます。たとえば、employee データと department データがある場合、 employee ドキュメントに部門情報を埋め込みたいと考えるかもしれません。ただし、部門リストを頻繁に検索する場合は、リファレンス付きで employee コレクションにリンクされた別の department コレクションを使用するとアプリケーションのパフォーマンスが最大限に高まります。

複数のコレクション内の正規化されたデータをクエリするために、MongoDB は次の集計ステージを提供します。

正規化されたデータモデルの例については、「ドキュメント参照を使用した 1 対多の関係のモデル化 」を参照してください。

さまざまなツリーモデルの例については、「モデルツリー構造 」を参照してください。

MongoDB を使用したデータ モデリングの詳細については、 「MongoDB アプリケーション モダナイゼーション ガイド」をダウンロードしてください。

ダウンロードには、次のリソースが含まれています。

  • MongoDB を使用したデータ モデリングの方法論に関するプレゼンテーション

  • RDBMS データモデルから MongoDB に移行するためのベストプラクティスと考慮事項を説明したホワイトペーパー

  • MongoDB のスキーマを RDBMS の同等のスキーマで参照

  • アプリケーション モダナイゼーション スコアカード

戻る

コンセプト