我只想了解如何使用实时记录构建数据库的方法,所以不要只是投票。我不期待任何代码。
目前,我拥有一个拥有大约2千名用户的MySql数据库,但他们正在获得更多。每个玩家/用户都有几个点,通过某些动作增加或减少。
我的目标是这个数据库每秒刷新一次,有更多点的用户向上移动而其他用户向下移动......依此类推
我的问题是,对于这个"实时数据库"最好的方法是什么?记录必须每秒更新一次。在MySql中,我可以运行基于时间的动作,这些动作正在执行SQL命令,但这不是我认为最好的方式。有人可以建议一个好方法来处理这个问题吗?例如。其他数据库提供商,如MongoDB或其他任何东西?
修改
这不适用于客户端,所以由于某些基于时间的事件,我无法将其推送/发布到数据库中。解释:用户正在应用程序中训练他的角色。此培训(达到1级)需要12个小时。经过一段时间后,如果用户没有自己发送帖子请求(如果用户没有登录),则应该在数据库中自动更新记录,其他用户应该在他的个人资料中看到更新的数据。
答案 0 :(得分:1)
你需要接受排名在某种程度上会陈旧的事实。您的困境与任何其他游戏平台(或该事项的SO排名)没有什么不同。制定了业务决策,并不断审查陈旧程度。例如,在这里使用标签上的排行榜。或者最近的更改使得个人资料页面更新频率更高,而格林尼治标准时间凌晨4点左右。
考虑使用MySQL事件。它内置的功能取代了对cron任务的需求。如果有兴趣,我的个人资料页面上有3个与事件相关的链接。您可以按定时计划(您对陈旧性的容忍度)和用户'来计算排名。对他们的要求会很快(比戈登的下面快)。在另一方面,它们是陈旧的。
考虑不保存(写入)排名信息,而是专注于填写其他数据的插槽。并获得你的排名。例如,请参阅戈登的这个排名回答here。它是动态的,根据请求运行,至少在那个时刻非陈旧,并且不需要事件。
知道只有你应该决定UX的容忍度。