数据仓库常用的建模方法对比

文章的内容来自于大数据之路以及转自https://blog.csdn.net/weixin_39478115/article/details/111315467

ER模型 

      数据仓库之父Bill Inmon提出的建模方法是从全企业的高度设计一个3NF的模型,用实体关系(Entity Relationship,ER)模型描述企业业务,在范式理论上 符合3NF。数据仓库中的3NF与OLTP系统中的3NF的区别在于,它是站在企业角度面向主题的抽象,而不是针对某个业务流程的实体对象关系的抽象。其具体的特点如下:

     1.需求全面了解企业业务的数据。

     2.实施周期非常长。

     3.对建模人员的能力要求非常高。

     采用ER模型建设数据仓库模型的出发点是整合数据,将各个系统中的数据以整个企业角度按主题进行相似性组合和合并,并进行一致性处理,为数据分析决策服务,但是并不能直接用于分析决策。

      其建模的步骤分为三个阶段: 

      1.高层模型:一个高度抽象的模型,描述主要的主题以及主体间的关系,用于描述企业的业务总体概况。

      2.中层模型:在高层模型的基础上,细化主题的数据项。

      3.物理模型(也叫底层模型):在中层模型的基础上,考虑物理存储,同事基于性能和平台特点进行物理属性的设计,也可能做一些表的合并、分区的设计等。

       ER模型在实践中最典型的代表是Teradata公司基于金融业务发布的FS-LDM(Financial Services Logical Data Model),它通过对金融业务的高度抽象和总结,将金融业务划分为10大主题,并以设计面向金融仓库模型的核心为基础,企业基于此模型做适当的调整和扩展就能快速地实施。

FS-LDM的相关知识看:https://blog.csdn.net/oracle8090/category_8377625.html

维度模型

       维度模型是数据仓库领域的Ralph Kimball 大师所倡导的,他的The Date Warehouse Toolkit-The Complete Guide TODimensional Modeling 是数据仓库工程领域最流行的数据仓库建模的经典。

       维度建模从分析决策的需求出发构建模型,为分析需求服务,因此它重点关注用户如何更快速地完成需求分析,同事具有较好的大规模复杂查询的相应性能。其典型的代表是星形模型,以及在一些特殊下使用的雪花模型。其设计分为以下几个步骤。

       1.选择需要进行分析决策的业务过程。业务过程可以是单个业务事件,比如交易的支付、退款等。也可以是某个事件的状态,比如当前账号的余额等。还可以是一系列相关业务事件组成的业务流程,具体需求看我们分析的是某些事件发生的情况,还是当前状态或是事件流转效率。

       2.选择粒度。在事件分析中,我们要预判所有分析需要细分的程度,从而决定选择的粒度。粒度是维度的一个组合。

       3.识别维表。选择好粒度之后,就需要基于此粒度设计维表,包括维度属性,用于分析时进行分组和筛选。

       4.选择事实。确定分析需要衡量的指标。

 两种建模的对比

  1. 从业务角度出发来考虑

    ER模型是用实体加关系描述的数据模型描述企业业务架构,在范式理论上符合3NF,是以业务功能为出发构建数据模型,而不是针对某个具体业务流程的,面向功能性模块开发。

    维度建模以分析决策的需求为出发点构建模型,一般有较好的大规模复杂查询的响应性能,更直接面向业务,典型的代表是我们比较熟知的星形模型,常用就是事实表关联很多维度表、退化维度形成宽表、根据某主题下的业务过程进行建模,往往是维度建模友好度更高,面向分析式模型开发。

  2. 从易用性和交付效率方面来考虑

    ER模型是规范性好、冗余少、但缺点是需要全面了解企业业务、数据和关系,对于建模人员要求很高,实施周期非常长,人力成本昂贵,对于一个新人来说不可能在短时间上手的,对于运营人员来说,如果他们想要自己进行查数据的话,难度会有些高。

    维度建模相对能快速上手,快速交付,运营人员只需要根据我们的数据字典,查询自己所属的业务模块对应的业务过程,一个简单的select语句就可以搞定所有事情,但缺点是冗余会较多,不过在当今时代,存储存储可以忽略不计。

  3. 从存储和计算层面来考虑

    ER模型是完全遵守3NF,当查询数据时,需要进行多表关联查询,这时候随着数据量几百亿几千亿的情况下,会大大的降低执行效率并且算力越来越多,最终导致计算成本都要不断的累加,在存储方法由于规范性好,数据冗余比较小。

    维度模型是面向业务过程,由于所有主题数据和业务过程数据都已经提前处理好了,在进行查询数据的时候,相对ER模型来讲,就不需要那么多的关联查询,大大提高了执行效率和减低算力、人力成本,但是数据冗余可能会较多,但是将多个源的数据以文本的形式存储在分布式系统中,存储成本(列式存储)并不需要那么多成本。但是从存储、计算、成本、交付、易用性等多方面考虑取平衡值,还是维度模型更实用。

  4. 从应用系统出发来考虑

    ER模型更适应于OLTP系统,维度模型更适用于OLAP系统。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值