目录文档-技术白皮书(V5.05)06-EFT.WP.Core.DataSpec v1.0

第5章 序列化与存储布局


I. 范围与对象


II. 存储语义与端到端约束

数据语义以 S(schema)与 manifest 为准;落盘产物须满足:

III. 公设(P65-*)


IV. 格式对照与适用域

  1. jsonl(逐行 JSON)
    • 优点:可流式、可读性高;缺点:冗余度高、类型弱。
    • 适用:日志、调试、轻量互操作;必须携带 schema_version 与 unit(dim) 扩展域。
  2. csv
    • 优点:工具普适;缺点:类型/缺失表达不可靠。
    • 适用:与外部系统交换的最小交集;要求提供伴随 S 与缺失标记 m。
  3. parquet(列式)
    • 优点:列裁剪与压缩友好,行组索引;适用宽表与分析负载。
    • 要求:声明 row_group_size_bytes、compress、dict_encoding、stats_enabled。
  4. nc(NetCDF,科学栅格/张量)
    • 优点:坐标系/维度元数据丰富;适用规则栅格与时间序列张量。
    • 要求:声明 CRS、维度顺序、缺失掩码 m 与 _FillValue。
  5. tfrecord(顺序二进制记录)
    • 优点:顺序写高吞吐;缺点:随机列裁剪弱。
    • 适用:训练样本流与在线推理样本池;需提供 index 与样本统计。

V. 类型到存储映射(最小规则)


VI. 压缩与编码策略

  1. 压缩:compress ∈ {"zstd","gzip","none"};记录 compress_level。
  2. 编码:字典编码 dict_encoding ∈ {0,1};游程编码可用于布尔与低基数字段。
  3. 量化(可选):
    • 定义:x_q = round( x / q ) * q。
    • 误差上界:|x - x_q| ≤ q/2;在 manifest.quantization 中记录 { fields, q, bound="q/2" }。
  4. 缺失:统一 m ∈ {0,1};在 parquet/nc 中同步 _FillValue 与 m 的一致性检查。

VII. 分块、行组与对齐

  1. 目标:在 I/O 与压缩之间平衡,令 row_group_size_bytes ≈ target_block。
  2. 建议:target_block ∈ [64 MiB, 256 MiB];row_group_size_bytes = align( target_block, 4 KiB )。
  3. 读取预算:
    • 投影列集 C_proj,投影率 alpha = |C_proj| / |Fields_total|。
    • 期望扫描量 V_scan = N * sum( size(field_i) for field_i ∈ C_proj ) / ratio_compress。
    • 若 alpha ≤ 0.25 且 V_scan 明显低于行式扫描,选择列式;否则评估行式或混合布局。

VIII. 文件命名与目录布局

  1. URI 模板:scheme://bucket/prefix/dataset=DS/schema=S/version=vX.Y.Z/partition_keys/.../part-00000-of-000K.ext。
  2. 分区键示例:date=YYYY-MM-DD/sid=.../pid=...。
  3. 要求:
    • part-{i}-of-{K} 连续编号且零填充;
    • 每个 part 在 manifest.files[*] 中记录 { path, bytes, hash_sha256, row_count, row_group_count };
    • 分区目录必须可从路径反推分区键字典。

IX. 时间与路径数据的布局

  1. 时间序列(均匀采样):每 part 覆盖固定窗口 Delta_t * M,并在元数据中记录 { ts_start, ts_end, fs }。
  2. 时间序列(非均匀采样):记录 non_decreasing(ts) 与 count_gap 统计。
  3. 路径 gamma(ell):
    • 每个 part 仅含单一 pid 或记录 { pid_set, ell_min, ell_max };
    • 行组粒度优先对齐 ell 连续区间;
    • 对 T_arr 数据集,必须并存两口径结果与 delta_form 字段,并在 manifest.arrival 标注容差 tol_Tarr。

X. 一致性、校验与指纹

  1. 写后校验:
    • hash_sha256(blob) 与 bytes 入 manifest;
    • 若 fmt="parquet",启用列统计并在 manifest.stats 中缓存 { min,max,null_count }。
  2. 端到端一致:deserialize( serialize(D) ) == canon(D)(启用量化时替换为 ≈,并断言量化上界)。
  3. 追溯:attach_provenance(ds, Trace) 与 signature 一并落盘。

XI. 流式 I/O 与增量写入

  1. 流式校验:结合 stream_records(ds, batch) 与记录级契约,滚动计算质量指标。
  2. 追加写:
    • 仅允许在新 part;禁止改写已发布 part(除非 bump schema_version 并新路径发布)。
    • freeze_release(ds, tag) 之后进入只读;任何增量需新 tag。

XII. 精度与量化契约

  1. 若字段 x 量化为步长 q:
    • 存储:x_q 与 q;
    • 契约:|x - x_q| ≤ q/2(若仅存 x_q,则上界解释为相对于理想实值的最大偏差)。
  2. 对参与方程的字段(例如 n_eff(x,t)):默认禁止量化;若确需量化,必须证明对 T_arr 的相对误差界:
    |ΔT_arr| ≤ ( ∫_gamma |Δn_eff| / c_ref d ell ),并将该上界入 manifest.arrival.error_bound。

XIII. 端到端流程(Mx-3 布局选择与落盘)


XIV. 接口与实现绑定(与 I60 对齐)


XV. manifest 最小存储布局清单


XVI. 跨卷绑定与 T_arr 用例要点

  1. T_arr 专用数据集需同时持有两口径:
    • T_arr(factored) = ( 1 / c_ref ) * ( ∫_gamma n_eff d ell );
    • T_arr(general) = ( ∫_gamma ( n_eff / c_ref ) d ell );
    • delta_form = | T_arr(factored) - T_arr(general) | 并契约化 delta_form ≤ tol_Tarr。
  2. 布局:按 pid/ell 分区,行组对齐路径段;在 manifest 中记录 L_gamma = ( ∫_gamma 1 d ell ) 与采样策略。

XVII. 运行建议与基线


版权与许可:除另有说明外,《能量丝理论》(含文本、图表、插图、符号与公式)的著作权由作者(屠广林)享有。
许可方式(CC BY 4.0):在注明作者与来源的前提下,允许复制、转载、节选、改编与再分发。
署名格式(建议):作者:屠广林|作品:《能量丝理论》|来源:energyfilament.org|许可证:CC BY 4.0
验证召集: 作者独立自费、无雇主无资助;下一阶段将优先在最愿意公开讨论、公开复现、公开挑错的环境中推进落地,不限国家。欢迎各国媒体与同行抓住窗口组织验证,并与我们联系。
版本信息: 首次发布:2025-11-11 | 当前版本:v6.0+5.05