我需要想法在 Java 中实现(真正的)高性能内存数据库/存储机制。在存储 20,000+ java 对象的范围内,每 5 秒左右更新一次。
我愿意接受的一些选项:
纯 JDBC/数据库组合
JDO
JPA/ORM/数据库组合
对象数据库
其他存储机制
我最好的选择是什么?你有什么经验?
编辑:我还需要能够查询这些对象
最佳答案
你可以尝试像 Prevayler 这样的东西(基本上是一个内存中的缓存,可以为您处理序列化和备份,以便数据持久存在并且在事务上是安全的)。还有其他类似的项目。 我已经将它用于一个大型项目,它安全且速度极快。
如果它是同一组 20,000 个对象,或者至少不是每 5 秒 20,000 个新对象但有很多更改,您最好缓存更改并定期以批处理模式写入更改(jdbc 批处理更新要快得多比单独的行更新)。取决于您是否需要对每次写入进行事务包装,以及您是否需要更改日志的记录或只是聚合更改。
编辑:正如其他帖子提到的 Prevayler 我想我应该在它的作用上留下注释: 基本上,您创建一个可搜索/可序列化的对象(通常是某种 Map),它被包装在一个 Prevayler 实例中,该实例被序列化到磁盘。您不是直接对 map 进行更改,而是通过向您的 Prevayler 实例发送更改的可序列化记录(只是一个包含更改指令的对象)来进行更改。 Prevayler 的事务版本是将您的序列化更改写入磁盘,以便在发生故障时它可以加载最后一个完整备份,然后根据该备份重放更改。它是安全的,尽管您必须有足够的内存来加载所有数据,而且它是一个相当古老的 API,因此不幸的是没有通用接口(interface)。但绝对稳定并且像宣传的那样工作。
关于java - Java 中最高性能的数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/439958/