#tree #immutability #persistent #database

bin+lib banyan-utils

用于处理 Banyan 树的实用工具

13 个版本 (8 个重大更改)

0.10.1 2022年1月9日
0.9.0 2021年7月15日
0.2.2 2021年3月25日

#2215数据结构

每月下载量 38

MIT/Apache

225KB
5.5K SLoC

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

banyan tree

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

许可证

Apache2MIT

设计目标

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

树结构

树应该有一个完全由内容决定的结构,例如,与具有历史记忆的平衡树不同。

它应该支持追加和批量追加。

节点结构

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

叶子构建器

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

分支构建器

叶节点总是被追加,而分支大多数情况下是在最后一个索引处更新。分支以有效的IPLD存储,因此可以通过ipfs进行遍历。非链接数据是以zstd压缩的cbor格式。

依赖项

~39–55MB
~1M SLoC