数据仓库的两种建模方法(范式建模和维度建模)

数据仓库的两种建模方法

范式建模

  • Inmon提出的集线器的自上而下(EDW-DM)的数据仓库架构。操作型或事务型系统的数据源,通过ETL抽取转换和加载到数据仓库的ODS层,然后通过ODS的数据建设原子数据的数据仓库EDW,EDW不是多维格式的,不方便上层应用做数据分析,所以需要通过汇总建设成多维格式的数据集市层。优势:易于维护,高度集成;劣势:结构死板,部署周期较长
  • 范式建模应用在EDW层
  • 一个符合第三范式的关系必须具有以下三个条件:
    1. 每个属性的值唯一,不具有多义性;
    2. 每个非主属性必须完全依赖于整个主键,而非主键的一部分;
    3. 每个非主属性不能依赖于其他关系中的属性,因为这样的话,这种属性应该归到其他关系中去。
  • 但是由于EDW的数据是原子粒度的,数据量比较大,完全规范的3范式在数据的交互的时候效率比较低下,所以通常会根据实际情况在事实表上做一些冗余,减少过多的数据交互。

               数据仓库的两种建模方法(范式建模和维度建模)_第1张图片

Inmon理论下结构就是:ODS、EDW和DM,也就是贴源层、主题模型层、共性加工层以及集市层。每一个层对应于数据库下面的模式,接下来依次介绍这四个层:

(1)  ODS(贴源层):即这里存放的数据与原系统保持一致,将采集公司所有的系统产生的数据以及外部数据(包括合作数据以及爬虫获得的数据),将所采集的数据汇总到一起,供EDW和DM使用;

(2)  EDW:这一层分为两个,即ADM(共性加工层)和FDM(主题模型层)。其中FDM将从ODS层不同系统不同表的字段进行分类,同一主题的字段都归为一类,目前流行的十大主题;ADM是加工一些共性的指标,指标从ODS或者FDM的字段加工来,这层主要供集市层使用;

(3)  DM:数据集市层,这一层是将业务部门所关注的指标进行汇总,形成的数据,不同的业务部门可以形成不同的集市,具体情况可以视情况而定;集市层的架构可以细分为:基础层、汇总层和分析层。

这样的层次结构,虽然层次很清晰,但是如果越靠近底层数据出现问题,那么就会越影响到后面的;同时时间上做不到实时更新,一边都是T+1,或者越到后面时效性都可能是T+2/3的情况。因此当我们考虑到我们的应用的场景是否需要考虑时效性的时候,我们也要做出相应的调整。

维度建模

  • Kimball提出的总线式的自下而上(DM-DW)的数据仓库架构。同样的,操作型或事务型系统的数据源,通过ETL抽取转换和加载到数据仓库的ODS层,然后通过ODS的数据,利用维度建模方法建设一致维度的数据集市。通过一致性维度可以将数据集市联系在一起,由所有的数据集市组成数据仓库。优势:构建迅速,最快的看到投资回报率,敏捷灵活;劣势:作为企业资源不太好维护,结构复杂,数据集市集成困难。
  • 星型模型(推荐)和雪花模型

           数据仓库的两种建模方法(范式建模和维度建模)_第2张图片

在复合式的数据仓库架构中,操作型或事务型系统的数据源,通过ETL抽取转换和加载到数据仓库的ODS层,然后通过ODS的数据,利用范式建模方法,建设原子数据的数据仓库EDW,然后基于EDW,利用维度建模方法建设数据集市。

优劣比较

特性 Kimball Inmon
时间 快速交付 路漫漫其修远兮
开发难度
维护难度
技能要求 入门级 专家级
数据要求 特定业务 企业级

参考文献:

深入对比数据仓库模式:Kimball vs Inmon

扩展阅读:

一般常规的数据仓库层级结构可分为:ods、dw(默认为汇总数据层,也可在细分为dwd(明细)与dw(汇总)两层)、dm共三层:

ods层:称为接口层或近源数据层,表结构与源系统表结构高度相似,通常在ods层主要会做字段的筛选,枚举值转换,编码统一,异常&缺失数据处理等操作。

dw层:称为中间层,按主题建模(域->主题)的明细数据层,数据粒度与ods层一致。

dm层:称为数据集市层,集市层是按照业务主题、分主题构建出来的、面向特定部门或人员的数据集合。


维度建模源于Kimball提出的总线式的自下而上(DM-DW)的数据仓库架构。

特点:

1.模型结构简单,星型模型为主;

2.开发周期短,能够快速迭代;

3.维护成本较高;

范式建模源于Inmon提出的集线器的自上而下(EDW-DM)的数据仓库架构。

特点:

1.同一份数据只存放在一个地方,因此只能从一个地方获取,没有数据冗余,保证了数据一致性;

2.解耦(系统级与业务级),方便维护;

3.开发周期较长,开发成本较高;

 

当下的数据仓库模型架构设计中,dw层通常会采用范式建模,并且可以根据实际情况允许存在一些冗余。dm层通常会采用维度建模,因为采用维度建模构建出来的数据模型更加符合普通人的认知、易于被普通人所理解,从而有利于数据的推广使用。

 

你可能感兴趣的:(数据仓库,大数据,数据仓库,数学建模,hadoop)