文章目录
数据仓库、OLAP和数据立方体
1. 数据仓库
1.1. 数据仓库定义
定义:面向主题、集成、时变和非易失的有组织的数据集合
将定义解释一下:面向目标群体或特定目标、将不同数据源的数据集成到一起、可按时间区分数据、一般只是进行只读操作的有组织的数据集合。
1.2. 关键术语解释
- 面向主题:围绕一些重要的主题(如顾客、供应商或产品),很明确要做什么,需要哪些视图。
- 集成:将多个不同结构的(异构)数据源的数据集成到一起。
集成操作分为 查询驱动 和 更新驱动 :
方法 | 含义 | |
---|---|---|
查询驱动: | 用的时候通过一个集成程序对多个异构数据库进行查询 (note:这儿的查询类似于SQL查询,不过是从多个数据源里查询) | 要的时候去拿 查询开销大。 |
更新驱动: | 提前将多个数据源的信息集成起来 | 先把需要的集成好了 |
- 时变:其中数据都包含时间维度的信息(如2015年的数据、2016年的数据。。。)。
- 非易失:一般只需要数据的初始化装入 和 数据访问(只读),不涉及事务处理。
-
数据仓库:数据仓库是一个支持管理决策的数据集合。数据是面向主题的、集成的、不易丢失的并且是时间变量。所有操作环境和外部数据源的快照集合。它并不需要非常精确,因为它必须在特定的时间基础上从操作环境中提取出来。数据仓库只限于单个主题的区域,例如顾客、部门、地点等。
-
数据集市:数据集市在从数据仓库获取数据时可以依赖于数据仓库,或者当它们从操作系统中获取数据时就不依赖于数据仓库。
-
联机操作数据库系统(Online Transaction Processing)OLTP:联机事务、数据增删改查CRUD
-
联机分析处理(Online Analytical Processing)OLAP:不同格式的组织和提供数据(各式各样的读)
-
事实:数据仓库中的信息单元,也是多维空间中的一个单元,受分析单元的限制。事实存储于一张表中(当使用关系数据库时)或者是多维数据库中的一个单元。
每个事实包括关于事实(收入、价值、满意记录等)的基本信息,并且与维度相关。 -
维度:绑定由坐标系定义的空间的坐标系的轴线。(node:属性)
数据仓库中的坐标系定义了数据单元,其中包含事实。坐标系的一个例子就是带有 x 维度和 y 维度的 Cartesian(笛卡尔)坐标系。
在数据仓库中,时间总是维度之一。 -
数据立方体:可以以多维对数据建模和观察。由事实和维定义。
-
分析空间:数据仓库中一定量的数据,用于进行数据挖掘以发现新信息同时支持管理决策。
-
切片:一种用来在数据仓库中将一个维度中的分析空间限制为数据子集的技术。
-
切块:一种用来在数据仓库中将多个维度中的分析空间限制为数据子集的技术。
-
数据模型:E-R图被广泛的用于关系数据库的设计,数据库模式用E-R图表示。而数据仓库模型有星型、雪花、星座。
-
星型模式:一种使用关系数据库实现多维分析空间的模式,称为星型模式。
当所有维表都直接连接到“ 事实表”上时,整个图解就像星星一样,故将该模型称为星型模型
-
雪花模式:不管什么原因,当星型模式的维度需要进行规范化时,星型模式就演进为雪花模式。
当有一个或多个维表没有直接连接到事实表上,而是通过其他维表连接到事实表上时,其图解就像多个雪花连接在一起,故称雪花模型。
雪花模型是对星型模型的扩展。它对星型模型的维表进一步层次化,原有的各维表可能被扩展为小的事实表,形成一些局部的 " 层次 " 区域,这些被分解的表都连接到主维度表而不是事实表。如上图,将地域维表又分解为国家,省份,城市等维表。
- 星座模式:星型模式的集合,出现多个事实表。
2. 数据仓库和数据库的区别
联机操作数据库系统(Online Transaction Processing)OLTP
主要任务:联机事务、数据增删改查
联机分析处理(Online Analytical Processing)OLAP
主要任务:不同格式的组织和提供数据(各式各样的读)
特点 | OLTP | OLAP |
---|---|---|
特性 | 操作处理(事务处理) | 分析处理 |
面向 | 事务 | 分析 |
DB设计 | E-R图,面向应用 | 星型/雪花、面向主题 |
数据 | 最新的 | 历史的、跨时间维度的 |
访问 | 读、写 | 读 |
操作 | 索引、散列 | 大量扫描 |
数据规模 | >GB | >TB |
访问 | 读、写 | 读 |
3. OLAP
3.1. 基本概念
1) 维
- 维(Dimension):人们观察事物的视角,如时间、地理位置、年龄和性别等,是单一角度概念。
- 维的层次(Lever of Dimension):表示维度概念基础上进一步的细分,如时间可以细分为年、季度、月三个层次。
- 维成员(Member of Dimension):表示维不可再细分的原子取值,如时间维的成员可以是2019年8月20日。
- 度量(Measure):表示在这个维成员上的取值。
除了维的基本概念,还有多维分析的分析操作。
2)操作
- 下探(Drill down):维度是有层次的,下探表示进入维度的下一层,将汇总数据拆分到下一层所在细节数据信息,如下图从第二季度下探到看4、5、6月的明细数据。
- 上钻(Drill up): 下探的反向操作,回到更高汇聚层的汇总数据。
- 切片(Slice):切片可以理解成把立体按某一个维度进行切分,就可以看两维数据,如图中按电子产品切分,看到的是时间和地理位置关系的二维数据。
- 切块(Dice):相对于切片是按一个点切分,切块就是按一个范围(区间)来做切分。
- 旋转(Pivot):维的行列位置交换,换一个视角分析数据。
3.2. OLAP分类
OLAP按存储器的数据存储格式分为ROLAP、MOLAP和HOLAP。
名称 | English | 介绍 | 优点 | 缺点 |
---|---|---|---|---|
MOLAP | Multi-dimensional OLAP | 以多维数组(Multi-dimensional Array)存储模型的OLAP,是OLAP发源最初的形态,某些方面也等同于OLAP。
它的特点是数据需要预计算(pre-computaion),然后把预计算之后的结果(cube)存在多维数组里。 | cube包含所有维度的聚合结果,所以查询速度非常快。
计算结果数据占用的磁盘空间相对关系型数据库更小 | 空间和时间开销大。update cube的时间跟计算维度(degree)相关,随着维度增加计算时间大幅增加,此外预计算还会造成数据库占用急剧膨胀。查询灵活度比较低。需要提前设计维度模型,查询分析的内容仅限于这些指定维度,增加维度需要重新计算。 |
ROLAP | Relational OLAP | 基于关系模型存放数据,一般要求事实表(fact table)和维度表(dimensition table)按一定关系设计,它不需要预计算,使用标准SQL就可以根据需要即时查询不同维度数据。 | 扩展性强,适用于维度数量多的模型,MOLAP对于维度多的模型预计算慢,空间占用大。
更适合处理non-aggregate事实,例如文本描述 基于row数据更容易做权限管理 | 因为是即时计算,查询响应时间一般比预计算的MOLAP长。 |
HOLAP | Hybrid OLAP | MOLAP和ROLAP类型的混合运用
细节的数据以ROLAP的形式存放,更加方便灵活,而高度聚合的数据以MOLAP的形式展现 | 更适合于高效的分析处理。公司使用HOLAP的目的是根据不同场景来利用不同OLAP的特性。 |
4. 数据立方体
4.1. 维灾难
n
维数据立方体有多少个方体?
有无概念分层 | 方体数目 | 备注 |
---|---|---|
no | 2 n 2^n 2n | |
yes | ∏ i = 1 n L i + 1 \prod_{i=1}^n L_i+1 ∏i=1nLi+1 | L i L_i Li:与维 i 相关联的层数 |
概念分层:如时间维度可分为year、mouth、day、hour、minute等层。
当n
比较小的时候方体数目还不多。但是其数目是随着n
的增加而几何增加的,这就是维灾难。
note:图片为转载
4.2. 方体的计算
物化方法 | 特点 | 其他 |
---|---|---|
不物化 | 不预先计算任何 ‘非基本’ 方体 | 查询时候开销大 |
完全物化 | 预先计算 所有 方体 | 物化开销大 |
部分物化 | 预先计算 部分 方体 | 一种折中的方式 |
冰山立方体 | 一个数据立方体
只存放聚集值(count,sum等)大于某个最小支持度阈值的立方体单元 | 一种折中的方式 |