私はシステム上の各ユーザーの個々のユーザーのログ情報と一般的なメタプロファイリングデータを保存するための最適なオプションを把握しようとしています。コレクションごとのユーザーまたはコレクションのコレクション
オリジナルのアイデアは「プロファイラ」コレクションを持つことで、各ドキュメントはユーザーを表します。この設計の問題は、パワーユーザーが1年以内に大量のメタデータと履歴を蓄積し、文書サイズの制限を超えてしまうことです。また、ドキュメントの構造がより深く複雑になるため、クエリが遅くなる可能性があります。
代替デザインの考え方は、各ユーザーのコレクションを作成することです。各ドキュメントには、特定の種類のプロファイリング履歴データが保持されます。これにはいくつかの利点、すなわちスピードがあります。さらに、他のユーザ(他の追跡DBを介して解決可能)との比較を実行する必要があるときには、クエリの問題を提示します。私は、1つのmongoデータベースに含まれるコレクションの数についての決定的な答えを見つけることはできません。
データベースごとに何百万ものコレクションを処理できる場合は、このデータをモデリングするためのより良いオプションを見つける必要があります。私はこれについて正しいことをしていますか?
目標は、ユーザーのインタラクション、評判追跡、時間の経過に伴う関心、定期的に使用する機能などを維持し、より豊かな体験を可能にすることです。
ユーザーのコレクション+インデックス作成がおそらく最適なアプローチです。 – NPSF3000