天天看點

MaxCompute大資料實踐,電商資料倉庫的星型模型和傳統星型的差別

作者:王永偉

  在kimball所著的《資料倉庫工具箱》一書中,對于次元模型設計采用的4步設計方法:1.選擇業務過程 2.聲明粒度 3.确定次元 4.确定事實。

在目前的網際網路大資料環境下,面對複雜的業務場景,為了更有效準确地進行次元模型建設,基于kimball的4步次元模組化方法,我們進行了更進一步的改進。

第一步:選擇業務過程及确定事實表類型

在明确了業務需求以後,接下來需要進行詳細的需求分析,對業務的整個生命周期進行分析,明确關鍵的業務步驟,進而選擇與需求有關的業務過程。

以淘寶的正向訂單流轉為例:

MaxCompute大資料實踐,電商資料倉庫的星型模型和傳統星型的差別

業務過程通常用行為動詞表示,表示業務執行的活動。比如圖中的淘寶訂單流轉的業務過程有四個:建立訂單、買家付款、賣家發貨、買家确認收貨。在明确了流程所包含的業務過程後,需要根據具體的業務需求來選擇與次元模組化有關的業務過程。比如選擇買家付款這個業務過程;還是選擇建立訂單和買家付款這兩個業務過程,具體根據業務情況來确定。

在選擇了業務過程以後,相應的事實表類型也随之确定了。比如選擇買家付款單個業務過程,那麼事實表應為隻包含買家付款這一個業務過程的單事務型事實表;如果選擇的是所有這四個業務過程,并且需要分析各個業務過程之間的時間間隔,那麼所建的事實表應為包含了所有四個業務過程的累積快照型事實表。

第二步:聲明粒度

粒度的聲明是事實表模組化非常重要的一步,意味着精确定義事實表的每一行表示什麼業務含義,粒度傳遞的是與事實表度量有關的細節層次。明确的粒度能確定對事實表中行的意思的了解不會産生混淆,保證所有的事實按照同樣的細節層次記錄。

應該盡量選取最細級别的原子粒度,以確定事實表的應用具有最大的靈活性。同時對于訂單過程而言,粒度可以被定義為最細的訂單級别。比如淘寶訂單中有父子訂單的概念,既一條子訂單對應一類商品,如果拍下了多種商品,則每種商品對應一條子訂單;這些子訂單一同結算的話,則會生成一條父訂單。那麼在這個例子中,事實表的粒度應該選擇為子訂單級别。

第三步:确定次元

完成粒度聲明以後,也就意味着确定了主鍵,對應的次元組合以及相關的次元字段就可以确定了,應該選擇能夠描述清楚業務過程所處的環境的次元資訊。比如淘寶的訂單付款事務事實表中,粒度為子訂單,相關的次元資訊有買家次元、賣家次元、商品次元、收貨人資訊、業務類型、訂單時間等。

第四步:确定事實

事實可以通過回答“過程的度量是什麼”來确定。應該選擇與業務過程有關所有事實,且事實的粒度要與所聲明的事實表粒度一緻。事實有可加性、半可加性、非可加性事實,需要将不可加事實分解為可加的元件。

在淘寶的訂單付款事務事實表中,同粒度的事實有子訂單分攤的支付金額、郵費、優惠金額等。

第五步:備援次元

在傳統的次元模組化星型模型中,對于次元的處理是需要單獨存放在專門的次元表中,通過事實表中外鍵的方式擷取次元。這樣做的目的是為了減少事實表的次元備援,進而減少存儲消耗。而在大資料的事實表模型設計中,更多的考慮是提高下遊使用者的使用效率,降低資料擷取的複雜性,減少關聯的表數量。是以通常的事實表中會備援友善下遊使用者使用的常用次元,以實作對事實表的過濾查詢、控制聚合層次、排序資料以及定義主從關系等操作。

比如在淘寶訂單付款事務事實表中,通常會備援大量的常用次元字段,以及商品的類目、賣家店鋪等次元資訊。

  更多數倉理論請關注:《大資料之路:阿裡巴巴大資料實踐 》

MaxCompute大資料實踐,電商資料倉庫的星型模型和傳統星型的差別

繼續閱讀