什么是OLAP多维分析,它究竟有啥作用,如今都有哪些流行的技术解决方案来实现?今天我们详细聊一聊。
文中部分内容参考了朱凯老师的《ClickHouse原理解析与实践》,感兴趣的朋友可以买来读一读。
1、BI系统的演进
在聊OLAP之前,我们先把时间拉长,聊聊BI系统。
(1)传统BI系统
上个世纪,IT技术迅猛发展,主要特征就是线下工作的线上化。各种各样的IT系统(比如ERP、CRM等)在各个行业落地实施。相应的,我们把这类系统称之为联机事务处理(OLTP)系统。
但是在企业的运行过程中,不只是有流程审批这些工作,还有很多报表统计、分析决策相关的诉求。但是早期的IT系统的数据各自独立,互相割裂,给分析带来了极大的困难。
为了解决这一问题,人们提出了数据仓库的概念,把数据集中在一起,打通隔阂,并通过分层的方式处理数据。
逐步的,在数仓基础上提供数据分析的系统慢慢发展起来。直到90年代,BI系统的概念提出来,专门指代这类分析系统。相对于OLTP系统,这类BI系统被称为联机分析(OLAP)系统。
传统BI系统解决了很多问题,但是存在的瓶颈也是很多的。比如数据的分析效率底下、研发迭代缓慢等,都对应用效果产生了负面影响。
(2)现代BI系统
最近几年,SaaS模式的兴起,为BI系统带来了新的发展机遇。例如我们熟知的GA、神策分析、友盟分析等,采取的服务模式都是SaaS化。很多中小型公司的BI系统不再依赖于数仓的搭建。
而现代BI系统背后的OLAP技术也在不断发展。
2、什么是OLAP
下面我们详细聊聊OLAP。
OLAP即联机分析,又可以称为多维分析,是关系型数据库之父Edgar Frank于1993年提出的概念。它指的是通过多种不同的维度审视数据,进行深层次分析。主要的操作包括下钻、上卷、切片、切块等。
参考Excel的数据透视表的功能,大家就好理解这些操作了。数据透视表实现了对原始数据的各种聚合、分解、切片等操作,OLAP也是如此。可以把OLAP理解成对公司数据库建立一个大的透视表,通过这个透视表进行各种维度的分析,这就是OLAP。
说白了,OLAP是用于我们进行分析的引擎。在很多公司的数据架构中,OLAP作为顶层分析应用层与数据存储层的中间处理层。其核心解决的是和数据分析相关的需求。
常见的OLAP架构可以分为三类。
(1)ROLAP
第一种架构称为ROLAP(Relational OLAP),即关系型OLAP。顾名思义,是直接使用关系模型进行构建的。因此,多维分析的操作是可以直接转换成SQL进行查询的。
这种架构对数据的实时处理能力要求很高。像ClickHouse、Impala、Presto都是典型的RLOAP代表。
(2)MOLAP
第二种架构称为MOLAP(Multidimensional OLAP),即多维型OLAP。
MOLAP的出现是为了缓解ROLAP的性能问题。其核心思路是对数据预先聚合处理,以存储空间换查询时间的减少。典型的MOLAP包括Kylin、Druid等。
容易想到,如果维度较多,需要存储的数据量级会有指数级地上涨。一张千万级别的数据表,可能膨胀到需要存储亿级别的体量。
另外,由于需要进行预计算,MOLAP的数据会有一定的滞后性,不能实时进行数据分析。并且由于只保留了聚合后的结果数据,无法查询明细数据。
(3)HOLAP
第三类架构称为HOLAP(Hybrid OLAP),即混合架构OLAP。
这种架构可以理解成ROLAP和MOLAP的集成。
3、OLAP实现技术的演进
前面我们也陆续介绍了OLAP相关的一些技术。下面我们简单聊聊OLAP技术的演进过程。
(1)传统关系型数据库阶段
第一个阶段称为传统的关系型数据库阶段。在这个阶段中,OLAP主要是以Oracle、MySQL等关系型数据库实现。
在ROLAP架构下,直接使用这些数据库作为存储和计算的载体;在MOLAP架构下,则借助物化视图的形式实现数据立方体。
该阶段中,无论是ROLAP还是MOLAP,当数据体量大、维度数目多的时候,都存在严重的性能问题,甚至存在根本查不出结果的情况。
(2)大数据技术阶段
第二个极端可以称为大数据阶段。在这个阶段,主要依赖Hive等大数据技术进行实现。
以ROLAP为例,传统的关系型数据库被Hive和SparkSQL这类新型技术所取代。相比传统的数据库而言,面向海量数据的处理性能明显提升了很多。但是在提供实时的在线查询服务时,仍然需要几十秒甚至数分钟才能返回。
(3)最新阶段
最近几年,一款新的OLAP解决方案ClickHouse走进了大家的视野。其优越的查询计算性能让人惊叹。头条、阿里、腾讯等大厂也纷纷进行使用。
ClickHouse是由来自俄罗斯的Yandex公司研发的(Yandex类似于中国的百度,是俄罗斯的本土搜索引擎,占据俄国47%的搜索市场),是一款开源软件。
其他一些常见的OLAP技术方案对比如下,供参考。
不同的技术,也都存在各自的优点和缺点。在目前阶段,没有哪种OLAP技术是万能的灵丹妙药,可以解决所有问题。大家在技术选型时,需要结合自己的业务数据特点,进行选择。不知道未来是否有一天,能出现完美的OLAP解决方案,一统江湖。期待吧。