【发布时间】:2011-08-13 01:35:19
【问题描述】:
我正在开发一个项目,该项目使用基于 B-tree 的自定义 Map
我搜索并发现 Java 版的 Berkeley DB 有 java.util.Collection API(包括 Map),但为此目的使用完全成熟的数据库似乎是多余的(它使用包含许多文件的目录,有几个额外的线程用于管理)。有没有更简单的解决方案?
【问题讨论】:
我正在开发一个项目,该项目使用基于 B-tree 的自定义 Map
我搜索并发现 Java 版的 Berkeley DB 有 java.util.Collection API(包括 Map),但为此目的使用完全成熟的数据库似乎是多余的(它使用包含许多文件的目录,有几个额外的线程用于管理)。有没有更简单的解决方案?
【问题讨论】:
看看Kyoto Cabininet,一个磁盘支持的 DBM 实现。我用过以前的版本,Tokyo Cabinet - 非常好用,基本上就像原生的Map,而且速度非常快。
【讨论】:
Map 包装器应该需要几分钟。
JDBM 是一个轻量级的纯 Java B-Tree 实现。
【讨论】:
我最近遇到了同样的问题,并且查看了所有的东西,包括 NoSQL 和缓存。你想要一个基于磁盘/文件/支持的哈希图。
Berkeley DB Java 版是迄今为止最好的。它快速、可扩展且完整,但您无法在不分发源代码或从 Oracle 购买商业版本的情况下将其分发给客户。
除了重新发明轮子之外,唯一的其他选择是 JDBM2。它还有一个哈希图和一个树形图。您负责定期刷新到磁盘以防止 OutOfMemoryError,它的速度不如 Berkeley DB,但它是一个非常好的第二选择。
【讨论】: