java - java.util.Map 的现有基于文件的实现

标签 java b-tree dictionary

我正在开发一个项目,该项目使用基于 B 树的自定义 Map (其中 Entry 是一对整数)实现来存储 10 到 1 亿条记录,此类的代码是又慢又脏。我需要高效地实现 Map,它使用文件进行存储和少量内存。

我搜索并发现Java版的Berkeley DB有java.util.Collection API(包括Map),但为此目的使用成熟的数据库似乎是多余的(它使用包含许多文件的目录,有几个额外的线程用于管理)。有没有更简单的解决方案?

最佳答案

我最近遇到了同样的问题,并且研究了一切,包括 NoSQL 和缓存。您需要一个基于磁盘/文件/支持的 HashMap 。

Berkeley DB Java 版是迄今为止最好的。它速度快、可扩展且完整,但如果不分发源代码或从 Oracle 购买商业版本,您就无法将其分发给客户。

除了重新发明轮子之外,唯一的选择是 JDBM2。它还具有 HashMap 和 TreeMap 。您负责定期刷新到磁盘以防止 OutOfMemoryError,它的速度不如 Berkeley DB,但它是一个非常好的第二选择。

关于java - java.util.Map 的现有基于文件的实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5791159/

相关文章:

java - MappingException : Invalid path reference club. 名称!关联只能直接指向或通过其 id 属性指向

java - Selenium:通过索引提取图像

java - 在(散列)映射中搜索上一个最接近的日期/字符串

java - 更新 docker-container jre 时区

用于服务器的 Java 应用程序

c# - 使用 b-tree 索引器访问磁盘

c - 什么是 C 中好的开源 B 树实现?

animation - 是否有任何 B 树程序或网站可以直观地展示 B 树的工作原理

python - 创建现有字典的副本,但为副本分配唯一的 ID

javascript - 映射对象键: value pair to array of object arrays for JSON