推荐一个快速且可扩展的持久映射 - Java

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

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

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

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


更新

此后,通过减少对辅助键的依赖性,改进了我现有 BDB 设置的查询性能。一些查询需要连接两个辅助键,通过将它们组合成一个复合键,我在查找中删除了一个间接层,这很好地加快了速度。


答案 1

JDBM3 完全符合您的要求。它是一个磁盘支持的映射库,具有非常简单的API和高性能。

更新

该项目现已演变为MapDB http://www.mapdb.org


答案 2

你可能想看看 OrientDB


推荐