#b-tree #snapshot #clone #structure #unsafe #lib #implemented

no-std mem_btree

使用 Rust 实现的 BTree 数据结构,支持快照功能。不使用任何不安全库。

7 个版本

新版本 0.3.2 2024 年 8 月 10 日
0.3.1 2024 年 1 月 24 日
0.3.0 2023 年 12 月 28 日
0.2.2 2023 年 9 月 17 日
0.1.0 2023 年 9 月 10 日

#434 in 数据结构

Download history 2/week @ 2024-07-29 101/week @ 2024-08-05

每月 103 次下载

MIT/Apache

47KB
1K SLoC

rust mem_btree

使用 Rust 实现的 BTree 数据结构,支持快照功能。不使用任何不安全库。

https://crates.io/crates/mem_btree

设计

尽管 Rust 官方提供了 BTreeMap 库。但这个库不能实现写时复制/读操作,也不能实现快照,尽管你可以用 clone 代替,但 clone 的成本太高,所以这个项目通过一个非常简单的方式实现了 BTree 结构的快照。主要思路是使用 Arc 进行自由分配,然后在写的过程中,复制所有路径节点,尽管这会导致插入速度变慢。但与内存操作的慢速相比,也是有限的慢。

未来

  • 快照 ✅
  • 分割 ✅
  • 插入 ✅
  • 删除 ✅
  • 获取 ✅
  • 搜索 ✅
  • 前一个搜索 ✅
  • 前一个迭代器 ✅
  • 下一个迭代器 ✅
  • 批量写入 ✅
  • ttl ✅

基准测试

5k kv 插入

btree insert 120.064954ms
btreemap insert 73.882981ms
btreemap_arc insert 79.869725ms

btree get 102.721024ms
btreemap get 100.939223ms
btreemap_arc get 100.255662ms

btree clone 759ns
btreemap clone 453.955778ms
btreemap_arc clone 24.776548ms

无运行时依赖