1 个不稳定版本
0.18.0 | 2023 年 12 月 18 日 |
---|
#1868 在 数据结构
每月 22 次下载
在 3 crate 中使用
180KB
4K SLoC
Banyan

Banyan 树是树冠最宽的树。它们也会长出新根,经过一段时间后可能无法与原始根区分开来。这似乎很合适。
许可证
设计目标
- 宽叶子,尽可能包含大量数据且大小大致相同
- 低深度,宽分支
- 快速遍历、过滤和随机访问
便宜地追加(可能,但需要与块存储更复杂的交互)- 不允许插入/拼接
- 允许删除
树结构
树的结构应完全由内容决定,例如与平衡树不同,平衡树会记住其历史。
应支持追加和批量追加。
节点结构
节点分为两部分。索引部分存在于父节点中,以便快速访问,值部分从父节点中链接。
叶子构建器
叶子是最大的东西。构建器会增量地编码和压缩数据。构建器的状态在任何时候都应能够持久化。存储格式也应增量(在末尾添加内容不需要更改开头)
分支构建器
与叶子总是追加不同,分支大多数时候是在最后一个索引处更新。分支以有效的 IPLD 存储为有效,因此可以由 ipfs 遍历。非链接数据是 zstd 压缩的 cbor。
依赖关系
~8–15MB
~171K SLoC