[摘要] 以連鎖超市數(shù)據(jù)倉(cāng)庫(kù)數(shù)據(jù)模型為典型案例,在分析星型模型的優(yōu)勢(shì)和不足的基礎(chǔ)上,提出了把星型模型擴(kuò)展為雪花模型的基本方法。并通過(guò)聚集事實(shí)表等途徑,使星型模型和雪花模型的特色和優(yōu)勢(shì)得到有效的應(yīng)用。為數(shù)據(jù)倉(cāng)庫(kù)的聯(lián)機(jī)分析處理和數(shù)據(jù)挖掘奠定了基礎(chǔ)。
[關(guān)鍵詞] 連鎖超市 數(shù)據(jù)倉(cāng)庫(kù) 星型模型 雪花模型設(shè)計(jì) 雪花模型應(yīng)用
信息技術(shù)的迅速發(fā)展和企業(yè)管理決策的迫切需要,使數(shù)據(jù)倉(cāng)庫(kù)技術(shù)應(yīng)運(yùn)而生。
1993年,數(shù)據(jù)倉(cāng)庫(kù)之父W.H.lnmon將數(shù)據(jù)倉(cāng)庫(kù)定義為:“一個(gè)面向主題的、集成的、隨時(shí)間變化的、非易失性的數(shù)據(jù)集合,用以支持管理層的決策”。數(shù)據(jù)倉(cāng)庫(kù)的概念,決定了數(shù)據(jù)倉(cāng)庫(kù)特有的數(shù)據(jù)組織模式和廣泛的應(yīng)用前景。
數(shù)據(jù)模型是開(kāi)發(fā)和構(gòu)建數(shù)據(jù)倉(cāng)庫(kù)(集市)的基礎(chǔ);是聯(lián)機(jī)分析處理和數(shù)據(jù)挖掘的重要條件。星型模型和雪花模型是基于關(guān)系數(shù)據(jù)庫(kù)的數(shù)據(jù)倉(cāng)庫(kù)的兩種典型的數(shù)據(jù)模型。目前,數(shù)據(jù)倉(cāng)庫(kù)星型模型已被廣泛應(yīng)用。而雪花模型的實(shí)用價(jià)值還處在進(jìn)一步認(rèn)識(shí)和開(kāi)發(fā)階段。
一、連鎖超市數(shù)據(jù)倉(cāng)庫(kù)星型數(shù)據(jù)模型
“星型模型”是數(shù)據(jù)倉(cāng)庫(kù)廣泛采用的數(shù)據(jù)模型。它能準(zhǔn)確、簡(jiǎn)潔地描述出實(shí)體之間的邏輯關(guān)系。建立數(shù)據(jù)倉(cāng)庫(kù)的數(shù)據(jù)模型,一般都是在對(duì)應(yīng)用主題分析的基礎(chǔ)上,首先建立星型模型?,F(xiàn)以超市數(shù)據(jù)倉(cāng)庫(kù)為例,認(rèn)識(shí)和理解數(shù)據(jù)倉(cāng)庫(kù)星型模型。
一個(gè)典型的星型模式包括一個(gè)大型的事實(shí)表和一組邏輯上圍繞這個(gè)事實(shí)表的維度表。
事實(shí)表是星型模型的核心,事實(shí)表由主鍵和度量數(shù)據(jù)兩部分組成。星型模型中各維度表主鍵的組合構(gòu)成事實(shí)表的主鍵。事實(shí)表中存放的大量數(shù)據(jù),是同主題密切相關(guān)的、用戶最關(guān)心的度量數(shù)據(jù)?!颁N售”是超市的主題,因此,在事實(shí)表中,要準(zhǔn)確記載各超市所有商品的銷售數(shù)量、營(yíng)業(yè)額、利潤(rùn)等度量數(shù)據(jù)。
維度是觀察事實(shí)、分析主題的角度。維度表的集合是構(gòu)建數(shù)據(jù)倉(cāng)庫(kù)數(shù)據(jù)模式的關(guān)鍵。維度表通過(guò)主鍵與事實(shí)表相連。用戶依賴維表中的維度屬性,從事實(shí)表中獲取支持決策的數(shù)據(jù)。圍繞銷售主題,連鎖超市數(shù)據(jù)倉(cāng)庫(kù)有以下典型的維度及其屬性:
客戶維:在客戶維中,建立了客戶的基本信息、是否為會(huì)員客戶、客戶居住地域等屬性。
商品維:商品不僅決定了超市的經(jīng)營(yíng)范圍,商品的結(jié)構(gòu)、品牌、質(zhì)量直接影響營(yíng)業(yè)額。在商品維中,設(shè)計(jì)了商品代碼、商品名稱、商品類別、品牌名稱、包裝類別以及商品的基本信息等維度屬性。
時(shí)間維:在數(shù)據(jù)倉(cāng)庫(kù)的多維數(shù)據(jù)結(jié)構(gòu)中,時(shí)間維往往是不可少的一個(gè)維度。因?yàn)槊宽?xiàng)“銷售事實(shí)”都是在一定的時(shí)間或者時(shí)間段內(nèi)發(fā)生。針對(duì)需求,時(shí)間維采用日、月、季、年四個(gè)屬性。
連鎖店維:各連鎖店承擔(dān)了全部商品的銷售業(yè)務(wù)。連鎖店的服務(wù)質(zhì)量直接影響企業(yè)的競(jìng)爭(zhēng)力、銷售業(yè)績(jī)和企業(yè)利潤(rùn)。連鎖店維中建立了連鎖店名、所在地域等維度屬性。
根據(jù)分析主題和需求,建立連鎖超市數(shù)據(jù)倉(cāng)庫(kù)(集市)星型數(shù)據(jù)模型,如圖1所示。
圖1 連鎖超市數(shù)據(jù)集市星型模型
二、星型模型的優(yōu)勢(shì)和不足
1.星型模型的優(yōu)勢(shì)
星型模型在數(shù)據(jù)倉(cāng)庫(kù)中具有很大優(yōu)勢(shì):
(1)星型模型圍繞一個(gè)確定的主題,體現(xiàn)了數(shù)據(jù)倉(cāng)庫(kù)對(duì)數(shù)據(jù)結(jié)構(gòu)和組織的要求;
(2)星型模型簡(jiǎn)單、清晰的結(jié)構(gòu)準(zhǔn)確反映了用戶的需求,使用戶易于理解;
(3)星型模型維度表包含了用戶經(jīng)常查詢和分析的屬性,優(yōu)化了對(duì)數(shù)據(jù)庫(kù)的瀏覽,在維度表和事實(shí)表之間沒(méi)有任何“迷宮”。使查詢的過(guò)程變得簡(jiǎn)單而直接。
(4)星型模型為OLAP提供了良好的工作條件,使OLAP能通過(guò)星型連接和星型索引,顯著提高查詢性能。
2.星型模型的不足
星型模型也有明顯的不足:
(1)星型模型是非規(guī)范化的,星型模型以增加存儲(chǔ)空間為代價(jià)來(lái)提高多維數(shù)據(jù)的查詢速度,造成很大的數(shù)據(jù)冗余;非規(guī)范化的、含有大量冗余的維度表,會(huì)使數(shù)據(jù)切片變得更加復(fù)雜。
(2)由于星型模型中各維度表主鍵的組合構(gòu)成事實(shí)表的主鍵。當(dāng)星型模型的維不能滿足要求時(shí),維的變化是非常復(fù)雜、耗時(shí)的。
(3)維度屬性的復(fù)雜形成的大維度問(wèn)題。大維度中的長(zhǎng)文本字段占用存儲(chǔ)空間,維度數(shù)據(jù)不易更新和維護(hù);向大維度表填充數(shù)據(jù)難度增大;對(duì)事實(shí)表的查詢涉及大維度表時(shí),會(huì)影響效率。
(4)當(dāng)維的屬性復(fù)雜時(shí),處理維的層次關(guān)系比較困難。
(5)對(duì)“多對(duì)多”關(guān)系,星型模型無(wú)能為力。
三、連鎖超市數(shù)據(jù)集市的“雪花模型”設(shè)計(jì)
“雪花模型”是針對(duì)星型模型存在的不足和數(shù)據(jù)分析處理的需要,在星型模型的基礎(chǔ)上拓展而來(lái)的。將“星型模型”中的維表規(guī)范化,對(duì)維度表、特別是大維度表的屬性按層次和類別進(jìn)行分解,形成一些局部的層次區(qū)域,就得到一個(gè)以事實(shí)表為中心的“雪花模型”。
在連鎖超市數(shù)據(jù)倉(cāng)庫(kù)的星型模型中,客戶維和商品維都是典型的大維度。這是因?yàn)椋捍蟮倪B鎖超市,客戶維和商品維很深,累計(jì)可能有數(shù)以萬(wàn)計(jì)的客戶和上萬(wàn)種商品;客戶維和商品維很寬,根據(jù)需要,這兩種維可以有多個(gè)維度屬性。
將大維度表“雪花化”方法是:
1.按維屬性的層次分解
維度的層次性體現(xiàn)在用戶觀察數(shù)據(jù)的粒度不同。例如:在數(shù)據(jù)集市中,商品、商品品牌、分類是商品的三個(gè)不同層次。客戶維中,客戶、會(huì)員客戶、分地域的客戶是客戶的三個(gè)不同層次。
2.按維的屬性類別分解
維屬性之間有一些是互不關(guān)聯(lián)的屬性,例如:商品的品牌和包裝,是否為會(huì)員客戶,他們之間無(wú)層次關(guān)系。把維的屬性類別分解形成維的局部星型關(guān)系。
3.將非分析數(shù)據(jù)進(jìn)行分離
維度表中的有些屬性與事實(shí)表中的度量數(shù)據(jù)無(wú)直接關(guān)系。例如:商品的詳細(xì)信息,大小、規(guī)格;會(huì)員客戶的基本信息等。將這些信息分離成一片“雪花”,使維表和事實(shí)表盡量“精練”。提高了多維查詢的速度。當(dāng)我們需要這些信息時(shí),才到這片雪花中查找。
總之,雪花模型要在星型模型的基礎(chǔ)上,描述出屬性間清晰的層次和分類關(guān)系。把圖1所示的連鎖超市數(shù)據(jù)倉(cāng)庫(kù)(集市)星型模型“雪花”化,就得到該集市的雪花模型。如圖2所示。
圖2 連鎖超市數(shù)據(jù)集市雪花模型
四、數(shù)據(jù)倉(cāng)庫(kù)的“雪花模型”的應(yīng)用
從形式上看,雪花模型比星型模型結(jié)構(gòu)復(fù)雜,但設(shè)計(jì)好的雪花模型卻有星型模型難以替代的應(yīng)用價(jià)值。
雪花模型是星型模型的衍生。在研究雪花模型的應(yīng)用時(shí),要用雪花模型的優(yōu)勢(shì)彌補(bǔ)星型模型的不足;還要充分繼承星型模型的優(yōu)勢(shì),揚(yáng)長(zhǎng)避短,使數(shù)據(jù)模型能在構(gòu)建數(shù)據(jù)倉(cāng)庫(kù)和開(kāi)發(fā)應(yīng)用中更好地發(fā)揮作用。
1.雪花模型在處理大維度方面的應(yīng)用
數(shù)據(jù)倉(cāng)庫(kù)的大維度問(wèn)題雖然可以通過(guò)事實(shí)表來(lái)體現(xiàn),但這種方法導(dǎo)致事實(shí)表極為龐大且難于管理,當(dāng)層次定義發(fā)生改變時(shí),事實(shí)表需要重新設(shè)計(jì)和構(gòu)建。
雪花模型解決了星型模型中復(fù)雜的大維度問(wèn)題。通過(guò)對(duì)維度表的屬性按層次和類別進(jìn)行分解;將非分析數(shù)據(jù)進(jìn)行分離,使大維度表得到有效的規(guī)范化處理,較好地消除了數(shù)據(jù)的冗余,從而使事實(shí)表的字段數(shù)和總長(zhǎng)度減小,以節(jié)省存儲(chǔ)空間。
2.雪花模型在建立聚集事實(shí)表方面的應(yīng)用
事實(shí)表中數(shù)據(jù)的細(xì)節(jié)程度或綜合程度的級(jí)別稱為數(shù)據(jù)“粒度”。粒度是數(shù)據(jù)倉(cāng)庫(kù)事實(shí)表的重要的特征。不同的需求,對(duì)粒度要求不同。
數(shù)據(jù)集市需要保留最低層次的細(xì)節(jié)數(shù)據(jù)。以滿足數(shù)據(jù)抽取、信息查詢和數(shù)據(jù)挖掘的需要;另一方面,為提供決策支持,需要多方面的高粒度的匯總數(shù)據(jù)。因此,需要把使用頻率高的匯總數(shù)據(jù)存放在聚集事實(shí)表中。雪花模型維度表清晰的層次關(guān)系為建立聚集事實(shí)表創(chuàng)造了條件。
根據(jù)聚集的概念,在有m維的雪花模型或星型模型中,可以建立多個(gè)n度聚集事實(shí)表(n<=m)。所謂n度聚集,就是把m維事實(shí)表中的n個(gè)維度提升到一定的層次,其余的(m-n)維保持最低層次。這樣生成的事實(shí)表同相應(yīng)衍生出的維表形成一個(gè)簡(jiǎn)明的星型模型。例如:
為了分析會(huì)員客戶對(duì)各種品牌商品的購(gòu)買情況,在雪花模型中對(duì)客戶維和商品維進(jìn)行二路聚集即可。如圖3所示。
為了分析會(huì)員客戶一年中對(duì)各類商品的需求情況,在雪花模型中對(duì)客戶維、商品維和時(shí)間維進(jìn)行的三路聚集即可。如圖4所示。
圖3 連鎖超市數(shù)據(jù)集市雪花模型二路聚集
圖4 連鎖超市數(shù)據(jù)集市雪花模型三路聚焦
通過(guò)各種聚集,不僅滿足了聯(lián)機(jī)分析處理和數(shù)據(jù)挖掘?qū)Ω鞣N數(shù)據(jù)粒度的要求,更可喜的是,由于聚集產(chǎn)生的是結(jié)構(gòu)簡(jiǎn)單的星型模型,使星型模型的各種優(yōu)勢(shì)在這里得到發(fā)揮。
3.雪花模型在聯(lián)機(jī)分析處理(OLAP)中的應(yīng)用
聯(lián)機(jī)分析處理(OLAP)是基于數(shù)據(jù)倉(cāng)庫(kù)的一種多維數(shù)據(jù)分析技術(shù),是數(shù)據(jù)倉(cāng)庫(kù)的重要應(yīng)用。OLAP從數(shù)據(jù)倉(cāng)庫(kù)中的某個(gè)特定主題的集成數(shù)據(jù)出發(fā),使用多維分析方法,對(duì)客戶端的請(qǐng)求,對(duì)數(shù)據(jù)進(jìn)行切片、切塊、聚合、鉆取、旋轉(zhuǎn)等操作,并通過(guò)直觀的方式從多個(gè)角度、多個(gè)側(cè)面、多個(gè)層次及多種數(shù)據(jù)綜合程度對(duì)多維數(shù)據(jù)進(jìn)行分析、比較,并把結(jié)果用表格或圖形方式顯示給用戶,使用戶了解數(shù)據(jù)背后蘊(yùn)含的規(guī)律,以達(dá)到獲取相關(guān)決策信息的目的。
雪花模型及以雪花模型為依托生成的各層次的聚集事實(shí)表,為OLAP提供了良好的工作條件。例如,在對(duì)數(shù)據(jù)進(jìn)行上鉆或下鉆時(shí),只需要向OLAP工具提供相應(yīng)的不同粒度的聚集事實(shí)表即可。
為了改善數(shù)據(jù)匯總查詢的性能,可以建立一個(gè)匯總表,將常用的全部聚集事實(shí)表的表名、粒度、相應(yīng)的維度屬性存放在匯總表中,并通過(guò)數(shù)據(jù)倉(cāng)庫(kù)元數(shù)據(jù)進(jìn)行管理。這樣,OLAP就能根據(jù)匯總表的指示,選用不同粒度的聚集事實(shí)表進(jìn)行切片、切塊、聚合、鉆取、旋轉(zhuǎn)等操作,提高了分析速度,彌補(bǔ)了雪花模型在查詢速度方面的不足。
4.雪花模型在多對(duì)多關(guān)系處理中的應(yīng)用
在實(shí)際的問(wèn)題中,數(shù)據(jù)倉(cāng)庫(kù)的數(shù)據(jù)會(huì)出現(xiàn)“多對(duì)多”的關(guān)系。多對(duì)多關(guān)聯(lián)不可能在星型模式中實(shí)現(xiàn)。但可通過(guò)雪花模型將“多對(duì)多”的關(guān)系轉(zhuǎn)化成多個(gè)“一對(duì)多”關(guān)系來(lái)處理。
總之,雪花模型提高了數(shù)據(jù)倉(cāng)庫(kù)應(yīng)用的靈活性。使系統(tǒng)進(jìn)一步專業(yè)化和實(shí)用化。
五、結(jié)束語(yǔ)
星型模型和雪花模型是基于關(guān)系數(shù)據(jù)庫(kù)的數(shù)據(jù)倉(cāng)庫(kù)的兩種典型的數(shù)據(jù)模型。星型模型是雪花模型的原型,雪花模型是星型模型的衍生。各有所長(zhǎng),各有特色。在實(shí)際應(yīng)用中,要對(duì)具體問(wèn)題作出具體分析,還要針對(duì)OLAP和挖掘工具的需要,在兩種模式之間作出權(quán)衡和選擇。使數(shù)據(jù)模型在數(shù)據(jù)倉(cāng)庫(kù)的構(gòu)建和應(yīng)用中發(fā)揮出更好的作用。
參考文獻(xiàn):
[1]W.H.Inmon著王志海等譯:數(shù)據(jù)倉(cāng)庫(kù)[M].機(jī)械工業(yè)出版社,2003
[2]Paulraj Ponniah著段云峰等譯:數(shù)據(jù)倉(cāng)庫(kù)基礎(chǔ)[M].電子工業(yè)出版社,2004
[3]Jiawei Han Micheline Kamber著,范明,等譯.數(shù)據(jù)挖掘概念與技術(shù)[M].機(jī)械工業(yè)出版社,2004
[4]平靜林平瑞:元數(shù)據(jù)管理及其在數(shù)據(jù)倉(cāng)庫(kù)中的應(yīng)用[J].平原大學(xué)學(xué)報(bào),2006(8):130~132
[5]彭曉東:基于數(shù)據(jù)倉(cāng)庫(kù)的綜合決策支持系統(tǒng)的設(shè)計(jì)研究[j].電腦開(kāi)發(fā)與應(yīng)用,2003(6):11~20