システムに (ID ごとに) アイテムの投票を保存する必要があります。500万票くらいはあると思います。各投票は次のもので構成されます。
- 投票されたアイテムのID
- ユーザーデータ1
- ユーザーデータ2
- 日付時刻
「userdata」フィールドは、投票の最後に不正行為者を検出するために使用されます。投票中は、すべての投票を登録する必要があります。
2 種類の情報を取得できる必要があります。
- 約 1 分ごと) 各「投票アイテムの id」が持っている投票数
- 約1時間ごと)「ユーザーデータ」フィールドにいくつかのフィルターを適用した後、各「投票されたアイテムのID」が持っている投票数(両方が特定の日時間隔で一意である必要があるなど)...私はしませんこれらのフィルターを SQL クエリの形式で記述できるようにする必要があります... ~500 万票すべてを反復処理し、結果を持つ新しいテーブル/データ構造を作成して、それをアプリケーションに返したい
投票のINSERTionsは大したことではありません(1秒あたり約2なので、どのDBでもうまく処理できると思います)
DBの反復処理とフィルターの作成に必要な「スクリプト」のため、mongoDBのようなものに傾いています。しかし、ストアド プロシージャまたはキー値 (Redis? 5mi 票は 2 GB 未満の RAM に収まる必要があります) DB の SQL で解決できるのでしょうか?