文章目录
- 一、信息系统中的数据
- 1、数据仓库的三层数据结构
- 2、数据分类
- ①、主数据-参考数据-交易数据
- ②、状态数据-事件数据
- ③、当前数据-周期数据
- 3、元数据
- 二、建立数据仓库
- 1、建立数据仓库的方法
- 2、数据组织方式
- 三、多维数据模型
- 1、相关概念
- 2、数据存储方式
- (1)、基于关系表的存储
- (2)、基于多维数据库的存储
- 3、子方体
- 三、多维分析
- 1、多维分析基本操作
- (1)、钻取
- (2)、切片/切块
- (3)、旋转
- 2、OLAP的分类
- 四、数据仓库的逻辑模型
一、信息系统中的数据
1、数据仓库的三层数据结构
2、数据分类
信息系统中的数据按照不同的角度,可以有不同的分类标准。
①、主数据-参考数据-交易数据
- 主数据
主数据是关于业务实体的数据,一般包括当事人(雇员、客户、供应商)、产品、财务结构(成本中心、利润中心)、地理位置。通常是不变的信息,比如个人的信息的变动就很少。 - 参考数据
参考数据是用来将其他数据进行分类或者交叉引用的数据,通常也是不变的。 - 交易数据
交易数据是指一次交易相关的数据,如转账金额、订货量等。交易数据会随着每笔交易而变化,而主数据和参考数据则很少变动。
②、状态数据-事件数据
状态数据用于描述对象的状态,而事件数据描述发生的事件,如产品数量就是转态数据,订单量是事件数据。数据仓库通常包括状态数据的历史快照或事件数据的汇总。
③、当前数据-周期数据
当前数据只保留当前的最新数据,新的记录将会改变以前的数据。周期数据则相反,一旦保存,就不再改变或删除数据。
3、元数据
元数据描述了数据的结构、内容、联系、索引等内容。元数据定义了数据仓库中的对象,如表、列、查询等,是数据仓库的重要构件。元数据分为技术元数据与业务元数据。
- 技术元数据
包括基础数据信息、抽取调度信息、映射依赖信息、其他技术信息。基础数据信息指的是对系统实施方案的描述,如表结构、DBMS种类/版本、属性的限制等。抽取调度信息说明数据从数据源进入数据仓库的方法。映射依赖信息描述各表(视图)之间的依赖映射关系。 - 业务元数据
包括企业概念信息、多维数据信息、数据依存信息、数据挖掘信息、查询导航信息。
二、建立数据仓库
随着业务交易的进行,会产生越来越多的数据,通过合理的组织这些数据可以建立数据仓库。
1、建立数据仓库的方法
- 建立数据库快照
为体现数据仓库中数据对时间的变化,可以建立一系列当前数据的快照,这些快照中需要包含时间戳。 - 建立概要记录
概要记录对多条操作型记录进行聚集,把多条记录组合成一条记录。
快照和概要可以通过事件触发,如完成订单,也可以由时间触发,如月末。
数据周期:指从操作型环境中数据发生变化开始,到这个变化反应到数据仓库的时间。
2、数据组织方式
随着新数据的产生,数据仓库中会存储越来越多的数据,这些数据需要按一定的组织方式存储在数据仓库中。
- 简单堆积
按一定的时间间隔,对数据进行提取,是操作型数据的快照。如把每天的数据进行每日综合,然后放到数据仓库里。 - 轮转综合
数据按一定的格式进行轮转的累加。如在一个月的简单堆积后,再对这一个月的数据进行每月综合,然后放进数据仓库。之后还可以进行每年综合··· - 连续
把新的快照追加到以前的连续数据上去。
三、多维数据模型
1、相关概念
- 多维数据集
- 维度
- 度量值
数据立方体将数据按照多维视图的方式进行建模,包括维表和事实表。例如,对于销售信息,可以定义三个维:时间、产品、地区。那么就有三个维表:
- 时间(年,月,日)
- 产品(产品名,产品类型)
- 地区(国家,省,市)
通过数据立方体,就可以由所有维共同确定一个度量值。比如上图中的红色小方块的值,就可以表示2020年三季度上海地区上衣的销量。数据立方体方便多角度、多层次的进行查询与分析,通过每个维上的取值,就可以确定目标度量值。
可以看到,在地区维表中,定义了国家、省、市,而在数据立方体中只有一个地区,这完全是因为图太小了,我画不上去。事实上,这根本不重要,理解数据立方体的作用就好了。
2、数据存储方式
多维数据集可以用R(D1、D2、···、Dn,F)来描述,其中D1、D2、···、Dn对应n个维度。
(1)、基于关系表的存储
以关系数据库为核心,构建多维数据的表示和存储。
上图中包含一个事实表和三个维表,事实表通过外键与维表关联。维表用来描述维,如果维过于复杂的话,可以通过多个维表来描述一个维。事实表存储了关联各维表的外键和度量值(销售量、销售额)。
(2)、基于多维数据库的存储
数据存储在大量的多维数组中,而不是存放在关系表中。
通过多维数据库存储数据时,n维数组可以用F(D1,D2,···,Dn)来表示,那么度量值fi=F(d1i,d2i,···,dni)。可以看到,相比于事实表中需要存储与维关联的外键,多维数组中并不存储多维数据模型中的维度。这是因为多维数组能够很好的体现多维数据模型的特点,例如需要查找北京地区平板的销量,直接查找多维数组的第二行、第二列就可以了。
这里所说的不需要存储维指的是多维数组中存的值不包含维信息,就像在java中int [] a = {11,32,21},那么a中只保存数据,但不保存下标,例如a[1]=32,而没有保存1这个下标。
查询数据时,多维数据库方式比关系表方式要快。这是因为对于多维数组而言,确定每个维的下标,就可以直接得到数据,而在关系表中,需要从前往后比对每一条数据,直到找到目标数据。
多维数据库存储会占用较多空间,例如,假设没有北京地区手机的销售量,在多维数据库中,北京和手机确定的地方就必须空着,但是对于关系表而言,则可以不存储这条记录。
3、子方体
可以看到,对于n维数据立方体,通过指定每个维上的值,就可以确定最终度量值。那么,如果将某些维汇总,数据立方体的维就会减少,新的数据立方体就被称为子方体。比如,在销售信息中,将地区汇总为所有地区对应的销售额的和,那么只需要指定时间维和产品维的值,就可以确定最终度量值,如"2020年一季度上衣的销售额",就只指定了时间和产品,而表达的含义是则是该时间该产品在所有地区销售额之和。
那么,n维立方体有多少个子方体呢(也包括该n维立方体)?设第k个维有Lk个汇总方式(如求总和,求最大值等),那么共有 (L1+1)*(L2+1)*···*(Ln+1) 个子方体。如果每个维仅有一种汇总方式,那么就有2n个子方体。
三、多维分析
多维分析指的是对以维形式组织起来的数据(多维数据集)采取切片、切块、钻取、旋转等操作,达到剖析数据的目的。
1、多维分析基本操作
(1)、钻取
钻取可以改变维的层次,包括上卷、下钻、钻过、钻透。
- 上卷
上卷指的是减少维数,即将某些维进行汇总。 - 下钻
与上卷相反,是由汇总数据到细节数据。 - 钻过
钻过指涉及多个事实表。 - 钻透
钻透指的是透过最底层的数据立方体到达关系数据库。
(2)、切片/切块
切片与切块操作指的是在一部分维上选定之后,度量值在剩下维上的分布。如果剩余2个维,称之为切片;剩余3个维,则称之为切块。有时候,剩余的维数大于3也称之为切块。
上卷是将维汇总,而切片与切块是在在维上选定值,比如销售信息中,地区维选择北京,查看信息在时间与产品维上的度量值。
(3)、旋转
旋转指的是变换观察方向,即在表格中重新安排维的放置。
2、OLAP的分类
OLAP根据存储数据的方式,可以分为3类:ROLAP、MOLAP、HOLAP。
- ROLAP
ROLAP是基于关系数据库的OLAP实现,以关系数据库为核心,以关系型结构进行多维数据的存储与表示。 - MOLAP
MOLAP是基于多维数据库的OLAP实现,以多维数据库为核心,数据在存储中形成立方体结构。 - HOLAP
HOLAP是基于混合数据组织的OLAP实现,比如底层是关系表,高层是多维表,这种方式更加灵活。
四、数据仓库的逻辑模型
数据仓库的逻辑模型分为星型模式、雪花模式、事实星座模式。
- 星型模式
星型模式包含一张事实表和一系列维表,形成星型结构。 - 雪花型模式
如果星型模式中的某些维过于复杂,通过规范化将某些维用多个维表描述,就形成了雪花型模式。 - 事实星座模式
如果存在多个事实表共用维表的情况,则形成事实星座模式。