sea*_*ers 8 leaderboard amazon-dynamodb
我正在实施一个由DynamoDB和他们支持的排行榜Global Secondary Index,如他们的开发人员指南中所述,http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/GSI.html
但是,排行榜系统非常必要的两件事是您在其中的位置,以及排行榜中的总数,因此您可以显示 2000 年中的第 1 名,或类似内容。
使用索引,行以正确的方式排序,我认为这些调用足够便宜,但我还没有找到一种方法,到目前为止,如何通过他们的文档来做到这一点。我真的希望我不必每次都得到整个表来知道一个人在其中的位置,或者整个表的计数(尽管如果不可用,这可能会被延迟、计算和存储在表在预定期间)。
我知道DescribeTable为您提供有关整个表格的信息,但我会将过滤器应用于范围键,因此这不适合此目的。
我不知道有什么有效的方法来获取玩家的排名。愚蠢的方法是从最高点的玩家开始进行查询,向下移动,不断增加计数器,直到到达目标玩家。因此,对于具有最低点的用户,您可能最终会扫描整个范围。
话虽这么说,你仍然可以毫无问题地获得前 100 名玩家(领袖)。只需从积分最高的玩家开始查询,并将查询限制设置为100。
此外,对于给定的球员,您可以在他周围找到 100 名得分相似的球员。您只需要执行两个查询,例如:
query with hashkey="" and rangekey <= his point, limit 50
query with hashkey="" and rangekey >= his point, limit 50
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1639 次 |
| 最近记录: |