目录 / 文档-技术白皮书(V5.05) / 08-EFT.WP.Core.Sea v1.0
I. 目标与范围
- 统一定义采集数据从设备侧到数据湖的通路形制、块化与压缩策略、传输与背压、分区与命名、清单与溯源、校验与一致性、以及 SLI/SLO 与治理要求。
- 与 I80-8 serialize/export_manifest/import_manifest、I80-7 quality_metrics/monitor_drift、以及《Core.Threads》I70-3/6/7 的通道、限流与追踪接口对齐。
- 输出 P87-* 公设、S87-* 最小方程与 Mx-7 入湖流程;保证 rho < 1 approx stability 与可追溯的 manifest 元数据闭环。
II. 数据形制与生命周期(术语)
- 数据形制
- record(单条观测,含 ts 与 sid);chunk(批次文件内逻辑块);object(湖中存储对象)。
- dataset(一组同模式对象,按分区组织);manifest(元数据清单)。
- 生命周期阶段
ingest_edge(设备侧或边缘网关)、staging(暂存与复核)、lake_raw(原始区)、lake_refined(精炼区)、lake_feature(特征区)。 - 口径不变性
lake_raw 禁止数学口径转换(如 PSD 单边/双边切换);此类转换只允许在 lake_refined 之后执行并记录衍生谱系。
III. 公设 P87-*(数据通路一致性)
- P87-1 不可变对象公设
入湖后对象哈希与大小不可变;任何修订以新版本对象发布,并在 manifest 建立谱系边 dep(u,v)。 - P87-2 可追溯口径公设
每个对象必须记录 schema_id/ver/units、fmt/compress、H(f) 口径与 PSD 归一化口径(如 S_xx 单位)。 - P87-3 时序一致公设
ts(UTC)用于审计,tau_mono 用于延迟、抖动与排队评估(见第3章)。 - P87-4 入湖幂等公设
以 idemp_key = hash(sid, ts_range, bytes_hash) 实现 sem="exactly_once*"(best-effort via dedup);设置去重窗口 Delta_t_dedup。 - P87-5 稳定性公设
任何入湖通道视为排队系统,稳态近似条件 rho = lambda / mu < 1 必被持续校验;lambda 为到达块率,mu 为服务块率。
IV. 最小方程 S87-*(容量、吞吐与延迟)
- S87-1 块尺寸与样本数
- N_samples_per_chunk = floor( B_target * 8 / ( channels * bits_per_sample ) )。
- S_chunk_raw = header_bytes + N_samples_per_chunk * channels * bits_per_sample / 8。
- S87-2 压缩与有效大小
r_c = S_chunk_raw / S_chunk_comp;若高斯近似,熵上界 H_est ≈ 0.5 * log2( 2 * pi * e * sigma_x^2 )(单位 bits/sample),则 r_c <= bits_per_sample / H_est。 - S87-3 入湖时间分解
T_put ≈ T_net + T_comp + T_fs,其中 T_net = S_chunk_comp / BW_wire_eff。 - S87-4 排队近似与等待
- mu = 1 / E[T_put];rho = lambda / mu;W_q ≈ rho / ( mu - lambda )(M/M/1 近似),W = W_q + 1 / mu。
- Little 定律:L = lambda * W;将 L 作为通道缓冲与小文件率控制目标。
- S87-5 日产出与文件数
S_day_comp = S_chunk_comp * N_chunks_day;N_files_day = ceil( S_day_comp / S_target_object )。
V. 序列化与模式(fmt/schema)
- 模式与单位
列必须声明 name/type/unit/desc;时间列 ts 采用 ISO-8601 UTC;量纲通过 unit(x) 与 dim(x) 校验(见第2章)。 - 格式选择
jsonl:便于调试,小体量;csv:兼容性强但脆弱;parquet:列式、压缩友好、适合时序宽表;nc(netcdf):网格/多维;tfrecord:训练样本。 - 建议映射
时序类:parquet + zstd;网格场:nc + deflate;高保真音频:flac/wavpack;事件日志:jsonl + zstd。 - 版本化
schema_id = uuid4();演进以 ver = major.minor.patch,向后兼容字段以 nullable + default 策略发布。
VI. 块化与压缩(chunking/compress)
- 目标
控制对象大小接近 S_target_object ∈ [16 MiB, 256 MiB],兼顾列式页对齐、批读效率与小文件率。 - 建议
B_target ∈ [4 MiB, 32 MiB];列式页 page_size ∈ [64 KiB, 1 MiB];压缩 zstd level 3–6 或 lz4hc level 4–12。 - 预处理
- 差分与去趋势:x' = x - median(x);delta 编码可显著提升 r_c。
- 量化再压缩:当 ENOB << ADC_bits 时,先行无失真重量化到 ENOB。
VII. 传输、通道与背压(与《Core.Threads》对齐)
- 通道参数
chan、cap、q_len、bp(背压信号);溢出策略明确为 {drop_oldest|drop_newest|block|spill}。 - 背压函数
例:bp = f(q_len, cap, W_q) = min( 1, q_len / cap ) 供限流器读取(见 I70-6)。 - 稳定性检查
周期性计算 rho = lambda / mu;当 rho >= 1 时发出告警并触发限流 rate_limiter 或扩容 cap。 - 批量与 ACK
batch_size 提升 BW_wire_eff;ACK 采用 eid 与 trace_link 记录因果(见 I70-7)。
VIII. 分区与命名(partition/layout)
- 路径模板
dataset=/sea/{project}/{sensor_family}/sid={sid}/date={YYYY-MM-DD}/hour={HH}/。 - 分区键
必含 sid 与时间粒度 date/hour;可选 model/region/schema_ver。 - 小文件治理
限制 files_per_partition <= F_max;当 N_files_day >> F_max 时提升 B_target 或合并对象。 - 时区与闰秒
分区按 UTC;闰秒在 ts 层面记录,分区落在相邻小时的对象需在 manifest 标注 ts_range。
IX. 清单与溯源(manifest)
- 数据集清单(一级)
{dataset_id, schema_id, ver, fmt, compress, S_target_object, partition_template, producer, SLO:{P99,E2E,ErrRate}, lineage:{parents}, created_ts}。 - 对象清单(二级)
{object_id, sid, ts_range:{t0,t1}, N_records, S_chunk_raw, S_chunk_comp, r_c, hash_sha256, idemp_key, q_score, missing:m, env:RefCond, delta_form?}。 - 链接关系
dep(u,v) 指向由 lake_raw -> lake_refined -> lake_feature 的衍生;所有 corr_env、FFT/PSD 变换均登记。
X. 校验与一致性
- 完整性
内容寻址 cid = sha256(payload);对象提交采用原子重命名或单对象分段合并。 - 顺序性
保证分区内 tau_mono 非降;若乱序,使用 hb 链接与 eid 证明因果。 - 幂等与去重
以 idemp_key 查重;窗口 Delta_t_dedup 至少覆盖 ts_range 与重试最长延迟。 - 端到端校验
可选 HMAC(key, cid);跨网段校验失败进入 staging 待人工复核。
XI. SLI/SLO 与预算
- SLI 定义
IngestQPS(块/秒)、E2E_Latency = ts_commit - ts_edge、P99_E2E、ErrRate、SmallFileRate、Lag = now - max(ts_commit)。 - 预算模型
CPU_budget 与 IO_budget 以 R_cpu/R_io 计;压缩档位与 B_target 共同影响 T_comp/T_fs。 - 目标建议
P99_E2E <= 5 * B_target / BW_wire_eff + epsilon;SmallFileRate <= 1%;ErrRate <= 1e-4(按对象)。 - 告警与闸门
当 rho >= 0.8 或 Lag > Lag_thr 时触发扩容/限流;当 SmallFileRate > thr 时启动合并作业。
XII. 安全、治理与留存
- 访问控制
对象级 ACL;字段级脱敏与标签化(如 pii:true)。 - 版本与留存
retention_policy = {raw:days_ref, refined:days_feat};到期前须保证谱系可再现。 - 审计
记录 producer_id, span_id, eid;关键操作以 ts 与签名留档。
XIII. 执行流程 Mx-7(入湖)
- 边缘采集:生成 chunk,执行 corr_env(可选),计算 idemp_key 与 hash_sha256。
- 序列化:调用 I80-8 serialize(data, fmt="parquet", compress="zstd");目标 B_target 与页参数从 dataset manifest 读取。
- 传输与背压:经 chan 发送至 staging;实时计算 rho/lambda/mu 与 W_q,必要时启用限流 rate_limiter。
- 校验与落盘:在 staging 验证 cid 与模式;成功后原子提交到 lake_raw 对应分区。
- 清单与可观测性:调用 I80-8 export_manifest(data) 生成对象清单,metric_emit/trace_span 打点并链接 eid。
- 合并与治理:周期性合并小文件;更新数据集清单与谱系;评估 SLI 并触发告警与闸门策略。
XIV. 接口绑定(I80-8 与关联)
- serialize(data:any, fmt:str="parquet", compress:str|None=None) -> bytes
需支持 B_target/page_size/row_group_size 可选项;返回同时附带 hash_sha256。 - export_manifest(data:any) -> dict
生成对象级清单,包含本章 IX 所列字段;与数据同路径存放为旁路元数据。 - import_manifest(manifest:dict) -> any
校验 schema_id/ver/units 匹配;提供 strict|lenient 模式控制字段缺失与默认填充。 - 与线程追踪(I70-7)
trace_span("ingest", attrs={sid, object_id}) 与 trace_link(span, eid) 建立跨系统因果链。
XV. 示例配置(建议值)
- B_target=16 MiB,page_size=256 KiB,row_group_size=128 MiB(按列式批量聚合),compress="zstd-5"。
- 分区:sid/date/hour;S_target_object=128 MiB;F_max=256 files/day/partition。
- 去重:Delta_t_dedup=24 h;idemp_key=sha256(sid||ts_range||hash_sha256)。
- SLO:P99_E2E<=60 s,ErrRate<=1e-4,SmallFileRate<=1%,Lag_thr=5 min。
XVI. 互锁与跨卷引用
- 与第2章:ENOB/DR 影响压缩比 r_c 与 B_target;sigma_x 决定近似熵。
- 与第3章:tau_mono/ts 双时钟用于延迟与审计;offset/skew/J 进入入湖抖动评估。
- 与第4章:若在入湖前执行 H(f) 去卷积,必须在 manifest 标注口径。
- 与第5章:PSD 与特征生成后的对象进入 lake_refined/feature,并登记谱系。
- 与第6章:RefCond 与 delta_form 在对象清单中透传,以支持到达时 T_arr 对齐与复算。
版权与许可:除另有说明外,《能量丝理论》(含文本、图表、插图、符号与公式)的著作权由作者(屠广林)享有。
许可方式(CC BY 4.0):在注明作者与来源的前提下,允许复制、转载、节选、改编与再分发。
署名格式(建议):作者:屠广林|作品:《能量丝理论》|来源:energyfilament.org|许可证:CC BY 4.0
验证召集: 作者独立自费、无雇主无资助;下一阶段将优先在最愿意公开讨论、公开复现、公开挑错的环境中推进落地,不限国家。欢迎各国媒体与同行抓住窗口组织验证,并与我们联系。
版本信息: 首次发布:2025-11-11 | 当前版本:v6.0+5.05