1个不稳定版本

0.1.0 2020年9月24日

#10 in #leaf-node

MIT/Apache

12KB
292

Rust中的B𝛆树库

Crates.io Docs MIT/APACHE-2.0 GitHub Workflow Status

这是对Dan Hulmeb𝛆-tree实现的移植。由于他在GitHub上似乎不活跃且没有继续维护该库,所以我进行了移植。

以下介绍来自原始版本。感谢Dan!

这是目标。这个项目最初是在Rust meetups上的“集体编程”实验中开始的。在聚会上,我们没有实现普通的B-tree,但这是一个起点,自从聚会以来,我做了一些进一步的修改。

想法是实现这篇2015年的论文中的B𝛆树数据结构。这是对B-tree的改进,以提高写入速度(以查询速度的某些损失为代价)。不是立即将更改推送到相关的叶节点,而是每个分支节点包含一个(持久)命令队列来缓冲更改。因此,从磁盘加载子节点的成本在多个操作中分摊。

不幸的是,查询没有更快(并且稍微慢一些,因为它们需要读取命令队列)。需要读取现有值然后更新它的操作仍然会很慢。作者添加了一个额外的操作upsert,它读取值(如果有),对其应用操作,然后写入修改后的值。upsert可以像插入一样存储到命令队列中,因此它们可以获得与插入相同的表现优势。

替代方案

贡献者

聚会中“集体”的每个成员都应该列入贡献者名单。如果你是其中之一,请发送一个拉取请求,将你的名字添加到列表中。

联系

Chojan Shang - @PsiACE - [email protected]

项目链接:https://github.com/psiace/be-tree

许可证

以下任一许可证下授权

无运行时依赖