如何在DynamoDB全局二级索引和总索引中检索行的位置?

问题描述 投票:4回答:3

我正在实施排行榜,该排行榜由DynamoDB及其Global Secondary Index备份,如开发人员指南http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/GSI.html中所述

但是,对于排行榜系统非常必要的两件事是您在排行榜系统中的位置,以及排行榜系统中的总数,因此您可以显示2000中的#1或类似内容。

使用索引,以正确的方式对行进行排序,我认为这些调用足够便宜,但是到目前为止,我还无法找到一种方法来通过它们文档。我真的希望我不必每次都获得整个表格来知道一个人在其中的位置或整个表格的数量(尽管如果不可用,可能会被延迟,计算和存储在外部)预定时段内的表格)。

我知道DescribeTable为您提供了有关整个表的信息,但是我会将过滤器应用于范围键,因此不适合该目的。

amazon-dynamodb leaderboard
3个回答
2
投票

我不知道任何有效的方法来获得玩家的排名。愚蠢的方法是从最高点的播放器开始进行查询,向下移动,不断增加计数器,直到到达目标播放器为止。因此,对于最低点的用户,您可能最终会扫描整个范围。


2
投票

这是我们在开发应用程序时面临的完全相同的问题。以下是我们用来解决此问题的两个解决方案:


0
投票

DynamoDB的优点在于,它针对非常特定(和常见)的用例进行了高度优化。这种优化的代价是,许多其他用例无法像其他数据库那样容易地实现。不幸的是你是其中之一。话虽这么说,使用DynamoDB还是有完全有效的方法。我碰巧建立了一个与您的需求相同的应用程序。

© www.soinside.com 2019 - 2024. All rights reserved.