数据仓库的分层结构

为什么要分层?

分层的主要原因是在管理数据的时候,能对数据有一个更加清晰的掌控,详细来讲,主要有下面几个原因:

  • 数据结构清晰,每一个数据分层都有它的作用域,这样我们在使用表的时候能更方便地定位和理解。
  • 方便数据血缘追踪,简单来说,我们最终给业务呈现的是一个能直接使用业务表,但是它的来源有很多,如果有一张来源表出问题了,我们希望能够快速准确地定位到问题,并清楚它的危害范围。
  • 减少重复开发,规范数据分层,开发一些通用的中间层数据,能够减少极大的重复计算。
  • 把复杂问题简单化,将一个复杂的任务分解成多个步骤来完成,每一层只处理单一的步骤,比较简单和容易理解。而且便于维护数据的准确性,当数据出现问题之后,可以不用修复所有的数据,只需要从有问题的步骤开始修复。
  • 屏蔽原始数据的异常
  • 屏蔽业务的影响,不必改一次业务就需要重新接入数据

一般的数据仓库大致会分为操作数据层(Operational Data Store, ODS)、明细数据层(Data Warehouse Detail , DWD )、汇总数据层(Data Warehouse Summary, DWS )和应用数据层(Application Data Store, ADS)。

ODS层

ODS层属于操作数据层,数据准备区,数据来源是各业务系统的源数据,物理模型和业务模型一致。通过数据抽取将数据装载到数据仓库ODS层,不做清洗转换。

DWD层

数据来源ODS层,是DW明细事实层,数据模型与ODS一致,为EDW提供各主体业务明细数据。根据ODS增量数据与相关DWD表进行merge生成全量数据,不做清洗转换,保留原始全量数据。

DW层

数据来自DWD层,是DW事实层,采用维度建模,星型架构,这一层可细分为dwb和dws。为EDW提供各种统计汇总数据。DWB是根据DWD明细数据进行清洗转换,如维度转代理键、身份证清洗、会员注册来源清洗、字段合并、空值处理、脏数据处理、IP清洗转换、账户余额清洗 、资金来源清洗等。DWS是根据DWB层数据按各个维度ID进行粗粒度汇总聚合,如按交易来源,交易类型进行汇总。

DM层

数据来自DW层,采用维度建模,星型架构。这一层可以是一些宽表,是根据DW层数据按照各种维度或多种维度组合把需要查询的一些事实字段进行汇总统计并作为单独的列进行存储,满足一些特定查询、数据挖掘应用。将事实拉宽,度量预先计算,尽量减少数据访问时计算,优化检索。

ST层

数据来自DW层,采用维度建模,星型架构。前端报表展现,主题分析,KPI报表。从DW层的数据进行粗粒度聚合汇总;如按年、月、季、天对一些维度进行聚合生成业务需要的事实数据。
 数据仓库的分层结构

五层模型架构特点

细化DW建模

  • 对DW中各个主题业务建模进行了细分,每个层次具有不同的功能
  • 保留了最细粒度数据
  • 满足了不同维度,不同事实的信息

满足数据重新生成

  • 不同层次的数据支持数据重新生成
  • 无需备份恢复
  • 解决了由不同故障带来的数据质量问题
  • 消除了重新初始化数据的烦恼

减少应用对DW的压力

  • 以业务应用驱动为向导建模,通过ST、DM层提供数据
  • 避免直接操作基础事实表
  • 降低数据获取时间

快速适应需求变更

  • 适应维度变化
  • 明细基础数据层稳定,适应前端应用层业务需求变更
  • 所有前端应用层模型之间不存在依赖,需求变更对DW整个模型影响范围小
  • 能适应短周期内上线下线需求