kylin内幕--如何有效实现cubes

本文介绍了Apache Kylin中的预计算技术,通过预先计算并存储可能的查询结果——cuboids,以实现对亿级数据的快速查询。文章讨论了rollup概念,用于优化cube存储,避免全量数据扫描。采用贪心算法选择构建哪些cuboids以最大化查询效益,从而有效地实现数据立方体。
摘要由CSDN通过智能技术生成

本文参考斯坦福著名论文:implementing data cubes efficiently。

在kylin(麒麟)中,有一项关键技术叫做预计算:简单的说,我们预先计算出用户可能查询的结果,每一种可能我们称之为一个cuboid,所有的cuboid组合起来叫一个cube。我们把cube存储起来,当用户需要查询数据的时候,就不用查找原始数据表,直接查询cube就能得到想要的数据,这是让kylin能在秒级甚至亚秒级查询亿级以上的数据保证。

一个原始表n个dimension(维度),理论上就有2^n个cuboid

所以,存在一个问题,一个原始表的维度可能很多,我们不可能将所有的可能都存储起来,这将极大的耗费资源,为此我们需要将需要的cuboid创建出来,优化kylin系统

在这里介绍一个概念:rollup

在TCP-D 数据库中有三个属性(dimension):part,supplier,customer和measure:total sales。我们有八种可能聚合这些属性.

1、part,supplier,customer(6M,600万行)

2、part,supplier(0.8M)

3、part,customer(6M)

4、supplier,customer(6M)

5、part(0.2M)

6、supplier(0.1M)

7、custo

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值