リーダーボードを実装したいのですが、これは単純なタスクのように見えますが、非常に複雑になる可能性があることに気付きました。適切なインデックスを持つデータベースを使用することもできますが、次の操作をサポートできる効率的なデータ構造があるかどうかを知りたいです。
- 特定のプレーヤーのスコアを追加する
- 特定のプレーヤーのベストスコアを取得する
- 特定のプレイヤーのランクを取得する
- スコアが現在のプレイヤー ランクより上または下のプレイヤーを取得する
- 異なる時間枠をサポート: 今日のスコア、今週、今年など。
- 最大 100,000 プレーヤーまで拡張可能
- メモリフットプリントをできるだけ小さくする (つまり、安価なマシンで実行する)
助けてくれてありがとう!