多维数据模型的设计
概述
- 一、维表、事实表
- 二、星型模式(star schema)
- 三、雪花模式(snowflake schema)
- 四、事实星座模式(Fact Constellation)或星系模式(galaxy schema)
- 五、度量:分类与计算
- 六、多维数据模型的优缺点
- 七、总结
一、维表、事实表
(1)维是透视或关于一个组织想要记录的实体,描述试题的元信息。如:item:item 的维表可以包含属性item_name, brand, 和type。维表可以由用户或专家设定,或者根据数据分布自动产生和调整(即从事实表中抽取维度表)
(2)事实是数值度量的。如:事实表sales包括dollars_sold, units_sold 和amount_budgeted,也可以说是指标值。事实表包括事实的名称或度量,以及每个相关维表的关键字(索引)
二、星型模式(star schema)
星型模式的核心是一个大的中心表(事实表),一组小的附属表(维表)。星型模式示例如下所示:
星型:一种非正规化的结构,多维数据集的每一个维度都直接与事实表相连接,不存在渐变维度,所以数据有一定的冗余。
三、雪花模式(snowflake schema)
雪花模式是星型模式的扩展,其中某些维表被规范化,进一步分解到附加表(维表)中。雪花模式示例如下图所示:
原有的各维表可能被扩展为小的事实表,形成一些局部的 “层次 ” 区域,这些被分解的表都连接到主维度表而不是事实表,通过最大限度地减少数据存储量以及联合较小的维表来改善查询性能。雪花型结构去除了数据冗余。从图中我们可以看到地址表被进一步细分出了城市(city)维。supplier_type表被进一步细分出来supplier维。
四、事实星座模式(Fact Constellation)或星系模式(galaxy schema)
数据仓库由多个主题构成,包含多个事实表,而维表是公共的,可以共享,这种模式可以看做星型模式的汇集,因而称作星系模式或者事实星座模式。本模式示例如下图所示:
如上图所示,事实星座模式包含两个事实表:sales和shipping,二者共享维表。
五、度量:分类与计算
(1)分布的:
一个聚集函数是分布的,如果它能以如下分布方式进行计算:设数据被划分为n 个集合,函数在每一部分上的计算得到一个聚集值。如果将函数用于n 个聚集值得到的结果,与将函数用于所有数据得到的结果一样,则该函数可以用分布方式计算。例如,count()可以这样计算:首先将数据方分割成子方的集合,对每个子方计算count(),然后对这些子方得到的计数求和。因此,count()是分布聚集函数。同理,sum(), min()和max()是分布聚集函数。一个度量是分布的,如果它可以用分布聚集函数得到。
(2)代数的
一个聚集函数是代数的,如果它能够由一个具有M(其中,M 是一个整数界)个参数的代数函数计算,而每个参数都可以用一个分布聚集函数求得。例如,avg()可以由sum()/count()计算,其中sum()和count()是分布聚集函数。类似地,可以表明min_N(), max_N()和standard_deviation()是代数聚集函数。一个度量是代数的,如果它可以用代数聚集函数得到。
(3)整体的
一个聚集函数是整体的,如果描述它的子聚集所需的存储没有一个常数界。即,不存在一个具有M个(其中,M是常数)参数的代数函数进行这一计算。整体函数的常见例子包括median(),mode()(即,最常出现的项),和rank()。一个度量是整体的,如果它可以用整体聚集函数得到。
六、多维数据模型的优缺点
优点:
多维数据模型最大的优点就是其基于分析优化的数据组织和存储模式。举个简单的例子,电子商务网站的操作数据库中记录的可能是某个时间点,某个用户购买了某个商品,并寄送到某个具体的地址的这种记录的集合,于是我们无法马上获取2010年的7月份到底有多少用户购买了商品,或者2010年的7月份有多少的浙江省用户购买了商品?但是在基于多维模型的基础上,此类查询就变得简单了,只要在时间维上将数据聚合到2010年的7月份,同时在地域维上将数据聚合到浙江省的粒度就可以实现,这个就是OLAP的概念.
缺点:
多维模型的缺点就是与关系模型相比其灵活性不够,一旦模型构建就很难进行更改。比如一个订单的事实,其中用户可能购买了多种商品,包括了时间、用户维和商品数量、总价等度量,对于关系模型而言如果我们进而需要区分订单中包含了哪些商品,我们只需要另外再建一张表记录订单号和商品的对应关系即可,但在多维模型里面一旦事实表构建起来后,我们无法将事实表中的一条订单记录再进行拆分,于是无法建立以一个新的维度——产品维,只能另外再建个以产品为主题的事实表。
七、总结
事实星座模式是数据仓库最长使用的数据模式,尤其是企业级数据仓库(EDW)。这也是数据仓库区别于数据集市的一个典型的特征,从根本上而言,数据仓库数据模型的模式更多是为了避免冗余和数据复用,套用现成的模式,是设计数据仓库最合理的选择。当然大数据技术体系下,数据仓库数据模型的设计,还是一个盲点,探索中。