一蝇闭、什么是CWM蕴侣?
在我們學(xué)習(xí)一個(gè)新東西時(shí)泊交,首先得弄懂明白它是用來(lái)干什么的雁歌?然后通過(guò)實(shí)例與理論交錯(cuò)學(xué)習(xí)宏浩,CWM——Common Warehouse Metamodel, 很明顯翻譯過(guò)來(lái)時(shí)公共倉(cāng)庫(kù)元模型,CWM的提出主要基于以下背景:
- 從數(shù)據(jù)倉(cāng)庫(kù)開(kāi)發(fā)者的角度:?jiǎn)我还ぞ吆苌倌芡耆珴M足用戶不斷變化的需求靠瞎,但同時(shí)又很難對(duì)各種產(chǎn)品進(jìn)行集成比庄;
- 從數(shù)據(jù)倉(cāng)庫(kù)用戶的角度:面對(duì)的信息量太大求妹,無(wú)法輕易找到自己真正需要的,而且把這些信息完整正確地表示出來(lái)也是個(gè)挑戰(zhàn)印蔗;
- 從數(shù)據(jù)倉(cāng)庫(kù)供應(yīng)商的角度:目前信息的共享還沒(méi)有標(biāo)準(zhǔn)格式扒最,元數(shù)據(jù)集成的代價(jià)太大;
現(xiàn)在有很多數(shù)據(jù)倉(cāng)庫(kù)產(chǎn)品华嘹,它們對(duì)元數(shù)據(jù)都有自己的定義和格式,百家爭(zhēng)鳴法竞,都不愿與其他廠商共享耙厚,然后最終的客戶往往又不會(huì)選擇一家公司為其建設(shè)數(shù)據(jù)倉(cāng)庫(kù),其主要原因我想還是怕在一棵樹(shù)上吊死岔霸, 因此創(chuàng)建薛躬、管理和共享元數(shù)據(jù)很耗時(shí)而且容易出錯(cuò)。要解決上面這些問(wèn)題呆细,就必須得用標(biāo)準(zhǔn)的語(yǔ)言描述數(shù)據(jù)倉(cāng)庫(kù)元數(shù)據(jù)的結(jié)構(gòu)和語(yǔ)義型宝,并提供標(biāo)準(zhǔn)的元數(shù)據(jù)交換機(jī)制。CWM就是滿足這些條件的一個(gè)規(guī)范絮爷。
OMG(對(duì)象管理組織)在2000年發(fā)布了CWM規(guī)范趴酣,旨在推動(dòng)數(shù)據(jù)倉(cāng)庫(kù)、智能商務(wù)和知識(shí)管理方面元數(shù)據(jù)的共享和交換坑夯。和OMG合作提出CWM規(guī)范的公司有:IBM岖寞,Unisys,NCR柜蜈,Hyperion Solutions仗谆,Oracle,UBS AG淑履,Genesis Development隶垮,Dimension EDI。還有一些公司明確表示支持CWM秘噪,包括:Deere & Company狸吞,Sun,HP缆娃,Data Access Technologies捷绒,InLine Software,Aonix贯要,Hitachi, Ltd暖侨。
說(shuō)白了,CWM其實(shí)就是一個(gè)元數(shù)據(jù)交換的標(biāo)準(zhǔn)崇渗,為各種數(shù)據(jù)倉(cāng)庫(kù)產(chǎn)品提出的一個(gè)標(biāo)準(zhǔn)字逗。
二京郑、CWM組成元素?
CWM主要基于以下三個(gè)工業(yè)標(biāo)準(zhǔn):
- UML(Unified Modeling Language):統(tǒng)一建模語(yǔ)言葫掉,是OMG的一個(gè)建模標(biāo)準(zhǔn)些举;
- MOF(Meta Object Facility):元對(duì)象工具,是OMG關(guān)于元模型和元數(shù)據(jù)庫(kù)的一個(gè)標(biāo)準(zhǔn)俭厚;
- XMI(XML Metadata Interchange)户魏,XML元數(shù)據(jù)交換,是OMG關(guān)于元數(shù)據(jù)交換的標(biāo)準(zhǔn)挪挤;
咋一看叼丑,是不是很熟悉,尤其是UML 扛门、 XML 大家應(yīng)該很明白這是干什么的吧鸠信,這三個(gè)標(biāo)準(zhǔn)是OMG元數(shù)據(jù)庫(kù)體系結(jié)構(gòu)的核心,UML定義了表示模型和元模型的語(yǔ)法和語(yǔ)義论寨。MOF為構(gòu)建模型和元模型提供了可擴(kuò)展的框架星立,并提供了存取元數(shù)據(jù)的程序接口。而利用XMI則可以將元數(shù)據(jù)轉(zhuǎn)換為標(biāo)準(zhǔn)的XML數(shù)據(jù)流或文件的格式葬凳,以便進(jìn)行交換绰垂,這大大增強(qiáng)了CWM的通用性。
三沮明、CWM元素之間的關(guān)系辕坝?
從小老師就教我們團(tuán)結(jié)就是力量,如果單獨(dú)的里面的某個(gè)元素出來(lái)荐健,干的事情肯定寥寥無(wú)幾酱畅,而且還不盡完美,所以明白之間的關(guān)系很重要江场,為了說(shuō)明CWM和這三個(gè)標(biāo)準(zhǔn)之間的關(guān)系纺酸,首先介紹一下元數(shù)據(jù)的層次。傳統(tǒng)的元數(shù)據(jù)有四個(gè)層次址否,除了最底層外餐蔬,每一層都對(duì)它的下一層進(jìn)行描述。最底層是用戶對(duì)象層(M0)佑附,包括用戶要描述的信息樊诺,這些信息統(tǒng)稱為數(shù)據(jù)。向上一層是模型層(M1)音同,由描述信息的元數(shù)據(jù)組成词爬,在這一層,元數(shù)據(jù)一般都組合成模型的形式权均。再向上一層是元模型層(M2)顿膨,由定義M1層元數(shù)據(jù)格式和語(yǔ)義的描述信息組成锅锨,也就是元元數(shù)據(jù),一般組合成元模型的形式恋沃。最高層是元元模型層(M3)必搞,它定義了元模型的結(jié)構(gòu)和語(yǔ)義。下面舉個(gè)例子對(duì)這種四層結(jié)構(gòu)進(jìn)行說(shuō)明囊咏。
四層的內(nèi)容解釋如下:
- 數(shù)據(jù)層是學(xué)生記錄(Record)的實(shí)例恕洲,即具體的某個(gè)學(xué)生;
- 模型層描述學(xué)生這個(gè)記錄類(lèi)型的內(nèi)容匆笤,它有一個(gè)名字(“Student”)和兩個(gè)字段(Field)研侣,每個(gè)字段都有一個(gè)名字和類(lèi)型,比如第一個(gè)字段的名字是“name“炮捧,字段類(lèi)型是String;
- 元模型層對(duì)Record這種類(lèi)型進(jìn)行定義惦银,在這一層咆课, Record是元類(lèi)metaClass的一個(gè)實(shí)例,一個(gè)Record擁有兩個(gè)元屬性metaAttribute扯俱,第一個(gè)name定義它的名字书蚪,是String類(lèi)型,第二個(gè)fields定義它包含的字段集迅栅,字段集中的成員是Field類(lèi)型殊校。類(lèi)似的,元類(lèi)field應(yīng)該也包含兩個(gè)元屬性:名字name和類(lèi)型type读存;
- 元元模型層的結(jié)構(gòu)是基本固定的为流,它將所有概念抽象為以下這些組件:元類(lèi)meta-Class、元屬性meta-Attribute和元關(guān)聯(lián)meta-Association让簿,并定義了元類(lèi)之間的關(guān)系敬察,主要包括:包含(Contains),繼承(Generalizes)尔当,類(lèi)型引用(IsOfType)和依賴(DependsOn)莲祸;
理論上,還可以再向上抽象椭迎,但由于元元模型層是自描述的锐帜,所以四層就足夠了。至于為什么要抽象出上面兩層畜号,則是為了支持各種不同的模型和元模型缴阎。
綜上所述,可以用下面這張表來(lái)描述OMG的上述規(guī)范和元數(shù)據(jù)四層結(jié)構(gòu)的對(duì)應(yīng)關(guān)系:
四弄兜、 CWM的組成結(jié)構(gòu)
CWM完整地描述了數(shù)據(jù)倉(cāng)庫(kù)元數(shù)據(jù)交換的語(yǔ)法和語(yǔ)義以及用于異質(zhì)平臺(tái)之間的元數(shù)據(jù)交換機(jī)制药蜻,它由三個(gè)部分組成:
1瓷式、CWM元模型
CWM元模型描述了數(shù)據(jù)倉(cāng)庫(kù)的組成元素,用戶可以按照這些元模型開(kāi)發(fā)相應(yīng)的組件语泽,比如ETL贸典、OLAP和數(shù)據(jù)挖掘等。為了降低復(fù)雜度并達(dá)到重用踱卵,CWM元模型采用分層的方式組織它所包含的包廊驼,大家可以看看CWM元模型的包結(jié)構(gòu)圖:
如圖中所示,CWM元模型主要包括四層:基礎(chǔ)包Foundation惋砂,資源包Resource妒挎,分析包Analysis和管理包Management。
基礎(chǔ)包主要定義了為CWM其它包所共享的一些基本概念和結(jié)構(gòu)西饵,它包含的子包有:
Business Information:定義了面向業(yè)務(wù)的通用信息酝掩,比如負(fù)責(zé)人信息等;
Data Types:定義了其它包用以創(chuàng)建自己所需的數(shù)據(jù)類(lèi)型的元模型組件眷柔;
Expressions:定義了CWM其它包定義表達(dá)式樹(shù)所需的元模型組件期虾;
Keys and Indexes:定義了描述關(guān)鍵字和索引的共享元模型;
Software Deployment:描述一個(gè)軟件在數(shù)據(jù)倉(cāng)庫(kù)中如何被使用的元模型驯嘱;
Type Mapping:支持不同系統(tǒng)之間數(shù)據(jù)類(lèi)型的映射的元模型镶苞;
資源包主要定義了一些描述常用的數(shù)據(jù)源/目標(biāo)的元模型,它包含的子包有:
Relational:描述通過(guò)關(guān)系型接口訪問(wèn)的數(shù)據(jù)庫(kù)的數(shù)據(jù)模型和元模型鞠评,比如RDBMS茂蚓,ODBC,JDBC等剃幌;
Record:描述記錄的基本概念和結(jié)構(gòu)的元模型聋涨,這里記錄的概念很廣泛,它可以描述任何結(jié)構(gòu)化的信息锥忿,比如數(shù)據(jù)庫(kù)的一條記錄牛郑、文檔等;
Multidimensional:描述多維型數(shù)據(jù)庫(kù)的元模型敬鬓;
XML:描述用XML表示的數(shù)據(jù)源和數(shù)據(jù)目標(biāo)淹朋;
分析包主要定義了一些描述數(shù)據(jù)倉(cāng)庫(kù)工具的元模型,它包含的子包有:
Transformation:定義數(shù)據(jù)倉(cāng)庫(kù)中抽取轉(zhuǎn)換規(guī)則的元模型钉答,它包含對(duì)各種類(lèi)型數(shù)據(jù)源之間的轉(zhuǎn)換規(guī)則的描述础芍;
OLAP:對(duì)OLAP工具和應(yīng)用進(jìn)行描述,并定義了它到實(shí)際系統(tǒng)的映射数尿;
Data Mining:對(duì)數(shù)據(jù)挖掘工具和應(yīng)用進(jìn)行描述仑性;
Information Visualization:定義了問(wèn)題領(lǐng)域中有關(guān)信息發(fā)布或者信息可視化的元模型;
Business Nomenclature:對(duì)業(yè)務(wù)數(shù)據(jù)進(jìn)行描述右蹦,比如業(yè)務(wù)術(shù)語(yǔ)及其適用范圍等诊杆;
管理包主要定義了一些描述數(shù)據(jù)倉(cāng)庫(kù)運(yùn)行和調(diào)度信息的元模型歼捐,它包含的子包有:
Warehouse Process:描述數(shù)據(jù)倉(cāng)庫(kù)中抽取轉(zhuǎn)換規(guī)則的執(zhí)行過(guò)程,也就是各個(gè)轉(zhuǎn)換規(guī)則的觸發(fā)條件晨汹;
Warehouse Operation:描述數(shù)據(jù)倉(cāng)庫(kù)日常運(yùn)行情況的元模型豹储;
2、CWM DTD 和CWM XML CWM DTD和XML是對(duì)應(yīng)于CWM中所有包的DTD和XML淘这,它們都遵循XMI規(guī)范剥扣。定義CWM DTD和XML的主要目的是為了基于XML進(jìn)行元數(shù)據(jù)交換,因?yàn)閄ML在各個(gè)領(lǐng)域的應(yīng)用越來(lái)越廣泛铝穷,CWM提供元模型到XML的轉(zhuǎn)換钠怯,無(wú)疑大大增加了自己的通用性,各種分析工具和元數(shù)據(jù)庫(kù)可以利用這些模板為自己的元模型生成DTD和XML文檔曙聂,就可以和其它的工具之間進(jìn)行元數(shù)據(jù)交換晦炊。
3、CWM IDL
CWM IDL為上面所有的包定義了符合MOF1.3的IDL接口宁脊,這樣就可以利用CORBA進(jìn)行元數(shù)據(jù)交換刽锤。用戶可以創(chuàng)建一些具有分析功能的軟件包,比如數(shù)據(jù)挖掘組件等朦佩。提供CWM中規(guī)定的IDL接口,就可以被其它支持CWM的工具和數(shù)據(jù)倉(cāng)庫(kù)調(diào)用庐氮,這大大增強(qiáng)了CWM的靈活性和適用性语稠。
五、CWM的特點(diǎn)
通過(guò)對(duì)CWM組成結(jié)構(gòu)的介紹弄砍,可以看出CWM具有以下特點(diǎn):
? 對(duì)所有的數(shù)據(jù)倉(cāng)庫(kù)功能元數(shù)據(jù)定義了詳細(xì)的元模型和交換方式仙畦,包括技術(shù)元數(shù)據(jù)(比如Software Deployment,Transformation音婶,Warehouse Process等)和業(yè)務(wù)元數(shù)據(jù)(比如OLAP慨畸,Business Information等);
? 定義了一個(gè)通用且強(qiáng)大的Transformation包衣式,可以表示任何數(shù)據(jù)源和數(shù)據(jù)目標(biāo)之間的轉(zhuǎn)換規(guī)則寸士。此外,還為多種常用的數(shù)據(jù)源/目標(biāo)(比如Relational碴卧,Record弱卡,Multidimensional,XML等)和工具相關(guān)的數(shù)據(jù)源(比如IMS住册,DMSII婶博,COBOL Data,Essbase和Express等)定義了元模型和交換方式荧飞;
? 對(duì)所有的數(shù)據(jù)倉(cāng)庫(kù)運(yùn)行元素定義了元模型和交換方式凡人,包括調(diào)度名党、狀態(tài)報(bào)告和歷史記錄等;
? 對(duì)所有的分析型數(shù)據(jù)以及主要的分析型數(shù)據(jù)模型定義了元模型和交換方式挠轴,比如多維型传睹;
? 對(duì)操作型數(shù)據(jù)以及主要的操作型數(shù)據(jù)模型定義了元模型,比如關(guān)系型和面向?qū)ο笮停?/p>
六忠荞、CWM的設(shè)計(jì)目標(biāo)
CWM主要的設(shè)計(jì)目標(biāo)和原則有以下幾個(gè)方面:
? 對(duì)UML中概念的重用:UML 1.3 是整個(gè)CWM的設(shè)計(jì)基礎(chǔ)蒋歌,CWM在任何可能的地方對(duì)UML中的概念進(jìn)行重用,所有的CWM對(duì)象類(lèi)型都直接或間接地繼承于UML委煤,因此也繼承了它們的屬性和方法堂油。這樣可以節(jié)省很多重復(fù)工作,并且使CWM更容易理解碧绞,所有熟悉UML的用戶都可以有一個(gè)比較高的起點(diǎn)府框;
? 模塊化:CWM元模型被分成許多包,以便它們分別實(shí)現(xiàn)并減少?gòu)?fù)雜度讥邻。
?通用化:CWM元模型獨(dú)立于任何具體的數(shù)據(jù)倉(cāng)庫(kù)工具迫靖,但同時(shí),它盡量多地包含了基于特定工具實(shí)現(xiàn)的有代表性且通用的數(shù)據(jù)倉(cāng)庫(kù)特點(diǎn)兴使。也就是說(shuō)系宜,只有那些多種工具共享的信息才會(huì)被CWM元模型包含進(jìn)來(lái);
CWM主要面向以下幾類(lèi)用戶:
? 數(shù)據(jù)倉(cāng)庫(kù)平臺(tái)和工具提供商:CWM為他們提供了一個(gè)組件可插卸的通用系統(tǒng)框架盹牧。因?yàn)檫@是一種全球通用的元數(shù)據(jù)交換協(xié)議,所以他們可以很方便地在各種異質(zhì)平臺(tái)上發(fā)布自己的產(chǎn)品励幼;
? 數(shù)據(jù)倉(cāng)庫(kù)服務(wù)提供者:可重用汰寓、可編輯、可擴(kuò)展的CWM元數(shù)據(jù)大大提高了他們的工作效率苹粟。因?yàn)镃WM與產(chǎn)品無(wú)關(guān)有滑,所以可以避免大量的重復(fù)設(shè)計(jì)工作;
? 數(shù)據(jù)倉(cāng)庫(kù)管理員:數(shù)據(jù)倉(cāng)庫(kù)管理員有時(shí)需要對(duì)現(xiàn)有工具進(jìn)行整合嵌削,而CWM XML無(wú)疑為他們提供了一種最方便的整合方式毛好。另外,管理員經(jīng)常需要對(duì)資源進(jìn)行增減掷贾、分區(qū)或者重新分配睛榄,CWM提供了這方面的元數(shù)據(jù)以幫助他們完成這些工作,并對(duì)改變?cè)斐傻挠绊懽鞒鲈u(píng)估想帅;
? 終端用戶:CWM為查詢和展示工具定義了元模型场靴,以便更方便快捷地為終端用戶展示他們所需的信息;
?信息技術(shù)管理者:CWM為系統(tǒng)管理和報(bào)表工具定義了元模型,使得用戶能夠更輕松地對(duì)系統(tǒng)和信息進(jìn)行管理旨剥;