数仓分层架构详解: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层建立指标口径文档
    • 各层建立数据血缘关系
相关推荐
Asa121383 天前
R语言实现多组学因子分析(MOFA)
数据分析
西木莉3 天前
数据仓库概述
数据仓库
漂着的圆木3 天前
Agent 功能参与度:Copilot 怎么算
sql·数据分析·agent·githubcopilot·度量
paopaokaka_luck3 天前
智慧社区综合服务小程序(人脸识别、AI问答、Echarts图形化分析)
前端·javascript·spring boot·spring·数据分析·echarts
Aloudata3 天前
语义层和SQL Copilot:一个降低写SQL门槛,一个统一业务逻辑
大数据·人工智能·数据分析·data agent·语义层
IT研究室3 天前
最新大数据毕业设计选题推荐-基于大数据的信用等级数据分析与可视化-大数据-Spark-Hadoop-Bigdata
大数据·信息可视化·数据分析·spark·课程设计
paopaokaka_luck3 天前
考研政治刷题小程序(AI推荐题目、ECharts数据分析、章节练习与专项训练、模拟考试、错题本与收藏夹、学习打卡与目标管理、题库和组卷维护)
前端·javascript·spring boot·spring·数据分析·echarts
2601_960620374 天前
2026校招市场策略岗项目准备指南:调研/竞品/活动/竞赛4类项目
数据分析
SelectDB4 天前
同等资源下 Apache Doris 4.2 vs StarRocks 4.1.1:1TB SSB 与 TPC-H 性能实测
大数据·数据库·数据分析
SelectDB4 天前
Doris vs ClickHouse:企业 OLAP 走向下一阶段,两种技术路线如何选择
大数据·数据库·数据分析