数据仓库之分层理论

1.为什么要分层
    • 清晰数据结构:每一个数据分层都有它的作用域,这样我们在使用表的时候能更方便地定位和理解。
    • 数据血缘追踪:简单来说,我们最终给业务呈现的是一个能直接使用业务表,但是它的来源有很多,如果有一张来源表出问题了,我们希望能够快速准确地定位到问题,并清楚它的危害范围。
    • 减少重复开发:规范数据分层,开发一些通用的中间层数据,能够减少极大的重复计算。
    • 把复杂问题简单化:将一个复杂的任务分解成多个步骤来完成,每一层只处理单一的步骤,比较简单和容易理解。而且便于维护数据的准确性,当数据出现问题之后,可以不用修复所有的数据,只需要从有问题的步骤开始修复。
    • 屏蔽原始数据的异常
    • 屏蔽业务的影响,不必改一次业务就需要重新接入数据
 
    数据仓库的分层可以算是数据仓库架构的子话题。在前段时间参与的一次讨论中,笔者发现其中争论的焦点集中在每一层的作用、特点、是否有必要存在等问题。其中,大家虽然一致提到某些相关概念,但各方的理解却并非完全一致。例如对于ODS是什么、维度建模是什么等问题的解读,都是如此。
    不妨想想看:数据从分散而异构的数据源中长途跋涉,到最终的报表、仪表盘、OLAP应用等等,让用户看到一致的结果,这是一个过程。记得以前有个矿泉水广告,说要经过N层的过滤才得到了那种水。而数据仓库也一样,从原来乱七八糟的数据到交付到用户手中的“纯净”数据,也需要这样一个过滤过程,需要各种不同的过滤装置。
    这个过滤过程,我们可以称之为ETL;而那些过滤装置,就可以看作数据仓库的分层。从目前来看,还没有非常统一的分层方法,其中,Inmon和Kimball是最具代表性的两种分层方法。
 
2.Inmon与Kimball
    在Inmon提出的CIF(Corporate Information Factory,企业信息工厂)中,他将ODS(Operational Data Store,操作型存储)、EDW(Enterprise Data Warehouse,企业数据仓库)、DM(DataMart,数据集市)区别开来,共分三层。
    相对于此,Kimball的总线架构强调多个数据集市合成了数据仓库,只是他们基于统一的维度而已。因此,总线架构的分层中,从数据源接口就直接到了DM了。
    根据这两种思路,又可以衍生一些不同的方法。例如IBM就提出一种CDW的概念,叫做企业数据仓库层,这一层介于EDW和DM之间,起过渡作用(因为EDW和DM两层的建模理念是不同的)。
    除了这些分层,大家都还认同一个Staging Area(集结地)的地方。这是用于ETL过程中数据的临时存储,可究竟这个区域是位于接口到ODS之间,还是ODS到DW之间,或是CDW到DM之间,并没有达成一致的意见。在笔者看来,既然它是用于ETL中间数据缓存的,那么,在以上每一层都会需要,它是一个每层共用的存储区域。
    下面我们参考Inmon与Kimball的思想,将数据仓分为如下几层进行简单介绍。
 
1.CIF 层次架构
    CIF 层次架构(信息工厂)通过分层将不同的建模方案引入到不同的层次中,CIF 将数据仓库分为四层,如图所示:
    ODS(Operational Data Store):操作数据存储层,往往是业务数据库表格的一对一映 射,将业务数据库中的表格在 ODS 重新建立,数据完全一致;
    DWD(Data Warehouse Detail):数据明细层,在 DWD 进行数据的清洗、脱敏、统一 化等操作,DWD 层的数据是干净并且具有良好一致性的数据;
    DWS(Data Warehouse Service):服务数据层(公共汇总层),在 DWS 层进行轻度汇 总,为 DM 层中的不同主题提供公用的汇总数据;
    DM(Data Market):数据集市层,DM 层针对不同的主题进行统计报表的生成;
 
2.层次功能详解
2.1 ODS:    
    ODS 层中的数据全部来自于业务数据库,ODS 层的表格与业务数据库中的表格一一对应,就是将业务数据库中的表格在数据仓库的底层重新建立一次,数据与结构完全一致。
    由于业务数据库(OLTP)基本按照 ER 实体模型建模,因此 ODS 层中的建模方式也是 ER 实体模型。
2.2 DWD:
    DWD 层要做的就是将数据清理、整合、规范化,脏数据、垃圾数据、规范不一致的、 状态定义不一致的、命名不规范的数据都会被处理。DWD 层应该是覆盖所有系统的、完整 的、干净的、具有一致性的数据层。
    在 DWD 可能会用到 ER 或者维度模型。在 DWD 层会抽取出公共维度,例如区域等。 也就是说 DWD 层是一个非常规范的,高质量的,可信的数据明细层。
2.3 DWS:
    DWS 层为公共汇总层,会进行轻度汇总,粒度比明细数据稍粗,会针对度量值进行汇 总,目的是避免重复计算。往往在 DWS 层建立宽表。例如订单总金额,可能在原始数据中没有这个数据,进入 DWS 层后可以统计出订单总金额,避免重复地拿订单明细数据去计算。
    DWS 层建议使用维度建模,因为数据仓库的主要应用是进行数据分析。 
2.4 DM:
    DM 层为数据集市层,面向特定主题,例如订单主题、物流主题等。在 DM 完成报表 或者指标的统计,DM 层已经不包含明细数据,是粗粒度的汇总数据,因此 DM 层会被当 成 BI 或者 OLAP 的底层模型。
    在大数据数据仓库领域内,数据仓库是包括集市的,而且物理上是统一、非隔离的,集 市的概念相较与传统数据仓库比较弱化,由于有底层明细数据、通用汇总数据的存在,数据 集市一般位于上层。
    应用层面存在相应分析主题的概念,甚至很大程度上存在集市交叉的现象,所以如果是 在大数据领域构建企业整体数据仓库,并且数据集市也一块规划,建议集市弱化,把它当作 是梳理上层数据域的工具。
 
 
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员学习圈

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值