Sorted Sets(ソート・セット)とモメント・リーダーボードの使い分け

ソート・セットやMomento Leaderboardsが、どのようにさまざまなユースケースに使用できるかを学びましょう

Momentoのリーダーボードソート・セットの違いは何ですか?なぜMomentoは両方のコレクションタイプを提供しているのでしょうか?

下の表は、Momentoリーダーボードとソートされたセットの主な違いを示しています。リーダーボードは、無制限のTTL (time to live) とリーダーボードのサイズからわかるように、ソートされたセットと比較して、よりスケーラブルで長寿命のコレクションとして最適化されています。また、リーダーボードは数値IDを必要とし、ソートセットはインクリメントメソッドを提供するなど、APIには細かな違いがあるが、これらの違いには回避策があります。重要な違いは、コレクションの予想される寿命と成長です。

注:現時点では、これらは一時的なアーキテクチャ上の制限であり、最終的にはこれら2つのコレクション・タイプの機能を統合する予定です。それまでは、ユースケースに最適なコレクション・タイプを選択することに注意する必要があります。

ソートされたセットやリーダーボードがどのような場合に最もふさわしいかを知るために、いくつかのユースケースを見てみましょう。

試合の概要

人気の対戦型マルチプレイヤーゲームを提供するゲーム会社を経営しているとします。各試合はプレイヤー数に上限があり、各ラウンドの終了時に試合概要が表示されます。ソートされたセットは、これらのマッチサマリーを表示するためのエンジニアリング要件に完全に適しています。ソートされた集合のTTLは、試合の長さと試合後のバッファ時間だけでよく、集合の要素数は各試合のプレイヤー上限と同程度にしかなりません。有限の要素セットのための一時的なランク付けされたコレクションは、ソートされたセットという枠に完璧に収まります!

シーズンランキング

ゲームに加え、貴社は競争を促し、ベストプレーヤーに報いるためにシーズンランキングも発表しています。シーズンランキングのために収集されるデータは、数週間にわたって数百万人のプレーヤーに及ぶ可能性があります。この場合、ソートされたセットよりもはるかに高いTTLを持つ数百万人のプレーヤーの記録を扱うことができるリーダーボードがはるかに適しています。

オンライン投票

さて、あなたがエンターテインメント会社を経営し、オンライン投票システムで視聴者を引きつけ、会社の年間表彰式に投票できるようにしたとしましょう。技術的な要件としては、限られた出場者に限られた時間だけ投票数を増やしたいということです。

この場合、ソートされたセットは完璧に機能します!コンテスト参加者は名前によって一意に識別され、インクリメントAPIはすべてのユーザーが投票するための低遅延な方法を提供します。コンテストが終了すると、ソートされたセットは安全に期限切れになります。Leaderboardsには要素のインクリメントAPIがなく、Leaderboardsは文字列IDではなく数値IDを使用するので、このユースケースにはあまり自然ではないでしょう。

「トレンド」リスト

次に、あなたのエンターテインメント・カンパニーで人気のあるもう一つの側面について考えてみよう: 「トレンド」リストです。このリストは、業界全体で最もホットな音楽、番組、ポッドキャスト、書籍、ゲーム、その他のメディアのスナップショットを視聴者に提供します。あなたは、様々な要素(ストリーム数や売上など)を考慮した計算式を使って各アイテムの「トレンドスコア」を決定し、オンラインで公開する「トレンド」リストを定期的に更新します。

このシナリオでは、ソートされたセットよりもMomento Leaderboardsの方が適しているでしょう。なぜなら、新しいメディアは毎日リリースされ、数週間から数ヶ月の間にランキングがどのように変化するかわからないからです。さらに、Leaderboardsは文字列ではなく数値のIDを使って要素を一意に識別するので、同じ名前のメディアアイテムにまつわる問題も避けることができます。

結論:

この記事では、Leaderboardsとソート・セットの異なる強みを説明するために、いくつかの使用例を紹介しました。ソートされたセットは、一時的なデータを含む様々なアプリケーションに最適ですが、リーダーボードは、より長期的で拡張性の高いコレクションが必要な場合に優れています。

ソートされたセットやリーダーボードがあなたのユースケースにどのように役立つのか、あなたの考えをお聞かせください!

詳しくはMomento Leaderboardsとソート・セットのドキュメントをチェックしてください、そしてDiscordでご意見をお聞かせください!