2

最近MongoDBを使用して取り組んでいるプロジェクトがあります。基本的に、私のウェブサイトのコア要素は「プロジェクト」です。各プロジェクトには、ネストされた「文字列」オブジェクトが含まれます。このオブジェクトには、大量の文字列が含まれます。したがって、各プロジェクトは非常に大規模で、メガバイト以上に近づく可能性があります。そのため、私はプロジェクトを独自のコレクションに入れたいと思っています。

私が抱えている問題は、ユーザーをプロジェクトに割り当てる方法がわからないことです。ユーザーには、登録しているプロジェクトのリストを含める必要がありますか、それともプロジェクトにユーザーのリストを含める必要がありますか?いつどちらを選ぶべきですか?そして、もっと良い方法はありますか?(私はしばらくMongoDBに触れていないので、少し錆びています)

4

2 に答える 2

1

私はすぐに2つの間の深刻な停止の違いを考えることはできません。私はそれをユーザー側に維持する方が簡単かもしれないと思います:

  • 複数のユーザーが同時に退会しようとしている可能性があるプロジェクト行とは異なり、とにかくそのアトミックロックのみを持つ可能性が高いユーザー行を変更するだけなので、ユーザーはプロジェクトから退会します。したがって、ユーザー側でそれを行うと、一般的に、より良い更新と並行性が得られる可能性があります。
  • 前のポイントは、プロジェクトにサブスクライブしているユーザーにも当てはまります。
  • ユーザーの削除、ユーザー行を削除するだけです...簡単です

したがって、頭に浮かぶこれらの差し迫ったことを考慮すると、おそらくユーザー内にプロジェクトを埋め込むことを選択するでしょう。

于 2012-11-05T08:57:32.650 に答える
0

http://www.mongodb.org/display/DOCS/Schema+Designをご覧ください。あなたの場合に適用されるガイドラインは

一般に、エンティティ間の「含む」関係の場合、埋め込みを選択する必要があります。リンクを使用しないときにリンクを使用すると、データが重複する可能性があります。

ユーザーが複数のプロジェクトに登録でき、プロジェクトが複数のユーザーを登録できる場合は、プロジェクトとユーザーに別々のコレクションを用意するのが最善のようです。

于 2012-11-05T03:36:15.420 に答える