我目前正在研究可扩展游戏后端的数据库。从操作的角度来看,Riak看起来非常好。我可以很容易地看到如何在Riak中建模用户和游戏数据和统计数据。但我在排行榜/排行榜上遇到了麻烦。
假设我们有数百万玩家并且排名将基于单个高分数整数,那么存储排名列表的“最佳”方式是什么?我们需要获得玩家的个人排名和所有玩家的分页列表,比如排名1-100或14500-14600。分数会经常更新,玩家的等级应该实时更新。
Map / Reduce应该可以工作,但我想对实时结果来说会有点沉重。我可能完全不在这里,因为我没有做任何基准测试。
Riak Search怎么样?我根本不了解Solr,所以可能有办法做到这一点,我完全错过了阅读文档。
This blog post使用一组集合方法。来自Basho工程师,这很可能是一个很好的解决方案。但这是它在Riak唯一可行的方式吗?我们可以做一些更“优雅”的事情吗?
谢谢你的时间!
答案 0 :(得分:2)
Riak搜索(Solr)似乎是至少一些用例的自然选择。它支持排序(按最高分)和分页。但是,根据Basho的说法,deep pagination is needed时不应使用Riak搜索。它也不能超过8-10个节点。另外根据我的经验,在存储一个值和它在Solr中完全索引之间会有很大的延迟,这可能不符合你的实时要求。所以博客文章中建议的所有解决方案似乎都是正确的。