-1

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

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

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

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

4

9 回答 9

3

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

Java 驱动程序

于 2009-01-27T21:34:51.833 回答
1

您是每 5 秒更新 20K 对象还是每 5 秒更新 20K 对象之一?

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

于 2009-01-27T21:30:54.290 回答
1

查看HSQLDBPrevayler。Prevayler 是对传统 RDBMS 的一种范式转变——我在许多项目中都使用过(范式,即不是专门为 Prevayler),并发现它具有真正的优点。

于 2009-01-27T21:32:42.570 回答
1

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

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

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

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

于 2009-01-27T21:33:44.533 回答
1

内存存储?

1) 一个简单的 C 'malloc' 数组,所有结构都将被索引。

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

于 2009-01-27T21:33:46.857 回答
1

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

于 2009-01-27T21:47:17.923 回答
0

您需要什么级别的耐用性?如果您将数据写回磁盘,则每 5 秒更新 20,000 次对于大多数 IO 硬件而言,就事务数量而言可能很困难。

如果您有能力丢失一些更新,那么您可以每 100 毫秒将其刷新到磁盘,如果您的数据库和操作系统支持这样做,那么使用相当便宜的硬件就不会出现问题。

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

于 2009-01-27T21:38:17.973 回答
0

Oracle TimesTen 内存数据库。请参阅: http: //www.informationweek.com/whitepaper/Business-Intelligence/Datamarts-Data-Warehouses/oracle-timesten-in-memory-databas-wp1228511232361

于 2009-01-27T21:39:25.520 回答
0

Chronicle Map是一个纯 Java键值存储

由于您没有很多“表”,因此成熟的 SQL 数据库可能是一种过大的解决方案,索引和查询可以使用少数不同的键值存储来实现,这些键值存储由普通 Java 代码手动更新。如果您需要, Chronicle Map提供了使此类更新同时彼此隔离的机制。

于 2016-07-08T16:41:53.337 回答