数仓分层架构详解:ODS、DWD、DWS

一、ODS层(Operation Data Store)- 原始数据层

核心定位

  • 数据仓库的"原始档案库"
  • 与业务系统数据保持1:1的镜像关系
  • 保持"贴源"特性,不做业务逻辑处理

核心功能

  1. 数据缓冲

    • 全量/增量同步业务系统数据
    • 保留历史变更记录(CDC)
    • 示例:MySQL Binlog日志、API接口原始数据
  2. 数据标准化

    • 统一数据格式(如时间戳统一为UTC+8)
    • 基础清洗(去除乱码、控制字符)
    • 不改变原始数据结构
  3. 数据保留

    • 通常保留30-180天(根据存储成本调整)
    • 支持数据重放和回溯

技术实现

  • 存储格式:TextFile/Json/Avro(原始格式)
  • 分区策略:按日期分区(dt=20230101
  • 工具:DataX、Flink CDC、Sqoop

二、DWD层(Data Warehouse Detail)- 明细数据层

核心定位

  • 数据仓库的"标准化细节数据层"
  • 业务过程的数据建模层
  • 数据资产化的核心层

核心功能

  1. 数据清洗

    • 空值处理(填充/过滤)
    • 异常值处理(如年龄=200)
    • 数据脱敏(手机号、身份证)
  2. 维度退化

    • 将维度表属性合并到事实表
    • 示例:订单表增加"用户等级"字段
  3. 数据标准化

    • 统一枚举值(如"男"统一为"M")
    • 单位统一(金额统一为元)
    • 代码标准化(地区代码统一为国标)
  4. 业务建模

    • 星型模型构建
    • 拉链表处理(缓慢变化维)
    • 分桶表优化(大表Join)

技术实现

  • 存储格式:Parquet/ORC(列存)
  • 分区策略:按日期+业务线分区
  • 工具:Spark SQL、Flink SQL、Hive SQL

三、DWS层(Data Warehouse Summary)- 汇总数据层

核心定位

  • 数据仓库的"业务指标计算层"
  • 数据服务的核心支撑层
  • 数据价值的主要输出层

核心功能

  1. 指标计算

    • 原子指标(GMV、UV)
    • 派生指标(日活率、复购率)
    • 衍生指标(同比、环比)
  2. 数据聚合

    • 按时间维度(日/周/月)
    • 按业务维度(品类/区域/渠道)
    • 按用户维度(新老客/会员等级)
  3. 宽表构建

    • 多表关联(订单+用户+商品)
    • 预计算(TopN、漏斗分析)
    • 数据压缩(减少重复计算)
  4. 数据服务化

    • 支持OLAP查询
    • 支持API接口
    • 支持自助分析

技术实现

  • 存储格式:Druid/Kylin(OLAP)
  • 分区策略:按时间粒度分区
  • 工具:Presto、ClickHouse、Kylin

四、各层对比分析

维度 ODS层 DWD层 DWS层
数据粒度 最细粒度(原始记录) 明细粒度(业务事件) 聚合粒度(指标)
数据量 最大(TB级) 中等(百亿级) 较小(亿级)
更新频率 实时/准实时(分钟级) 批处理(小时级) 批处理(天级)
数据延迟 1-5分钟 1-2小时 1天
数据质量 原始质量(可能含脏数据) 清洗后(高质量) 业务可用(高价值)
使用对象 数据工程师 数据分析师 业务人员
典型表 ods_order_raw dwd_order_detail dws_user_daily

五、扩展说明

  1. ADS层(Application Data Store)

    • 应用数据层(报表/看板)
    • 数据量最小(千万级)
    • 更新频率最高(分钟级)
  2. DIM层(Dimension)

    • 维度数据层(用户/商品/地区)
    • 通常与DWD层并行存在
    • 数据量较小(百万级)
  3. 数据流动

    复制代码
    业务系统 → ODS → DWD → DWS → ADS
    ↑           ↑        ↑       ↑
    CDC      数据清洗  指标计算  数据服务
  4. 设计原则

    • ODS层:保持原始性,不丢失信息
    • DWD层:保持灵活性,支持多种业务需求
    • DWS层:保持稳定性,支持快速查询
  5. 最佳实践

    • ODS层保留至少30天数据
    • DWD层建立数据质量监控
    • DWS层建立指标口径文档
    • 各层建立数据血缘关系
相关推荐
-To be number.wan12 小时前
Python数据分析:Matplotlib 绘图练习
python·数据分析·matplotlib
BYSJMG16 小时前
计算机毕设选题推荐:基于大数据的癌症数据分析与可视化系统
大数据·vue.js·python·数据挖掘·数据分析·课程设计
YIN_尹17 小时前
【MySQL】数据分析双剑客:聚合函数 与 group by子句的完美搭配
mysql·性能优化·数据分析
bigdata-rookie17 小时前
Starrocks 简介
大数据·数据库·数据仓库
普通网友18 小时前
Hive ACID 事务表实战:插入 / 更新 / 删除操作的配置与使用限制
数据仓库·hive·hadoop
独自归家的兔18 小时前
windows Hive使用全攻略:从入门到实战,轻松搞定大数据处理 - Hadoop windows安装
数据仓库·hive·hadoop
走过冬季18 小时前
02 | Hive SMB Join 原理
数据仓库·hive·hadoop
TM1Club1 天前
AI驱动的预测:新的竞争优势
大数据·人工智能·经验分享·金融·数据分析·自动化
追风少年ii1 天前
多组学扩展---分子对接pyrosetta
python·数据分析·空间·单细胞
wang_yb1 天前
倾听数据的声音:给数据分析初学者的温馨建议
数据分析·databook