13 个版本 (8 个重大更改)
0.10.1 | 2022年1月9日 |
---|---|
0.9.0 | 2021年7月15日 |
0.2.2 | 2021年3月25日 |
#2215 在 数据结构 中
每月下载量 38
225KB
5.5K SLoC
Banyan —
Banyan 树是树冠最宽的树。它们还会长出新根,经过一段时间后可能无法与原始根区分开来。这似乎很合适。
许可证
设计目标
- 肥叶子,尽可能包含数据且大小大致相同
- 低深度,肥分支
- 快速遍历,过滤和随机访问
低成本的追加(可能,但需要与块存储更复杂的交互)- 不支持插入/拼接
- 删除的可能性
树结构
树应该有一个完全由内容决定的结构,例如,与具有历史记忆的平衡树不同。
它应该支持追加和批量追加。
节点结构
节点分为两部分。一个索引部分存在于父节点中以快速访问,一个值部分从父节点链接。
叶子构建器
叶子是最大的。构建器会增量编码和压缩数据。构建器的状态应该能够在任何时刻持久化。存储格式也应该增量(在末尾添加内容不需要更改开始部分)
分支构建器
叶节点总是被追加,而分支大多数情况下是在最后一个索引处更新。分支以有效的IPLD存储,因此可以通过ipfs进行遍历。非链接数据是以zstd压缩的cbor格式。
依赖项
~39–55MB
~1M SLoC