星型模型和雪花模型的區別

1、概述數據庫

在多維分析的商業智能解決方案中,根據事實表和維度表的關係,又可將常見的模型分爲星型模型和雪花型模型。在設計邏輯型數據的模型的時候,就應考慮數據是按照星型模型仍是雪花型模型進行組織。架構

當全部維表都直接鏈接到「 事實表」上時,整個圖解就像星星同樣,故將該模型稱爲星型模型,如圖 1 。性能

星型架構是一種非正規化的結構,多維數據集的每個維度都直接與事實表相鏈接,不存在漸變維度,因此數據有必定的冗餘,如在地域維度表中,存在國家 A 省 B 的城市 C 以及國家 A 省 B 的城市 D 兩條記錄,那麼國家 A 和省 B 的信息分別存儲了兩次,即存在冗餘。優化

圖1. 銷售數據倉庫中的星型模型設計

星型模型由於數據的冗餘因此不少統計查詢不須要作外部的鏈接,所以通常狀況下效率比雪花型模型要高。星型結構不用考慮不少正規化的因素,設計與實現都比較簡單。雪花型模型因爲去除了冗餘,有些統計就須要經過表的聯接才能產生,因此效率不必定有星型模型高。正規化也是一種比較複雜的過程,相應的數據庫結構設計、數據的 ETL、以及後期的維護都要複雜一些。所以在冗餘能夠接受的前提下,實際運用中星型模型使用更多,也更有效率。部署

2、使用選擇io

星形模型(Star Schema)和雪花模型(Snowflake Schema)是數據倉庫中經常使用到的兩種方式,而它們之間的對比要從四個角度來進行討論。效率

1.數據優化引用

雪花模型使用的是規範化數據,也就是說數據在數據庫內部是組織好的,以便消除冗餘,所以它可以有效地減小數據量。經過引用完整性,其業務層級和維度都將存儲在數據模型之中。請求

                                             ▲圖1 雪花模型

相比較而言,星形模型實用的是反規範化數據。在星形模型中,維度直接指的是事實表,業務層級不會經過維度之間的參照完整性來部署。

                                             ▲圖2 星形模型

 2.業務模型

主鍵是一個單獨的惟一鍵(數據屬性),爲特殊數據所選擇。在上面的例子中,Advertiser_ID就將是一個主鍵。外鍵(參考屬性)僅僅是一個表中的字段,用來匹配其餘維度表中的主鍵。在咱們所引用的例子中,Advertiser_ID將是Account_dimension的一個外鍵。

在雪花模型中,數據模型的業務層級是由一個不一樣維度表主鍵-外鍵的關係來表明的。而在星形模型中,全部必要的維度表在事實表中都只擁有外鍵。

  3.性能

第三個區別在於性能的不一樣。雪花模型在維度表、事實表之間的鏈接不少,所以性能方面會比較低。舉個例子,若是你想要知道Advertiser 的詳細信息,雪花模型就會請求許多信息,好比Advertiser Name、ID以及那些廣告主和客戶表的地址須要鏈接起來,而後再與事實錶鏈接。

而星形模型的鏈接就少的多,在這個模型中,若是你須要上述信息,你只要將Advertiser的維度表和事實錶鏈接便可。

  4.ETL

雪花模型加載數據集市,所以ETL操做在設計上更加複雜,並且因爲附屬模型的限制,不能並行化。

星形模型加載維度表,不須要再維度之間添加附屬模型,所以ETL就相對簡單,並且能夠實現高度的並行化。

  總結

雪花模型使得維度分析更加容易,好比「針對特定的廣告主,有哪些客戶或者公司是在線的?」星形模型用來作指標分析更適合,好比「給定的一個客戶他們的收入是多少?」

相關文章
相關標籤/搜索