vlambda博客
学习文章列表

数据仓库之仓库模型设计

    数据时代的到来,数据仓库被大家了解的越来越多,行业发展的初期,只有大型金融机构,电信等行业可能会有数据仓库。

什么是数据仓库

    数据仓库是一个面向主题的、集成的、相对稳定的、反映历史变化的数据集合,它用于支持企业或组织的决策分析处理。

    数据仓库是为企业决策制定提供数据支撑,主要是用于数据挖掘和数据分析,为消灭消息孤岛和支持决策。

    数据仓库有如下四大特点:

    面向主题:企业系统信息中的数据综合、归类并进行分析的一个抽象,对应企业中某一个宏观分析领域所涉及的分析对象。

    数据集成:数据仓库的数据是从原有分散的数据库中的数据抽取而来的。

    不可更新:数据仓库的数据主要是提供决策分析用,设计的数据主要是数据查询,一般情况下不做修改,这些数据反映的是一段较长时间内历史数据的内容,有一块修改了影响的是整个历史数据的过程数据。

    随时间不断变化:数据仓库中的数据不可更新是针对应用来说,从数据的进入到删除的整个生命周期中,数据仓库的数据是永远不变的。

为什么要建设数仓

    建设数据仓库为解决企业数据使用中的以下问题:

1、多源数据归集,去除信息孤岛;

2、统一模型设计方便使用;

3、统一码值,口径,命名规则提升数据质量;

4、数据统一计算,数据资产统一管理;

5、提供OLAP分析

6、支持下游应用,比如:业务监控数据(大盘数据洞察)、数据挖掘(用户画像、推荐等)、数据分析(业务诊断、提升优化等)。

数据仓库模型设计

    数据模型就是数据组织和存储方法,它强调从业务、数据存取和使用角度合理存储数据。

    只有数据模型将数据有序的组织和存储起来之后,大数据才能得到高性能、低成本、高效率、高质量的使用。

数据建模作用


进行全面的业务梳理,改进业务流程。在业务模型建设的阶段,能够帮助我们的企业或者是管理机关对本单位的业务进行全面的梳理。通过业务模型的建设,我们应该能够全面了解该单位的业务架构图和整个业务的运行情况,能够将业务按照特定的规律进行分门别类和程序化,同时,帮助我们进一步的改进业务的流程,提高业务效率,指导我们的业务部门的生产。

    建立全方位的数据视角,消灭信息孤岛和数据差异。通过数据仓库的模型建设,能够为企业提供一个整体的数据视角,不再是各个部门只是关注自己的数据,而且通过模型的建设,勾勒出了部门之间内在的联系,帮助消灭各个部门之间的信息孤岛的问题,更为重要的是,通过数据模型的建设,能够保证整个企业的数据的一致性,各个部门之间数据的差异将会得到有效解决。

    解决业务的变动和数据仓库的灵活性。通过数据模型的建设,能够很好的分离出底层技术的实现和上层业务的展现。当上层业务发生变化时,通过数据模型,底层的技术实现可以非常轻松的完成业务的变动,从而达到整个数据仓库系统的灵活性。

    模型的建立,还有一个重要的作用是,屏蔽底层源系统信息,保持上层应用的稳定;底层源系统信息因为数据统计口径,或者数据变化,直接使用很不稳定,模型很好的解决了这一点。

数据仓库建模方法

维度建模


    维度模型是数据仓库领域大师Kimball所倡导的。维度建模以分析决策的需求出发构建模型,构建的数据模型为分析需求服务,因此它重点解决用户如何更快速完成分析需求,同时还有较好的大规模复杂查询的响应性能,更直接面向业务。典型的代表是我们比较熟知的星形模型。

    星型模型由一个事实表和一组维表组成。每个维表都有一个维作为主键,所有这些维的主键组合成事实表的主键。强调的是对维度进行预处理,将多个维度集合到一个事实表,形成一个宽表。这也是我们在使用hive时,经常会看到一些大宽表的原因,大宽表一般都是事实表,包含了维度关联的主键和一些度量信息,而维度表则是事实表里面维度的具体信息,使用时候一般通过join来组合数据,相对来说对OLAP的分析比较方便

维度建模方法


    维度建模之前,通常需要选择某个业务过程,然后围绕该过程建立模型,其一般采用自底向上的方法,从明确关键业务过程开始,再到明确粒度,再到明确维度,最后明确事实,非常简单易懂,具体过程如下图

数据仓库之仓库模型设计

维度建模优缺点


    优点:技术要求不高,快速上手,敏捷迭代,快速交付;更快速完成分析需求,较好的大规模复杂查询的响应性能

    缺点:维度表的冗余会较多,视野狭窄。

关系建模


    是数据仓库之父Inmon推崇的、从全企业的高度设计一个3NF模型的方法,用实体加关系描述的数据模型描述企业业务架构,在范式理论上符合3NF,站在企业角度面向主题的抽象,而不是针对某个具体业务流程的实体对象关系抽象。它更多是面向数据的整合和一致性治理。

关系建模建模方法


    关系建模常常需要全局考虑,要对上游业务系统的进行信息调研,以做到对其业务和数据的基本了解,要做到主题划分,让模型有清晰合理的实体关系体系,以下是方法的示意

数据仓库之仓库模型设计

关系建模优缺点


    优点:规范性较好,冗余小,数据集成和数据一致性方面得到重视,比如运营商可以参考国际电信运营业务流程规范(ETOM),有所谓的最佳实践。

    缺点:需要全面了解企业业务、数据和关系;实施周期非常长,成本昂贵;对建模人员的能力要求也非常高,容易烂尾。

其他建模方法


    还有两个小众的建模方法,DataVault模型和Anchor 模型。想了解的同学可以自行了解。

企业建模经验

    下图是常见的建模实践过程,分8个步骤包括

一、数据调研

  1. 业务调研

  2. 需求分析

二、数据域划分

  1. 数据面像业务分析

  2. 业务过程与维度进行抽象集合

  3. 确定主题主题与业务密切相关,所以设计数仓之前应当充分了解业务有哪些方面的需求,据此确定主题

三、构建总线矩阵

  1. 明确业务过程所属的数据域

  2. 明确业务过程与维度的关系

四、明确指标

  1. 原子指标

  2. 组合指标

五、规范定义

  1. 构建一致性的逻辑维度与维度属性

  2. 构建一致性的度量与指标

六、明细模型设计

七、汇总模型设计

八、代码开发和部署

阿里OneData 实施建模

    OneData的指导方针首先,在建设大数据数据仓库时,要进行充分的业务调研和需求分析。这是数据仓库建设的基石,业务调研和需求分析做得是否充分直接决定了数据仓库建设是否成功。

    其次,进行数据总体架构设计,主要是根据数据域对数据进行划分;按照维度建模理论,构建总线矩阵、抽象出业务过程和维度。

    再次,对报表需求进行抽象整理出相关指标体系,使用One Data 工具完成指标规范定义和模型设计。最后,就是代码研发和运维。

    OneData的流程如下所示: