2016-11-12 4 views
0

私は10Kを超えるユーザーがいるシナリオを持っており、ユーザーごとにアクティビティログを保存する必要があります。複数のユーザーのログをMongoDBに保存する

ログは検索可能でパーマネント(ラップアラウンドバッファなど)である必要があります。

ユーザーあたり最大50,000エントリが必要です。

それがユーザーオブジェクト

{ 
    User : "my user", 
    Log : [ ..., ..., ...] 
} 

あるいは、ユーザごとのテーブルを持っている内部のコレクションとしてログエントリを保存するために理にかなっている場合、私は疑問に思って?

{ 
    User : "my user", 
    LogTableID : "my table id" 
} 

このテーブルの各エントリはログになります。

+0

特定のユーザーからのログを取得し、ページネーションを行うのが遅くなるような検索はありませんか? – Thomas

答えて

0

いいえ、どちらも意味をなさない。すべてのユーザーのログを保存するコレクションを1つだけ作成します。

user_idでインデックスすると、ユーザーによる検索が高速になります。 では、ユーザー間で集計クエリを実行できます(レポートを作成する必要があるかどうかはわかりません)。

+0

コレクションは最大500Mエントリまで拡張されますが、インデックスを格納するのに問題はありませんか?私は、ログのレビューはユーザ自身によって毎日数回行われる一般的な操作であるため、このDBの操作のほとんどはユーザがログを参照することになると述べるべきです。 – Thomas

+0

@トーマス:あなたの作業セットをサポートするのに十分なRAMがあれば、単一のコレクションに問題はありません。十分な量のラムがなければ、選択したアプローチに関係なく問題が発生します。 –

+0

それは良い点です:)私はこれを試して、ベンチマークします – Thomas

関連する問題