これは私のlast questionに関連しています。MongoDB - 多数の文書
ユーザーあたり大量のデータを保存するアプリがあります。以前はデータの性質上、ユーザーごとに新しいデータベースを作成することにしました。これは大きなノーを必要としていたでしょう。データベース(おそらく何百万人) - 誰かがpointed out in a commentとして、これは間違ったデザインを示していることを示しています。
私たちはデザインを変更したので、各ユーザーの全情報を1つのコレクションに保存することを考えています。つまり、1つのコレクションが1人のユーザーに正確にマッピングされます。データベースごとに12,000のコレクションが利用できるため、DBごとに12,000人のユーザーを格納できます(この制限を大きくすることもできます)。
しかし、今私の質問です - いいえには何もありますか?コレクションに含めることができるドキュメントの数。ユーザーごとにデータを保存する必要があるため、膨大な(極端なケースでは何千万もの)膨大な数のデータを必要とします。ドキュメントごとのドキュメントの数。それはMongoDBと設計上問題ありませんか?
編集
お返事ありがとうございます。コレクションごとに大量の文書を使用することは問題ありません。
アプリは特化された在庫管理システムです。各ユーザーは大きな番号を持っています。それらに関連する情報のほんの一部ではありません。それぞれの情報には、そのカテゴリの下にカテゴリと関連するものがあります。さらに、2つのコレクションはお互いのデータを参照する必要がないため、複数のコレクションに触れるインデックスは必要ありません。
ユーザーをコレクションに分けて保存するためのいくつかの利点があります。たとえば、 "user"と他の何かを常に照会する場合は、{user:1、something:1}にインデックスを付ける必要がありますが、別のコレクションでは{ 1}、スペースを節約し、クエリーをより速くします。私はこれを自分で行い、私がホスティングしている仮想ホストドメインごとに別々のコレクションを持っています。 –
理にかなっているかもしれない少数の仮想ホストドメインに対しては、何百万という問題がありました。何百万ものコレクションを持つデータベースは、現在のMongoDB管理ツールを使用して管理できなくなります。 –
Wes、あなたはいつも複合インデックスを持つことができました。また、「ユーザー/仮想ホスト/ someDomainObjectごとの1つのコレクション」モデルを使用すると、分析や集計が難しくなります。実際には、このモデルでは複数の索引ファイルが必要になるため、すべての文書を1つのコレクションに入れるだけで1つだけ必要になるため、スペースを節約することはできません。小さなオーバーヘッド(実際には、それは小さい)がありますが、そこにあります。さらに、n個の '_id'インデックスがあります。索引がRAMに格納されると、索引がRAMに収まらなくなるとすぐに問題が発生する可能性があります。したがって、1つの索引がアンロードされ、次に索引がロードされます。 –