3

我正在为即将到来的大型在线游戏收集信息。我在 MEGA MASSIVE 类农场游戏(数百万 dau)方面拥有丰富的经验,而 SQL 数据库是很好的解决方案。我还使用过使用 NoSQL 数据库的大型在线游戏,而这个特定的数据库(Mongo)并不是最合适的——当大量连接和大量并发写入发生时很糟糕。

我正在寻找有关现代大型在线游戏的事实、基准、演示以及有关其后端基础架构(尤其是数据库)的技术细节。

例如我感兴趣:

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

2 回答 2

0

首先假设硬崩溃是极其罕见的,当它们发生时,它不会是一些信息丢失的悲剧。

数据库的使用不应与游戏的日常管理强耦合。应该通过更多的临时存储来管理日常事件。一些辅助进程应该组织临时事件以最终存储在数据库中。

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

于 2013-01-06T21:24:29.457 回答
0

你考虑过NoSQL吗?

NoSQL 数据库系统通常针对检索和追加操作进行了高度优化,并且除了记录存储(例如键值存储)之外,通常提供的功能很少。与完整的 SQL 系统相比,运行时灵活性的降低可以通过某些数据模型的可扩展性和性能的显着提升来弥补。

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

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

于 2013-01-06T21:39:12.407 回答