推荐快速且可扩展的持久性地图-Java


问题内容

我需要磁盘支持的Map结构才能在Java应用程序中使用。它必须具有以下条件:

  1. 能够存储数百万条记录(甚至数十亿条)
  2. 快速查找-地图上的大多数操作将仅查看密钥是否已存在。这和上面的1是最重要的标准。对于常用的密钥,应该有一种有效的内存缓存机制。
  3. 持久但不需要事务性,可以承受一些失败。即乐于定期与磁盘同步,并且不需要事务性。
  4. 能够存储简单的原始类型-但是我不需要存储序列化的对象。
  5. 它不需要分发,即将全部在一台计算机上运行。
  6. 易于设置且免费使用。
  7. 无需关系查询

记录键将是字符串或长号。如上所述,读操作比写操作要频繁得多,并且大多数读操作只是检查密钥是否存在(即,不需要读取与数据相关的密钥)。每条记录将仅更新一次,并且不会删除记录。

我目前使用Bdb JE,但正在寻求其他选择。


更新资料

此后,通过减少对辅助键的依赖性,提高了我现有BDB设置上的查询性能。一些查询需要在两个辅助键上进行联接,然后通过将它们组合成一个复合键,我在查找中删除了一个间接级别,从而很好地加快了工作速度。


问题答案:

我可能会使用本地数据库。就像说Bdb
JE
HSQLDB一样。请问这种方法有什么问题?您必须有一些理由寻找替代品。

回应评论:由于问题的表现,我想您已经在使用JDBC来解决此问题,可能值得尝试HSQLB并阅读“
内存和磁盘使用 ”一章。