Kylin的工作原理

Kylin的工作原理本质上是MOLAP(Multidimensional Online Analytical Processing) Cube,也就是多维立方体分析。

在说明MOLAP Cube之前先介绍维度(Dimension)和度量(Measure)这两个概念。维度:观察数据的角度,正常是时间,地点等不用于计算的值;度量:指被聚合的统计值,也就是聚合运算的结果,可以是销售额,销售商品数量等统计值。

给定一个数据模型,可以对其上的所有维度进行组合。对于N个维度来说,组合的所有可能性共有2^N种。对于每一种维度的组合,将度量做聚合运算,然后将运算的结果保存为一个物化视图,称为Cuboid。所有维度组合的Cuboid作为一个整体,成为Cube,所以简单来说,一个Cube就是许多按维度聚合的物化视图的集合。

举一个例子解释一下上面的说法。假设有一个电商的销售数据集,其中有4个维度和一个度量,维度为时间(Time)、地点(Location)、商品(Item)和供应商(Supplier),度量为销售额(GMV)。那么所有维度就有2^4=16种(如图),比如一维度(1D)的组合有[Time]、[Item]、[Location]、[Supplier] 4种;二维度(2D)的组合有[Time, Item]、[Time, Location]、[Time, Supplier]、[Item, Location]、[Item, Supplier]、[Location, Supplier] 6种;三维度(3D)的组合也有4种;最后零维度(0D)和四维度(4D)的组合各有1种,总共16种。

计算Cuboid,即按维度来聚合销售额。如果用SQL语句来表达计算Cuboid[Time, Location],那么SQL语句如下:select Time, Location, Sum(GMV) as GMV from Sales group by Time, Location;将计算的结果保存为物化视图,所有Cuboid物化视图的总称就是Cube。

Kylin的工作原理就是对数据模型做Cube预计算,并利用计算的结果加速查询,具体过程如下:1.指定数据模型,定义维度和度量。2.预计算Cube,计算所有Cuboid并保存为物化视图。3.执行查询时,读取Cuboid,运算,产生查询结果。

猜你喜欢

转载自my.oschina.net/134596/blog/1824183
今日推荐