系列一我们用七篇文章走完了智驾数据闭环的全景——从 8 环节模型、厂商对标、架构蓝图、全局 ID、11 张 ADS 表、闭环度量到存储治理。但有一个关键问题始终没有展开这 79 张 Paimon 表到底是怎么设计出来的很多团队做湖仓最容易踩的坑不是选错引擎而是分层混乱——ODS 层直接给业务查、DWD 层塞了聚合逻辑、ADS 层还在做 JOIN。结果就是一张表改字段下游五个报表全挂一个新需求进来没人敢动旧表只能再建一张「差不多」的。本文是系列二「湖仓实战」的开篇完整拆解我们的四层建模思路ODS 原样入湖保追溯、DWD 以 data_id 串联闭环链路、DWS 按业务维度预聚合、ADS 开箱即用服务应用。同时讲透 11 个数据域的划分逻辑与关键表结构设计。系列二后续文章会在此基础上深入 DDL 实战、双路查询、CDC 接入等工程细节。一、四层架构每层只干一件事先回答一个根本问题为什么要分层答案是三个字——改得起。不分层的湖仓任何一环的变更都会像多米诺骨牌一样传导到下游。分层的核心价值是变更隔离ODS 层对接源系统变化、DWD 层屏蔽上游差异、DWS 层固化业务口径、ADS 层适配展示需求。每一层只对自己的上游负责下游不用关心上游怎么变。层级核心职责设计原则ODS原始同步层源系统什么样湖仓就存什么样不加业务逻辑只做字段映射与系统字段补充_ingest_time / _source_systemDWD明细数据层以 data_id 为核心串联闭环链路跨源 JOIN、清洗、标准化是数据血缘与追溯的核心层DWS汇总指标层按业务维度日期/项目/模型/场景预聚合口径在此层固化下游不再重复计算ADS应用数据层面向具体应用/报表/大屏开箱即用零 JOIN系列一已详解 11 张 ADS 表这套分层不是拍脑袋定的。它对应的是数据从「原始事实」→「业务明细」→「管理指标」→「产品视图」的自然加工链路。每一层的表数量也在递增ODS 层 28 张对接所有源系统→ DWD 层 27 张跨源关联后反而更少因为消除了冗余→ DWS 层 14 张按维度聚合→ ADS 层 11 张面向应用场景。二、ODS 层源系统原样入湖28 张表对接全链路ODS 层的设计哲学就一句话不改造、不丢失、可追溯。源系统的表结构什么样ODS 层就存什么样——哪怕源系统字段命名不规范、类型不统一也不在 ODS 层做修正。修正逻辑留给 DWD 层。这样做的好处是当源系统升级导致字段变更时ODS 层只需调整同步映射不影响下游任何逻辑。28 张 ODS 表按11 个数据域分组每个数据域对应闭环中的一个业务环节数据域ODS 表来源系统采集域ods_collect_task / ods_vehicle_info / ods_sensor_config / ods_data_file_meta采集管理系统 / 车辆管理系统 / 配置管理系统 / 文件管理系统生产域ods_production_line_task / ods_argo_workflow / ods_annotation_task / ods_annotation_result / ods_qc_task / ods_qc_result / ods_manual_operation_log产线平台 MySQL / Argo 元数据库 / 标注平台 / 质检平台 / Kafka数据资产域ods_dataset_info / ods_dataset_version / ods_dataset_data_list / ods_scene_tag数据管理平台 MySQL / 场景标签系统训练域ods_training_task / ods_training_metric / ods_model_version训练平台 MySQL / 模型管理平台评测域ods_evaluation_task / ods_evaluation_result / ods_badcase_record评测平台 MySQL仿真域ods_simulation_scenario / ods_simulation_result仿真平台 MySQL回传域ods_vehicle_trigger_event / ods_vehicle_function_test / ods_shadow_mode_data车端回传 Kafka部署域ods_ota_task / ods_vehicle_software_versionOTA 平台 / 车辆管理平台分析域ods_issue_record问题管理平台 MySQL挖掘域ods_mining_task / ods_mining_rule_config数据挖掘平台 MySQL规则表经 Flink CDC 实时同步质量门禁ods_quality_issue入湖质量门禁服务隔离异常数据可重放每张 ODS 表统一追加两个系统字段_ingest_time入湖时间戳和_source_system来源系统标识。这两个字段是后续数据血缘追溯与问题定位的基础——当 ADS 层某张报表数据异常时可以通过这两个字段快速回溯到源头。三、DWD 层以 data_id 串联闭环27 张表构建全链路视图DWD 层是整个湖仓的核心层。如果说 ODS 层是「原材料仓库」DWD 层就是「精密装配车间」——它负责把来自 11 个不同源系统的数据通过全局 data_id 串联成一条完整的闭环链路。DWD 层的设计围绕三个关键词展开① data_id 贯穿。系列一 S1-04 详解的三级 ID 体系data_id → clip_id → image_id在 DWD 层落地为物理主键或关联键。以dwd_data_production_chain数据生产主链路表为例它以 data_id 为主键记录每个数据单元从采集、标注、质检到交付的完整状态与时间戳。这张表是后续所有效率分析、瓶颈定位、血缘追溯的起点。② 闭环追溯表。dwd_closed_loop_trace是 DWD 层的「终极汇总表」——同样以 data_id 为主键但它不记录过程细节而是记录每个数据单元在闭环中的全局状态快照被哪些训练任务用过、产出过哪些模型版本、在哪些评测任务中出现过、是否触发过 Badcase、是否被量产车触发过。这张表让「从 Badcase 回溯到原始采集 clip」成为一次简单的主键查询。③ 挖掘域扩展。DWD 层在闭环域之外还承载了挖掘域的 8 张明细表——从抽帧图片、统一标签字典、数据级/图片级标签明细到大模型推理任务、图片向量明细。其中dwd_mining_image_vector_detail是全湖体量最大的表千万~亿级行 × 高维向量也是全湖唯一的分区表按 dt 分区其余表均以 bucket 主键 Upsert 管理。四、DWS ADS 层指标固化与应用交付DWS 层14 张表的职责是「口径固化」。以dws_closed_loop_efficiency闭环效率指标表为例它按日期 项目维度预聚合了采集到交付耗时、训练耗时、评测耗时、完整闭环耗时、Badcase 解决率等核心指标。一旦这张表的计算逻辑确定下游所有报表和看板都直接读它不再重复 JOIN 和计算——这就是「口径固化」的价值同一个指标全公司只有一个算法。ADS 层11 张表在系列一 S1-05 已详细拆解。这里只强调一个设计要点ADS 层的所有表都是零 JOIN的。每张 ADS 表已经包含了应用所需的全部字段前端报表或大屏直接 SELECT 即可不需要再做任何关联。这是分层建模的最终目标——让数据消费者用最简单的方式拿到最完整的数据。层级表数量核心特征ODS28 张源系统原样同步追加 _ingest_time / _source_systemDWD27 张data_id 串联闭环链路跨源 JOIN 与标准化DWS14 张按业务维度预聚合口径固化ADS11 张零 JOIN开箱即用面向应用五、Paimon 关键设计决策主键、Bucket 与 Changelog选定了分层架构接下来是引擎层面的设计决策。Paimon 作为湖仓引擎有三个关键参数直接影响表的读写性能与数据一致性主键策略。我们采用「业务主键 NOT ENFORCED」模式。例如ods_collect_task以collect_task_id为主键dwd_data_production_chain以data_id为主键。NOT ENFORCED表示 Paimon 不在写入时强制校验唯一性由上游保证但会基于主键做 Upsert 合并——这对 CDC 实时入湖场景至关重要。Bucket 分桶。Bucket 数决定了表的并行读写能力。我们的经验法则是ODS 层小表 2-4 个 bucketDWD 层核心表 16-32 个 bucket。例如dwd_collect_clip_detail设 16 个 bucketclip 级数据量大且查询频繁dwd_production_artifact_detail设 32 个 bucket产物表是血缘核心并发读写最高。Changelog 生产。所有 ODS 层表统一设置changelog-producer input即基于输入数据直接生成变更日志。这对下游 Flink 实时消费至关重要——当 ODS 层数据更新时DWD 层的 Flink 任务可以实时感知并增量更新而不需要全量重算。六、79 张表清单总览前面各章分别讲解了 ODS / DWD / DWS / ADS 四层的设计思路这里给出完整的表清单速查。ODS 层 28 张表已在第二章列出下表补充DWD 层 27 张、DWS 层 14 张、ADS 层 11 张的完整表名与说明。DWD 层27 张——以 data_id 串联闭环链路数据域表名说明采集域dwd_collect_clip_detail采集数据单元元信息clip 级血缘起点生产域dwd_data_production_chain数据生产主链路表dwd_production_execution_detail产线执行明细dwd_production_artifact_detail处理产物元信息血缘核心dwd_production_run_detail处理运行记录含重跑信息dwd_manual_operation_detail人工操作明细数据资产域dwd_dataset_version_detail数据集版本明细dwd_dataset_data_relation数据集-数据关联dwd_scene_tag_relation数据-场景标签关联训练域dwd_training_task_detail训练任务明细dwd_training_metric_detail训练指标明细评测域dwd_evaluation_task_detail评测任务明细dwd_evaluation_result_detail评测结果明细dwd_badcase_detailBadcase 明细仿真域dwd_simulation_result_detail仿真结果明细回传域dwd_vehicle_trigger_detail车端触发事件明细dwd_shadow_mode_detail影子模式数据明细部署域dwd_ota_deployment_detailOTA 部署明细dwd_vehicle_software_distribution_detail车端软件版本分布分析域dwd_issue_detail问题明细挖掘域dwd_mining_task_detail挖掘任务明细dwd_mining_result_detail挖掘结果明细dwd_scene_gap_detail场景缺口清单dwd_mining_image_frame_detail抽帧图片明细dwd_mining_tag_dict_detail统一标签字典dwd_mining_data_tag_detail数据级标签明细clip 级dwd_mining_image_tag_detail图片级标签明细dwd_mining_image_vector_detail图片向量明细全湖唯一分区表闭环域dwd_closed_loop_trace闭环全链路追溯表dwd_closed_loop_storage_lifecycle存储生命周期状态明细▎DWS 层14 张——口径固化按维度预聚合数据域表名说明生产域dws_production_efficiency_daily产线效率日指标生产域dws_annotation_quality_daily标注质量日指标数据资产域dws_dataset_statistics数据集统计指标dws_scene_distribution场景分布统计训练域dws_training_efficiency_daily训练效率日指标评测域dws_evaluation_summary评测汇总指标dws_badcase_statisticsBadcase 统计指标回传域dws_trigger_statistics触发事件统计指标部署域dws_deployment_statistics部署统计指标闭环域dws_closed_loop_efficiency闭环效率指标dws_data_contribution数据贡献度指标dws_closed_loop_storage_cost_daily存储成本日指标挖掘域dws_mining_efficiency_daily挖掘效率日指标dws_mining_tag_coverage_daily标签覆盖度日指标▎ADS 层11 张——零 JOIN开箱即用表名说明ads_closed_loop_dashboard闭环大盘指标ads_production_bottleneck_analysis产线瓶颈分析结果ads_badcase_root_cause_distributionBadcase 根因分布ads_scene_library_summary场景库汇总ads_hard_case_library难例库ads_data_asset_catalog数据资产目录ads_model_version_comparison模型版本对比ads_ota_deployment_summaryOTA 部署汇总ads_trigger_heatmap触发事件热力图ads_storage_cost_dashboard存储成本看板ads_mining_tag_dashboard挖掘标签分布看板 获取完整文档本篇列出了 79 张表的表名与说明但受限于篇幅每张表的完整字段定义DDL与字段说明未能一一展开。结语用三句话带走本篇分层是为了改得起——ODS 挡源系统变化、DWD 做跨源关联、DWS 固口径、ADS 零 JOINdata_id 是闭环的脊梁——27 张 DWD 表以 data_id 为主键或关联键让「从 Badcase 回溯到原始 clip」成为一次主键查询79 张表不是堆出来的——11 个数据域 × 4 层架构每张表都有明确的职责边界与上游依赖。下一篇预告系列二第 2 篇——《79 张表的设计思路智驾湖仓表分层与命名规范》讲透阿里数仓命名规范在智驾场景的落地、数据域划分逻辑与分区策略设计。我们下一篇见。关注后回复「湖仓分层设计」即可获取包含全部字段结构的完整设计文档: