大数据-数仓分层以及每层的作用?

数据仓库四层架构解析

清晰的分层是数据仓库体系结构的核心,它体现了“高内聚、低耦合”的设计思想。

目前最经典和通用的数仓分层模型是四层结构。下面我将详细解释每一层的目的、作用、特点以及数据流向。

核心思想:为什么要分层?

在深入各层细节之前,先理解分层的好处:

  1. 清晰数据结构:每一层都有明确的职责,方便理解和维护。
  2. 数据血缘追踪:当数据出现问题时,可以清晰地回溯到问题源头。
  3. 减少重复开发:规范的数据处理流程,中间结果可以共享。
  4. 统一数据口径:通过中间层加工,保证出口数据的一致性。
  5. 屏蔽原始数据的影响:当业务系统变更时,只需调整底层(如ODS层),而不影响上层的应用。
  6. 空间换时间:通过预处理和聚合,用存储空间换取应用查询的高性能。

经典的四层数据仓库架构

数据流向通常为:数据源 -> ODS -> DWD -> DWS -> ADS/APP

1. ODS(Operational Data Store)层:操作数据层

这是数据仓库的最接近数据源的一层。

  • 作用
    • 数据同步与备份:将来自各个业务系统(如MySQL、Oracle等)的表、日志文件等数据几乎无修改地同步到数据仓库中。这相当于数据源的一个镜像或备份。
    • 保持数据原始性:数据结构和内容与源系统基本一致,一般只做简单的清洗(如去除明显脏数据)或字段剪裁。
  • 表命名建议ods_table_nameods_[业务源系统]_table_name
  • 典型操作
    • 全量同步:每天导入全量数据(如维度表)。
    • 增量同步:每天导入新增和变化的数据(如事务事实表),通常通过时间戳或增量日志(如MySQL的binlog)捕获。
2. DWD(Data Warehouse Detail)层:数据明细层

这一层是数据仓库的核心层,对ODS层的数据进行清洗、整合和规范化。

  • 作用
    • 数据清洗与标准化:处理脏数据(如非法日期、空值)、数据格式化(如统一时间格式)、统一编码(如将“男”、“Male”统一为“M”)。
    • 维度退化:将一些常用的维度字段(如用户昵称、商品分类名)直接关联到事实表中,减少后续查询的关联次数,提高易用性。
    • 数据建模:根据维度建模理论,将数据拆解成一个个清晰的事实表(如交易事实表、点击事实表)和维度表(如用户维度表、商品维度表)。
    • 形成公共明细层:这一层的数据是干净、规范、粒度为最细的(通常是单次行为或事务级别),可供多个业务方使用。
  • 表命名建议dwd_[主题域]_table_name
  • 典型操作JOIN(关联维度表)、FILTER(过滤)、DATA CLEANSING(数据清洗)、TYPE CONVERSION(类型转换)。
3. DWS(Data Warehouse Service)层:数据汇总层/数据轻度汇总层

这一层以DWD层为基础,按主题域进行跨业务的轻度聚合汇总。

  • 作用
    • 面向主题聚合:不再关注单次行为,而是围绕某个分析对象(如用户、商品、门店),将与其相关的所有行为数据聚合到一起,形成一张宽表
    • 提升查询性能:将复杂的JOIN和聚合计算提前完成,应用层查询时可以直接使用,避免了每次查询都进行大规模的数据扫描和计算。
    • 公共指标计算:计算一些通用的、跨业务的派生指标,如用户最近1日、7日、30日的购买次数、浏览时长等。
  • 表命名建议dws_[主题域]_[统计周期(如1d/7d/30d)]_[汇总粒度]
  • 典型操作GROUP BY(分组)、SUM/COUNT/AVG(聚合)、窗口函数(计算累计值、排名等)。
  • 示例dws_user_action_1d(用户单日行为宽表),包含字段:user_id(用户ID),login_count(登录次数),view_count(浏览商品次数),order_amount(下单金额)等。
4. ADS(Application Data Service)层:应用数据层

这一层直接为最终的业务应用提供数据,非常灵活。

  • 作用
    • 满足个性化需求:根据具体的报表、数据分析、推荐系统等应用的需求,进行个性化的数据加工。
    • 数据组装:可能从DWD或DWS层取数,进行复杂的业务逻辑计算,组装成最终适合业务展示的数据模型。
    • 非强制性:对于一些非常简单的查询,应用也可以直接查询DWS甚至DWD层。ADS层主要存放复杂业务逻辑的结果。
  • 表命名建议ads_[应用名称]_[指标名称]
  • 典型操作:复杂的业务逻辑计算、多表关联、最终结果输出。

总结对比

分层中文全称核心作用数据粒度对应建模阶段
ODS操作数据层数据同步、备份、保持原始性与源系统相同无建模,贴源存储
DWD数据明细层数据清洗、规范化、维度退化,形成明细事实与维度最细粒度(如单次交易)维度建模(明细层)
DWS数据汇总层面向主题/对象聚合,构建公共宽表,提升性能较粗粒度(如每日汇总)维度建模(汇总层)
ADS应用数据层满足具体应用的个性化计算需求不定,与应用相关面向应用的宽表或报表

通过这种分层结构,数据就像在一条流水线上,从原始的“原材料”(ODS),经过清洗和标准化变成“标准零件”(DWD),再组装成“半成品组件”(DWS),最后根据不同的“产品需求”加工成最终的“商品”(ADS)。这使得整个数据体系井然有序、高效且健壮。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值