• 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 倍以上。

    作者:Binge
    本文版权归作者和博客园共有,转载必须给出原文链接,并保留此段声明,否则保留追究法律责任的权利。
  • 相关阅读:
    初始ASP.NET数据控件【续 DataList】
    初始ASP.NET数据控件GridView
    初始ADO.NET数据操作
    初识 Asp.Net数据验证控件
    【Socket编程】Java通信是这样炼成的
    JAVA之I/O 输入输出流详解
    浅入深出之Java集合框架(下)
    浅入深出之Java集合框架(中)
    浅入深出之Java集合框架(上)
    全面解释java中StringBuilder、StringBuffer、String类之间的关系
  • 原文地址:https://www.cnblogs.com/binbingg/p/14917269.html
Copyright © 2020-2023  润新知