漫談數倉第二篇NO.2 數據模型(維度建模)

本文導航

前言

model對於數倉是最核心的東西,數據模型是數據組織和存儲方法,模型的好壞,決定了數倉能支撐企業業務多久。

爲什麼大多數企業,數倉都要重建,這不僅僅是業務拓展、發展迅速,很大一部分是因爲模型建的很爛。

01. 基本概念

維度建模,是數據倉庫大師Ralph Kimball提出的,是數據倉庫工程領域最流行的數倉建模經典。

維度建模以分析決策的需求出發構建模型,構建的數據模型爲分析需求服務,因此它重點解決用戶如何更快速完成分析需求,同時還有較好的大規模複雜查詢的響應性能。

它是面向分析的,爲了提高查詢性能可以增加數據冗餘,反規範化的設計技術。

1.1 事實表

事實表產生於業務過程,存儲了業務活動或事件提煉出來的性能度量。從最低的粒度級別來看,事實錶行對應一個度量事件。

事實表根據粒度的角色劃分不同,可分爲事務事實表、週期快照事實表、累積快照事實表。

(1)事務事實表,用於承載事務數據,通常粒度比較低,它是面向事務的,其粒度是每一行對應一個事務,它是最細粒度的事實表,例如產品交易事務事實、ATM交易事務事實。

(2)週期快照事實表,按照一定的時間週期間隔(每天,每月)來捕捉業務活動的執行情況,一旦裝入事實表就不會再去更新,它是事務事實表的補充。用來記錄有規律的、固定時間間隔的業務累計數據,通常粒度比較高,例如賬戶月平均餘額事實表。

(3)累積快照事實表,用來記錄具有時間跨度的業務處理過程的整個過程的信息,每個生命週期一行,通常這類事實表比較少見。

注意:這裏需要值得注意的是,在事實表的設計時,一定要注意一個事實表只能有一個粒度,不能將不同粒度的事實建立在同一張事實表中。

1.2 維度表

維度表,一致性維度,業務過程的發生或分析角度,我們主要關注下退化維度和緩慢變化維。

(1)退化維度(DegenerateDimension)

在維度類型中,有一種重要的維度稱作爲退化維度,亦維度退化一說。這種維度指的是直接把一些簡單的維度放在事實表中。退化維度是維度建模領域中的一個非常重要的概念,它對理解維度建模有着非常重要的作用,退化維度一般在分析中可以用來做分組使用。

(2)緩慢變化維(Slowly Changing Dimensions)

維度的屬性並不是始終不變的,它會隨着時間的流逝發生緩慢的變化,這種隨時間發生變化的維度我們一般稱之爲緩慢變化維(SCD)。

SCD常用的三種處理方式:

TYPE1 直接覆蓋原值

TYPE2 增加維度行

在爲維度成員增加新行時,需爲其分配新的主代理鍵。並且,至少需要在維度行再增加三列:有效日期、截止日期、行標識。這個地方可聯想拉鍊表設計。

TYPE3 增加屬性列

④ 混合方式

可根據實際業務場景,混合或選擇使用以上三種方式,以快速方便而又準確的分析歷史變化情況。

1.3 粒度

用於確定某一事實表中的行表示什麼,是業務最小活動單元或不同維度組合,即業務細節程度。

1.4 維度建模流程

維度建模步驟:選擇業務過程->聲明粒度->確定維度->確定事實。旨在重點解決數據粒度、維度設計和事實表設計問題。

聲明粒度,爲業務最小活動單元或不同維度組合。以共同粒度從多個組織業務過程合併度量的事實表稱爲合併事實表,需要注意的是,來自多個業務過程的事實合併到合併事實表時,它們必須具有同樣等級的粒度。

02.建模方法 -- 經典數據倉庫模型

數據倉庫建模方法論可分爲:維度建模、範式建模、Data Vault模型、Anchor模型。

2.1 維度模型

企業中最流行、也是最經典的數倉建模經典,數據倉庫大師Ralph Kimball的經典著作《數據倉庫工具箱 維度建模權威指南 第三版》一本書進行了論述。從事數據倉庫/ETL/BI的同學,強烈建議買一本至少讀一遍。

按數據組織類型劃分可分爲星型模型、雪花模型、星座模型。

(1)星型模型

星型模型主要是維表和事實表,以事實表爲中心,所有維度直接關聯在事實表上,呈星型分佈。

圖來源於Kimball《The Data Warehouse Toolkits -3rd Edition》

(2)雪花模型

雪花模型,在星型模型的基礎上,維度表上又關聯了其他維度表。這種模型維護成本高,性能方面也較差,所以一般不建議使用。尤其是基於hadoop體系構建數倉,減少join就是減少shuffle,性能差距會很大。

(3)星座模型

星座模型,是對星型模型的擴展延伸,多張事實表共享維度表。數倉模型建設後期,大部分維度建模都是星座模型。

2.2 範式模型

即 實體關係(ER)模型,數據倉庫之父Immon提出的,從全企業的高度設計一個3NF模型,用實體加關係描述的數據模型描述企業業務架構,在範式理論上符合3NF。此建模方法,對建模人員的能力要求非常高。

2.3 Data Vault模型

DataVault由Hub(關鍵核心業務實體)、Link(關係)、Satellite(實體屬性) 三部分組成 ,是Dan Linstedt發起創建的一種模型方法論,它是在ER關係模型上的衍生,同時設計的出發點也是爲了實現數據的整合,並非爲數據決策分析直接使用。

2.4 Anchor模型

高度可擴展的模型,所有的擴展只是添加而不是修改,因此它將模型規範到6NF,基本變成了K-V結構模型。企業很少使用,本文不多做介紹。

03. 建模工具

建模工具,一般企業以Erwin、powerdesigner、visio,甚至Excel等爲主。也有些企業自行研發工具,或使用阿里等成熟套裝組件產品。

3.1 PowerDesigner

是Sybase的企業建模和設計解決方案,是能進行數據庫設計的強大的軟件,是一款開發人員常用的數據庫建模工具。使用它可以分別從概念數據模型(Conceptual Data Model)和物理數據模型(Physical Data Model)兩個層次對數據庫進行設計。

3.2 ERWin

全稱是ERwin Data Modeler,是CA公司的數據建模工具。ERwin提供數據庫結構,管理界面的容易簡單,圖形顯示對視覺複雜。

另附一張 www.erwinchina.com 中文官網首頁截圖,這幾句話很霸氣有木有~~

3.3 Visio

Visio 是Office 軟件系列中的負責繪製流程圖和示意圖的軟件,是一款便於IT和商務人員就複雜信息、系統和流程進行可視化處理、分析和交流的軟件。同時它也可以用來數據庫建模。

打開visio 2010,文件—>新建—>數據庫—>數據庫模型圖。建立數據庫模型圖之後,菜單欄多出一個菜單項"數據庫"。

3.4 Excel Mapping

通過我們最熟悉的Excel進行維護數據模型、血緣關係和元數據管理,話不多說,直接上圖:

04. 結語

對於數倉而言,模型就是命脈,好與壞直接決定企業數據存儲、處理和應用。

對於維度建模,真正理解了粒度和一致性維度,也就理解了維度建模的魂。

對於建模工具,沒有最好只有更好,適合業務的就是最好的。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章