Kylin 工作原理(二)

什么是 Cube 和 Cuboid

给定一个数据模型,我们可以对其上所有维度进行组合。对于 N 个维度来说,有组合的可能性为 2 的 N 次方种。对每一种维度的组合,将度量做聚合运算,运算的结果保存为一个物理视图,称为 Cuboid。

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

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

举例

假定有一个电商的销售数据集,其中维度的时间(Time)、商品(Item)、地点(Location)和供应商(Supplier),度量有销售额(GMV),那么所有维度的组合就有 2 的 4 次方 16 种。

微信图片_20210615142225

如果用 SQL 来表达计算 Cuboid[Time,Location],那就是

select Time,Location,Sum(GMV) as GMV from Sales group by Time,Location

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

工作原理

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

Kylin 工作过程如下:

  • 指定数据模型,定义维度和度量
  • 预计算 Cube,计算所有 Cuboid 并将其保存为物化视图
  • 执行查询时,读取 Cuboid,进行加工运算产生查询结果

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

posted @ 2021-06-22 10:08  Binge-和时间做朋友  阅读(157)  评论(0编辑  收藏  举报