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目前只支持星形模型纷责。