kylin优化的思想

kylin的核心优势在于使用额外的空间存储预计算的结果,以换取查询时间的缩减。

所以我们要对额外的空间进行优化,并且在空间优化之后,cuboid无法完全命中时,对查询时间进行优化。

空间优化的思路就是试图减少额外空间占用,最常用的就是剪枝优化。去掉那些多余的cuboid,减少预聚合的数量

查询时间优化就是针对存储引擎的优化,以hbase为例,其中包括,维度值的编码优化,rowkey按维度分片,调整rowkey生成的规则,降低精度要求,segment合并和清理,并发优化等。

剪枝优化的"多余"思想是:

1.有些cuboid被查询的几率很低,甚至永远也查不到,显得多余。

2.有的cuboid的能力与其他cuboid接近,显得多余。(如该cuboid与父cuboid的基数很接近)

3.改cuboid的维度基数太高,且存在占用空间的度量如 count distinct。此时就要权衡,若不是很重要,可以去掉。

一般来说,cube的存储不应该超过源数据的10倍,如果超过了,就要进行剪枝优化。

每个cuboid都代表着一种查询样式,如果每种样式都要做好精确匹配,就会很奢侈,所以我们会牺牲掉一部分查询,使它没有精确的匹配。

这就是时间和空间的取舍了。

上一篇:kylin的rowkey优化之调整rowkey顺序


下一篇:VMware安装Ubuntu Kylin系统