最高性能的数据库存储机制

时间:2009-01-27 21:28:16

标签: sql database performance storage data-storage

我需要创意来实现(真正的)高性能内存数据库/存储机制。在存储20,000多个对象的范围内,每个对象每5秒左右更新一次。 我想要一个FOSS解决方案

我最好的选择是什么?你有什么经历?

我主要使用Java,但我需要数据存储区具有良好的性能,因此数据存储区解决方案不需要以Java为中心。

我还需要能够查询这些对象,我需要能够在程序启动时恢复所有对象。

9 个答案:

答案 0 :(得分:3)

SQLite是一个开源的自包含数据库,支持内存数据库(只需连接到:memory:)。它具有许多流行编程语言的绑定。它是一个传统的基于SQL的关系数据库,但您不运行单独的服务器 - 只需将其用作程序中的库。它很快。它是否足够快,我不知道,但它可能值得一个实验。

Java driver

答案 1 :(得分:1)

你是每5秒更新一次20K对象还是每5秒更新一次20K?

什么样的物品?为什么传统的RDBMS不够用?

答案 2 :(得分:1)

结帐HSQLDBPrevayler。 Prevayler是传统RDBMS的范式转换 - 我曾在许多项目中使用过(范式,即不是Prevayler),并发现它具有真正的优点。

答案 3 :(得分:1)

具体取决于您需要如何查询它,但是您是否查看过memcached?

http://www.danga.com/memcached/

如果你使用PHP,其他选项可能包括MySQL MEMORY TablesAPC Cache

有关项目/要求的更多细节会有所帮助。

答案 4 :(得分:1)

内存存储?

1)一个简单的C'movoc'数组,其中所有结构都将被编入索引。

2)berkeleyDB:http://www.oracle.com/technology/products/berkeley-db/index.html。它很快,因为您构建自己的索引(辅助数据库)并且没有要评估的SQL表达式。

答案 5 :(得分:1)

查看此处列出的部分产品:http://en.wikipedia.org/wiki/In-memory_database

答案 6 :(得分:0)

您需要多大程度的耐久性?如果您将数据写回每个光盘,则大多数IO硬件在交易数量方面可能难以每5秒更新20,000次。

如果您能够承受丢失一些更新,如果数据库和操作系统支持这样做,您可以每隔100毫秒将其刷新到光盘,而没有相当便宜的硬件问题。

如果它真的是一个你不想经常刷新光盘的内存数据库,那听起来很微不足道。我听说H2非常好,但SQLite也可以。一个经过适当调整的MySQL实例也可以做到(但可能更复杂)

答案 7 :(得分:0)

答案 8 :(得分:0)

Chronicle Map是一个纯Java 键值存储

  • 它具有非常高的性能,维持1 million writes/second from a single thread。快速数据库不能用Java编写是一个神话。
  • 无缝存储和加载任何可序列化的Java对象,提供简单的Map接口
  • LGPLv3

由于你没有很多“表”,所以一个成熟的SQL数据库可能是一个过度的解决方案,索引&可以使用少数不同的键值存储来实现查询,这些存储由vanilla Java代码手动更新。记录地图provides mechanisms可以使这些更新同时彼此隔离,如果您需要它。