1. 实验数据湖仓一体平台工程导论

实验数据湖仓一体平台工程,研究的不是单一数据库或单一计算引擎,而是如何把实验过程中持续产生的多源、异构、时序性强的数据,稳定地汇聚、治理、建模并服务于分析、复盘与智能决策。它介于数据工程与实验工程之间:既要求理解实验对象、传感器、采集链路和实验语义,也要求掌握数据分层、表格式、批流处理、元数据与权限治理等平台能力。本课程的目标,是让学习者能够独立设计并落地一套可运行的实验数据湖仓平台,而不是停留在概念拼接。

课程目标与能力定位

完成本课程后,学习者应具备三类能力。第一是架构能力:能根据实验数据规模、实时性要求和分析场景,选择对象存储、开放表格式、计算引擎与元数据服务的组合。第二是工程能力:能完成数据接入、分层建模、增量写入、质量校验、权限配置与任务调度,并让链路可观测、可回溯。第三是实验语义能力:能把“实验批次、工况、通道、采样率、标定系数”等实验概念映射为湖仓中的表、分区、字段与血缘关系,使数据不仅被存储,还能被正确解释。

实验数据的四个关键特征

实验数据与互联网业务数据差异明显,直接套用通用数仓方案往往失效。其核心特征可归纳为:

  • 多源异构:同一实验可能同时产生高频时序信号、图像/视频、文本日志、设备状态码和人工记录表,格式涵盖 CSV、Parquet、HDF5、二进制流等。
  • 强时序与批次耦合:数据按“实验—批次—工况—通道”组织,时间戳精度可达微秒级,且不同设备时钟可能不同步,需要统一时间基准。
  • 写多读少、冷热分化:采集阶段持续高频写入,分析阶段则集中在少数批次上做重放、对比和建模,历史数据访问频率快速下降。
  • 可追溯性要求高:任何一条曲线都应能回溯到原始文件、采集设备、标定参数和处理版本,否则实验结论不可复现。

这些特征决定了平台必须同时具备“湖”的灵活接入与低成本存储,以及“仓”的强 schema、事务与高效查询能力,这正是湖仓一体的出发点。

湖仓一体核心理念

湖仓一体不是把数据湖和数据仓库简单叠加,而是在对象存储之上引入开放表格式(如 Iceberg、Delta Lake、Hudi),用元数据层管理快照、分区、schema 演进和 ACID 事务,使同一份数据既能被 Spark、Flink 等引擎批量/流式写入,也能被 Trino、StarRocks 等引擎高效查询。对实验平台而言,它带来三个直接收益:原始文件不必搬迁即可注册为表;增量写入与时间旅行让批次重放和结果复现成为可能;统一元数据使血缘、权限和质量规则可以跨引擎生效。

湖仓一体的关键判断标准:同一份物理数据是否被多个引擎以事务一致的方式读写,并且 schema、分区和快照由统一元数据管理。若只是“湖里存一份、仓里再导一份”,仍属于传统双链路,而非湖仓一体。

平台工程全景

从工程视角看,实验数据湖仓平台可分为五层:采集接入层、存储与表格式层、计算与建模层、治理与元数据层、服务与应用层。下图给出各层的关键对象与数据流向,帮助建立整体心智模型。

实验数据湖仓一体平台工程全景 采集接入层 传感器 / DAQ 高频时序信号 相机 / 视频 图像与帧索引 设备日志 状态码 / 事件 人工记录 工况 / 备注表 消息队列 Kafka / MQTT 存储与表格式层 对象存储 OSS / S3 原始文件 + Parquet 数据 开放表格式 Iceberg / Delta / Hudi 快照 · 分区 · Schema 演进 · ACID 时间旅行支撑批次重放与复现 计算与建模层 批处理 Spark / Flink Batch 流处理 Flink / Spark Streaming 交互查询 Trino / StarRocks 分层建模 ODS → DWD → DWS → ADS 治理与元数据层 元数据目录 Catalog 血缘与版本 Lineage 质量与权限 Quality / RBAC 服务与应用层 实验复盘 批次对比 指标看板 BI / SQL 模型训练 特征 / 标签 治理

图中自上而下的箭头表示数据主链路:采集接入 → 存储与表格式 → 计算与建模 → 服务与应用;治理与元数据层横向贯穿,为各层提供目录、血缘、质量与权限支撑。理解这张全景图,后续每一章都将落到其中某一层的具体工程实现。

学习路径与工程约定

本课程按“先建底座、再通链路、后做治理、最终服务”的顺序推进。建议的学习路径是:先掌握对象存储与开放表格式的选型与建表,再打通一条从原始文件到 ODS/DWD 的最小链路,随后加入流式增量、质量校验与权限控制,最后完成实验复盘与指标服务。为便于后续章节统一,本课程约定:时间戳统一为 UTC 毫秒,实验批次号作为一级分区键,通道号作为二级分区键;所有示例参数均为教学假设值,实际落地时需按设备手册与实验规范替换。

学习本课程时,建议同步准备一个最小实验环境:一个对象存储桶、一个 Iceberg 或 Delta 表目录、一个 Spark 或 Flink 运行实例,以及一个可查询的 Trino 或 StarRocks 节点。每章结束后,尝试把该章能力接入这条最小链路,比只阅读概念更有效。