1. 程式人生 > >大數據模塊開發之數據倉庫設計

大數據模塊開發之數據倉庫設計

數值 所有 ffd 方便 模型 延伸 vpd 歷史信息 數據

1. 維度建模基本概念
維度建模(dimensional modeling)是專門用於分析型數據庫、數據倉庫、數據集市建模的方法。數據集市可以理解為是一種"小型數據倉庫"。
維度表(dimension)
維度表示你要對數據進行分析時所用的一個量,比如你要分析產品銷售情況, 你可以選擇按類別來進行分析,或按區域來分析。這樣的按..分析就構成一個維度。再比如"昨天下午我在星巴克花費200元喝了一杯卡布奇諾"。那麽以消費為主題進行分析,可從這段信息中提取三個維度:時間維度(昨天下午),地點維度(星巴克), 商品維度(卡布奇諾)。通常來說維度表信息比較固定,且數據量小。
事實表(fact table)
表示對分析主題的度量。事實表包含了與各維度表相關聯的外鍵,並通過JOIN方式與維度表關聯。事實表的度量通常是數值類型,且記錄數會不斷增加,表規模迅速增長。比如上面的消費例子,它的消費事實表結構示例如下:
消費事實表:Prod_id(引用商品維度表), TimeKey(引用時間維度表), Place_id(引用地點維度表), Unit(銷售量)。
總的說來,在數據倉庫中不需要嚴格遵守規範化設計原則。因為數據倉庫的主導功能就是面向分析,以查詢為主,不涉及數據更新操作。事實表的設計是以能夠正確記錄歷史信息為準則,維度表的設計是以能夠以合適的角度來聚合主題內容為準則。

2. 維度建模三種模式2.1. 星型模式

星形模式(Star Schema)是最常用的維度建模方式。星型模式是以事實表為中心,所有的維度表直接連接在事實表上,像星星一樣。
星形模式的維度建模由一個事實表和一組維表成,且具有以下特點:
a. 維表只和事實表關聯,維表之間沒有關聯;
b. 每個維表主鍵為單列,且該主鍵放置在事實表中,作為兩邊連接的外鍵;
c. 以事實表為核心,維表圍繞核心呈星形分布;

技術分享圖片
2.2. 雪花模式
雪花模式(Snowflake Schema)是對星形模式的擴展。雪花模式的維度表可以擁有其他維度表的,雖然這種模型相比星型更規範一些,但是由於這種模型不太容易理解,維護成本比較高,而且性能方面需要關聯多層維表,性能也比星型模型要低。所以一般不是很常用。

技術分享圖片
2.3. 星座模式
星座模式是星型模式延伸而來,星型模式是基於一張事實表的,而星座模式是基於多張事實表的,而且共享維度信息。
前面介紹的兩種維度建模方法都是多維表對應單事實表,但在很多時候維度空間內的事實表不止一個,而一個維表也可能被多個事實表用到。在業務發展後期,絕大部分維度建模都采用的是星座模式。
技術分享圖片

3. 本項目中數據倉庫的設計
註:采用星型模型
3.1. 事實表設計
技術分享圖片
技術分享圖片
3.2. 維度表設計
技術分享圖片
註意:
維度表的數據一般要結合業務情況自己寫腳本按照規則生成,也可以使用工具生成,方便後續的關聯分析。
比如一般會事前生成時間維度表中的數據,跨度從業務需要的日期到當前日期即可.具體根據你的分析粒度,可以生成年,季,月,周,天,時等相關信息,用於分析。

大數據模塊開發之數據倉庫設計