多维数据模型的定义和作用:
为了满足用户从多角度多层次进行数据查询和分析的需要而建立起来的基于事实和维的数据库模型。
其基本的应用是为了实现OLAP(Online Analytical Processing)。
通过多维数据模型的数据展示、查询和获取就是其作用的展现,但其真的作用的实现在于,通过数据仓库可以根据不同的数据需求建立起各类多维模型,并组成数据集市开放给不同的用户群体使用,也就是根据需求定制的各类数据商品摆放在数据集市中供不同的数据消费者进行采购。OLAP介绍:
联机分析处理( On-Line Analytical Processing):是使分析职员、治理职员或执行职员能够从多种角度对从原始数据中转化出来的、能够真正为用户所理解的、并真实反映企业维度特性的。
联机分析处理(OLAP)系统是数据仓库系统最主要的应用,专门设计用于支持复杂的分析操作,侧重对决策人员和高层管理人员的决策支持,可以根据分析人员的要求快速、灵活地进行大数据量的复杂查询处理,并且以一种直观而易懂的形式将查询结果提供给决策人员,以便他们准确掌握企业(公司)的经营状况,了解对象的需求,制定正确的方案。
多维数据模型实例:
在看实例之前需要知道两个概念:事物表和维表。
事物表:是用来记录具体事件的,包含了每个事件的具体要素,以及具体发生的事情。
维表:对事实表中事件的要素的描述信息。
例如一个事件,它有人物,时间,地点,干了什么。事物表就是记录了这个事件,只是对人物,时间,地点,干了什么记录了一些关键标记。而维表则是分别记录了人物,时间,地点,干了什么的具体信息。如果你想知道这个时间的人物,你就需要进入到人物相对应的维表了。基于事实表和维表就可以构建出多种多维模型,包括星形模型、雪花模型和星座模型。
可以参考下面实例:
以上是一个简单的星形模型.
事实表里面主要包含两方面的信息:维和度量,维的具体描述信息记录在维表,事实表中的维属性只是一个关联到维表的键,并不记录具体信息;度量一般都会记录事件的相应数值,比如这里的产品的销售数量、销售额等。维表中的信息一般是可以分层的,比如时间维的年月日、地域维的省市县等,这类分层的信息就是为了满足事实表中的度量可以在不同的粒度上完成聚合,比如2010年商品的销售额,来自上海市的销售额等。
还有一点需要注意的是,维表的信息更新频率不高或者保持相对的稳定,例如一个已经建立的十年的时间维在短期是不需要更新的,地域维也是;但是事实表中的数据会不断地更新或增加,因为事件一直在不断地发生,用户在不断地购买商品、接受服务。
多维数据模型的优缺点
优点:
多维数据模型最大的优点就是其基于分析优化的数据组织和存储模式。举个简单的例子,电子商务网站的操作数据库中记录的可能是某个时间点,某个用户购买了某个商品,并寄送到某个具体的地址的这种记录的集合,于是我们无法马上获取2010年的7月份到底有多少用户购买了商品,或者2010年的7月份有多少的S省用户购买了商品?但是在基于多维模型的基础上,此类查询就变得简单了,只要在时间维上将数据聚合到2010年的7月份,同时在地域维上将数据聚合到s省的粒度就可以实现,这个就是OLAP的概念。
缺点:
多维模型的缺点就是与关系模型相比其灵活性不够,一旦模型构建就很难进行更改。比如一个订单的事实,其中用户可能购买了多种商品,包括了时间、用户维和商品数量、总价等度量,对于关系模型而言如果我们进而需要区分订单中包含了哪些商品,我们只需要另外再建一张表记录订单号和商品的对应关系即可,但在多维模型里面一旦事实表构建起来后,我们无法将事实表中的一条订单记录再进行拆分,于是无法建立以一个新的维度——产品维,只能另外再建个以产品为主题的事实表。
这篇文章是我初次接触数据仓库的多维数据模型,所以我也是借鉴别人的文章和查资料了解到多维数据模型。你们有深的见解可以和我分享。