#tree #immutability #persistent #tree-structure #database

bin+lib ax_banyan_utils

用于处理 Banyan 树的实用工具

1 个不稳定版本

0.11.1 2023年12月18日

#2361数据结构


ax 中使用

MIT/Apache

240KB
5.5K SLoC

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

banyan tree

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

许可证

Apache2MIT

设计目标

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

树结构

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

应支持追加和批量追加。

节点结构

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

叶子构建器

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

分支构建器

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

依赖关系

~38–55MB
~1M SLoC