文档介绍:大数据多维分析平台实践方案
一、大数据多维分析平台搭建的初心
随着公司业务量的增长,基于传统关系型数据库搭建的各种报表查询分析系统,性能下降明显。同时由于大数据平台的的日趋完善,实时的核心业务数据逐步进入大数据平台。
数据进入了大数据平台,相伴而来的是各种业务需求,这里主要聚焦在如何高效稳定的基于大数据平台的数据进行查询。
通过分析,我们面临的挑战如下:
•亿级别表下任意维度和时间跨度的高效的统计查询。
•业务分析的维度越来越多,是否可以提供一个灵活的多维度组合查询的工具,而不是针对不同的维度组合开发不同的报表。
基于以上目标,开始搭建大数据的多维分析平台。
二、多维分析平台技术选型
搭建多维分析平台,首先面临的是技术选型,基于我们对开源框架的使用经验和实际情况,我们主要看业界主流的公司是如何使用应对的,在技术选型上会进行一定的比较,但不会投入比较大的资源进行验证,主张快速的迭代,效果的评估。多维分析平台技术选型主要面临是OLAP引擎和前端UI的选型。
我们先来看一下OLAP的基本概念和分类。
OLAP翻译成中文叫联机分析处理,OLTP叫联机事务处理。OLTP它的核心是事务,实际上就是我们常见的数据库。我们业务数据库就是面向于事务。它的并发量会比较高,但是操作的数据量会比较小。
它是实时更新的。数据库的设计会按照3NF范式,更高的话可能会按照BC范式之类的来做。而OLAP的核心是分析,面向应用是分析决策,需要分析的数据级会非常大,可能TB,甚至PB都会有。它的数据更新会稍微慢一些,它的设计一般是反范式的,因为面向分析。常见的是雪花模型和星型模型。
OLAP的引擎目前主要分为3类
第一种叫ROLAP,叫关系型OLAP,它的特点就是它是基于关系性模型,计算的时候,根据原始数据去做聚合运算。常见的实现,小数据量可以利用MySQL、SqlServer这种传统数据库,而大数据量可以利用SparkSQL、Tidb、ES这些项目。
第二种类型叫MOLAP,叫多维OLAP,它的特点就是它会基于一个预定义的模型,我需要知道,要根据什么维度,要去算哪些指标,我提前就把这些结果弄好,存储在引擎上。细节数据和聚合后的数据保存在cube中,以空间换时间,查询效率高。
实际上我们的很多业务也是基于此思想去做的,比如我们会在ES里面按照电站、客户等维度进行聚合,满足日常的T+1查询需求,只不过这个地方每个聚合维度需要在ES里面做一个表,并增加上复杂的ETL处理
。符合这个理念在业界用的比较多的为Kylin。并且基于Kylin有完整的一套开源产品KMS。涵盖了多维分析的前端UI及多维分析数据库。
第三种叫HOLAP(HybridOLAP),叫混合OLAP,特点是数据保留在关系型数据库的事实表中,但是聚合后的数据保存在cube中,聚合时需要比ROLAP高,但低于MOLAP。
综合分析,技术选型上主要考虑第ROLAP和MOLAP。关于OLAP的分类已经经过了很多年的发展,市场上相关的产品也有很多,但是大数据下基于开源组件应该如何搞?
在大数据时代,有了分布式计算和分布式存储,对于亿级别表的任意时间跨度多维度组合的查询,是不是可以直接查询