首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用DynamoDB显示游戏的前10名得分

使用DynamoDB显示游戏的前10名得分
EN

Stack Overflow用户
提问于 2018-01-14 19:21:22
回答 1查看 1.7K关注 0票数 2

我在DynamoDB中创建了一个表“分数”来存储游戏的分数。

该表具有以下属性:

  • uuid
  • 用户名
  • 得分
  • 日期时间

现在我想查询游戏的“前十名”分数(排行榜)。

在DynamoDB中,不可能在没有分区键的情况下创建索引。

那么,如何以可伸缩的方式执行此查询呢?

EN

回答 1

Stack Overflow用户

发布于 2018-01-15 15:35:46

不是的。您将始终需要分区键。DynamoDB能够按比例提供所需的速度,因为它使用物理上相近的分区键存储记录,而不是在100个不同的磁盘(或SSD,甚至服务器)上存储记录。

如果您有一个成熟的查询用例(这就是DynamoDB设计的目的)。“前10个月分数”,然后您可以将datetime散列为派生的datetime属性,如12/01/2017、01/01/2018等,然后使用它作为分区键,这样在同一个月中生成的所有分数都将被“分解”到同一个分区中,以获得最佳的查找性能。然后,您可以将评分作为排序键。

当然,您可以有其他表格(或LSI)的每周和每天的分数。或者,您甚至可以选择最细粒度的桶,并在应用程序代码中自己总结结果。您将需要拉更多的10多个记录,以获得足够接近100%的准确性,在汇总水平.我不知道。试试看。如果我处理的是金钱/佣金,那么我就不会依赖它,而是那些在乎我的游戏成绩:)

注意:如果您决定使用此路由,那么我将使用整数偏移,例如UNIX时代(四舍五入以表示本月的第一个午夜),而不是使用"12/10/2017“等作为分区值。我用友好的日期来更好地说明这种方法。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48253296

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档