天天看點

數倉中的星型模型和雪花模型1.概念2.使用選擇3.總結

1.概念

在多元分析的商業智能解決方案中,根據事實表和次元表的關系,又可将常見的資料模型分為

星型模型

雪花型模型

。在設計邏輯型資料的模型的時候,就應考慮資料是按照星型模型還是雪花型模型進行組織。

當所有維表都直接連接配接到“ 事實表”上時,整個圖解就像星星一樣,故将該模型稱為星型模型,

數倉中的星型模型和雪花模型1.概念2.使用選擇3.總結

星型架構是一種非正規化的結構,多元資料集的每一個次元都直接與事實表相連接配接,不存在漸變次元,是以資料有一定的備援。

如在地域次元表中,存在國家 A 省 B 的城市 C 以及國家 A 省 B 的城市 D 兩條記錄,那麼國家 A 和省 B 的資訊分别存儲了兩次,即存在備援。

當有一個或多個維表沒有直接連接配接到事實表上,而是通過其他維表連接配接到事實表上時,其圖解就像多個雪花連接配接在一起,故稱雪花模型。

數倉中的星型模型和雪花模型1.概念2.使用選擇3.總結

雪花模型是對星型模型的擴充。它對星型模型的維表進一步階層化,原有的各維表可能被擴充為小的事實表,形成一些局部的 " 層次 " 區域,這些被分解的表都連接配接到主次元表而不是事實表。如圖 2,将地域維表又分解為國家,省份,城市等維表。

雪花模型的優點是 : 通過最大限度地減少資料存儲量以及聯合較小的維表來改善查詢性能。雪花型結構去除了資料備援。

此在備援可以接受的前提下,實際運用中星型模型使用更多,也更有效率(空間換易用與效率)。

2.使用選擇

2.1.資料優化

雪花模型使用的是規範化資料,也就是說資料在資料庫内部是組織好的,以便消除備援,是以它能夠有效地減少資料量。通過引用完整性,其業務層級和次元都将存儲在資料模型之中。

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

2.2.業務模型

主鍵是一個單獨的唯一鍵(資料屬性),為特殊資料所選擇。在上面的例子中,Advertiser_ID就将是一個主鍵。外鍵(參考屬性)僅僅是一個表中的字段,用來比對其他次元表中的主鍵。在我們所引用的例子中,Advertiser_ID将是Account_dimension的一個外鍵。

在雪花模型中,資料模型的業務層級是由一個不同次元表主鍵-外鍵的關系來代表的。而在星形模型中,所有必要的次元表在事實表中都隻擁有外鍵。

2.3.性能

第三個差別在于性能的不同。雪花模型在次元表、事實表之間的連接配接很多,是以性能方面會比較低。舉個例子,如果你想要知道Advertiser 的詳細資訊,雪花模型就會請求許多資訊,比如Advertiser Name、ID以及那些廣告主和客戶表的位址需要連接配接起來,然後再與事實表連接配接。

而星形模型的連接配接就少的多,在這個模型中,如果你需要上述資訊,你隻要将Advertiser的次元表和事實表連接配接即可。

2.4.ETL

雪花模型加載資料集市,是以ETL操作在設計上更加複雜,而且由于附屬模型的限制,不能并行化。

星形模型加載次元表,不需要再次元之間添加附屬模型,是以ETL就相對簡單,而且可以實作高度的并行化。

3.總結

通過上面的對比,我們可以發現資料倉庫大多數時候是比較适合使用星型模型建構底層資料Hive表,通過大量的備援來提升查詢效率,星型模型對OLAP的分析引擎支援比較友好,這一點在Kylin中比較能展現。而雪花模型在關系型資料庫中如MySQL,Oracle中非常常見,尤其像電商的資料庫表。在資料倉庫中雪花模型的應用場景比較少,但也不是沒有,是以在具體設計的時候,可以考慮是不是能結合兩者的優點參與設計,以此達到設計的最優化目的。

轉載位址:https://www.cnblogs.com/jiangbei/p/8485122.html

繼續閱讀