3.1 Kylin工作原理

简单来说,Kylin的核心思想是预计算,即对多维分析可能用到的度量进行预计算,将计算好的结果保存成Cube并存在HBase中,供查询时直接访问。把高复杂度的聚合运算、多表连接等操作转换成对预计算结果的查询,这决定了Kylin能够拥有很好的快速查询和高并发能力。

Kylin的理论基础:空间换时间。

几个概念先说一下:

● Cuboid:Kylin中将维度任意组合成为一个Cuboid。

● Cube:Kylin中将所有维度组合成为一个Cube,即包含所有的Cuboid。

如图3-1所示就是一个Cube的例子,假设我们有4个dimensions(time, item, location, supplier),这个Cube中每个节点(称作Cuboid)都是这4个dimension的不同组合,每个组合定义了一组分析的dimension(如group by time, item), measure的聚合结果就保存在这每个Cuboid上。查询时根据SQL找到对应的Cuboid,读取measure的值,即可返回。

图3-1

为了更好地适应Hadoop大数据环境,Kylin从通常用来做数据仓库的Hive中读取源数据,使用MapReduce作为Cube构建的引擎,并把预计算结果保存在HBase中,对外暴露Restful API/JDBC/ODBC的查询接口。因为Kylin支持标准的ANSI SQL,所以可以和常用分析工具(如Tableau、Excel等)进行无缝对接。