2016-11-23 3 views
1

私はシステム上の各ユーザーの個々のユーザーのログ情報と一般的なメタプロファイリングデータを保存するための最適なオプションを把握しようとしています。コレクションごとのユーザーまたはコレクションのコレクション

オリジナルのアイデアは「プロファイラ」コレクションを持つことで、各ドキュメントはユーザーを表します。この設計の問題は、パワーユーザーが1年以内に大量のメタデータと履歴を蓄積し、文書サイズの制限を超えてしまうことです。また、ドキュメントの構造がより深く複雑になるため、クエリが遅くなる可能性があります。

代替デザインの考え方は、各ユーザーのコレクションを作成することです。各ドキュメントには、特定の種類のプロファイリング履歴データが保持されます。これにはいくつかの利点、すなわちスピードがあります。さらに、他のユーザ(他の追跡DBを介して解決可能)との比較を実行する必要があるときには、クエリの問題を提示します。私は、1つのmongoデータベースに含まれるコレクションの数についての決定的な答えを見つけることはできません。

データベースごとに何百万ものコレクションを処理できる場合は、このデータをモデリングするためのより良いオプションを見つける必要があります。私はこれについて正しいことをしていますか?

目標は、ユーザーのインタラクション、評判追跡、時間の経過に伴う関心、定期的に使用する機能などを維持し、より豊かな体験を可能にすることです。

+1

ユーザーのコレクション+インデックス作成がおそらく最適なアプローチです。 – NPSF3000

答えて

0

2つのコレクションを作成します。ユーザー&ユーザー操作。

は、ユーザーのドキュメント内に保存するために、完全な意味を成して特定のものがあります。

  • 興味追跡評判 - ユーザーが
  • 機能を常連という(スタックオーバーフロー同様の)共通のタグを - - これは有限リスト項目でなければなりません。あなたは、キーと$彼らはあなたが後で戻って参照して処理して保存することもできますログ型構造の詳細です。一方を

ユーザーの相互作用を使用しているとして、それらをインクリメントすることができます。

また、Apache Kafkaもチェックしています。これは、LinkedInが説明しているものと似たような処理を行うために使用する分散型キューイング技術です。

関連する問題