zoukankan      html  css  js  c++  java
  • 搭建数据仓库第06篇:逻辑建模–3–维度建模核心之总线架构

    目录

    • 前言
    • 维度建模
    • 星型模型
    • 小结

    前言

    维度建模是Kimball提出来的经典的数据仓库建模思想。维度建模提倡针对某一主题,通过建设维度和事实来快速建设数据仓库。与维度建模相对应的自然是Inmon的范式建模。在上篇也提到范式建模非常适合应用于中间明细层的建设,那么在DW/DM层为什么选择使用维度建模呢?这是第一个问题。维度建模的核心是总线架构,一致性维度,一致性事实。本篇的主题是总线架构,那为什么说维度模型是总线式架构?本篇通过维度建模和星型模型的讲解来分别解释这两个问题。

    维度建模

     维度模型之所以被选择在DW/DM层上来实现,是因为维度建模的如下特点:

    • 易用性。数据仓库的目的是DSS,即决策支持系统(Decision Support System ,简称DSS),既然面向的的是分析用户,那么数据越容易理解,越能受用户欢迎,而维度建模包含具有描述特性的维度表可以让用户很容易理解数据,而不像范式建模,由于太过规范化而导致用户对数据的理解有一定的难度,需要对业务的很深很细的了解。
    • 性能高。通过数据的处理,排序和整合,构建出来的维度表,不仅能够让用户很方便的理解数据,使用数据,而且在计算所需要的数据的时候,不需要关联太多的表,从而使得计算的性能很高。
    • 扩展性。具有非常好的可扩展性,以便容纳不可预知的新数据源和新的设计决策。可以很方便在不改变模型粒度情况下,增加新的分析维度和事实,不需要重载数据,也不需要为了适应新的改变而重新编码。

    星型模型

     提起维度建模就不得不提星型模型和雪花模型之争,具体两种模型是什么,之前已经讨论过了http://www.cnblogs.com/benchen/p/6011721.html,而且网上也很容易找到,这里就不再赘述。在Kimball的理论中,星型模型备受推崇。原因有以下几点吧。

    • 星型模型更具有易理解性,毕竟维度模型都是直接挂在事实表,没有额外的关联,所有的维度信息都汇集在维表中了。
    • 星型模型性能更高。只需要一次的关联就能获取这一维度的所有描述信息。
    • 冗余程度要更高,所有有层次关系的维度,都被设计成扁平化,有一定的冗余。但是维度表的冗余相比事实表毕竟不是一个数量级的。鉴于上面的两点,更多的偏爱于星型模型。

    星型模型是针对的单一事实表的情形,当有多个事实表通过维度关联在了一起就形成了星座模型。星座模型可以是同一主题单不同粒度的事实表之间的关联,也可以是不同主题的事实表共用同一维表。毕竟是有全局的一致性维度。

    小结

    维度建模适合于DW/DM层建模,通过使用维度建模,用户可以得到很好的效果,只有用户满意了,数据仓库才能实现更大的价值。可以说维度建模的核心是星型模型,星型模型所拥有的特点正是用户方便使用的根源。

    当然维度模型也有着一些缺点,比如数据的一致性很难保证,数据的冗余,大量的维度信息处理等,但这些相对于有点来讲都是可接受的,而且也可以通过其他方式避免和简化的。

    以维表为总线,事实表以维表为基础的总线矩阵,意味着建设出来的架构正是总线式架构。

  • 相关阅读:
    百度之星资格赛1001——找规律——大搬家
    HDU1025——LIS——Constructing Roads In JGShining's Kingdom
    DP(递归打印路径) UVA 662 Fast Food
    递推DP UVA 607 Scheduling Lectures
    递推DP UVA 590 Always on the run
    递推DP UVA 473 Raucous Rockers
    博弈 HDOJ 4371 Alice and Bob
    DFS(深度) hihoCoder挑战赛14 B 赛车
    Codeforces Round #318 [RussianCodeCup Thanks-Round] (Div. 2)
    DP(DAG) UVA 437 The Tower of Babylon
  • 原文地址:https://www.cnblogs.com/benchen/p/6087389.html
Copyright © 2011-2022 走看看