说OLAP引擎,就得先说说OLTP引擎。
什么是OLTP引擎
20世纪70年代,关系型数据库随着一篇影响世界发展进程的论文发表而出现。
20世纪80年代,人们太喜欢关系型数据库了,恨不得把所有的数据都存进去,许多企业利用关系型数据库来存储和管理业务数据,并建立相应的应用系统来支持日常的业务运作。
这种应用以支持业务处理为主要目的,被称为联机事务处理(On line Transaction Processing,OLTP)应用,它所存储的数据被称为操作数据或者业务数据。
一言以蔽之:OLTP引擎用来管理操作性系统数据。
什么是OLAP引擎
同样是20世纪70年代,4P’s理念的出现打破了企业主动提供服务的僵局,企业的决策者们需要根据客户提供个性化的服务,提高客户的粘度。
随着数据的积累,OLTP引擎力有未逮,企业家们需要一个新的技术来快速从积累的数据中获得最新最准确的信息。
最后在20世纪90年代,那个发表划时代论文的人–关系型数据库教父埃德加·弗兰克·科德(E.F.Codd) 提出了多维数据库和多维分析的概念,即联机分析处理(Online Analytical Processing,OLAP)应用。
OLAP委员会对联机分析处理的定义为:使分析人员、管理人员或执行人员能够从多种角度对从原始数据中转化出来的、能够真正为用户所理解的、并真实反映企业维特性的信息进行快速、一致、交互的存取,从而获得对数据更深入了解的一类软件技术。
一言以蔽之:OLAP引擎用来管理分析性数据。
不管是之后的数据仓库时代,大数据时代,亦或者未来的数据中台时代,云时代,OLAP引擎都会因为其特性与历史遗留性留存下来。
OLAP引擎准则
E.F.Codd对OLAP引擎定下了12条准则:
-
准则1 OLAP模型必须提供多维概念视图
-
准则2 透明性准则
-
准则3 存取能力准则
-
准则4 稳定的报表能力
-
准则5 客户/服务器体系结构
-
准则6 维的等同性准则
-
准则7 动态的稀疏矩阵处理准则
-
准则8 多用户支持能力准则
-
准则9 非受限的跨维操作
-
准则10 直观的数据操纵
-
准则11 灵活的报表生成
-
准则12 不受限的维与聚集层次
OLTP引擎与OLAP引擎比较
与OLAP 不同的是,OLTP系统强调数据库内存效率,强调内存各种指标的命令率,强调绑定变量,强调并发操作,强调事务性。
OLAP系统则强调数据分析,强调SQL执行时长,强调磁盘I/O,强调分区。
现在的OLAP引擎有HAWQ、Hive、Spark SQL、Presto、Kylin、Impala、Druid、Clickhouse、Greeplum等,可以说目前没有一个引擎能在数据量,灵活程度和性能上做到完美,用户需要根据自己的需求进行选型。
什么是MOLAP引擎
MOLAP(Multi-dimensional OLAP ),多维OLAP引擎也可以叫做传统OLAP引擎。
特点:
- 传统的 OLAP 分析方式
- 数据存储在多维数据集中
代表:
- Kylin
- Druid
优点:
- 卓越的性能
- 支持复杂的计算
缺点:
- 需要预先定义维度
- 不支持明细数据查询
- 成本高
场景:适合性能要求高,成本相对宽松的场景。
什么是ROLAP引擎
RLOAP(Relational OLAP ),关系型OLAP引擎。
特点:
- 以关系数据库为核心,以关系型结构进行多维数据的表示
- 通过 SQL 的 where 条件以呈现传统 OLAP 的切片、切块功能
代表:
- Presto
- Impala
优点:
- 不需要预处理
- 可扩展性好
- 可高效处理大量数据
缺点:
- 性能不足
- 需要更过的计算资源
场景:适合性能要求相对低,查询灵活度要求高的即席查询场景。
什么是HOLAP引擎
HLOAP(Hybrid OLAP),混合OLAP引擎。
特点:
- 兼顾MOLAP和ROLAP的优点,兼顾查询性能与灵活度。
- 当查询聚合性数据的时候,使用 MOLAP 技术;当查询明细数据时,使用 ROLAP 技术。在给定使用场景的前提下,以达到查询性能的最优化。
总结
目前还没有一个OLAP系统能够满足各种场景的查询需求。其本质原因是,没有一个系统能同时在数据量、性能、和灵活性三个方面做到完美,每个系统在设计时都需要在这三者间做出取舍。
从体系架构上说,采用MOLAP使得OLAP应用和数据仓库分离开,降低了耦合度,这种架构是比较理想的,可以让不同部件专门干自己的事,付出的代价主要是ETL的复杂度。
如果使用ROLAP引擎,引擎的性能很大一部分还是依赖数据仓库的设计和数据的治理,对数据仓库工程师的要求就要高一点。
图片转载自易观。