java - 推荐一个快速且可扩展的持久化 Map - Java

标签 java map berkeley-db persistent berkeley-db-je

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

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

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

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


更新

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

最佳答案

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

更新

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

关于java - 推荐一个快速且可扩展的持久化 Map - Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1536953/

相关文章:

c - 如何让 DBCursor->get(...) 识别我为 key.data 和 data.data 分配的内存

java - 返回组合框 javafx 的选择

c++ - 如何使用映射C++中的值获取匹配键

java - 每次请求 SharedPreference 时应用程序都会崩溃

c++ - const std::map<boost::tuples::tuple, std::string>?

javascript - ExtJS 中有 map() 函数吗?

php - 有没有人有在 PHP 中使用 berkeley db 的经验?

python - sudo easy_install bsddb3 错误 :Can't find a local Berkeley DB installation

java - 在 JLIST 中按属性查找项目

java - 在java游戏中获取用户输入