谁说算法不重要,Apache Kylin使用了贪心算法
坚持原创,写好每一篇文章
之前的文章我们讲到Cube进行优化的几个方面,如果不进行优化的话,维度如果很多的话,产生的Cuboid就会呈现指数型增长。而Cube Planner 也提供了一种优化的手段。
Cube Planner的目标就是在众多Cuboid中挑选出查询效率最高的维度,它对Cuboid进行挑选的思想是采用了贪心算法。
贪心算法
什么是贪心算法呢?
贪心算法就是只关注当前,而不想以后,当下最有效的最优的解是哪一个,它将问题拆分成小问题,对于每个子问题求出最优解,再整合在一起就是当前这个问题的最优解。贪心算法是一种经典的算法,比如经典的背包问题就可以通过贪心算法来实现。
假如有5个维度组合,从第一个维度组合开始计算需要扫描的行数有多少,这个行数就是每个维度组合的权重。选取维度最少的维度组合。在8和23个维度的时候使用贪心算法来选取合适的维度组合列表,23个维度以上的采用的是基因算法,基因算法用到的比较少,这里就不细说了。。。
System Cube,一个特殊是Cube
对于Kylin查询的是否正常,我们可以通过System Cube来监控,这个特殊的Cube就是用来统计查询情况数据的,比如失败率有多少,查询量有多少等等。Cube Planner就可以利用它来找到合适是Cuboid,Kylin还提供了控制面板Dashboard来供用户查看具体的数据信息,按日期按查询次数等等维度。
总结
这篇文章我们讲了Cube Planner的内容,它使用贪心算法和基因算法来选取合适的维度组合,从而减少不必要的Cuboid,缩减Cube的大小和占用内存,还可以参考System Cube中的数据选取,Apache Kylin和其他应用一样,也提供了Dashboard控制面板来显示数据信息,对用户来说数据更加的直观。
❤️ 感谢大家
如果你觉得这篇内容对你挺有有帮助的话:
- 欢迎关注我❤️,点赞????????,评论????,转发????
- 关注
盼盼小课堂
,定期为你推送好文,还有群聊不定期抽奖活动,可以畅所欲言,与大神们一起交流,一起学习。 - 有不当之处欢迎批评指正。