推荐一个快速且可扩展的持久映射 - Java
2022-09-01 14:26:32
我需要一个磁盘支持的Map结构来在Java应用程序中使用。它必须具有以下条件:
- 能够存储数百万条记录(甚至数十亿条)
- 快速查找 - 地图上的大多数操作将只是为了查看密钥是否已存在。这一点和上面的1是最重要的标准。对于常用键,应该有一个有效的内存缓存机制。
- 持久性,但不一定是事务性的,可能会遇到一些失败。即,很高兴定期与磁盘同步,并且不需要是事务性的。
- 能够存储简单的基元类型 - 但我不需要存储序列化的对象。
- 它不需要分发,即将在一台机器上运行。
- 设置简单,免费使用。
- 无需关系查询
记录键将是字符串或长整型。如上所述,读取将比写入更频繁,并且大多数读取将仅用于检查密钥是否存在(即不需要读取密钥关联的数据)。每条记录将仅更新一次,并且不会删除记录。
我目前使用Bdb JE,但正在寻找其他选择。
更新
此后,通过减少对辅助键的依赖性,改进了我现有 BDB 设置的查询性能。一些查询需要连接两个辅助键,通过将它们组合成一个复合键,我在查找中删除了一个间接层,这很好地加快了速度。