參考資料
雪花模式是一種多維模型中表的邏輯布局,其實體關係圖有類似於雪花的形狀,因此得名。與星型模式相同,雪花模式也是由事實表和維度表所組成。所謂 的「雪花化」就是將星型模式中的維度表進行規範化處理。當所有的維度表完成規範化後,就形成了以事實表為中心的雪花型結構,即雪花模式。將維度表進行規範化的具體做法是,把低基數的屬性從維度表中移除並形成單獨的表。基數指的是乙個欄位中不同值的個數,如主鍵列具有唯一值,所以有最高的基數,而像性別這樣的列基數就很低。
在雪花模式中,乙個維度被規範化成多個關聯的表,而在星型模式中,每個維度由乙個單一的維度表所表示。乙個規範化的維度對應一組具有層次關係的維度表,而事實表作為雪花模式裡的子表,存在具有層次關係的多個父表。
星型模式和雪花模式都是建立維度資料倉儲或資料集市的常用方式,適用於加快查詢速度比高效維護資料的重要性更高的場景。這些模式中的表沒有特別的規範化, 一般都被設計成乙個低於第三正規化的級別。
1. 資料規範化與儲存
規範化的過程就是將維度表中重複的組分離成乙個新錶,以減少資料冗餘的過程。正因為如此,規範化不可避免地增加了表的數量。在執行查詢的時候,不得不連線更多的表。但是規範化減少了儲存資料的空間需求,而且提高了資料更新的效率。
從儲存空間的角度看,典型的情況是維度錶比事實錶小很多。這就使得雪花化的維度表相對於星型模式來說,在儲存空間上的優勢沒那麼明顯了。舉例來說,假設在 220個區縣的200個商場,共有100萬條銷售記錄。星型模式的設計會產生1,000,200條記錄,其中事實表1,000,000條記錄,商場維度表有200條記錄,每個區縣資訊作為商場 的乙個屬性,顯式地出現在商場維度表中。在規範化的雪花模式中,會建立乙個區縣維度表,該錶有220條記錄,商場表引用區縣表的主鍵,有200條記錄,事實表沒有變 化,還是1,000,000條記錄,總的記錄數是1,000,420(1,000,000+200+220)。在這種特殊情況(作為子表的商場記錄數少於作為父表的區縣記錄數)下,星型模式所需的空 間反而比雪花模式要少。如果商場有10,000個,情況就不一樣了,星型模式的記錄數是1,010,000,雪花模式的記錄數是1,010,220,從記錄數上看,還是雪花模型多。但 是,星型模式的商場表中會有10,000個冗餘的區縣屬性資訊,而在雪花模式中,商場表中只有10,000個區縣的主鍵,而需要儲存的區縣屬性資訊只有220個,當區縣的屬性 很多時,會大大減少資料儲存占用的空間。
有些資料庫開發者採取一種折中的方式,底層使用雪花模型,上層用表連線建立檢視模擬星型模式。這種方法既通過對維度的規範化節省了儲存空間,同時又對使用者遮蔽了查詢的複雜性。但是當外部的查詢條件不需要連線整個維度表時,這種方法會帶來效能損失。
2. 優點
雪花模式是和星型模式類似的邏輯模型。實際上,星型模式是雪花模式的乙個特例(維度沒有多個層級)。某些條件下,雪花模式更具優勢: 一些olap多維資料庫建模工具專為雪花模型進行了優化。 規範化的維度屬性節省儲存空間。
3. 缺點
雪花模型的主要缺點是維度屬性規範化增加了查詢的連線操作和複雜度。相對於平面化的單錶維度,多表連線的查詢效能會有所下降。但雪花模型的查詢效能問題近年來隨著資料瀏覽工具的不斷優化而得到緩解。
和具有更高規範化級別的事務型模式相比,雪花模式並不確保資料完整性。向雪花模式的表中裝載資料時,一定要有嚴格的控制和管理,避免資料的異常插入或更 新。
4.示例
圖2-4顯示的是將圖2-3的星型模式規範化後的雪花模式。日期維度分解成季度、月、周、日期四個表。產品維度分解成產品分類、產品兩個表。由商場維度分解出乙個地區表。
[book]hadoop構建資料倉儲實踐, 第2章第2節 —— 維度資料模
資料倉儲的星形和雪花模型
什麼時候使用雪花模型?ralph kimball,資料倉儲大師,講述了三個例子。對於下面三個例子,使用雪花模型可能是更好的選擇。1,乙個使用者維度表且資料量較大。其中,80 的事實度量表是匿名訪問者,僅包含少數詳細資訊。20 的是可靠的註冊使用者,且這些註冊使用者有較為詳細的資訊,與多個維度表中的資...
資料倉儲星型模型VS雪花模型
在多維分析的商業智慧型解決方案中,根據事實表和維度表的關係,可將常見的模型分為星型模型和雪花模型。在設計邏輯型資料的模型的時候,就應考慮資料是按照星型模型還是雪花模型進行組織。當所有維表都直接連線到事實表上時,整個 就像星星一樣,故將該模型稱為星型模型。星型架構是一種非正規化的結構,多維資料集的每乙...
資料倉儲 資料倉儲部署
1 首先用下面的語句查詢是否有要建立的表空間 hospdw tab 和 hospdw idx 如果沒有,則把d database zyhip改為對應的路徑,有的話直接建立使用者 select tablespace name,file name,round bytes 1024 1024 0 size...