2.3 OLAP
OLAP(On-line Analytical Processing,联机分析处理),是在基于数据仓库多维模型的基础上实现的面向分析的各类操作的集合,与之对应的是OLTP(On-line Transaction Processing,联机事务处理),这里不对OLTP介绍,相信做过传统数据库,比如Oracle、MySQL、PostgreSQL等的读者应该都比较熟悉。
2.3.1 OLAP分类
我们先来看一下OLAP系统按照其存储器的数据存储格式分类:
(1)ROLAP(Relational OLAP),关系OLAP
ROLAP将分析用的多维数据存储在关系数据库中,并根据应用的需要,有选择地定义一批实视图作为表,它也存储在关系数据库中。不必要将每一个SQL查询都作为实视图保存,只定义那些应用频率比较高、计算工作量比较大的查询作为实视图。对每个针对OLAP服务器的查询,优先利用已经计算好的实视图来生成查询结果以提高查询效率。同时,用作ROLAP存储器的RDBMS也针对OLAP作相应的优化,比如并行存储、并行查询、并行数据管理、基于成本的查询优化、位图索引、SQL的OLAP扩展(cube、rollup)等等。
(2)MOLAP(Multidimension OLAP),多维OLAP
MOLAP将OLAP分析所用到的多维数据物理上存储为多维数组的形式,形成“立方体”的结构。维的属性值被映射成多维数组的下标值或下标的范围,而汇总数据作为多维数组的值存储在数组的单元中。由于MOLAP采用了新的存储结构,从物理层实现起,因此又称为物理OLAP(PhysicalOLAP);而ROLAP主要通过一些软件工具或中间软件实现,物理层仍采用关系数据库的存储结构,因此称为虚拟OLAP(VirtualOLAP)。
(3)HOLAP(Hybrid OLAP),混合型OLAP
HOLAP表示基于混合数据组织的OLAP实现,如低层是关系型的,高层是多维矩阵型的。这种方式具有更好的灵活性。特点是将明细数据保留在关系型数据库的事实表中,但是聚合后的数据保存在Cube中,聚合时需要比ROLAP更多的时间,查询效率比ROLAP高,但低于MOLAP。
2.3.2 OLAP的基本操作
OLAP的操作是以查询,即数据库中常见的SELECT操作为主,但是查询可以很复杂,比如基于关系数据库的查询可以多表关联,可以使用COUNT、SUM、AVG等聚合函数。OLAP正是基于多维模型定义了一些常见的面向分析的操作类型而使这些操作显得更加直观。
OLAP的多维分析操作包括:钻取(Drill-down)、上卷(Roll-up)、切片(Slice)、切块(Dice)以及旋转(Pivot),下面选取一个图例进行说明,如图2-3所示。
图2-3
● 钻取(Drill-down):在维的不同层次间的变化,从上层降到下一层,或者说是将汇总数据拆分到更细节的数据,比如通过对2016年第二季度的总销售数据进行钻取来查看2016年第二季度4、5、6每个月的消费数据,如图2-3;当然也可以钻取江苏省来查看南京市、苏州市、宿迁市等城市的销售数据。当然上面所说所有数据都已经在预处理中根据维度组合计算出了所有的度量结果。
● 上卷(Roll-up):钻取的逆操作,即从细粒度数据向更高汇总层的聚合,如将江苏省、上海市和浙江省的销售数据进行汇总来查看江浙沪地区的销售数据,如图2-3。
● 切片(Slice):选择维中特定的值进行分析,比如只选择电子产品的销售数据,或者2016年第二季度的数据。
● 切块(Dice):选择维中特定区间的数据或者某批特定值进行分析,比如选择2016年第一季度到2016年第二季度的销售数据,或者是电子产品和日用品的销售数据。
● 旋转(Pivot):即维的位置的互换,就像是二维表的行列转换,如图2-3中通过旋转实现产品维和地域维的互换。