一、概述
在多維分析的商業(yè)智能解決方案中,根據(jù)事實(shí)表和維度表的關(guān)系,又可將常見的模型分為星型模型和雪花型模型。在設(shè)計(jì)邏輯型數(shù)據(jù)的模型的時(shí)候,就應(yīng)考慮數(shù)據(jù)是按照星型模型還是雪花型模型進(jìn)行組織。
當(dāng)所有維表都直接連接到“ 事實(shí)表”上時(shí),整個(gè)圖解就像星星一樣,故將該模型稱為星型模型,如圖 1 。
星型架構(gòu)是一種非正規(guī)化的結(jié)構(gòu),多維數(shù)據(jù)集的每一個(gè)維度都直接與事實(shí)表相連接,不存在漸變維度,所以數(shù)據(jù)有一定的冗余,如在地域維度表中,存在國(guó)家 A省 B 的城市 C 以及國(guó)家 A 省 B 的城市 D 兩條記錄,那么國(guó)家 A 和省 B 的信息分別存儲(chǔ)了兩次,即存在冗余。
圖1.銷售數(shù)據(jù)倉(cāng)庫(kù)中的星型模型
當(dāng)有一個(gè)或多個(gè)維表沒有直接連接到事實(shí)表上,而是通過其他維表連接到事實(shí)表上時(shí),其圖解就像多個(gè)雪花連接在一起,故稱雪花模型。雪花模型是對(duì)星型模型的擴(kuò)展。它對(duì)星型模型的維表進(jìn)一步層次化,原有的各維表可能被擴(kuò)展為小的事實(shí)表,形成一些局部的 "層次 " 區(qū)域,這些被分解的表都連接到主維度表而不是事實(shí)表。如圖 2,將地域維表又分解為國(guó)家,省份,城市等維表。它的優(yōu)點(diǎn)是 :通過最大限度地減少數(shù)據(jù)存儲(chǔ)量以及聯(lián)合較小的維表來改善查詢性能。雪花型結(jié)構(gòu)去除了數(shù)據(jù)冗余。
圖 2.銷售數(shù)據(jù)倉(cāng)庫(kù)中的雪花型模型
星型模型因?yàn)閿?shù)據(jù)的冗余所以很多統(tǒng)計(jì)查詢不需要做外部的連接,因此一般情況下效率比雪花型模型要高。星型結(jié)構(gòu)不用考慮很多正規(guī)化的因素,設(shè)計(jì)與實(shí)現(xiàn)都比較簡(jiǎn)單。雪花型模型由于去除了冗余,有些統(tǒng)計(jì)就需要通過表的聯(lián)接才能產(chǎn)生,所以效率不一定有星型模型高。正規(guī)化也是一種比較復(fù)雜的過程,相應(yīng)的數(shù)據(jù)庫(kù)結(jié)構(gòu)設(shè)計(jì)、數(shù)據(jù)的 ETL、以及后期的維護(hù)都要復(fù)雜一些。因此在冗余可以接受的前提下,實(shí)際運(yùn)用中星型模型使用更多,也更有效率。
二、使用選擇
星形模型(Star Schema)和雪花模型(Snowflake Schema)是數(shù)據(jù)倉(cāng)庫(kù)中常用到的兩種方式,而它們之間的對(duì)比要從四個(gè)角度來進(jìn)行討論。
1.數(shù)據(jù)優(yōu)化
雪花模型使用的是規(guī)范化數(shù)據(jù),也就是說數(shù)據(jù)在數(shù)據(jù)庫(kù)內(nèi)部是組織好的,以便消除冗余,因此它能夠有效地減少數(shù)據(jù)量。通過引用完整性,其業(yè)務(wù)層級(jí)和維度都將存儲(chǔ)在數(shù)據(jù)模型之中。
▲圖1 雪花模型
相比較而言,星形模型實(shí)用的是反規(guī)范化數(shù)據(jù)。在星形模型中,維度直接指的是事實(shí)表,業(yè)務(wù)層級(jí)不會(huì)通過維度之間的參照完整性來部署。
▲圖2 星形模型
2.業(yè)務(wù)模型
主鍵是一個(gè)單獨(dú)的唯一鍵(數(shù)據(jù)屬性),為特殊數(shù)據(jù)所選擇。在上面的例子中,Advertiser_ID就將是一個(gè)主鍵。外鍵(參考屬性)僅僅是一個(gè)表中的字段,用來匹配其他維度表中的主鍵。在我們所引用的例子中,Advertiser_ID將是Account_dimension的一個(gè)外鍵。
在雪花模型中,數(shù)據(jù)模型的業(yè)務(wù)層級(jí)是由一個(gè)不同維度表主鍵-外鍵的關(guān)系來代表的。而在星形模型中,所有必要的維度表在事實(shí)表中都只擁有外鍵。
3.性能
第三個(gè)區(qū)別在于性能的不同。雪花模型在維度表、事實(shí)表之間的連接很多,因此性能方面會(huì)比較低。舉個(gè)例子,如果你想要知道Advertiser的詳細(xì)信息,雪花模型就會(huì)請(qǐng)求許多信息,比如Advertiser Name、ID以及那些廣告主和客戶表的地址需要連接起來,然后再與事實(shí)表連接。
而星形模型的連接就少的多,在這個(gè)模型中,如果你需要上述信息,你只要將Advertiser的維度表和事實(shí)表連接即可。
4.ETL
雪花模型加載數(shù)據(jù)集市,因此ETL操作在設(shè)計(jì)上更加復(fù)雜,而且由于附屬模型的限制,不能并行化。
星形模型加載維度表,不需要再維度之間添加附屬模型,因此ETL就相對(duì)簡(jiǎn)單,而且可以實(shí)現(xiàn)高度的并行化。
總結(jié)
雪花模型使得維度分析更加容易,比如“針對(duì)特定的廣告主,有哪些客戶或者公司是在線的?”星形模型用來做指標(biāo)分析更適合,比如“給定的一個(gè)客戶他們的收入是多少?”
From: http://blog.csdn.net/nisjlvhudy/article/details/7889422
|
新聞熱點(diǎn)
疑難解答
圖片精選