Java 中的 B+Tree 磁盘实现

Posted

技术标签:

【中文标题】Java 中的 B+Tree 磁盘实现【英文标题】:B+Tree on-disk implementation in Java 【发布时间】:2011-03-12 16:35:49 【问题描述】:

有谁知道在哪里可以找到磁盘上的 B+Tree 实现?我前后浏览了谷歌,不幸的是我找不到任何明智的东西。其他线程建议可能从 sqlite、sqljet 或 bdb 中获取树,但这些树嵌套在整个数据库中,您不能真正“仅仅”过滤掉 B+Tree。 我真的只是在寻找磁盘上的 B+Tree... 周围没有任何花哨的东西。

【问题讨论】:

这就是我发现的全部 - bplusdotnet.sourceforge.net - 只是因为到目前为止没有人回答并且无法判断这是一个磁盘实现还是可以调整为一个。 (上面写着“.NET”,但也有一个 java 实现!) 感谢您的链接!看起来相当不错。至少当我运行测试树文件时它在磁盘上创建了一些文件。我会在深入研究后给出反馈。 【参考方案1】:

有一个受 GDBM 启发的 Java 持久性引擎:MapDB

【讨论】:

它不完全是 GDBM,它是受 GDBM 启发的 :) 但它确实做了 B+Tree 的事情。【参考方案2】:

我过去曾实现过基于磁盘的 B+-tree。 https://github.com/myui/xbird/blob/master/xbird-open/main/src/java/xbird/storage/index/BIndexFile.java

在https://github.com/myui/xbird/blob/master/xbird-open/main/test/java/xbird/storage/index/BIndexMultiValueFileTest.java中查找用法

【讨论】:

github.com/myui/btree4j/tree/master/src/main/java/btree4j 提取为单独的 b+-tree 项目【参考方案3】:

如果您需要它用于实际使用而不是用于教育目的(学习 B+Tree 数据结构等),LMDBJava 可能是最好的解决方案,现在可以在 Java 中使用。不完全是 B+Tree,也是排序后的 key-value 存储,所以和 B+Tree 几乎是一样的。

【讨论】:

以上是关于Java 中的 B+Tree 磁盘实现的主要内容,如果未能解决你的问题,请参考以下文章

B-Tree 和 B+Tree

MySQL索引 B+tree和hash

Mysql 索引实现原理. 聚集索引, 非聚集索引

Java中Btree或B+tree的现有实现[关闭]

什么是 C 中好的开源 B-tree 实现? [关闭]

B+tree索引