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

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

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

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

有帮助吗?

解决方案

SQLite的是支持内存数据库(刚连接到:memory:)的开放源码的自包含的数据库。它有许多流行的编程语言绑定。这是一个传统的基于SQL的关系型数据库,但是你没有运行一个单独的服务器 - 只是用它作为你的程序库。这是相当快。无论是速度不够快,我不知道,但它可能是值得的实验。

Java驱动程序

其他提示

,您在更新对象20K每5秒或更新20K之一每隔5秒?

什么样的对象?为什么是一个传统的RDBMS不足以?

查看 HSQL数据库普雷韦勒. 。Prevayler 是传统 RDBMS 的范式转变——我在许多项目中使用过这种范式(范式,即不是特指 Prevayler),并发现它具有真正的优点。

具体取决于您需要如何查询它,但是您研究过 memcached 吗?

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

其他选项可能包括 MySQL 内存表, , 这 APC缓存 如果您使用 PHP。

有关项目/要求的更多详细信息将会有所帮助。

这是在内存中存储?

1)一个简单的C '的malloc' 阵列,其中所有的结构将被编入索引。

2)的BerkeleyDB: http://www.oracle.com /technology/products/berkeley-db/index.html 。因为你建立你自己的索引(辅助数据库),并没有进行评估SQL表达式它是快速。

看一些这里列出的产品: http://en.wikipedia.org/维基/在memory_database

你需要什么级别的耐用性? 20000更新每5秒钟可能会是困难的最IO硬件在交易数量方面,如果你将数据写入回盘的每一个。

如果你能承受失去了一些更新,你很可能就没有问题相当便宜的硬件刷新到磁盘每100ms,如果你的数据库和操作系统支持这样做。

如果它真是一个内存数据库,你不想经常刷新到磁盘,这听起来很简单。我听说H2是相当不错的,但SQLite的可正常工作。甲适当调谐MySQL实例也能做到这一点(但也可以是更复杂时)

编年史地图 是一个 纯Java 关键价值的商店

  • 它具有真正的高性能、维持 1万写/第二,从一个单一的线.这是一个神话,一个快速的数据库不能写。
  • 无缝店和负载的任何序列化Java对象,提供了一个简单的 Map 接口
  • LGPLv3

因为你没有很多"表"一个完全成熟的SQL数据库可能是一个矫枉过正的解决方案、索引&查询可以实施一些不同的关键价值的商店它们是手工更新的香草Java代码。编年史地图 提供了机制 做出这样的更新的同时彼此隔离,如果您需要它。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top