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

Mongodb 实时社交游戏排行榜的正确数据库技术,mongodb,scale,database,Mongodb,Scale,Database,如果我的问题不符合SE的规则,我想开始道歉 我们正在设计一款可以支持数百万玩家的社交游戏,我有一个非常具体的问题 假设一个玩家看起来像这样: { ID: "423erRRWEfwm432we", Name: "Friend A", Score: 125, AvatarType: 3.... } 现在,当有人登录游戏时,我们希望加载他所有朋友的分数,以显示给他-现在一个人最多可以有2000个朋友 我想知道什么是最有效和可扩展的DB tech+方法来加载我朋友的所有数据分数、姓名、头像等-假设这应

如果我的问题不符合SE的规则,我想开始道歉

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

假设一个玩家看起来像这样:

{ ID: "423erRRWEfwm432we", Name: "Friend A", Score: 125, AvatarType: 3.... }
现在,当有人登录游戏时,我们希望加载他所有朋友的分数,以显示给他-现在一个人最多可以有2000个朋友

我想知道什么是最有效和可扩展的DB tech+方法来加载我朋友的所有数据分数、姓名、头像等-假设这应该是相当实时的,而且玩家会经常登录

编辑:
我想我应该说得更具体一点,我对RDBME和NoSQL DBs非常精通-我的问题是实现这一点的最有效/可扩展的方式是什么-我们目前正在生产游戏中使用分片MongoDB环境,我们不愿意从它的性能上说一点。

,你有一个表ie播放器,有一个自我参考ie播放器可能有0个或更多的朋友也是玩家。因为一个玩家也可能是0个或更多玩家的朋友,所以它被称为多对多参考。解决此问题的常用方法是在两个表之间放置另一个表。在您的案例中,这两个表是同一个表。因此,创建一个名为FRIENDS或其他什么的表,包含两列:ID和FRIEND\u ID。然后为每个朋友关系创建一行。您只需加入/查找该引用即可获得已登录玩家的好友列表


该解决方案的实际细节/语法因数据库而异。

嘿,谢谢你的回复-我想我应该更具体一些-我编辑了回复,以便更好地解释我们的情况。我在编辑中没有看到任何改变我答案的内容。。解决方案仍然是创建一个关系表来链接玩家和朋友。不过,我对MongoDB不太熟悉,所以你必须弄清楚如何在那里应用它。嘿@同上,再次感谢-我会尝试在这里扩展-我们正在做一个有数百万玩家的社交游戏,可以有数千个朋友,这些将定期访问我们在峰值时看到的大约650K RPM的分数-使用RDBMS将扼杀我们的性能,并且在这方面不会真正改善任何东西。使用RDBMS将扼杀我们的性能不确定我是否真的相信这句话。。。但不管怎样。你试过了吗?你有没有证明这会扼杀你的表现?或者你只是在对关系数据库进行假设??谷歌快速搜索发现了这一点:在他们的例子中,甲骨文处理了几千个更新。。每秒。。。我认为大多数RDBMS可以非常轻松地处理速度非常慢的650/分钟;在课程开发中尝试一下,每分钟650000次,现在我们看到每秒大约20000次更新