13

任何人都可以为 Java 推荐一个轻量级、快速且希望稳定的 B-tree(或类似)库吗?

本质上,我正在寻找磁盘上的地图;类似于 BerkeleyDB JE 的东西,除了我不需要事务,对只读并发很好,并且需要它的大小约为 1/10(BSD 或 Apache 许可证也很好)。

需要纯 Java,所以没有东京/京都内阁。

实现相关Collections接口将是一个加分项(或者,原始类型的模板化接口也很好)。

JDBM看起来还不错,但它似乎在 2005 年就被放弃了(在 1.0 时,不少于)。

还有DiskBackedMap,但他们在一年前发布了一个 alpha 版,之后就没有了。

外面还有什么吗?或者上面提到的有什么经验吗?

想要的东西:

  • 进程内关系数据库(所以没有 H2、Derby、SQLite 等)
  • 分布式键值存储(没有 Redis、Memcachedb、Cassandra、Voldemort、Dumbledore 或其他)
4

4 回答 4

9

您可能会对 JDBM 的一个分支感兴趣。

http://www.kotek.net/blog/jdbm_2.1_and_beyond

GitHub:https ://github.com/jankotek/JDBM3

还,

电子邮件:jdbm@googlegroups.com

网址:http ://groups.google.com/group/jdbm

RSS:http ://groups.google.com/group/jdbm/feed/rss_v2_0_msgs.xml

编辑:

JDBM4 更名为MapDB

于 2011-03-23T19:39:44.923 回答
2

值得一提的现代项目:

  • LMDBJava允许从 Java中使用LMDB 。LMDB 不完全是 B 树,但它是一个树状结构,即总是排序的。
  • 如果您没有 sorted 属性,Chronicle Map是Java 现在最有效的随机访问无序持久堆外键值存储
于 2017-03-18T22:48:48.710 回答
1

https://github.com/jankotek/MapDB可能会做你想做的一部分。该库提供了几个持久列表、集合和映射实现,包括一个 b-tree 映射。

于 2013-04-30T12:01:49.307 回答
0

我知道,这是一个迟来的贡献。我自己不需要选择 Java DBM 库的兴奋。在某些情况下,我只需要一个来最小化内存使用量。(对于实际的持久性,我会使用 JPA。)目前在不同的州有 4 个不同的 JDBM 项目。

幸运的是,Apache 目录服务器带有一个 JDBM 库,而我激动人心的时光似乎一去不复返了!该库可以单独使用,它似乎基于四种实现之一。它也在MVNRepository上。

<dependency>
    <groupId>org.apache.directory.server</groupId>
    <artifactId>apacheds-jdbm</artifactId>
    <version>2.0.0-M5</version>
</dependency>
于 2013-01-28T13:00:00.607 回答