ソーシャルネットワークにユーザーモデル(mongodb)があります。ユーザーに関連する多くのプロパティがありますが、それらすべてが毎回必要なわけではありません。したがって、同じドキュメントに保存するか、別のモデルを作成する必要があります。
同じドキュメントに格納すると、ドキュメントのサイズが大きくなります。それはクエリ速度に影響しますか?ベストプラクティスは何ですか。
ソーシャルネットワークにユーザーモデル(mongodb)があります。ユーザーに関連する多くのプロパティがありますが、それらすべてが毎回必要なわけではありません。したがって、同じドキュメントに保存するか、別のモデルを作成する必要があります。
同じドキュメントに格納すると、ドキュメントのサイズが大きくなります。それはクエリ速度に影響しますか?ベストプラクティスは何ですか。
めったにアクセスされないデータをすべて他のドキュメントに抽出します。そうしないと、ユーザー ドキュメントが肥大化し、パフォーマンスに影響します。(コマンドでフィールド指定を使用して) ネットワーク経由で転送しないほど賢くてもfind
、それらは同じファイル内にあるため、フル スキャンのパフォーマンスが低下し、作業セットのサイズが必要以上に増加します。
フィールドの数や各フィールドのサイズについてのヒントはありませんが、@Sergio が述べているように、大きなドキュメントはワーキング セットと LRU に必要なメモリの量を増やす可能性があります。また、これらの余分なフィールドの多くをカバーする複合インデックスにインデックスを付ける必要がある場合は、特定のクエリのインデックス サイズが大きくなり、インデックスに必要な RAM の量が増える可能性があります。
ただし、速度に関しては、クラスターを正しくセットアップすれば、MongoDB はあらゆる方法で動作するように完全に設計されており、最大ドキュメント サイズは 16 MB です。
したがって、ここでの主な問題はメモリとスペースです。それを考慮して最適な速度で作業すれば、問題はありません。@Sergioが再び言ったように、主な解決策は非正規化することですが、私の主な回答の質問は次のとおりです。そのテーブルのすべてのデータを同時に必要とする頻度はどれくらいですか?