第4章 数据仓库分层架构:ODS、DWD、DWS、ADS
分层架构是数据仓库建设的骨架,也是BI建模工程师面试中出现频率最高的考点之一。面试官通过分层相关提问,考察候选人对数据流转、职责划分、设计原则的理解深度。本章从四层职责、分层原则、面试应答策略三个维度展开,帮助你构建完整的分层知识体系。
分层职责速览
| 层级 | 全称 | 核心职责 | 数据粒度 | 典型操作 |
|---|---|---|---|---|
| ODS | Operational Data Store | 源数据原样接入 | 原始粒度 | 增量/全量同步、历史拉链 |
| DWD | Data Warehouse Detail | 清洗去重、标准化 | 明细粒度 | 维度退化、质量校验 |
| DWS | Data Warehouse Summary | 轻度汇总、主题宽表 | 汇总粒度 | 总线矩阵、维度一致性 |
| ADS | Application Data Store | 应用集市、指标输出 | 指标粒度 | 报表、大屏、即席查询 |
面试问答卡 ① 分层架构概述
面试问题:请介绍一下数据仓库的分层架构及各层的作用。
面试官考察点:
- 是否具备全局架构视角,能否清晰描述四层职责
- 各层之间的数据流转关系是否讲得清楚
- 是否理解分层背后的设计思想而非死记硬背
回答框架: 总述分层思想 → 按 ODS → DWD → DWS → ADS 逐层说明(职责 + 粒度 + 典型操作)→ 总结分层价值
示例回答: 数据仓库通常分为四层。ODS 层暂存源系统原始数据,保持历史记录;DWD 层完成清洗去重和维度退化,形成标准明细事实;DWS 层按业务主题轻度汇总,构建宽表;ADS 层面向应用输出指标,支撑报表与大屏。分层实现了数据与业务解耦,提升复用性和可追溯性。
可能追问: 如何确定一个表应该放在哪一层?DWD 和 DWS 的边界如何划分?
避坑提醒: 不要只背定义,要结合具体例子说明每层的数据粒度变化。例如“订单表在 ODS 是原始记录,在 DWD 完成去重,在 DWS 按天汇总,在 ADS 输出 GMV”。
面试问答卡 ② 分层原则与收益
面试问题:数据仓库分层的基本原则是什么?为什么要分层?
面试官考察点:
- 是否理解分层设计的内在逻辑,能否讲出原则背后的原因
- 是否了解分层带来的实际业务收益
- 是否有过跨层引用等反例的治理经验
回答框架: 先说明分层目的 → 列出 3 条核心原则(每条一句话解释)→ 给出分层收益 → 可补充反面案例说明不遵循原则的后果
示例回答: 分层原则包括三条:高内聚低耦合,各层职责单一互不依赖;清晰数据流向,禁止跨层引用避免血缘混乱;一致性维度,确保指标口径统一。分层带来三大收益:数据血缘可追溯、开发与业务解耦、公共层复用减少重复建设。我们曾因跨层引用导致数据不一致,重构后才彻底解决。
可能追问: 你们遇到过跨层引用吗?如何治理的?一致性维度在项目中如何保证?
避坑提醒: 不要只背理论,要结合项目说明你如何落地这些原则。例如“在 DWS 层我们通过总线矩阵保证维度一致性,每个主题域公用一套维度表”。
面试问答卡 ③ ODS 与 DWD 的职责划分
面试问题:ODS 层和 DWD 层有什么区别?如何设计 ODS 层?
面试官考察点:
- 是否清晰区分“原样接入”和“清洗标准化”的边界
- ODS 层设计是否考虑过实际场景(保留策略、结构变更)
- 是否理解 ODS 作为数据溯源基座的价值
回答框架: 先说职责区别(粒度、操作、目的三个维度对比)→ 再讲 ODS 设计三个要点(接入策略、拉链设计、监控)→ 可补充 DWD 的典型处理流程
示例回答: ODS 层保持源数据原貌,不改变结构与粒度,只做增量或全量接入;DWD 层完成清洗去重、维度退化、标准化。ODS 设计需关注三点:接入策略选择(增量/全量/拉链),历史数据保留周期,以及数据质量监控。通常 ODS 与源系统保持 1:1 表映射,作为数据溯源的基础。
可能追问: ODS 层数据保留多久?源系统表结构变更时 ODS 如何处理?
避坑提醒: 不要把 ODS 层设计得过于复杂。ODS 的核心是“原样接入”,不要在 ODS 层做业务清洗,那是 DWD 的职责。
项目案例:电商零售平台数据仓库分层建设
项目名称:某电商零售平台数据仓库分层建设项目
业务背景: 业务快速扩张,原有烟囱式报表开发导致指标口径混乱、数据重复建设严重,30+ 业务系统各自为战,管理层无法获得统一视图。
| 规模指标 | 接入 30+ 业务系统 · 日均处理 5TB · 覆盖 500+ 核心指标 · 支撑 200+ 日常报表 |
|---|---|
| 技术栈 | Hadoop HDFS · Hive · Spark · DataX · MySQL · Apache Atlas |
核心难点:
- 多业务系统数据源异构,字段标准不统一,清洗规则复杂
- 历史数据回溯需求与存储成本之间的平衡,需要设计分级存储策略
- 跨层数据一致性保障机制,避免因分层带来的数据延迟和质量问题
面试高频追问:
- 你们是如何保证 DWD 层数据质量的?有没有自动化的质量规则引擎?
- 数据血缘在你们项目中是如何落地的?用了什么工具?
- 如何处理维度变化的缓慢变化维(SCD)?用的是 Type 1 还是 Type 2?
可迁移回答话术: “在 ODS 层我们采用增量 + 全量双轨策略,核心交易表按天分区保留 90 天历史,配置表保留全量快照。DWD 层通过统一数据质量规则引擎,对空值、边界值、业务逻辑进行自动校验,异常数据写入告警表并触发修复流程。DWS 层按业务域构建总线矩阵,确保各主题域维度一致性,通过 Apache Atlas 实现字段级血缘追踪。”