联机分析处理 (OLAP) 的概念最早是由关系数据库之父E.F.Codd于1993年提出的,OLAP的提出引起了很大的反响,OLAP作为一类产品同联机事务处理 (OLTP) 明显区分开来。
数据处理大致可以分成两大类:联机事务处理OLTP(on-line transaction processing)、联机分析处理OLAP(On-Line Analytical Processing); OLTP是传统的关系型数据库的主要应用,主要是基本的、日常的事务处理,例如银行交易。通俗的讲,就是对数据的增删改查等操作。 OLAP是数据仓库系统的主要应用,支持复杂的分析操作,侧重决策支持,并且提供直观易懂的查询结果。通俗的讲,就是对数据按不同维度的聚合,维度的上钻,下卷等。
下表列出了OLTP与OLAP之间的比较:
OLTP | OLAP | |
---|---|---|
用户 | 面向操作人员,支持日常操作 | 面向决策人员,支持管理需要 |
功能 | 日常操作处理 | 分析决策 |
DB 设计 | 面向应用,事务驱动 | 面向主题,分析驱动 |
数据 | 当前的,最新的细节的,二维的分立的 | 历史的,聚集的,多维的,集成的,统一的 |
存取 | 可更新,读/写数十条记录 | 不可更新,但周期性刷新,读上百万条记录 |
工作单位 | 简单的事务 | 复杂的查询 |
DB 大小 | 100MB-GB | 100GB-TB |
总的来说,OLTP就是面向我们的应用系统数据库的,OLAP是面向数据仓库的。
特性
快速性:用户对OLAP的快速反应能力有很高的要求。系统应能在5秒内对用户的大部分分析要求做出反应。
可分析性:OLAP系统应能处理与应用有关的任何逻辑分析和统计分析。
多维性:多维性是OLAP的关键属性。系统必须提供对数据的多维视图和分析,包括对层次维和多重层次维的完全支持。
信息性:不论数据量有多大,也不管数据存储在何处,OLAP系统应能及时获得信息,并且管理大容量信息。
分类
常见的OLAP系统可以分为以下三类:关系型联机实时分析系统(Relational-OLAP,ROLAP),多维联机实时分析系统(Multidimensional-OLAP,MOLAP),混合型联机实时分析系统(Hybrid-OLAP,HOLAP)。以下是ROLAP、MOLAP与HOLAP三者之间优缺点对比:
- ROLAP
ROLAP的核心依赖于关系型数据库,允许用户使用维度模型进行数据分析,将维度值存储在维度表中,将度量值存储在事实表中,通过关系型数据库访问数据,使用SQL进行查询分析。ROLAP的一般使用模式概括如下:根据用户的需求,对不同维度进行分析后,将分析数据导入到另一张数据库表中。
- 优点:
- 处理高基数列具有更好的扩展性;
- 擅长处理非聚合类的原始数据,生态圈内用于原始数据入库的ETL工具众多,同时比MOLAP入库速率更高;
- 由于数据存储在关系型数据库中,所以支持标准SQL接口,查询便捷;
- 缺点:
- 根据OLAP survey(http://www.olapreport.com/survey.htm)在2001-2006年连续6年的调研显示,工业界普遍认为ROLAP的性能要低于MOLAP。但也有人提出质疑,争议包含两方面:ROLAP的用户数是MOLAP的7倍多,那么抱怨产品性能差的比例自然更高;其他因素的影响,上述调研报告并没有将ROLAP产品和MOLAP产品放在同一个维度模型上进行比较,所以该报告结论并不具有权威性;
- 处理已聚合的数据,需要使用定制的ETL工具,开发量大且不具有通用性;如果采用原始数据入库,将非常影响查询性能,如果想要提升查询性能,需要将已入库的原始数据重新聚合后再导入到新的表中进行查询分析;
- ROLAP的性能很大程度上依赖于使用的关系型数据库的查询与缓存性能;同时对于所有分析操作,都依赖于SQL语句,对于重计算类的分析模型,转换后的SQL就会变得复杂,对分析者的SQL语句的调优要求较高,而在某些无法使用SQL的场景下,ROLAP类产品则变得无能为力。
- MOLAP
MOLAP是OLAP的经典使用模式,所以经常用MOLAP来指代OLAP。MOLAP和ROLAP具有一定的相似性,二者都可以使用维度模型进行数据分析,但是MOLAP并不将数据存储在维度表或者事实表中,而是对原始数据进行预计算(比如聚合操作),将计算结果存储在OLAP cube中。
- 优点:
- 由于MOLAP不采用关系型数据库进行数据存储,所以必须采用特殊的存储手段,例如:压缩存储、索引(例如位图索引)以及缓存技术等,查询速率更快;
- 缺点:
- 数据导入较慢,需要使用定制的ETL入库工具;
- 由于没有维度表和事实表,所以对于更新操作以及明细查询,效率要比ROLAP低很多。
- HOLAP
HOLAP充分利用了ROLAP与MOLAP的各自优势,从纵向角度,既允许用户将部分数据(比如聚合类数据)使用MOLAP进行存储,从而获得更快的查询性能;又允许部分数据(比如原始数据)使用ROLAP进行存储,使用户能够查看细粒度数据。从横向角度,使用MOLAP存储最近较热的数据,从而提升查询性能;而使用ROLAP存储历史较冷的数据。公司使用HOLAP的目的是根据不同场景来利用不同OLAP的特性。
- 缺点:业界还没有一致的定义。
业界产品
- MOLAP 产品有 Cognos Powerplay, Oracle Database OLAP Option, MicroStrategy, Microsoft Analysis Services, Essbase, TM1, Jedox ,icCube和kylin等。
- ROLAP产品有Vertica、Amazon Redshift、Google Dremel、Hulu Nesto、Presto、Druid、Impala、Greenplum、HAWQ和Doris等。
发展状态
在国内,不论传统公司还是互联网公司,都开始利用OLAP技术分析挖掘大数据的价值,国内除BAT等大厂会自研OLAP产品外,其他中小互联网公司普遍拥抱开源,会使用Kylin、Presto、impala、Druid和Greenplum等开源技术来实现OLAP分析查询业务。
技术选型参考
- MOLAP:Kylin、Druid(其中Druid用于实时在线分析场景)
- ROLAP:Presto、impala (都是基于MPP架构的OLAP分析框架)