非关系数据库 (NoSQL) 中的建模排名(分数)

jlm*_*564 1 google-app-engine database-design ranking nosql amazon-simpledb

我正在使用 Google App Engine,因此我使用的是非关系数据库 (NoSQL)。我的问题是:

使用得分建模排名(玩家排名)的最佳选择是什么?

例如,我的球员是:

Player { String name, int score}
Run Code Online (Sandbox Code Playgroud)

我想知道一名球员的排名(位置)并获得前 10 名球员,但我怀疑这是最好的方法。

谢谢。

dra*_*onx 5

如果您的分数已编入索引,则可以轻松执行数据存储查询并按排序顺序获取玩家。所以如果你想要前10名的球员,那是很微不足道的。

获得任意玩家的排名确实很难。我想说,如果可以的话,就避免它,如果不能,就找到一种解决方法。

例如,如果您有 50,000 名玩家,而 PlayerX 的排名为 12,345,则了解这一点的唯一方法是查询所有玩家,并检查每个玩家并保持计数,直到找到 PlayerX。

一种技巧可能是将玩家排名存储在玩家实体中,并使用每隔几个小时运行一次的 cron 作业来更新它。