私のサービスには多数のユーザーイベントが継続しており、「日付D以降のイベントタイプTの発生をカウントする」などの処理を行いたいと考えています。
私たちは2つの基本的な決定をしようとしています:
何を保存しますか?すべてのイベントの保存と集約のみの保存
- (イベントログスタイル)すべてのイベントを記録し、後でカウントします。
- (時系列スタイル)毎日の単一の集約された「日付DのイベントEのカウント」を保存する
データを保存する場所
- リレーショナルデータベース(特にMySQL)
- 非リレーショナル(NoSQL)データベース内
- フラットログファイル(ネットワーク経由で集中的に収集される
syslog-ng
)
標準的な慣行とは何ですか/さまざまなタイプのシステムの比較に関する詳細はどこで読むことができますか?
追加の詳細:
- 合計イベントストリームは大きく、潜在的に1日あたり数十万のエントリ
- しかし、私たちの現在のニーズは、その中の特定の種類のイベントを数えることだけです
- 生データや集計結果にリアルタイムでアクセスする必要は必ずしもありません
私見、「すべてのイベントをファイルに記録し、後でクロールしてストリームをフィルタリングおよび集約する」は、かなり標準的なUNIXの方法ですが、私のRails-yの同胞は、MySQLでない限り、現実はないと考えているようです。