Java 中最高性能的数据库

我需要一些想法来在Java中实现(真正)高性能的内存数据库/存储机制。在存储20,000多个java对象的范围内,每5秒左右更新一次。
我愿意接受以下选项:

纯 JDBC/数据库组合

断续器

JPA/ORM/数据库组合

对象数据库

其他存储机制

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

编辑:我还需要能够查询这些对象


答案 1

你可以尝试像Prepayler这样的东西(基本上是一个内存中的缓存,为你处理序列化和备份,所以数据持久存在,并且在事务上是安全的)。还有其他类似的项目。我曾将其用于一个大型项目,它既安全又快速。

如果它是同一组 20,000 个对象,或者至少不是每 5 秒 20,000 个新对象,但更改很多,则最好缓存更改并以批处理模式定期写入更改(jdbc 批处理更新比单个行更新快得多)。取决于是否需要对每次写入进行事务包装,以及是否需要更改日志的记录或仅聚合更改。

编辑:正如其他帖子提到Prepayler一样,我想我会留下一个关于它的作用的注释:基本上你创建了一个可搜索/可序列化的对象(通常是某种类型的Map),它被包装在Prepayler实例中,该实例被序列化到磁盘。无需直接对地图进行更改,而是通过向 Prevayler 实例发送可序列化的更改记录(只是包含更改指令的对象)来进行更改。Prevayler的事务版本是将序列化更改写入磁盘,以便在发生故障时可以加载最后一个完整的备份,然后根据该备份重播更改。它是安全的,尽管您必须有足够的内存来加载所有数据,而且它是一个相当古老的API,因此不幸的是没有通用接口。但绝对稳定,如广告所示。


答案 2

我强烈推荐H2。这是由原始作者之一完成的HSQLDB的“第二代”版本。H2允许我们对DAO层进行单元测试,而无需实际的PostgreSQL数据库,这真是太棒了

有一个活跃的网络组和邮件列表,作者托马斯·穆勒(Thomas Mueller)对查询反应非常迅速(哈哈,那里有点双关语。


推荐