Kylin的工作原理是对数据模型做Cube预计算,并利用计算的结果加速查询。具体工作过程如下:
由于Kylin的查询过程不会扫描原始记录,而是通过预计算预先完成表的关联、聚合等负责运算,并利用预计算的结果来执行查询,因此相比于非预计算的查询技术,其速度一般要快到一到两个数量级,并且这点在超大的数据集上优势更明显。当数据集达到千亿乃至万亿级别时,Kylin的速度甚至可以超越其他非预计算技术1000倍以上。
Kylin的Cube预计算是通过预先计算多维数据指标,将结果存储起来,以换取查询时候的高性能。具体的预计算过程可能会涉及到多个步骤和算法,例如基于MR或Spark的算法。
在早期版本中,Kylin可能通过串行过程进行Cube计算,即先启动一个MR计算出四维的数据,然后再启动一个MR读取四维的数据,计算出三维的数据,以此类推。但后来,为了提高计算效率,Kylin可能进行了优化,通过一个MR在Map阶段将所有维度的情况都计算出来,做一个预聚合。