当前位置:  开发笔记 > 编程语言 > 正文

Java中性能最高的数据库

如何解决《Java中性能最高的数据库》经验,为你挑选了4个好方法。

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

纯JDBC /数据库组合

JDO

JPA/ORM /数据库组合

对象数据库

其他存储机制

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

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



1> Steve B...:

你可以尝试像Prevayler这样的东西(基本上是一个处理序列化和备份的内存缓存,因此数据可以保持并且在事务上是安全的).还有其他类似的项目.我已将它用于大型项目,它安全且速度极快.

如果它是20,000个对象的相同集合,或者每5秒至少不会有20,000个新对象但需要进行大量更改,那么最好缓存更改并定期以批处理模式写入更改(jdbc批处理更新比单个行快得多)更新).取决于您是否需要每个写入都是事务性包装,以及您是否需要更改日志的记录或仅需要聚合更改.

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



2> Limbic Syste..:

我强烈推荐H2.这是一个由原作者之一完成的HSQLDB的"第二代"版本. H2允许我们对DAO层进行单元测试,而不需要实际的PostgreSQL数据库,这非常棒.

有一个活跃的网络组和邮件列表,作者托马斯·穆勒对查询非常敏感(哈哈,那里的小双关语.)



3> Dan Dyer..:

我不知道它是否是最快的选择,但每当我使用H2时我都对H2非常满意.它是由最初编写Hypersonic(后来成为HSQLDB)的同一个人编写的.

另一个据称非常快的选择是Prevayler.



4> 小智..:

这是一个古老的问题,但是现在有很多数据库的性能水平为20,000/s.选择哪个数据库取决于您要进行的数据结构和查询类型.它还取决于总体积.

我们遇到了大量时间序列数据的类似问题,大约300,000 rec/s,我们最终编写了一个新的数据库NFSdb,具有足够简单的API和良好的性能.它可以做大约2,000,000个对象写入/ s,我们没有使用ORM就离开了.存储API看起来像:

JournalFactory factory = new JournalFactory("/mnt1/data/tick");

MyObject o = new MyObject();
try (JournalWriter writer = factory.writer(MyObject.class)) {

   o.setBlah(...);
   writer.append(o);

   // more appends here
   //
   writer.commit();
}


当我尝试访问该网站时,出现“建立数据库连接时出错”。具有讽刺意味的是!
推荐阅读
135369一生真爱_890
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有