ゲームから統計を収集するアプリケーションを構築しています。基本的に、各行がゲーム イベントであるログを解析します。約 50 の異なる種類のイベントがありますが、それらの多くは関連しています。各イベントには特定の値のセットが関連付けられており、関連するイベントはこれらの属性の多くを共有しています。全体で約 50 の属性がありますが、特定のイベントには約 5 ~ 10 の属性しかありません。
バックエンドに Rails を使用したいと考えています。ほとんどのクエリはイベント タイプに関連します。つまり、特定のラウンドで 2 つのイベント タイプが互いにどのように関連するかについては特に気にしませんが、多くのラウンドで 1 つのイベント タイプからのデータを気にするだけです。どのようなスキーマを構築し、どのようなデータベースを使用する必要がありますか?
リレーショナル データベースが与えられた場合、次のことを考えました。
いくつかのテーブルしかないフラットな構造を持ちますが、イベント テーブルには、イベント属性全体と同じ数の列があります。これにより、すべての行に多くの null が発生しますが、必要なものに簡単にアクセスできます。
とりわけ、イベントの種類ごとに表を作成します。これにより、スペースを節約し、パフォーマンスを向上させることができますが、イベントが実際には個別の「アイデア」ではないことを考えると、それほど多くのテーブルを持つのは過剰に思えます。
関連するイベントをグループ化して、テーブルの数とテーブルごとの属性の数の両方を最小限に抑えます。問題はグループ化になります。これは明確には程遠いものであり、イベントのスーパータイプを適切に確立するには長い時間がかかる可能性があります。また、かなりの量の nil があるという問題を完全に解決するわけではありません。
また、MongoDB などの NoSQL データベースの使用を検討するよう提案されました。この場合には非常に当てはまるように思えますが、私はこれまで非リレーショナル データベースを使用したことがありません。それぞれのテーブルはありませんが、まだ多くの異なるモデルが必要なようです。
何か案は?