2

我正在尝试确定数据库存储我们游戏对象的最佳引擎。我一直在尝试查找有关不同表引擎的各种信息,但到目前为止还没有发现太多可以使我朝一个方向摇摆不定的信息。

格式很简单。有一个包含所有对象的表。它有一个键和一个值:

[int64] id (index)
[blob] data (binary serialized data of varying length)

我们首先考虑使用文件系统,但我们想要具有内置集群支持的东西,如果需要可以远程运行,我们不想自己编写分布层。

现在,我们正在研究 MySql,主要是因为它是免费的,而且很容易向前推进。

我们的表将容纳大约 2-5 百万行,我们需要能够在 <1ms 内进行查找/更新/插入。

目前,一行的最大 BLOB 大约为 30kb。

我看过 InnoDB、MyISAM 和 BDB,但到目前为止,除了 InnoDB 和 BDB 支持事务,而 MyISAM 不支持之外,我似乎无法收集太多关于它们的信息。我以前在游戏中使用过嵌入式 BDB,但它没有与 MySql 集成,并且因为它没有在服务器后面抽象,所以很难使用。出于同样的原因,它没有固有的集群支持。

概括

所以,我们正在寻找的是:

  • 集群支持/故障转移冗余
  • 使用 int64 键(<1ms)极快的查找/更新/插入
  • 交易支持

问题

  • 哪个是使用 int64 键的键/值表的最佳引擎?为什么?

如果有人至少能指出我正确的方向,我将不胜感激。如果您有一个比 MySql 更好的选择,它是免费的,而且界面不钝,我也很乐意探索其他选项。

我们将从Java接口。

请让我知道如何改进这个问题或更具体!谢谢!

4

1 回答 1

4

MySQL 可能不会被认为是“最合适的”。 查看这篇关于用作键值存储的数据库的维基百科文章。它提到的一些比较流行的是:

  • 阿帕奇卡桑德拉
  • 伏地魔计划
  • 里亚克
  • 大表
  • 内存缓存数据库
  • MongoDB(虽然我认为这是一个文档存储而不是 KV 存储......)
  • 伯克利数据库
于 2013-09-14T00:22:19.537 回答