当前位置:首页 > 云服务器 > 正文

什么是互联网数据仓库分层?数据仓库分层架构详解

互联网数据仓库的分层架构设计是构建高效、可维护且高性能数据分析平台的核心基石,其核心思想在于“解耦”与“复用”,通过将数据处理流程划分为不同的逻辑层级,明确每一层的数据职责,从而降低数据开发的复杂度,提高数据质量,并优化计算资源的使用。

核心分层架构详解

业界通用的数据仓库分层通常分为四层:ODS、DWD、DWS 和 ADS(或 DM),部分架构还会在 ODS 之前增加数据接入层,或在 DWD 之前增加临时数据层。

1 ODS 层:原始数据层 (Operational Data Store)

ODS 层是数据仓库的入口,主要作用是保持数据的原始面貌

  • 数据来源:直接对接业务数据库(如 MySQL、Oracle)、日志文件、第三方 API 等。
  • 数据特征
    • 数据未经任何处理,结构与源系统保持一致。
    • 通常保留历史快照或增量数据。
    • 数据量大,但清洗规则简单。

  • 主要功能:作为数据仓库的“缓冲区”,隔离源系统对数仓的影响,当源系统结构变更时,只需调整 ODS 层的抽取逻辑,不影响下游。

2 DWD 层:明细数据层 (Data Warehouse Detail)

DWD 层是数仓的核心,主要进行数据清洗、标准化和明细化

  • 数据来源:ODS 层数据。
  • 数据特征
    • 数据清洗:去除脏数据、空值处理、异常值过滤。
    • 数据标准化:统一字段命名、枚举值映射(如将性别“1/2”转换为“男/女”)、时间格式统一。
    • 维度退化:将常用的维度属性(如用户姓名、商品类目名称)冗余到事实表中,减少后续关联查询。
    • 数据明细:保持最细粒度的数据记录,通常对应业务过程的一次发生。

  • 主要功能:提供一致、干净、标准化的明细数据,供上层复用,这是数仓建设中工作量最大、最关键的环节。

3 DWS 层:汇总数据层 (Data Warehouse Summary)

什么是互联网数据仓库分层?数据仓库分层架构详解 第1张

DWS 层主要进行轻度或中度数据汇总,面向主题域进行数据整合。

  • 数据来源:DWD 层数据。
  • 数据特征
    • 主题域建模:按照业务主题(如用户、商品、交易、流量)进行数据聚合。
    • 粒度聚合:通常按天、周、月等时间周期,结合维度(如用户ID、商品ID)进行预聚合。
    • 宽表构建:构建用户行为宽表、商品销售宽表等,将分散的事实数据整合在一起。

  • 主要功能:大幅减少重复计算,提高查询效率,计算“用户近30天购买金额”时,直接从 DWS 层读取预聚合数据,而非实时扫描 DWD 层数十亿条明细。

4 ADS/DM 层:应用数据层 (Application Data Service / Data Mart)

ADS 层是面向具体应用场景的数据服务层。

  • 数据来源:DWS 层或 DWD 层数据。
  • 数据特征
    • 高度聚合:数据粒度极粗,通常直接对应报表指标。
    • 格式灵活:根据前端展示需求,数据可能经过复杂的计算、排序、截取。
    • 低复用性:通常只为特定的报表、大屏或 API 接口服务。

  • 主要功能:直接支撑业务决策、数据可视化报表、推荐系统特征工程等。

分层架构优势分析

常见分层模型对比

在实际工程中,不同公司会根据自身规模和技术栈对分层进行微调:

  • 经典四层模型:ODS -> DWD -> DWS -> ADS,适用于大多数中大型互联网公司。
  • 精简三层模型:ODS -> DWD -> ADS,适用于数据量较小、业务简单的场景,省略 DWS 层,由 DWD 直接支撑应用。
  • 五层模型:在 ODS 前增加 DI 层(数据接入层),用于处理异构数据源的统一接入、格式转换和初步过滤,适用于源系统极其复杂、数据格式多样的场景。

关键设计原则

  1. 单向依赖:数据流向必须是从 ODS -> DWD -> DWS -> ADS,严禁反向依赖或跨层调用(如 ADS 直接依赖 ODS),以保证架构的清晰性和可维护性。
  2. 幂等性设计:ETL 任务应支持重复执行,确保每次运行结果一致,便于数据修复和重跑。
  3. 维度建模:在 DWD 和 DWS 层广泛使用星型模型或雪花模型,以事实表为中心,维度表为辅助,优化查询性能。
  4. 生命周期管理:不同层级数据保留策略不同,ODS 层可能保留较长时间以备审计,ADS 层数据可能仅保留短期,需制定合理的数据归档和清理策略。


相关问题与解答

问题 1:为什么不能直接从 ODS 层查询数据生成报表,而必须经过 DWD 和 DWS 层?

什么是互联网数据仓库分层?数据仓库分层架构详解 第3张

解答:

直接从 ODS 层查询存在以下严重问题:

  1. 数据质量不可控:ODS 层数据包含大量脏数据、缺失值、格式不一致等问题,直接查询会导致报表结果错误。
  2. 性能低下:ODS 层数据量巨大且未经聚合,每次查询都需扫描全表,响应时间极长,无法支撑实时或准实时报表需求。
  3. 口径不一致:不同业务人员可能对同一指标有不同理解,若直接基于原始数据计算,极易产生“数据打架”,DWD 层通过标准化清洗,确保了数据口径的统一。
  4. 维护成本高:若源系统表结构变更,所有直接依赖 ODS 的报表都需要修改,维护成本极高,分层架构将这种变更影响隔离在 ODS 层,下游无需改动。

问题 2:DWD 层和 DWS 层的主要区别是什么?如何判断一个表应该放在哪一层?

解答:

  • 主要区别

    • 粒度不同:DWD 层保持业务过程的最细粒度(如每一笔订单、每一次点击);DWS 层是轻度或中度汇总粒度(如每个用户每天的行为汇总、每个商品每小时的销量)。
    • 目的不同:DWD 层旨在提供干净、标准化的明细数据,解决“数据一致性”问题;DWS 层旨在提供预聚合数据,解决“计算效率”和“复用性”问题。
    • 维度冗余程度:DWD 层通常进行维度退化,但保留事实明细;DWS 层则进行多维度的聚合,可能丢失部分明细信息。

  • 判断标准

    • 如果数据需要保留原始业务事件的完整细节,且主要用于灵活的多维度下钻分析,应放在 DWD 层
    • 如果数据是面向特定主题(如用户画像、商品分析)的预聚合结果,且主要用于快速查询和报表展示,应放在 DWS 层
    • 简单法则:如果该表的数据量相比 DWD 层有显著减少(如从亿级降到百万级),且是按维度聚合后的结果,则属于 DWS 层。

优势维度 具体说明
数据质量提升 通过 DWD 层的统一清洗和标准化,确保全公司数据口径一致,避免“数据孤岛”和“数据打架”。
计算资源优化 DWS 层的预聚合减少了重复计算,避免每次查询都扫描海量明细数据,显著降低集群负载。

开发维护便捷

什么是互联网数据仓库分层?数据仓库分层架构详解 第2张

分层解耦使得问题定位更容易,若报表数据错误,可逐层排查是 ODS 抽取问题、DWD 清洗问题还是 DWS 聚合逻辑问题。
数据复用性高 DWD 和 DWS 层的数据可被多个应用共享,避免重复开发相同的 ETL 逻辑。
历史数据追溯 ODS 和 DWD 层通常保留历史快照,支持回溯分析,便于进行同比、环比及趋势分析。

0