1、什么是OLAP
OLAP(On-line Analytical Processing,联机分析处理)是一种用于分析和查询大规模数据集的计算机处理技术。OLAP技术主要用于多维数据分析和数据挖掘,通过提供多维数据模型和多维查询功能,帮助用户从不同角度和层次上对数据进行分析和查询,侧重分析决策。
BI模块
数据可视化组件。为用户提供拖拽式的数据分析操作页面,以及各种报表、图表的展示。本质上它就类似一个客户端,通过配置连接到各种OLAP引擎上(可以直白的理解为各种DB)来完成数据的分析和查询。通常一种BI组件都支持若干种OLAP引擎,比如superset可以连接clickhouse、druid、mysql等。
OLAP引擎
大数据存储引擎。可以直白的理解为就是存储数据的地方,但是不同引擎的存储数据原理、支持数据量级、查询性能、适用场景等都有很大区别。引擎的选择也决定着底层数仓的建设选型,比如你选择了clickhouse,那数仓最终也一定是基于clickhouse的建表原则去建若干ck表。
数据仓库
数据建设。初级的理解就是建表,将业务数据、日志数据、消息队列数据等,通过各种调度任务写入到表里供OLAP引擎使用。但要想建好数仓也是一个复杂、庞大的工程,比如要考虑:数据清洗、数据建模(星型模型、雪花模型、宽表模型、主题、维度、指标)、数据时效性(实时、T+1)、延迟容错、机器资源等。
1.1、常见操作
上卷(Roll Up)/聚合:选定某些维度,根据这些维度来聚合事实,如果用SQL来表达就是select dim_a, aggs_func(fact_b) from fact_table group by dim_a.e.g. 风控场景:点赞场景,决策REJECT,UV多少
下钻(Drill Down):上卷和下钻是相反的操作。它是选定某些维度,将这些维度拆解出小的维度(如年拆解为月,省份拆解为城市),之后聚合事实。e.g. 风控场景:点赞场景,命中规则A,决策REJECT,UV多少
切片(Slicing、Dicing):选定某些维度,并根据特定值过滤这些维度的值,将原来的大Cube切成小cube。如dim_a in ('CN', 'USA')e.g. 风控场景:点赞场景,命中规则A、规则B,规则C,决策REJECT,UV是多少
旋转(Pivot/Rotate):维度位置的互换
1.2、OLAP分类
a. Relational OLAPROLAP提倡存储明细数据,适用于查询模式不固定,查询灵活性较高的场景。ROLAP的代表:Clickhosue、Presto、Doris、Hive、SpartSQL、FlinkSQL、Impala、GreenPlum等。优势:ROLAP收到Query请求时,会先解析Query,生成执行计划,扫描数据,执行关系型算子,在原始数据上做过滤(Where)、聚合(Sum, Avg, Count)、关联(Join),分组(Group By)、排序(Order By)等,最后将结算结果返回给用户,整个过程都是即时计算,没有预先聚合好的数据可供优化查询速度,拼的都是资源和算力的大小。ROLAP不需要进行预聚合,因此查询的灵活性、可扩展性更好。使用成本低,与关系型数据库一脉相承,”群众基础“好。劣势:当数据量较大(时间跨度大)、查询较复杂(多表join)时,查询性能较差,因为所有的计算都是即时触发(没有预处理),会消耗更多的计算资源。
b. Multi-dimensional OLAPMOLAP提倡存储预聚合数据,适用于查询模式固定并且对查询性能要求较高的场景。MOLAP的代表主要有Druid、Kylin。MOLAP一般会根据用户事先定义的数据维度、指标在数据写入时就计算好预聚合数据,这样在Qeury到来时,直接查预聚合数据即可,无需基于明细数据实时计算,性能提升明显。优势:查询性能极好:数据写入时即完成了预聚合,避免了查询过程中的大量计算,极大提升查询性能。劣势:灵活性较差:因为预先定义了聚合维度和指标,所以只能用于较固定的查询模式,不支持明细查询。存储成本较高:不同维度、指标的预聚合会产生冗余数据,增大存储成本。
c. Hybrid OLAPHOLAP即混合OLAP,是MOLAP和ROLAP的一种融合,兼顾查询性能与灵活性。当查询固定模式的聚合数据时使用MOLAP技术,当查询明细数据或较灵活场景使用ROLAP技术。优势:兼顾查询性能、灵活性、存储空间劣势:系统结构复杂:要同时支持ROLAP和MOLAP,BI组件、OLAP引擎、数仓建设都要做好融合,尤其是底层数据的建模也比较复杂。适用场景少:与其提高系统复杂度,很多用户宁愿选择拆分为两类(ROLAP和MOLAP)单独实现,使用HOLAP的场景较少。
d. Other除此之外,还包含一些其他分类,包括启用Web的OLAP(WOLAP),桌面OLAP(DOLAP),移动OLAP(MOLAP)和空间OLAP(SOLAP)。但总体上不太流行,故此不再进行介绍。
1.3、与OLTP的关系
a. 什么是OLTPOLTP(OnLine Transaction Processsing 联机事务处理)是与功能、业务强相关的事务查询系统,要保证高并发场景下低时延的查询和处理效率。举例来说:我们日常买火车票的12306系统,包括用户注册、登录、购票等功能,每次的注册、登录都涉及跟DB打交道,insert或者update,而每一次这样的操作都是一次OLTP。
b. OLAP v.s. OLTP
2、OLAP主流框架对比
https://zhuanlan.zhihu.com/p/647306436