Kylin 工作原理(二)
什么是 Cube 和 Cuboid
给定一个数据模型,我们可以对其上所有维度进行组合。对于 N 个维度来说,有组合的可能性为 2 的 N 次方种。对每一种维度的组合,将度量做聚合运算,运算的结果保存为一个物理视图,称为 Cuboid。
将所有维度组合的 Cuboid 作为一个整体,被称为 Cube。
简单来说,一个 Cube 就是许多按维度聚合的物化视图的集合。
举例
假定有一个电商的销售数据集,其中维度的时间(Time)、商品(Item)、地点(Location)和供应商(Supplier),度量有销售额(GMV),那么所有维度的组合就有 2 的 4 次方 16 种。
如果用 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 倍以上。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)