OLAP的分类
前文《企业数字化:OLAP的准则与概念 》介绍了OLAP系统。按照数据存储格式分类,OLAP系统可以分为MOLAP、ROLAP和HOLAP三类。
MOLAP(Multi-dimensional OLAP)
MOLAP是以多维数组模型来存储数据,是OLAP最初的形态。其特点是数据需要预计算(pre-computaion),然后把预计算得到的结果(cube)存在多维数组里。
MOLAP的优点是 cube 包含所有维度的聚合结果,所以查询速度非常快。
缺点是更新cube的时间跟计算维度相关,随着维度增加,计算时间也大幅增加。另外查询灵活度也比较低,需要提前设计维度模型,查询分析的内容仅限于指定维度,增加维度则需要重新计算。
ROLAP(Relational OLAP)
ROLAP是基于关系模型存储数据,要求事实表(fact table)和维度表(dimensition table)按关系模型设计。ROLAP不需要预计算,使用标准SQL语句可以即时查询(adhoc query)不同维度的数据。
ROLAP的优点是扩展性强,适用于维度数量多的模型。另外也比较容易做权限管理。
ROLAP的缺点也很明显,由于是即时计算,查询响应时间要比预计算的MOLAP长。
HOLAP(Hybrid OLAP)
HOLAP是MOLAP和ROLAP类型的混合。细节的数据以ROLAP的形式存放,以满足数据查询的灵活性;高度聚合的数据以MOLAP的形式展现,更适合于高效的分析处理。
实际中可供选择的HOLAP产品不多,为了满足不同场景的数据分析需求,很多企业往往会同时使用MOLAP和ROLAP产品。
OLAP产品的应用
比较知名的MOLAP 产品包括: Kylin、Druid、IBM Cognos Powerplay, Oracle Database OLAP Option, MicroStrategy OLAP, Microsoft SQL Server Analysis Services, Oracle Essbase, IBM Cognos TM1等。
比较知名的ROLAP产品有Presto、Apache Impala、Greenplum、Vertica、Amazon Redshift、Google Dremel、Hulu Nesto、Apache HAWQ和Apache Doris等。
目前,互联网业务规模变得越来越大,不论是业务生产系统还是日志系统,基本上都是基于Hadoop/Spark分布式大数据技术生态来构建数据仓库,然后对数据进行适当的分层、加工、管理。在数据应用交互层面,由于时效性的要求,数据最终的展现查询还是需要通过DBMS和OLAP引擎来进行支撑。
美团平台使用Kylin作为公司的主要MOLAP引擎。Kylin的核心思想就是预计算,利用空间换时间来加速查询模式固定的OLAP查询。
Apache Kylin是一个开源的、分布式的分析型数据仓库,提供Hadoop/Spark 之上的 SQL 查询接口及多维分析(OLAP)能力以支持超大规模数据,最初由 eBay 开发并贡献至开源社区。
Kylin在预设维度的分析场景下表现良好,但在变化维度的场景下生产成本巨大。基于这个原因,美团引入了基于。MPP引擎驱动的ROLAP产品Doris,通过MOLAP+ROLAP双引擎模式来适配不同应用场景。
Apache Doris 是基于MPP架构的OLAP引擎,主要整合了Google Mesa(数据模型)、Apache Impala(MPP Query Engine)和Apache ORCFile (存储格式,编码和压缩)的技术。
在美团的OLAP实践中发现:以Doris引擎为驱动的ROLAP模式可以较好地处理汇总与明细、变化维的历史回溯、非预设维的灵活应用、准实时的批处理等场景。以Kylin为基础的MOLAP模式在处理增量业务分析,固化维度场景,通过预计算以空间换时间方面更具优势。
我会持续更新关于物联网、云原生以及数字科技方面的文章,用简单的语言描述复杂的技术,也会偶尔发表一下对IT产业的看法,欢迎大家评论、转发和关注。