为大量连接和并发写入选择什么数据库(在线游戏)

时间:2013-01-06 21:12:26

标签: database online-game

我正在为即将进行的大规模在线游戏收集信息。我有使用MEGA MASSIVE类似农场的游戏(数百万dau)的经验,而SQL数据库是很好的解决方案。我还使用了大量的在线游戏,其中使用了NoSQL数据库,并且这个特定的数据库(Mongo)不是最合适的 - 当很多连接和大量并发写入正在进行时很糟糕。

我正在寻找关于现代大规模在线游戏的事实,基准,演示以及有关其后端基础设施,特别是数据库的技术细节。

例如我对以下内容感兴趣:

  • 它能管理成千上万的连接吗?可能是一些外部工具可以提供帮助(比如pgbouncer for postgres)。
  • 它能管理成千上万的并发读写吗?
  • 磁盘空间碎片怎么样?可以在不停止数据库的情况下进行优化吗?
  • 智能复制怎么样?当master失败时,它能告诉副本中是否缺少某些数据吗?我可以安全地将奴隶传播给主人,并确切地知道缺少哪些数据并采取相应的行动吗?
  • 它可以优雅地失败吗? (比如postgres for ex。)
  • 使用生产中的好评

2 个答案:

答案 0 :(得分:0)

从硬碰撞非常罕见以及何时发生的前提开始 一些信息丢失不会是悲剧。

数据库的使用不应与日常管理密切相关 游戏。常规事件应该通过更短暂的存储来管理。一些 辅助流程应该组织临时事件,以便最终存储在数据库中。

在极端情况下,您可以想象只有一个数据库读取和一个数据库 每个会话每个字符写一次。

答案 1 :(得分:0)

您考虑过NoSQL吗?

  

NoSQL数据库系统通常针对检索进行了高度优化   附加操作并且通常提供很少的功能   记录存储(例如键值存储)。 缩短的运行时间   与完整SQL系统相比的灵活性通过标记进行补偿   获得某些数据模型的可扩展性和性能。

     

简而言之, NoSQL数据库管理系统在工作时非常有用   当数据的性质不需要时,需要大量的数据   关系模型。数据可以是结构化的,但是在使用NoSQL时   真正重要的是存储和检索伟大的能力   数据量,而不是元素之间的关系。用法   示例可能是在一个或几个中存储数百万个键值对   关联数组或存储数百万条数据记录。这个   组织对统计或实时特别有用   分析不断增长的元素列表(如Twitter帖子或者   来自大量用户的Internet服务器日志。)

有更高级别的NoSQL解决方案,例如CrouchDB,它具有内置的复制支持。