yykv-layout 0.0.0

Physical data layout and serialization for yykv
Documentation

yykv-layout (Physical Data Layout)

yykv-layout 定义了 YYKV 存储引擎在原始磁盘介质上的物理组织结构。它负责将内存中的复杂数据对象(DsValue)序列化为紧凑、对齐且具备自校验能力的二进制页面流,是确保存储引擎高性能与可靠性的基石。

核心设计

📑 统一页面模型 (Unified Page Model)

YYKV 不依赖文件系统,而是直接管理物理页面:

  • 页面规格: 支持 4KB (SSD 优化) 和 16KB (吞吐量优化) 等多种规格。
  • 页面类型:
    • DataPage: 存储实际的 KV 或行记录。
    • IndexPage: 存储 B-Tree 或 HNSW 索引节点。
    • MetaPage: 存储租户元数据与系统配置。

📦 变长二进制存储

  • 紧凑序列化: 针对不同数据类型(Varint, Bit-packing)优化的二进制布局。
  • 零拷贝读取: 设计上允许直接在 AlignedBuffer 上进行反序列化,避免内存拷贝。

🛡️ 数据完整性保护

  • CRC32C 校验: 每个页面头部包含循环冗余校验和,防止由于硬件故障导致的静默数据损坏。
  • 版本控制: 页面头包含版本信息,支持在线平滑升级存储格式。

物理布局

区域 说明
File Header (100B) 包含 SQLite 兼容魔数、版本号、页面大小、首个自由页指针。
Page Header 页面类型 (1B)、标志位 (1B)、校验和 (4B)、Lsn (8B)。
Page Body 实际的记录槽(Slots)或 B-Tree 节点条目。
Page Trailer 页面尾部指针,用于辅助页面扫描与损坏检测。

核心组件

  • LayoutManager: 负责管理内存对象与磁盘字节流的转换。
  • Header: 物理文件/驱动器的起始元数据解析器。
  • Page: 抽象页面对象,支持不同类型的物理页面解析。

技术优势

  • 硬件友好: 所有数据布局严格遵循扇区对齐,完美匹配 Direct IO。
  • 跨模态一致性: 无论是向量数据还是 SQL 行数据,都遵循统一的页面管理框架。