为实时社交游戏排行榜提供正确的数据库技术

时间:2015-02-09 20:16:00

标签: mongodb scale database

如果我的问题没有遵守SE的规则,我想开始道歉。

我们正在设计一款应该支持数百万玩家的社交游戏,我有一个非常具体的问题。

让我们说玩家看起来像这样:

{ ID: "423erRRWEfwm432we", Name: "Friend A", Score: 125, AvatarType: 3.... }

现在当有人登录游戏时,我们想加载他所有的朋友分数给他看 - 现在一个人最多可以有2000个朋友。

我想知道什么是最有效和可扩展的DB技术+方法来加载我的所有朋友'数据(分数,名称,头像等) - 假设这应该(相当)实时,并且玩家将要登录很多。

编辑: 我认为我应该更具体一点,我对RDBMes和NoSQL DB非常熟练 - 我的问题是实现这一目标的最有效/可扩展的方式 - 我们目前正在使用一个分片的MongoDB环境制作游戏,我们不乐意再说它的表现。

1 个答案:

答案 0 :(得分:0)

在数据库方面,你有一张桌子(即" PLAYER"),有一个自我参考(即一个玩家可能有0或更多"朋友"他们也是玩家)。由于玩家也可能是拥有0个或更多玩家的朋友,因此它被称为多对多参考。解决这个问题的常用方法是在两个表之间放置另一个表(在您的情况下,两个表是相同的表;))。因此,创建一个名为" FRIENDS"或者其他东西,有2列:ID和FRIEND_ID。然后为每个朋友关系创建1行。您只需加入/查找该引用即可获取已登录播放器的朋友列表。

该解决方案的实际细节/语法在1个数据库之间略有不同。