8

片道

コメントは投稿ドキュメントに埋め込まれています:

{
  "_id": ObjectId(12345),
  "title": "Cat ate elephant!",
  "body": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean convallis pretium vulputate.",
  "comments": [
    {"name": "Cat", "body": "MEOW!"},
    {"name": "Elephant", "body": "I was eaten by cat, lol!"},
    {"name": "Human", "body": "I am hungry!"}
  ]
}

2ウェイ

投稿とコメントの関係(別のドキュメント)。投稿には多くのコメントがあります:

// POST //
{
  "_id": ObjectId(12345),
  "title": "Cat ate elephant!"
  "body": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean convallis pretium vulputate."
}


// Comments //

{
  "_id": ObjectId(...),
  "post_id": ObjectId(12345),
  "name": "Cat",
  "body": "MEOW!"
}

{
  "_id": ObjectId(...),
  "post_id": ObjectId(12345),
  "name": "Elephant",
  "body": "I was eaten by cat, lol!"
}

{
  "_id": ObjectId(...),
  "post_id": ObjectId(12345),
  "name": "Human",
  "body": "I am hungry!"
}

どちらが良いですか?

4

3 に答える 3

3

ドキュメントが大量に書き込まれない限り、最初の方法が推奨されます。投稿に 1 分以内に 5000 件のコメントを追加する場合は、2 番目の方法を使用します。

于 2012-04-14T14:06:11.190 に答える
3

方法 1

  • 参加する必要はありません => データへの高速アクセス
  • それを行うNoSQLの方法
  • すべてのコメントはその投稿だけに関連しているだけなので、一緒に保存しないでください (タイトルと本文を一緒に保存してください ;)

15.5 メガバイトを超える大きなドキュメントがあり、大量のコメントを受け取る場合は、おそらくそれらを別の場所に保存する必要があります。これは、ドキュメントの最大サイズが 16 メガバイトであるためです。

方法 2 は RDMBS の方法です。Mongo には結合が組み込まれていないため、アプリケーションで結合する必要があります。

于 2012-04-14T14:08:16.503 に答える
2

コメントは複数の投稿に属していないため、NoSQL の Post ドキュメントに埋め込む方が理にかなっています。したがって、投稿を取得すると、すぐにコメントも 1 つのクエリで取得できます。

于 2012-04-14T14:01:52.427 に答える