数据仓库分层经典架构:ODS、DWD、DWS
ODS、DWD、DWS 是数据仓库分层架构中的经典模型,它们代表了数据从原始状态到最终可供分析使用的不同处理阶段。
1. ODS (Operational Data Store) - 操作数据存储层
全称: Operational Data Store
含义: 这是数据仓库的第一层,也常被称为“准备区”或“贴源层”。它的核心职责是原封不动地或经过最少量清洗后,从各个业务系统(如数据库、日志文件、API等)中接入原始数据。
主要特点:
- 数据同步: 负责从源系统实时或批量同步数据。
- 保持原始: 最大程度地保留了与源系统一致的数据结构和内容,方便数据溯源和问题排查。
- 数据缓冲: 作为业务系统和数据仓库分析系统之间的缓冲,减少对业务系统的直接访问压力。
从业务数据库、用户行为日志采集到消息队列(Kafka)的数据,就构成了ODS层。
2. DWD (Data Warehouse Detail) - 明细数据层
全称: Data Warehouse Detail
含义: 这是数据仓库的核心层之一。它会对ODS层的数据进行清洗、规范化、去重和关联等一系列处理,形成面向特定业务主题的、干净、一致的明细事实表和维度表。
主要特点:
- 数据清洗: 处理空值、异常值、格式不一致等问题。
- 维度统一: 将不同来源的同一维度(如“用户”、“商品”)进行统一和标准化。
- 结构化: 按照事实和维度的模型组织数据,比如将用户行为日志解析成一张包含用户ID、商品ID、事件时间等字段的明细表。
- 保持粒度: 通常保留了业务过程中最细粒度的数据,是后续数据分析和聚合的基础。
Flink消费ODS层数据,进行ETL加工,并关联维表信息,产出的数据就属于DWD层。
3. DWS (Data Warehouse Service) - 数据仓库服务层
全称: Data Warehouse Service,有时也称 Data Warehouse Summary (汇总数据层)。
含义: 这一层是基于DWD层的数据,按照特定的分析主题或业务域进行轻度或中度的聚合与汇总,形成宽表或聚合指标表。
主要特点:
- 数据聚合: 对DWD层的明细数据进行聚合运算(如SUM、COUNT、AVG),生成汇总指标。例如,按天、按用户聚合计算其总订单数、总消费金额等。
- 构建宽表: 将多个DWD层的表关联在一起,形成一个包含多个维度和指标的“宽表”,方便分析师直接查询。
- 面向主题: 围绕一个业务主题(如流量、订单、用户等)组织数据,服务于特定的分析需求。
- 提升效率: 通过预计算,大大减少了上层应用(如BI报表)的复杂查询和计算量,提升了查询性能。
从DWD层到应用层之间,可以增加一个DWS层,因为下层的聚合逻辑往往是相同的,这正是DWS层的核心价值所在。
总结
可以这样理解它们之间的关系:
- ODS: 原始数据的“搬运工”,把各个源头的数据汇集到一起。
- DWD: 数据的“清洗和整理工”,把杂乱的原始数据整理成干净、规范的明细记录。
- DWS: 数据的“预加工厨师”,根据常见的“菜单”(分析需求),把明细数据提前做成半成品(汇总指标),方便上层快速取用。
这个分层架构使得数据处理流程更加清晰、可维护,并且能够更好地复用中间层的数据,提高整体数据开发的效率。