2 个版本

0.1.1 2023 年 11 月 3 日
0.1.0 2023 年 10 月 3 日

#2206数据结构

MIT/Apache

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    ┃
┃           ┃
┃           ┃
┃           ┃
┃           ┃
┃           ┃
┃           ┃
┗━━━━━━━━━━━┛

条目

"条目"是此库管理的文件中最小的信息单元。条目代表任何实现了 EncodeOnHeapDecodeFromHeap 特性的数据类型。

页是一系列相同类型的条目。文件中的每一页都具有相同的字节长度。页中的所有条目必须具有相同的大小。然而,一个条目可以引用存储在堆节上的动态大小数据。

节是一系列相同类型的页。节的大小是页长度的倍数。

文件可能包含一个或多个堆节。堆存储没有任何结构的动态大小数据。

许可证

许可协议为以下之一

任选。

贡献

除非你明确声明,否则根据 Apache-2.0 许可证定义的,你提交的任何有意包含在工作中的贡献,应如上所述双重许可,不附加任何额外条款或条件。

依赖关系

~1.3–7.5MB
~44K SLoC