一、星型模型:是一種費正規化的結構,多維數據集的每一個維度都直接與事實表相連接, 不存在漸變維度,所以數據有一定的冗余。
二、雪花模型
當有一個或者多個維表沒有直接連接到事實表上,而是通過其他維表連接到事實表上時,其圖解就像多個雪花連接在一起,故稱雪花模型。雪花模型是對星型模型的擴展,原有的各維度表可能被擴展為小的事實表,形成一些局部的“層次”區域,這些被分解的表都連接到主維度表而不是事實表。它的優點是:通過最大限度地減少數據存儲量以及聯合較小的維表來改善查詢性能。
二者的區別:
星型模型因為數據的榮譽所以很多查詢不需要做外部連接,因此一般情況下效率比雪花模型高,設計與實現比較簡單。
雪花模型由於去除了冗余,有些統計就需要通過表的連接才能產生,所以效率不一定有星型模型高。因此在冗余可以接受的前提下,實際運用中星型模型使用更多,也更有效率。
三、使用選擇
四個角度來進行討論:
1、數據優化
雪花模型使用的是規范化數據,數據庫內部是組織好的,以便消除冗余,因此它能夠有效地減少數據量。通過引用完整性,其業務層級和維度都將存儲在數據模型中。
相比較而言,星型模型實用的是反規范化數據。在星型模型中,維度直接指的是事實表,業務層級不會通過維度之間的參照完成性來部署。
見上圖
2、業務性能
在雪花模型中,數據模型的業務層級是有一個不同維度表主鍵-外鍵的關系來代表的;
在星型模型中,所有必要的維度表在事實表中都只擁有外鍵。
3、性能
雪花模型在維度表、事實表之間的連接很多,因此性能方面會比較低。
4、ETL
雪花模型加載數據集市,因此ETL操作和設計上更加復雜,而且由於附屬模型的限制,不能並行化。
星型模型加載維度表,不需要在維度表之間添加附屬模型,因此ETL就相對簡單,而且可以實現高度的並行化。
總結:
雪花模型使得維度分析更加容易,比如“針對特定的廣告主,有哪些客戶或者公司在線的?”
星型模型用來做指標分析更適合,比如“給定的一個客戶他們的收入是多少?”