hello 数据仓库

作为笔记记录下,希望对别的朋友有帮助。
 
Hello DW
1. WHAT
    1.1 数据仓库定义
        数据仓库不是新事物,它的定义由数据仓库之父——Bill Inmon在1991年发表的著作《Building the Data Warehouse》中提出。本书影响非常大,属于数据仓库的经典著作。Bill Inmon也被人称之为“数据仓库之父”。
       他给出的数据仓库定义:数据仓库(Data Warehouse, 简称DW)是一个面向主题的、集成的、非易失的,随时间变化的用来支持管理人员决策的数据集合。
 
     1.2 四个特点:
    * 面向主题性——传统操作型数据的数据设计围绕功能进行组织,数据组织方式目的就是如何更好的支持该功能的业务操作。比如订票系统,数据库的组织结构围绕订票功能实现。而数据仓库的数据组织方式是面向主题的。数据按照主题域进行组织、设计。主题域是对公司业务的更高度的抽象和归纳,比如对主题域可以是:客户、消费、推广等,随公司的业务领域不同而不同。

    * 集成性——各个业务系统的数据统一汇聚到数据仓库中,得到一个单一的物理映像。数据仓库的数据源来自各个数据系统,各数据系统的数据源类型、存储位置各不相同,需要集成到统一的数据仓库,对外提供一致的数据物理映像,该过程就是数据仓库建设过程中的数据集成。另外,数据集成并不是简单的把数据转储到DW中,在集成过程中通常还需要对数据进行标准化数据口径的处理。以数据中的性别信息为例,不同业务系统中对性别数据可能采用了不同的值进行表示,例如0/1,f/m等,类似数据在集成过程中都要转换成数据仓库统一的数据口径。

    * 非易失——操作型数据库中的数据存储的是业务的当前值,值变更通常对应的是一次数据库的更新操作,不会对历史值进行保留,用户每次查询得到的也是当前值。如用户每次查询自己的银行卡余额都可以得到当前的实际值,但是如果要查询之前某一天的余额,普通的业务系统就不能完成了。因为没有保留历史数据,丢失了。而数据仓库在每次数据变化时并不会进行数据更新操作,而是产生一个新的静态数据快照追加到DW中,这样就保留了所有的历史数据。另外需要指出的一点就是,数据仓库的数据保留周期长,也保证了数据的非易失性。操作型数据系统的数据保留时间通常在30-90天,DW的数据保留周期通常在5-10年。

    * 随时间变化——DW中的数据通常要与时间信息绑定,DW中的数据只是在某一时间是准确的。比如查询账户余额,需要说明是哪一天的账户余额。时间维度几乎是任何数据仓库中都必须的重要维度。
 
2. WHY
    在说为什么需要数据仓库之前,先看下没有数据仓库的话,一个公司的数据业务是怎么样的。
 

 
上面这图是我从书上复制出来借用的。图中的框形表示部门,圆柱形表示数据存储。部门间的数据需求就会产生一次ETL。如果部门少的话,这种方式也没有什么问题,但是如果是一家大公司,会有大量部门 间的数据ETL,不可避免的还有级联的ETL。形成的结果就是上面这幅图——蜘蛛网。蜘蛛网式的数据建设带来的问题就是:
* 数据缺乏可信性:一个业务指标可能A部门统计出来的是增长10%,而B部门统计出来是减少5%。这里排除计算程序本身的问题,有可能是两个部门采用了不同的指标统计口径,或者采用了不同的数据源,又或者是因为数据采集的时间点不一致等等。部门间数据的层级数据ETL,也会影响数据质量。一个环节数据出现偏差,层层的级联ETL会逐级放大错误。总之结果就是,无法给出一个可信的数据指标。

* 生产效率问题:蜘蛛网式的建设,数据使用方要面对各种数据源类型,而且数据任务无法复用,无法找到统一的数据来源,导致生产效率低下。

* 无法将数据转化为信息:各个业务系统都维护自身的业务数据,但是均没有形成统一时间周期的历史数据,没办法通过对历史数据的挖掘和分析提取有价值的信息,支撑公司的决策需求。
 
于是我们需要一个数据仓库:

 
3. HOW
   3.1  数据仓库的层次结构
    在不同的行业领域对数据仓库的层次结构划分略有不同,但是思路是相近的。下面是一个相对通用层次,实际的数据仓库可能会在此基础上裁剪或者增补层次。


 
接下来简要的把各个层次的含义说一下。
    STAGE:业务数据与DW数据在数据集成阶段的缓冲层,各个业务系统的数据统一暂存到STAGE,后续DW的ETL过程只需要面对单一的物理介质,简化了数据集成的过程。STAGE层的数据存储周期都不长,一般在3-7天左右。STATE层还有一个好处就是方面DW中数据中问题数据的修复,可以重新从STAGE重新采集数据进行修复。STAGE可选。
    ODS:操作数据存储层。ODS数据结构还保持着业务系统中的结构,但是ODS存储的周期长,需要长期沉淀。ODS的数据已经划分到各自的主题域下,属于仓库的范围之内了。ODS是为下一阶段的数据处理做准备。
    DWD:明细数据层。企业的核心业务处理层,需要重点设计、建设,数据模型的价值在这层突出体现,通常采用关系模型3NF设计。这一层需要对数据进行统一口径,以及一些汇总,但是仍然有明细数据。如每个客户的多次消费记录。
    DWA: 轻度汇总层。该层是对明细数据的进一步汇总,该层不再有明细数据,均为汇总后的数据,客户的周消费汇总等。还有一些业务系统中没有,但是又很重要的衍生数据,如客户的首末次消费时间等。
    DM:数据集市。一般部门级的数据分析系统,主题域一般是数据仓库主题域的子集。DM是为部门级数据分析服务,可以更加定制化,模型也围绕自身业务。模型通常采用多维模型,目的就是更好的满足OLAP的需求。
    数据仓库在建设过程中有不同的方法论,上面的说法其实只是一家之言,在一些建设领域还有其他的声音。
 
    3.2 ODS的不同看法
         3.2.1 独立建设:再次把Bill Inmon搬出来,他的观点是ODS应该作为独立数据系统建设。因为DW存储的应该是汇总后的数据,操作型数据的存储的粒度和DW不一致,ODS数据是DW数据的准备阶段,大量明细数据的长期沉淀对DW来说成本高,而且也没有必要长期沉淀。因为他的观点是下面这样的。ODS存储周期保持在3-6个月。这种建设方式允许ODS的数据可更新,具备了一定的OLTP的特性。并且可以独立对外提供数据服务。ODS的数据服务响应的及时性要求高,通常在1秒以内,主要提供一些概要数据。比如常见的用户画像场景。


     3.2.2 ODS只是DW的前端边缘:再把BI之父 Ralph Kimball搬出来,他的观点是:ODS是DW的一部分,ODS也应该是面向主题的、集成的。随着技术的进步,Bill Inmon提出的困难都不存在了,新的大数据技术可以实现大量明细数据和汇总数据的共同存储,另外因为机器学习和数据挖掘技术的发展,DW中单纯汇总的数据已经满足不了需求,需要能够获取大量明细数据作为数据源。因为 Ralph Kimball把ODS纳入到DW中,如下图

 
3.3 数据仓库的建设过程有两个方法论:从底向上、从顶向下。
    又得提到前面的两位了,干脆配张照片吧。
    Bill Inmon 提出从底向上的方案(以下简称方案1)

 Ralph Kimball 提出从顶向下的方案(以下简称方案2)

 其实两种方案的主要分歧点在数据集市的看法,方案1认为数据集市是在数据仓库基础上衍生的,数据集市的所有数据均需要来自DW。而方案2则认为数据集市可以优先独立建设,数据直接对接业务系统,多个数据集市组成数据仓库。

从底向上方案

 

从顶向下方案

数据集市所有数据来自DW

 

数据直接来自操作层

指标体系强一致性

 

一致性保障难度大

实施周期长

 

实施周期短,见效快

长期看节省资源和工作

 

短期看节省资源和工作

通常情况下,短期效益压力较大时可以采用从顶向下的方案,但是一旦完成了短期业务目标之后,还是需要转到从底向上的方案中来。

最后,
see you, DW!

猜你喜欢

转载自han-zw.iteye.com/blog/2308746