OLAP基本分类
阅读本章之前可以阅读 《OLAP基本概念》
OLAP有多种实现方法,根据存储数据的方式不同可以分为ROLAP、MOLAP、HOLAP。
ROLAP
ROLAP(关系型联机分析处理),是联机分析处理(OLAP)的一种形式,它对存储在关系数据库(而非多维数据库)中的数据作动态多维分析。
关系OLAP(ROLAP)表示基于关系数据库的OLAP实现(Relational OLAP)。以关系数据库为核心,以关系型结构进行多维数据的表示和存储。
ROLAP将多维数据库的多维结构划分为两类表:一类是事实表,用来存储数据和维关键字;另一类是维表,即对每个维至少使用一个表来存放维的层次、成员类别等维的描述信息。维表和事实表通过主关键字和外关键字联系在一起,形成了"星型模式"。对于层次复杂的维,为避免冗余数据占用过大的存储空间,可以使用多个表来描述,这种星型模式的扩展称为"雪花模式"。
星型模型
雪花模型
MOLAP
定义:
MOLAP(Multidimension OLAP): 表示基于多维数据组织的OLAP实现,以多维数据组织方式为核心,也就是说,MOLAP使多维数组存储数据。多维数据在存储中将形成"立方块(Cube)"的结构,在MOLAP 中对"立方块"的"旋转"、"切块"、"切片"是产生多维数据报表的主要技术。特点是将细节数据和聚合后的数据均保存在cube中,所以以空间换效率,查询时效率高,但生成cube时需要大量的时间和空间。
cube
ROLAP和MOLAP比较
ROLAP优势:
可以处理大数据量:ROLAP技术的数据量大小就是底层关系数据库存储的大小。换句话说,ROLAP本身没有对数据量的限制。
可以利用关系型数据库所固有的功能:关系型数据库已经具备非常多的功能。ROLAP技术,由于它是建立在关系型数据库上的,因此可以使用这些功能,例如可针对SMP或MPP的结构进行查询优化。
ROLAP劣势:
性能可能会很慢:因为每个ROLAP包裹实际上是一个SQL查询(或多个SQL查询)关系数据库,可能会因为底层数据量很大,使得查询的时间很长。
受限于SQL的功能:因为ROLAP技术主要依赖于生成SQL语句查询关系数据库,SQL语句并不能满足所有的需求(举例来说,使用SQL很难执行复杂的计算),ROLAP技术因此受限于SQL所能做的事情。ROLAP厂商已经通过构建工具以减轻这种风险,而且允许用户自定义函数。
MOLAP优势:
卓越的性能:MOLAP cubes为了快速数据检索而构建,具有最佳的slicing dicing操作
可以执行复杂的计算:所有的计算都在创建多维数据表时预先生成。因此,复杂的计算不仅可行,而且迅速
MOLAP劣势:
它可以处理的数据量有限:因为所有的计算都是执行在构建的多维数据集上,多维数据集本身不可能包括大量的数据。当然这并不是大数据不能派生出多维数据集。事实上,这是可以的。但是在这种情况下,只有汇总的信息能够包含在多维数据集中。
需要额外的成本:多维数据集技术往往是有专利或现在并不存在在某个组织中。因此,要想采用MOLAP技术,通常是要付出额外的人力和资源成本。
HOLAP
HOLAP技术试图将MOLAP和ROLAP技术的优势结合起来。在HOLAP中,对最常用的维度和维层次,使用多维数据表来存储,对于用户不常用的维度和数据,采用ROLAP星型结构来存储。
技术选型
ROLAP相关技术:
Impala、Presto、Spark SQL、Drill、Hive、Greenplum(已经开源)、Phoenix、Mysql、ADS(阿里云)
MOLAP相关技术:kylin、druid、pinot、ES
ROLAP、MOLAP、HOLAP是从存储的结构上来区分的,所以有些框架或者数据库即可以是ROLAP,也可以是MOLAP、或者HOLAP。