2 个版本
0.1.1 | 2023 年 11 月 3 日 |
---|---|
0.1.0 | 2023 年 10 月 3 日 |
#2206 在 数据结构
43KB
1.5K SLoC
分页数据结构
此库提供了一种简单的二进制数据格式,用于组织大量数据以进行随机只读访问。
分页文件的解剖结构
数据按节、页和条目组织。每个文件可以包含多个节,每个节包含多个页,每个页包含多个条目。第一个节/页可以以任何给定的偏移量开始,以留出潜在文件头的空间。文件还可以包含一个或多个堆节,用于存储动态大小的数据。
典型的分页文件将如下所示
┏━━━━━━━━━━━┓
┃ Header ┃
┃ ┃
┗━━━━━━━━━━━┛
┏━━━━━━━━━━━┓
┃ Section 1 ┃
┃┌─────────┐┃
┃│ Page 1 │┃
┃├─────────┤┃
┃│ Entry 1 │┃
┃│ ... │┃
┃│ Entry N │┃
┃└─────────┘┃
┃ ... ┃
┃┌─────────┐┃
┃│ Page M │┃
┃├─────────┤┃
┃│ Entry 1 │┃
┃│ ... │┃
┃│ Entry N │┃
┃└─────────┘┃
┗━━━━━━━━━━━┛
...
┏━━━━━━━━━━━┓
┃ Section P ┃
┃┌─────────┐┃
┃│ Page 1 │┃
┃├─────────┤┃
┃│ Entry 1 │┃
┃│ ... │┃
┃│ Entry N │┃
┃└─────────┘┃
┃ ... ┃
┃┌─────────┐┃
┃│ Page M │┃
┃├─────────┤┃
┃│ Entry 1 │┃
┃│ ... │┃
┃│ Entry N │┃
┃└─────────┘┃
┗━━━━━━━━━━━┛
┏━━━━━━━━━━━┓
┃ Heap ┃
┃ ┃
┃ ┃
┃ ┃
┃ ┃
┃ ┃
┃ ┃
┗━━━━━━━━━━━┛
条目
"条目"是此库管理的文件中最小的信息单元。条目代表任何实现了 EncodeOnHeap
和 DecodeFromHeap
特性的数据类型。
页
页是一系列相同类型的条目。文件中的每一页都具有相同的字节长度。页中的所有条目必须具有相同的大小。然而,一个条目可以引用存储在堆节上的动态大小数据。
节
节是一系列相同类型的页。节的大小是页长度的倍数。
堆
文件可能包含一个或多个堆节。堆存储没有任何结构的动态大小数据。
许可证
许可协议为以下之一
- Apache 许可证 2.0 (LICENSE-APACHE 或 https://apache.ac.cn/licenses/LICENSE-2.0)
- MIT 许可证 (LICENSE-MIT 或 https://open-source.org.cn/licenses/MIT)
任选。
贡献
除非你明确声明,否则根据 Apache-2.0 许可证定义的,你提交的任何有意包含在工作中的贡献,应如上所述双重许可,不附加任何额外条款或条件。
依赖关系
~1.3–7.5MB
~44K SLoC