数仓分层架构详解: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层建立指标口径文档
    • 各层建立数据血缘关系
相关推荐
Watermelo6173 小时前
探究TOON的价值边界:比JSON更优的大模型友好数据格式?
数据结构·人工智能·语言模型·自然语言处理·数据挖掘·数据分析·json
德彪稳坐倒骑驴3 小时前
Hive电商数据分析项目 过程记录
hive·hadoop·数据分析
红队it3 小时前
【Spark+Hadoop】基于spark+hadoop游戏评论数据分析可视化大屏(完整系统源码+数据库+开发笔记+详细部署教程+虚拟机分布式启动教程)✅
大数据·hadoop·分布式·算法·游戏·数据分析·spark
大闲在人3 小时前
3. 需求随机变量的聚合与分解及变异系数
数据分析
CryptoPP3 小时前
对接API库 获取印度股票历史数据
金融·数据挖掘·数据分析·区块链
俊哥大数据4 小时前
【项目8】基于Hadoop+Hive+SpringBoot+Vue智慧社区大数据仓库项目
数据仓库·hive·hadoop
BOB-wangbaohai4 小时前
软考-系统架构师-数据库系统(一)
数据仓库·软考·系统架构师·数据库设计
rgb2gray4 小时前
论文深度解析:基于大语言模型的城市公园多维度感知解码与公平性提升
大数据·人工智能·机器学习·语言模型·自然语言处理·数据分析·可解释
少林码僧19 小时前
2.9 字段分箱技术详解:连续变量离散化,提升模型效果的关键步骤
人工智能·ai·数据分析·大模型