前言
本篇文章通過圖文的方式分析不同維度組合下的cube在hbase中的存儲結構
需要聲明的是,kylin不存原始數據,存儲cube
全維度構建
假設一張表有3個字段name,age,sex,那么當通過kylin構建這張表的cube時,hbase的表結構如下所示。注意本示例沒有度量字段,value表示記錄條數累計,代表count(*),度量如果存在那么也是存儲在value的位置,可以手動配置cf。
通過圖1很明顯的可以看到,kylin將每個維度的所有基數都枚舉了出來,並通過組合的方式構建出hbase的rowkey,另外將組合對應的記錄數做預統計保存在value中,對應hbase表中的一個cf:c。
圖1
當維度基數很大的時候,那么構建cube會稱為災難,所以kylin提供了cube的組合模式來減少cube的總維度組合。這里相關概念可以參考《kylin介紹》,下面直接對不同的模式進行案例分析。
aggregate group
意思是多少幾個維度可以任一組合
假設圖1中的cube配置aggregate group為2,那么構建出的cube相比全維度組合構建剪去了3個維度組合的部分,參數圖2
圖2
mandatory
假設圖1中的維度name是必要維度,那么構建出的hbase結構參考圖3
圖3
joint
假設圖1中name和sex維度是joint關系,那么構建出的hbase結構如圖4
圖4
Hierarchy
繼承關系比較好理解,這里就不展示了: )