星型模型和雪花型模型比較

2022-09-04 09:39:09 字數 3959 閱讀 9098

一、概述

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

當所有維表都直接連線到「 事實表」上時,整個**就像星星一樣,故將該模型稱為星型模型,如圖 1 。

星型架構是一種非正規化的結構,多維資料集的每乙個維度都直接與事實表相連線,不存在漸變維度,所以資料有一定的冗餘,如在地域維度表中,存在國家 a 省 b 的城市 c 以及國家 a 省 b 的城市 d 兩條記錄,那麼國家 a 和省 b 的資訊分別儲存了兩次,即存在冗餘。

圖1. 銷售資料倉儲中的星型模型

當有乙個或多個維表沒有直接連線到事實表上,而是通過其他維表連線到事實表上時,其**就像多個雪花連線在一起,故稱雪 花模型。雪花模型是對星型模型的擴充套件。它對星型模型的維表進一步層次化,原有的各維表可能被擴充套件為小的事實表,形成一些區域性的 " 層次 " 區域,這些被分解的表都連線到主維度表而不是事實表。如圖 2,將地域維表又分解為國家,省份,城市等維表。它的優點是 :通過最大限度地減少資料儲存量以及聯合較小的維表來改善查詢效能。雪花型結構去除了資料冗餘。

圖 2. 銷售資料倉儲中的雪花型模型

星型模型因為資料的冗餘所以很多統計查詢不需要做外部的連線,因此一般情況下效率比雪花型模型要高。星型結構不用考慮很多正規化的因素,設計與實現都比較簡單。雪花型模型由於去除了冗餘,有些統計就需要通過表的聯接才能產生,所以效率不一定有星型模型高。正規化也是一種比較複雜的過程,相應的資料庫結構設計、資料的 etl、以及後期的維護都要複雜一些。因此在冗餘可以接受的前提下,實際運用中星型模型使用更多,也更有效率。

二、使用選擇

星形模型(star schema)和雪花模型(snowflake schema)是資料倉儲中常用到的兩種方式,而它們之間的對比要從四個角度來進行討論。

1.資料優化

雪花模型使用的是規範化資料,也就是說資料在資料庫內部是組織好的,以便消除冗餘,因此它能夠有效地減少資料量。通過引用完整性,其業務層級和維度都將儲存在資料模型之中。

▲圖1 雪花模型

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

▲圖2 星形模型

2.業務模型

主鍵是乙個單獨的唯一鍵(資料屬性),為特殊資料所選擇。在上面的例子中,advertiser_id就將是乙個主鍵。

外來鍵(參考屬性)僅僅是乙個表中的字段,用來匹配其他維度表中的主鍵。在我們所引用的例子中,advertiser_id將是

account_dimension的乙個外來鍵。

在雪花模型中,資料模型的業務層級是由乙個不同維度表主鍵-外來鍵的關係來代表的。而在星形模型中,所有必要的維度表在事實表中都只擁有外來鍵。

3.效能

第三個區別在於效能的不同。雪花模型在維度表、事實表之間的連線很多,因此效能方面會比較低。舉個例子,如果你想要知道advertiser 的詳細資訊,雪花模型就會請求許多資訊,比如advertiser name、id以及那些廣告主和客戶表的位址需要連線起來,然後再與事實表連線。

而星形模型的連線就少的多,在這個模型中,如果你需要上述資訊,你只要將advertiser的維度表和事實表連線即可。

4.etl

雪花模型載入資料集市,因此etl操作在設計上更加複雜,而且由於附屬模型的限制,不能並行化。

星形模型載入維度表,不需要再維度之間新增附屬模型,因此etl就相對簡單,而且可以實現高度的並行化。

總結

一、概述

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

當所有維表都直接連線到「 事實表」上時,整個**就像星星一樣,故將該模型稱為星型模型,如圖 1 。

星型架構是一種非正規化的結構,多維資料集的每乙個維度都直接與事實表相連線,不存在漸變維度,所以資料有一定的冗餘,如在地域維度表中,存在國家 a 省 b 的城市 c 以及國家 a 省 b 的城市 d 兩條記錄,那麼國家 a 和省 b 的資訊分別儲存了兩次,即存在冗餘。

圖1. 銷售資料倉儲中的星型模型

當有乙個或多個維表沒有直接連線到事實表上,而是通過其他維表連線到事實表上時,其**就像多個雪花連線在一起,故稱雪 花模型。雪花模型是對星型模型的擴充套件。它對星型模型的維表進一步層次化,原有的各維表可能被擴充套件為小的事實表,形成一些區域性的 " 層次 " 區域,這些被分解的表都連線到主維度表而不是事實表。如圖 2,將地域維表又分解為國家,省份,城市等維表。它的優點是 :通過最大限度地減少資料儲存量以及聯合較小的維表來改善查詢效能。雪花型結構去除了資料冗餘。

圖 2. 銷售資料倉儲中的雪花型模型

星型模型因為資料的冗餘所以很多統計查詢不需要做外部的連線,因此一般情況下效率比雪花型模型要高。星型結構不用考慮很多正規化的因素,設計與實現都比較簡單。雪花型模型由於去除了冗餘,有些統計就需要通過表的聯接才能產生,所以效率不一定有星型模型高。正規化也是一種比較複雜的過程,相應的資料庫結構設計、資料的 etl、以及後期的維護都要複雜一些。因此在冗餘可以接受的前提下,實際運用中星型模型使用更多,也更有效率。

二、使用選擇

星形模型(star schema)和雪花模型(snowflake schema)是資料倉儲中常用到的兩種方式,而它們之間的對比要從四個角度來進行討論。

1.資料優化

雪花模型使用的是規範化資料,也就是說資料在資料庫內部是組織好的,以便消除冗餘,因此它能夠有效地減少資料量。通過引用完整性,其業務層級和維度都將儲存在資料模型之中。

▲圖1 雪花模型

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

▲圖2 星形模型

2.業務模型

主鍵是乙個單獨的唯一鍵(資料屬性),為特殊資料所選擇。在上面的例子中,advertiser_id就將是乙個主鍵。

外來鍵(參考屬性)僅僅是乙個表中的字段,用來匹配其他維度表中的主鍵。在我們所引用的例子中,advertiser_id將是

account_dimension的乙個外來鍵。

在雪花模型中,資料模型的業務層級是由乙個不同維度表主鍵-外來鍵的關係來代表的。而在星形模型中,所有必要的維度表在事實表中都只擁有外來鍵。

3.效能

第三個區別在於效能的不同。雪花模型在維度表、事實表之間的連線很多,因此效能方面會比較低。舉個例子,如果你想要知道advertiser 的詳細資訊,雪花模型就會請求許多資訊,比如advertiser name、id以及那些廣告主和客戶表的位址需要連線起來,然後再與事實表連線。

而星形模型的連線就少的多,在這個模型中,如果你需要上述資訊,你只要將advertiser的維度表和事實表連線即可。

4.etl

雪花模型載入資料集市,因此etl操作在設計上更加複雜,而且由於附屬模型的限制,不能並行化。

星形模型載入維度表,不需要再維度之間新增附屬模型,因此etl就相對簡單,而且可以實現高度的並行化。

總結

星型模型和雪花型模型比較

一 概述 在多維分析的商業智慧型解決方案中,根據事實表和維度表的關係,又可將常見的模型分為星型模型和雪花型模型。在設計邏輯型資料的模型的時候,就應考慮資料是按照星型模型還是雪花型模型進行組織。當所有維表都直接連線到 事實表 上時,整個 就像星星一樣,故將該模型稱為星型模型,如圖 1 星型架構是一種非...

星型模型和雪花型模型比較

一 概述 在多維分析的商業智慧型解決方案中,根據事實表和維度表的關係,又可將常見的模型分為星型模型和雪花型模型。在設計邏輯型資料的模型的時候,就應考慮資料是按照星型模型還是雪花型模型進行組織。當所有維表都直接連線到 事實表 上時,整個 就像星星一樣,故將該模型稱為星型模型,如圖 1 星型架構是一種非...

星型模型和雪花型模型比較

每個資料倉儲都包含乙個或者多個事實資料表。事實資料表可能包含業務銷售資料,如現金登記事務所產生的資料,事實資料表通常包含大量的行。事實資料表的主要特點是包含數字資料 事實 並且這些數字資訊可以彙總,以提供有關單位作為歷史的資料,每個事實資料表包含乙個由多個部分組成的索引,該索引包含作為外來鍵的相關性...