1 个不稳定版本

0.18.0 2023 年 12 月 18 日

#1868数据结构

每月 22 次下载
3 crate 中使用

MIT/Apache

180KB
4K SLoC

Banyan   构建状态 最新版本 文档徽章

banyan tree

Banyan 树是树冠最宽的树。它们也会长出新根,经过一段时间后可能无法与原始根区分开来。这似乎很合适。

许可证

Apache2MIT

设计目标

  • 宽叶子,尽可能包含大量数据且大小大致相同
  • 低深度,宽分支
  • 快速遍历、过滤和随机访问
  • 便宜地追加(可能,但需要与块存储更复杂的交互)
  • 不允许插入/拼接
  • 允许删除

树结构

树的结构应完全由内容决定,例如与平衡树不同,平衡树会记住其历史。

应支持追加和批量追加。

节点结构

节点分为两部分。索引部分存在于父节点中,以便快速访问,值部分从父节点中链接。

叶子构建器

叶子是最大的东西。构建器会增量地编码和压缩数据。构建器的状态在任何时候都应能够持久化。存储格式也应增量(在末尾添加内容不需要更改开头)

分支构建器

与叶子总是追加不同,分支大多数时候是在最后一个索引处更新。分支以有效的 IPLD 存储为有效,因此可以由 ipfs 遍历。非链接数据是 zstd 压缩的 cbor。

依赖关系

~8–15MB
~171K SLoC