0

というわけで、 MongoDBのデータモデリングを学ぶためにこの動画を見てきました。一対多の関係では、話し手は 3 つの異なる種類について話します。

  1. 埋め込み配列/配列キー: 特定のドキュメントには、他のドキュメントを参照する配列となるフィールドがあります (たとえば、ユーザー ドキュメントの blog_posts 属性には、ユーザーが作成したブログ投稿のすべての ID が格納されます)。
  2. 埋め込みツリー: 他のものへの参照を含む配列を持つのではなく、完全に埋め込まれたドキュメント内にドキュメントがあります。
  3. 正規化された: 2 つのコレクションと相互間の参照があります。

では、埋め込まれた配列キーと正規化されたキーの違いは何でしょうか? 埋め込み配列も 2 つの別のコレクションを参照していませんか?

4

1 に答える 1

1

違いは簡単です (残念ながら、そのビデオでは少し紛らわしく表示されています)。

ブログ投稿 ( Post) とコメント ( ) をモデル化することを想像してくださいComment

  1. 埋め込み配列:Postドキュメントには、すべてのドキュメントのすべての ID の配列が含まれていCommentます。はComment別のドキュメント (および/またはコレクション) に保存されます。
  2. ツリー:Postドキュメントには が埋め込まれていますComment。それらは個別のドキュメントや独自のコレクションには保存されません。これは非常にうまく機能しますが、BSON ドキュメントのサイズ制限が 16 MB であるため、これを処理するのがより困難になる可能性があります。
  3. 正規化:PostドキュメントとCommentは別々に保存されます。ただし、この場合のCommentドキュメントには、 への外部キーのような参照がありPostます。postIdしたがって、たとえばと呼ばれるフィールドがある場合があります。Postに関連する を参照しCommentます。Postドキュメントに のリストが含まれていないため、このパターンは #1 とは異なりCommentsます。したがって、このオプションを使用すると、コメントの数は本質的に無制限/無制限になりますが、特定のインデックスが作成されない限り、コメントの取得がより非効率になる可能性があります ( のようにpostIdcommentDate便利な場合があります)。
于 2013-02-19T13:23:29.657 に答える