1.2 Kylin 工作原理

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

这是数据分析中相当经典的理论,在关系数据库年代就已经有了广泛的应用.

在说明 MOLAP Cube 之前需要先介绍一下维度(Dimension)和度量(Measure)这两个概念。


1.2.1 维度(Dimension)和度量(Measure)简介

维度

简单来讲,维度就是观察数据的角度。它通常是数据记录的一个属性,例如时间、地点等。

比如电商的销售数据,可以从时间的维度来观察, 也可以进一步细化,从时间和地区的维度来观察.

维度一般是一组离散的值,比如时间维度上的每一个独立的日期,或者商品维度上的每一件独立的商品。

因此统计时可以把维度值相同的记录聚合在一起,然后应用聚合函数做累加、平均、去重复计数等聚合计算。

度量

度量就是被聚合后的统计值,也是聚合运算的结果,如图中的销售额,抑或是销售商品的总件数。

度量是基于数据所计算出来的考量值;它通常是一个数值,如总销售额、不同的用户数等。

通过比较和测算度量,分析师可以对数据进行评估,比如今年的销售额相比去年有多大的 增长,增长的速度是否达到预期,不同商品类别的增长比例是否合理等。

在一个 SQL 查询中,Group By 的属性通常就是维度,而所计算的值则是度量


1.2.2 Cube 和 Cuboid

有了维度和度量,一个数据表或数据模型上的所有字段就可以分类了,它们要么是维度,要么是度量(可以被聚合)。于是就有了根据维度和度量做预计算的Cube理论

给定一个数据模型,我们可以对其上的所有维度进行组合。对于N个维度来说,组合的所有可能性共有 2^n 种。

对于每一种维度的组合,将度量做聚合运算,然后将运算的结果保存为一个物化视图,称为Cuboid

所有维度组合的Cuboid作为一个整体,被称为Cube

所以简单来说,一个 Cube 就是许多按维度聚合的物化视图的集合。

下面来列举一个具体的例子。

假定有一个电商的销售数据集,其中维度包括:

  • 时间(Time)
  • 商品(Item)
  • 地点(Location)
  • 供应商(Supplier)

度量:

  • 销售额(GMV)。

那么所有维度的组合就有2^4=16

  1. 一维度(1D)的组合有[Time]、[Item]、[Location]、[Supplier]4种;

  2. 二维度(2D)的组合有[Time,Item]、[Time,Location]、[Time、Supplier]、 [Item,Location]、[Item,Supplier]、[Location,Supplier]6种;

  3. 三维度(3D)的组合也有4种;

  4. 最后零维度(0D)和四维度(4D)的组合各有1种

总共 16 中.

计算 Cuboid,即按维度来聚合销售额。如果用SQL语句来表达计算 Cuboid[Time,Loca-tion],那么SQL语句如下:

将计算的结果保存为物化视图,所有Cuboid物化视图的总称就是Cube


1.2.3 工作原理

Apache Kylin 的工作原理就是对数据模型做Cube预计算,并利用计算的结果加速查询,具体工作过程如下。

  1. 指定数据模型, 定义维度和度量。

  2. 预计算Cube, 计算所有Cuboid并保存为物化视图。

  3. 执行查询时, 读取Cuboid运算, 产生查询结果。

由于 Kylin 的查询过程不会扫描原始记录,而是通过预计算预先完成表的关联、聚合等复杂运算,并利用预计算的结果来执行查询,因此相比非预计算的查询技术,其速度一般要快一到两个数量级,并且这点在超大的数据集上优势更明显。

当数据集达到千亿乃至万亿级别时,Kylin的速度甚至可以超越其他非预计算技术 1000 倍以上。
Copyright © 尚硅谷大数据 2019 all right reserved,powered by Gitbook
该文件最后修订时间: 2019-04-02 13:29:23

results matching ""

    No results matching ""