用于简单键/值数据库的最佳存储引擎

时间:2013-09-14 00:19:59

标签: java mysql database-design innodb

我正在尝试确定数据库存储游戏对象的最佳引擎。我一直试图在不同的桌面引擎上找到各种信息,但到目前为止还没有找到太多会让我在一个方向上影响另一个方向的信息。

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

[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接口。

请告诉我如何改进这个问题或更具体一点!谢谢!

1 个答案:

答案 0 :(得分:4)

MySQL可能不会被认为是“最适合”的。 Check out this wikipedia article on databases meant to be used as key-value stores。它提到的一些比较受欢迎的是:

  • Apache Cassandra
  • Project Voldemort
  • 了Riak
  • BigTable的
  • MemcacheDB
  • MongoDB(虽然我认为这是一个文件存储而不是KV商店......)
  • Berkeley DB