OLAP概念
OLAP(On-Line Analytical Processing)即联机分析处理,通过对数据大量分析,得出分析报告,提供决策支持,其侧重数据分析能力,比喻说用户行为分析。
与之对应的是OLTP(on-line transaction processing)即联机事务处理,也就是我们熟知的关系系数据处理,比喻说MySQL、Oracle等,用来记录某类业务发生的行为,其强调的是在线事务处理、小批量数据操作,比喻说银行交易、电商会员注册等。
OLAP/OLATP对比
OLAP 功能型分类
ROLAP: 关系型OLAP
特点:基于原始数据灵活的查询分析,但是其性能差
代表:Hive、Spark、Impala、Presto、Clickhouse、Hologres
MOLAP: 多维型OLAP
特点:基于预聚合数据分析,性能高,灵活性差
代表:Kylin、Druid
HOLAP: 混合型OLAP
混合型OLAP同时具有ROLAP、MOLAP的特点,查询明细数据使用ROLAP,查询聚合数据使用MOLAP。
架构上分类
MPP架构
MPP即大规模并行处理,也就是一种分布式并行处理的方式,将一个计算任务下发给不同的计算节点共同完成计算结果。对于MPP架构有以下几个特点:
1.并行计算(基于内存)
2.shard-nothing,无共享模式,即每个节点有自己CPU、Memory、DISK
批处理
批处理也是一种分布式并行计算框架,也就是我们所熟知的MapReduce、Hive、Spark等,与MPP相比:
1.MPP确定的计算必须要在确定的节点上,而批处理可以在任务节点上
2.MPP中间结果保存在缓存中,而批处理需要落入磁盘,因此其查询延时更高
3.MPP做横向扩展需要数据重分布,而批处理只需要增加计算并发即可,其横向扩展能力更强
MPP on Hadoop架构
由于MPP的计算能力与批处理架构的扩展能力,因此衍生了MPP on Hadoop架构,以impala、presto为代表。
基于此架构,中间结果不写磁盘,极大降低了其查询延时,并且也可以通过横向扩展计算节点提升其计算能力。
OLAP 选择
在当前面对大数据量、低延时、灵活查询的场景下,没有一个OLAP引擎能够完全满足所有场景,需要根据特定的场景做tradeoff.