在C++或C中寻找基于磁盘的B +树实现

Lau*_*nis 26 c c++ b-tree data-structures

我正在寻找一个轻量级的开源分页B +树实现,它使用磁盘文件来存储树.

到目前为止,我只发现了基于内存的实现,或一些有关于QT(?!)的依赖,甚至不进行编译.

现代C++是首选,但C也会这样做.

我更喜欢避免完全嵌入式DBMS解决方案,因为:1)对于我的需求裸骨索引,可以使用最简单的磁盘文件组织就足够了,不需要并发性,原子性和其他一切.2)我使用它来构建我自己的索引,并且很可能会改变一些算法和存储布局.我想以最少的努力做到这一点.它不会是生产代码.

Vij*_*hew 9

http://people.csail.mit.edu/jaffer/WB.

您还可以考虑从开源可嵌入数据库中重用B-Tree实现.(BDB,SQLite等)


DaC*_*own 1

我很确定这不是您正在寻找的解决方案,但是您为什么不自己将树存储在文件中呢?您所需要的只是一种序列化方法和 if/ofstream。

基本上你可以这样序列化它:转到根,在文件中写入“0”,分隔符如“|”,根中的元素数量,然后是所有根元素。对级别 1 重复“1”,依此类推。只要您不更改级别并保持级别索引,空叶子可能看起来像 2|0。