mysql – 数据库游戏消息传递模式

编程之家收集整理的这篇文章主要介绍了mysql – 数据库游戏消息传递模式编程之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我正在尝试使用数据库作为游戏中消息系统的后端(有点像即时消息).我正在使用本地数据库来存储收到的消息和我的服务器上的数据库以发送它们.以下是我使用的表格:

用户
userName(varchar)
displayName(varchar)
currentGames(varchar)

消息:
发件人(varchar)
接收器(varchar)
消息(varchar)
时间戳(int)

我的计划是,当用户发送消息时,我首先将消息存储在其本地数据库中,然后将消息发送到服务器.

用户检查是否有新消息(轮询)时,他首先从其本地数据库获取最新时间戳,并使用此时间在在线数据库查询在此之后发送的所有消息.然后从数据库删除收到的所有消息.

我这样做的方式有问题吗?我正在努力为最坏的情况做准备,我不知道这种计划将如何扩展.我没有在“用户”表中使用唯一的ID,我觉得我应该这样做.由于我的数据库经验有限,我不完全理解独特的自动增量ID的重要性或它如何帮助我.任何建议/批评将不胜感激.

最佳答案
由于大多数玩家的标签是短暂的,你可能想成为游戏玩家的ID(私人)和他们的用户名(公共,至少为好友)之间进行区分,那么你需要一个本地的设计是这样的:

FRIEND  -- The local user's own tag should go in here too.
( user_id,current_gamer_tag,last_update_timestamp
)

GAME
( game_id,game_name  -- No timestamp here because the name doesn't change?
)

MESSAGE
( message_id  -- If you make this a GUID you can use it for synching with the server.,sending_user_id -- FK to FRIEND,receiving_user_id -- Also FK to FRIEND,timestamp,content
)

这在本地保存传出和传入消息,并允许消息显示聚焦于游戏者标签,同时易于与服务器同步.顺便说一下,如果你有三个或更多的游戏,你也可以考虑将receiving_user_id更改为包含收件人列表的子表.

出于很多原因,使用唯一ID非常重要.最重要的是,它允许您修改游戏玩家标签,并防止您必须在消息显示显示玩家的用户ID.这里还节省空间,因为整数,甚至bigint都小于游戏者标签.这对于可伸缩性更好.使用GUID,而不是为消息ID递增的整意味着你不会有一个“插入热点”你的服务器的消息表,将执行,只要更好,因为你的服务器消息表有内置的足够的可用空间.此外,可以在客户端生成消息ID,并且您可以非常确信当消息到达服务器时不会发生任何密钥冲突.

总结

以上是编程之家为你收集整理的mysql – 数据库游戏消息传递模式全部内容,希望文章能够帮你解决mysql – 数据库游戏消息传递模式所遇到的程序开发问题。

如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您喜欢寻找一群志同道合、互帮互助的学习伙伴,可以点击下方链接加入:
编程之家官方1群
编程之家官方2群
编程之家官方3群
编程之家官方4群

相关文章

猜你在找的MySQL相关文章

显示: phpMyAdmin 尝试连接到MySQL服务器,但服务器拒绝连接。您应该检查配置文件中的主机、用户名和密码,并确认这些信息与 MySQL 服务器管理员所给出的信息一致。 原因: 可能是修改了
<( ̄ˇ ̄)/ by my笔触 本文地址:http://www.cnblogs.com/yuxiuyan/p/6511837.html 转载请注明出处及链接! MySQL是我们经常使用的数据库处
问题描述:要将一个mysql中六个数据库导出来,使用mysqldump导出 mysqldump使用语法:mysqldump -uroot -p -S /data/mysql/db_itax_m/mys
问题描述:用户有一个这样一个需求,在一张表里会不时出现 “违规” 字样的字段,需要在出现这个字段的时候,把整行的数据删掉。这是个采集任务,如果发现有“违规”字样的数据,会整点或者什么时间进行统一上报,
问题描述:有需要mysql某几张表的需求,某个数据库某几张表,导出先检查相应的数据库和表是否存在 数据泵用法:默认导出的是表结构以及表中的数据 mysqldump -uroot -p -S /data
问题描述:将一个库中的表迁移到另一个数据库或实例下,利用ibd文件物理迁移,可适用情况为数据库起不来,强制迁移数据文件恢复 将数据库中的zabbix数据迁移到另一个库中 frm:存储表的列信息 ibd
问题描述 有业务反馈当前用户无法创建触发器和存储过程,让用户自己测试,该用户进行对表的增删改查等其他权限没有问题,这边用root用户查证,该用户拥有对当前库的所有权限,但是为什么就是创建不了触发器呢?
问题描述:将Mysql8.0.22和Mysql5.7.32部署在同一环境下 操作系统:centos7.8 数据库:Mysql8.0.22、Mysql5.7.32 版本 占用端口 实例名 数据文件 端口
微信公众号搜索 “ 程序精选 ” ,选择关注!
微信公众号搜 "程序精选"关注