Kylin的工作原理本質(zhì)上是MOLAP(Multidimensional Online Analytical Processing) Cube,也就是多維立方體分析。
在說明MOLAP Cube之前先介紹 維度(Dimension) 和 度量(Measure) 這兩個(gè)概念。
- 維度:
被group by的字段,觀察數(shù)據(jù)的角度,正常是時(shí)間,地點(diǎn)等不用于計(jì)算的值;- 度量:
被sum等聚合的字段,指被聚合的統(tǒng)計(jì)值,也就是聚合運(yùn)算的結(jié)果,可以是銷售額,銷售商品數(shù)量等統(tǒng)計(jì)值。
- 給定一個(gè)數(shù)據(jù)模型,可以對其上的所有維度進(jìn)行組合。對于N個(gè)維度來說,組合的所有可能性共有2^N種。
- 對于每一種維度的組合,將度量做聚合運(yùn)算,然后將運(yùn)算的結(jié)果保存為一個(gè)物化視圖,稱為Cuboid。
- 所有維度組合的Cuboid作為一個(gè)整體,成為Cube,所以簡單來說,一個(gè)Cube就是許多按維度聚合的物化視圖的集合。
舉一個(gè)例子解釋一下上面的說法:
假設(shè)有一個(gè)電商的銷售數(shù)據(jù)集,其中有4個(gè)維度和一個(gè)度量,維度為時(shí)間(Time)、地點(diǎn)(Location)、商品(Item)和供應(yīng)商(Supplier),度量為銷售額(GMV)。那么所有維度就有2^4=16種(如圖),比如一維度(1D)的組合有[Time]、[Item]、[Location]、[Supplier] 4種;二維度(2D)的組合有[Time, Item]、[Time, Location]、[Time, Supplier]、[Item, Location]、[Item, Supplier]、[Location, Supplier] 6種;三維度(3D)的組合也有4種;最后零維度(0D)和四維度(4D)的組合各有1種,總共16種。

計(jì)算Cuboid,即按維度來聚合銷售額。
如果用SQL語句來表達(dá)計(jì)算Cuboid[Time, Location],那么SQL語句如下:Select Time, Location, Sum(GMV) as GMV from Sales group by Time, Location;
將計(jì)算的結(jié)果保存為物化視圖,所有Cuboid物化視圖的總稱就是Cube。
Kylin的工作原理就是對數(shù)據(jù)模型做Cube預(yù)計(jì)算,并利用計(jì)算的結(jié)果加速查詢,具體過程如下:
- 指定數(shù)據(jù)模型,定義維度和度量。
- 預(yù)計(jì)算Cube,計(jì)算所有Cuboid并保存為物化視圖。
- 執(zhí)行查詢時(shí),讀取Cuboid,運(yùn)算,產(chǎn)生查詢結(jié)果。
事實(shí)表和維度表
事實(shí)表(Fact Table)是指存儲(chǔ)有事實(shí)記錄的表,如系統(tǒng)日志、銷售記錄、傳感器數(shù)值等;事實(shí)表的記錄是動(dòng)態(tài)增長的,所以它的體積通常遠(yuǎn)大于維度表。
維度表(Dimension Table)或維表,也成為查找表(Lookup Table),是與事實(shí)表相對應(yīng)的一種表;它保存了維度的屬性值,可以跟事實(shí)表做關(guān)聯(lián);相當(dāng)于將事實(shí)表上經(jīng)常重復(fù)的屬性抽取、規(guī)范出來用一張表進(jìn)行管理。常見的維度表有:日期表(存儲(chǔ)與日期對應(yīng)的周、月、季度等屬性)、地區(qū)表(包含國家、省/州、城市等屬性)等。維度表的變化通常不會(huì)太大。使用維度表有許多好處:
- 縮小了事實(shí)表的大小。
- 便于維度的管理和維護(hù),增加、刪除和修改維度的屬性,不必對事實(shí)表的大量記錄進(jìn)行改動(dòng)。
- 維度表可以為多個(gè)事實(shí)表重用。
星形模型
- 星形模型(Star Schema)是數(shù)據(jù)挖掘中常用的幾種多維數(shù)據(jù)模型之一。它的特點(diǎn)是只有一張事實(shí)表,以及零到多個(gè)維度表,事實(shí)表與維度表通過主外鍵相關(guān)聯(lián),維度表之間沒有關(guān)聯(lián),就像許多小星星圍繞在一顆恒星周圍,所以名為星形模型。
- 另一種常用的模型是雪花模型(SnowFlake Schema),就是將星形模型中的某些維表抽取成更細(xì)粒度的維表,然后讓維表之間也進(jìn)行關(guān)聯(lián),這種形狀酷似雪花的的模型稱為雪花模型。
- 還有一種更為復(fù)雜的模型,具有多個(gè)事實(shí)表,維表可以在不同事實(shí)表之間公用,這種模型被稱為星座模型。
不過,Kylin目前只支持星形模型。