联机分析处理,也称在线分析处理,是在以星型模型(或者雪花模型)建模的数据仓库上进行多
维分析。
•大量的业务系统采用关系数据库来进行数据管理以后,随着业务的不断发展,各个企事业单
位和政府部门积攒了大量的业务数据。
–数据分析任务一般在大量数据上(甚至在整个数据库数据上)运行,以便获得宏观的汇总信
息,这类任务的响应时间一般比较长,比如以分钟和小时计。
–联机事务处理(Online Transaction Processing, 简称OLTP),比如在银行的存款、取
款、查账、转账等业务中,要求的响应时间一般是几秒钟时间。
•为了避免这类数据处理任务,对业务顺利运行产生干扰,一般在业务数据库之外建立数据仓
库系统。它从业务数据库抽取、转换和装载(Extract Transform and Load, 简称ETL)数
据,帮助人们在上面执行各种分析任务。
数据仓库,就是面向主题的(Subject Oriented)、集成的(Integrated)、非易失的(Non
Volatile)、和时变的(Time Variant)数据集合,用以支持管理决策。
比较项目 | 操作型数据处理 | 分析型数据处理 |
---|---|---|
数据模型 | 实体-关系模型(ER模型) | 星型模型以及雪花模型 |
操作的记录数量 | 少量记录 | 大量记录 |
数据是否可以更新 | 数据可以更新、删除 | 一般只对数据进行追加、不删除、极少更新 |
响应时间要求 | 秒级 | 分钟级、小时级 |
目的 | 支持业务运行 | 支持决策需求 |
数据仓库主要采用星型模型进行数据建模。在这个模型中,包含事实表和维表。事实表主要记
录了具体的业务交易,比如记录了客户的购物信息。维表记录分类信息,比如时间信息、地理
区域信息、产品分类信息等。
每个维表代表人们观察数据的一个角度。一般维表具有层次结构(Hierarchy),即人们观察事
物的不同细节,比如时间维包括年、季度、月份、日期等不同细节的层次(Level)。维表的具
体的一个取值,称为维的成员(Member)。比如某年某月某日是时间维(时间维的最低的层次是
日期)的一个成员。
SSB(Star Schema Benchmark)是麻省州立大学波士顿校区的研究人员定义的、基于现实商
业应用的数据仓库测试基准,被学术界和工业界广泛接受,用来测试决策支持类应用中的数据
库系统性能。
测试基准包含数据模型、工作负载、以及性能指标等三个方面
–数据仓库上的分析任务,包括简单的分析和复杂的分析。简单分析指的是利用数据生成报表
以及进行多维分析。
–复杂分析指的是在数据上运行复杂的统计方法、机器学习和数据挖掘方法,从而发现不是那
么显然的规律,发现新的知识。
•联机分析处理OLAP是数据仓库的主要负载和应用,通过分析操作,为高层管理人员提供决
策支持。
•联机分析处理的主要操作,包括下钻(Drill Down)、上卷(Drill Up)、切片(Slice)、切
块(Dice)、旋转(Pivot)等。
–上卷是在某个分析维度上,将低层次的细节数据概括到高层次的汇总数据。下钻是在某个分
析维度上,从高层次的汇总数据深入到细节数据进行观察。
–比如当我们把商品销售情况表(SSB数据模型中的LineOrder表)的一部分记录在时间维度上
按照月度进行分组汇总(比如销售额)以后,上卷操作则把分析的粒度变成年度,即按照年度
进行分组汇总,下钻操作则把分析的粒度变成日期(即以天作为汇总的粒度)。
–切片和切块,是选定一部分维度值,关心度量数据在剩余维度上的分布情况。如果剩余的维
度只有两个,称为切片,如果剩余维度有三个或者以上,称为切块。
–比如在SSB模型中,我们选定某个(些)顾客和供应商后,对销售数据在剩余的两个维度即配
件维度、时间维度上进行汇总,就是切片操作。如果我们只选定某个(些)顾客,对销售数据
在剩余的三个维度,即供应商维度、配件维度、时间维度上进行汇总,就是切块操作。
2010年1季度 合计300 | 2010年2季度 合计333 | 2010年3季度 合计306 | 2010年4季度 合计324 | |||||
---|---|---|---|---|---|---|---|---|
供应商1 合计105 | 供应商2 合计195 | 供应商1 合计108 | 供应商2 合计225 | 供应商1 合计111 | 供应商2 合计195 | 供应商1 合计99 | 供应商2 合计225 | |
配件1 合计421 | 35 | 65 | 36 | 75 | 37 | 65 | 33 | 75 |
配件2 合计421 | 35 | 65 | 36 | 75 | 37 | 65 | 33 | 75 |
配件3 合计421 | 35 | 65 | 36 | 75 | 37 | 65 | 33 | 75 |
–MOLAP将OLAP分析所用到的多维数据,物理上存储为多维数组的形式,形成“立方体”(Cube) 的结构。
星型模型的各个维的属性值,被映射成多维数组的下标值或下标的范围,而聚集数据作为多维数组的值存储在数
组的单元中。
–ROLAP将分析用的多维数据存储在关系数据库中,通过把OLAP操作表达成SQL查询的形式,在关系数据库上执
行,获得汇总结果。
–MOLAP的主要优点是性能高,主要缺点是占用大量的空间保存汇总数据。ROLAP的主要优点是,采用关系数据
库保存原始明细数据,占用空间有限,但是由于每个OLAP操作都被转换成一个SQL查询重新执行,性能受到影响。
–人们提出一个新的OLAP结构——混合型OLAP(HOLAP),它能把MOLAP和ROLAP两种结构的优点结合起来。细节数据保留在关系型数据库的事实表中,但是聚合后的数据保存在“立方体”(Cube)中这种方式具有更好的灵活性。
–行存储
•一行一行存放数据
•适合存取少量数据行
–列存储
•一列一列存储数据
•适合对数据进行分析,存取少量数据列
•可以使用数据压缩技术,减少磁盘空间占用,和处理这些属性列的时候的I/O操作开销,从
而加快数据处理过程
–分容器Bitmap索引
–也就是需要对数值范围进行分段
–对于中小规模的数据库来讲,大容量的内存,使得整个数据库的所有数据都可以装载到内
存。
存储技术
数据的主副本保存在磁盘中,在需要存取的时候装载到缓冲区(memory buffer)。在内存数据
库中,数据的主副本保存在在内存中,暂时不用的数据被保存到磁盘,以便为将要用到的数据
腾出空间。围绕内存重新对数据库系统进行设计的策略,称为“anti-caching”策略。
行存储、列存储、PAX存储
RCFile是Hadoop平台上的一种PAX存储结构
索引技术
当我们从数据库中查询数据,如果有索引的帮助,对数据进行定位,我们就可以避免全表扫
描(full table scans)
Cache敏感的索引(cache conscious indexes)、和Cache不敏感的索引(cache
oblivious indexes)、以及特殊索引比如面向非易失性内存(non-volatile memory)的索
引。目的是通过数据结构和算法的设计,减少Cache Miss。
查询优化
对于内存数据库来讲,查询优化的重点是如何利用多核CPU、以及众核GPU,实现关键的数据
操作的快速处理,比如选择、投影、连接、聚集。
并发控制
是有多个事务并发执行的情况下,保证数据库状态正确的技术手段。 当数据完全驻留内存,
我们有多个CPU核心可用的时候,设计合理的并发控制方法,才能有效发挥多核处理的威力。
多版本管理、轻量级枷锁等。
恢复技术
当发生掉电情况,内存的数据即可消失(除了非易失性内存)。对于内存数据库来讲,恢复模
块是保证其可靠性的重要模块。并行日志、查分日志、Command Logging、非易失性内存的
使用等。
MPP是Massive Parallel Processing的缩写,MPP并行数据库利用专用的数据库集群(dedicated cluster)的多个节点的并行处理能力,提高数据库的查询处理性能。
•共享内存(Shared memory)架构、共享磁盘(Shared disk)架构、和无共享(Shared nothing)架构
数据的划分成为分片(Partitioning),分片的主要方法有Range、hash等方法。
Range方法把数据库表的记录按照某个字段的值所属的范围进行分片,比如当按照日期进行数据分片时,我们可以把不同年度不同月份的数据划分到不同分片。
hash方法,则对于数据库表中的记录,根据其某一个或者某几个属性列的取值,计算一个Hash值,对应到具体的分区,完成数据分片。
单表查询及其处理(子查询与结果合并)
–单表查询,指的是对一个数据库表进行选择、分组和聚集的查询。从销售表中,选择产品101的销售记录,按照年度进行分组,计算销售额的汇总。
多表连接查询及其处理(Hash连接)
从销售表和客户表中,进行连接查询,选择2015年和2016年的销售记录,按照客户和年度进行分组,汇总销售额
结构化数据分析工具,分为两大类
–分别是传统的MPP数据库以及列存储数据库
分组和聚集的查询。从销售表中,选择产品101的销售记录,按照年度进行分组,计算销售额的汇总。
多表连接查询及其处理(Hash连接)
从销售表和客户表中,进行连接查询,选择2015年和2016年的销售记录,按照客户和年度进行分组,汇总销售额
结构化数据分析工具,分为两大类
–分别是传统的MPP数据库以及列存储数据库
–以及基于Hadoop的结构化数据分析工具,即SQL on Hadoop系统