私たちは、プレイヤーの行動に基づいてイベントを生成するいくつかのゲームサーバーを持っています。これらのイベントのいくつかを保存して統計情報を作成したいと考えています。どちらもプレイヤーの喜びだけでなく、行動を分析するためのものです。ゲームサーバーのログイベントに基づくプレーヤーの統計情報のMongoDBスキーマ設計?
私たちはMongoDBをいくつかの理由、主にパフォーマンスに関して決定しました。しかし、我々はスキーマ設計で少し苦労している。 RDBMSデータベースには長年にわたり、その通行料金があります。
とにかく、生成されるイベントは、次のようになります。player1は、weapon1でplayer2を殺しました。これらのイベントをキャッチしながら、私はserver-id、マップが実行されていることなども認識しています。私は明らかにそれが何時であるかを知っており、グループ/チームを作り出すためにプレーヤー関係をモデル化できます。
しかし、これはドキュメントモデルでどのように見えますか?
すべてのイベントをコレクションに入れて、私たちの検索にフィールドとして使用したいプロパティを追加するだけですか?または、パフォーマンス上のメリット(?)を得るためにドキュメントを含む階層を作成します。 それをすべて「行」に入れておくと、クエリを簡単にすることができますが、最適化されたすべてを実際に感じることはありません。 TONSの行があります.MongoDBが高速であっても、負荷を処理するとは確信していません。また、RDBMSデータベースのパフォーマンスは、構造を平坦化してすべてを検索可能にするだけで十分です。同じデータを何度も何度も繰り返して格納する(ユーザー)というオーバーヘッドのオーバーヘッドに加えて
「ユースケース」を絞り込むために、サンプルクエリを少し詳しく説明します。下の答えから実例をとってみると、「マップxの武器数xの武器の数」となります。しかし、2つのこと、私はほとんどの場合、 "this wwwk/month/year"を追加して、1人のユーザーにはしませんが、 "最高の殺害数を持つトッププレイヤー"のリストを作成します。時間、武器/武器(爆薬などの武器群)や他のプレイヤーとの関係などの「事実」を追加すると、モデルの設計方法が分かりません。これらの「事実」を各エントリに追加すると、 BIGDB =遅い? – Martin