摘要:首先介紹了企業(yè)異構(gòu)數(shù)據(jù)集成技術(shù)產(chǎn)生的背景#65380;研究目的以及相關(guān)概念#65380;技術(shù)和方法;提出了一種基于四層架構(gòu)的企業(yè)數(shù)據(jù)集成模型框架,闡述了該數(shù)據(jù)集成模型的優(yōu)越性;介紹了以XML為基礎(chǔ)的異構(gòu)數(shù)據(jù)集成的思想和實(shí)現(xiàn)框架,詳細(xì)介紹了該框架提供的服務(wù)功能及實(shí)現(xiàn)的關(guān)鍵技術(shù)#65377;
關(guān)鍵詞:數(shù)據(jù)集成; 信息系統(tǒng); 集成構(gòu)架
中圖分類號(hào):TP3111文獻(xiàn)標(biāo)志碼:A
文章編號(hào):10013695(2007)04009403
0引言
隨著Internet的迅速發(fā)展,可共享的資源越來越多,對(duì)數(shù)據(jù)的描述千差萬別,數(shù)據(jù)環(huán)境的差異也越來越大#65377;不同行業(yè)#65380;部門由于業(yè)務(wù)與功能的不同,各自都有著基于不同平臺(tái)的信息服務(wù)和管理系統(tǒng)#65377;這樣,這些由不同核心技術(shù)構(gòu)建的信息系統(tǒng)就形成了一個(gè)個(gè)的“信息孤島”#65377;而各個(gè)“孤島”之間明顯地存在著數(shù)據(jù)交流等諸多問題#65377;由于不同數(shù)據(jù)源之間的信息和組織不同,構(gòu)成了一個(gè)巨大而復(fù)雜的異構(gòu)數(shù)據(jù)庫(kù)環(huán)境#65377;
如何將這些異構(gòu)的數(shù)據(jù)源集成起來,實(shí)現(xiàn)有效的信息查詢,就成為了一個(gè)迫切需要解決的問題#65377;只有將這些孤立的數(shù)據(jù)源集成起來,提供給用戶一個(gè)統(tǒng)一的視圖,才能從這些資源數(shù)據(jù)中獲取人們所需要的信息#65377;而為大量各種各樣的數(shù)據(jù)提供某種統(tǒng)一的表示方法無疑是解決問題的關(guān)鍵,這就要求能找到一種標(biāo)準(zhǔn)#65380;開放的數(shù)據(jù)結(jié)構(gòu)來表示數(shù)據(jù)信息#65377;XML的出現(xiàn)無疑為異構(gòu)數(shù)據(jù)源的集成帶來了新的希望#65377;XML是互聯(lián)網(wǎng)聯(lián)合組織(W3C)設(shè)計(jì)并推薦的新一代標(biāo)記語言,是SGML的一個(gè)優(yōu)化子集#65377;它以一種開放的自我描述方式定義數(shù)據(jù)結(jié)構(gòu),在描述數(shù)據(jù)內(nèi)容的同時(shí)能突出對(duì)結(jié)構(gòu)的描述,從而體現(xiàn)出數(shù)據(jù)之間的關(guān)系#65377;
1系統(tǒng)實(shí)現(xiàn)方案
隨著現(xiàn)代計(jì)算機(jī)技術(shù)的迅速發(fā)展,多數(shù)據(jù)源集成#65380;數(shù)據(jù)訪問的透明性以及實(shí)現(xiàn)數(shù)據(jù)源的即插即用等問題已變得日益重要#65377;所以異構(gòu)數(shù)據(jù)源集成的首要任務(wù)就是要為集成系統(tǒng)設(shè)計(jì)一個(gè)公共模型,以對(duì)來自不同數(shù)據(jù)源的各種數(shù)據(jù)進(jìn)行表示,從而便于進(jìn)行統(tǒng)一處理;其次則應(yīng)考慮數(shù)據(jù)的轉(zhuǎn)換問題,將來自不同數(shù)據(jù)源的各種數(shù)據(jù)轉(zhuǎn)換成集成系統(tǒng)能進(jìn)一步處理的統(tǒng)一格式;另外還必須定義公共模型上的基本運(yùn)算,完成數(shù)據(jù)查詢#65380;存取等具體功能#65377;而對(duì)于傳統(tǒng)的數(shù)據(jù)集成技術(shù),上述問題并不能得到很好的解決,有的甚至是難以實(shí)現(xiàn)的#65377;
XML是一種半結(jié)構(gòu)化的數(shù)據(jù)模型#65377;XML的諸多特性使得它可以描述不規(guī)則的數(shù)據(jù);能夠集成來自不同數(shù)據(jù)源的數(shù)據(jù);可以將多個(gè)應(yīng)用程序所生成的數(shù)據(jù)納入同一個(gè)XML文件#65377;因此把XML作為集成系統(tǒng)中集成層的數(shù)據(jù)描述工具和轉(zhuǎn)換工具是本文必然的選擇#65377;
系統(tǒng)實(shí)現(xiàn)基本框架如圖1所示#65377;在此模型中,用戶對(duì)信息的訪問#65380;操作并不是直接作用于數(shù)據(jù)源,而是通過訪問虛擬數(shù)據(jù)庫(kù)接口實(shí)現(xiàn)的#65377;此框架分為四層:
(1)數(shù)據(jù)源層#65377;該層提供系統(tǒng)數(shù)據(jù),包括各種類型數(shù)據(jù)庫(kù)#65380;文件#65380;多媒體等信息#65377;
(2)通信層#65377;完成各類數(shù)據(jù)源與XML數(shù)據(jù)模型的轉(zhuǎn)換,即圖1的專用接口模塊#65377;將數(shù)據(jù)存儲(chǔ)到集成模式空間中,并維持集成模式空間與異構(gòu)數(shù)據(jù)源之間的映射#65377;此外,集成存取處理模塊用來實(shí)現(xiàn)對(duì)異構(gòu)數(shù)據(jù)的存取#65380;查詢等操作#65377;
(3)集成層#65377;其實(shí)是一個(gè)虛擬的數(shù)據(jù)庫(kù)#65377;通信層統(tǒng)一格式的易于通信的數(shù)據(jù)借助于元數(shù)據(jù)字典,集成為統(tǒng)一視圖#65377;虛擬數(shù)據(jù)庫(kù)的建立過程是針對(duì)所有數(shù)據(jù)源數(shù)據(jù)模式的抽取過程,它將各應(yīng)用系統(tǒng)數(shù)據(jù)庫(kù)中的不同數(shù)據(jù)表示形式統(tǒng)一成一致的數(shù)據(jù)視圖#65377;上層(接口層)針對(duì)虛擬數(shù)據(jù)庫(kù)進(jìn)行,與具體應(yīng)用數(shù)據(jù)庫(kù)無關(guān)#65377;因此也使得采用目前流行#65380;成熟的軟件構(gòu)件方法開發(fā)的構(gòu)件可以集成到任意一個(gè)應(yīng)用系統(tǒng)中,具有構(gòu)件集成簡(jiǎn)單#65380;與數(shù)據(jù)庫(kù)聯(lián)系緊密等特點(diǎn)#65377;
(4)應(yīng)用層,即應(yīng)用界面層#65377;
2系統(tǒng)實(shí)現(xiàn)關(guān)鍵技術(shù)
如圖1所示,應(yīng)用層和數(shù)據(jù)源層從實(shí)現(xiàn)的角度來講相對(duì)簡(jiǎn)單,在此就不詳加介紹#65377;本文著重就模型中的通信層和集成層的實(shí)現(xiàn)進(jìn)行討論#65377;
在通信層,首先應(yīng)考慮數(shù)據(jù)的轉(zhuǎn)換問題,將來自不同數(shù)據(jù)源的各種數(shù)據(jù)轉(zhuǎn)換成集成系統(tǒng)能進(jìn)一步處理的統(tǒng)一格式;另外還必須在公共模型上定義基本運(yùn)算,使得集成系統(tǒng)可以完成數(shù)據(jù)查詢#65380;存取等具體功能#65377;
在集成層,首要任務(wù)就是要為集成系統(tǒng)設(shè)計(jì)一個(gè)公共模型,從而為用戶提供一個(gè)統(tǒng)一的用戶視圖,以便進(jìn)行統(tǒng)一的處理;另外還必須在公共模型上定義基本的運(yùn)算,使得集成系統(tǒng)可以完成數(shù)據(jù)查詢#65380;存取等具體功能#65377;
2.1通信層的統(tǒng)一數(shù)據(jù)格式的選擇
在數(shù)據(jù)集成領(lǐng)域,XML作為多種應(yīng)用程序之間的橋梁,有效地解決了異構(gòu)數(shù)據(jù)源之間數(shù)據(jù)交換的難題#65377;這是由XML的特點(diǎn)所決定的:
(1)自描述性#65377;XML語言可以讓信息提供者根據(jù)需要,自行定義標(biāo)記及屬性名,也可以包含描述法,從而使XML文件的結(jié)構(gòu)可以復(fù)雜到任意程度#65377;
(2)內(nèi)容的獨(dú)立性#65377;XML可脫離具體應(yīng)用以一種統(tǒng)一的數(shù)據(jù)模型來描述保存在異構(gòu)環(huán)境中的各種數(shù)據(jù),屏蔽數(shù)據(jù)源中應(yīng)用環(huán)境和數(shù)據(jù)結(jié)構(gòu)的異構(gòu)性#65377;其他應(yīng)用系統(tǒng)能直接對(duì)這些自描述的XML文件中的數(shù)據(jù)進(jìn)行操作#65377;因此,它能夠?qū)崿F(xiàn)異構(gòu)數(shù)據(jù)源中數(shù)據(jù)的互操作性#65377;
(3)可擴(kuò)展性#65377;XML可以在不破壞現(xiàn)有結(jié)構(gòu)和系統(tǒng)的情況下增加新的數(shù)據(jù)字段#65377;
(4)便于網(wǎng)絡(luò)傳輸#65377;XML文件只是一些簡(jiǎn)單的文本文件,因而很容易通過網(wǎng)絡(luò)進(jìn)行傳輸#65377;
(5)XML是輕量級(jí)的數(shù)據(jù)解決方案,易于學(xué)習(xí),可以用文本編輯器進(jìn)行編輯#65377;一般的瀏覽器都支持XSLT,適用于數(shù)據(jù)量小的各種環(huán)境#65377;
(6)XML是完全與平臺(tái)無關(guān)的,不需要依賴于特定的操作系統(tǒng)#65380;瀏覽器或編程語言,而數(shù)據(jù)庫(kù)不是完全與平臺(tái)無關(guān)的#65377;
(7)XML與數(shù)據(jù)庫(kù)是可以互相結(jié)合和轉(zhuǎn)換的#65377;
2.2通信層的專用接口模塊
專用接口模塊主要完成XML數(shù)據(jù)模型與數(shù)據(jù)源的雙向轉(zhuǎn)換#65377;
在這里,用XML描述集成數(shù)據(jù),用XML文檔和格式文件DTD表示集成模式與數(shù)據(jù)源之間的映射#65377;XML數(shù)據(jù)模型與數(shù)據(jù)庫(kù)的轉(zhuǎn)換主要體現(xiàn)在XML的DTD和數(shù)據(jù)庫(kù)數(shù)據(jù)模型的相互轉(zhuǎn)換#65377;從DTD轉(zhuǎn)換到數(shù)據(jù)庫(kù)模型的原理如下:①?gòu)腄TD生成一個(gè)關(guān)系模式,并在此基礎(chǔ)上建立關(guān)系數(shù)據(jù)庫(kù);②對(duì)DTD中的每一個(gè)元素,產(chǎn)生關(guān)系數(shù)據(jù)庫(kù)的一個(gè)表和一個(gè)主鍵列;③對(duì)每一個(gè)有混合內(nèi)容的元素,產(chǎn)生一個(gè)獨(dú)立的表,用來存儲(chǔ)PCDATA,并通過父表的主鍵與父表相連;④對(duì)元素類型中的每一個(gè)單一值的屬性,即對(duì)只具有PCDATA內(nèi)容的按順序出現(xiàn)的子元素,產(chǎn)生一個(gè)單獨(dú)列,該列應(yīng)該可以允許為NULL類型;⑤對(duì)有多個(gè)值的屬性和可以出現(xiàn)多次的PCDATA類子元素,需要?jiǎng)?chuàng)建一個(gè)單獨(dú)的表來存儲(chǔ)這些值,并通過父表的主鍵與父表相連;⑥對(duì)每一個(gè)包含元素或混合內(nèi)容的子元素來說,通過父表的主鍵把父元素與子元素連接起來#65377;從數(shù)據(jù)庫(kù)模型到DTD的轉(zhuǎn)換相對(duì)容易一些,分為三步:對(duì)一個(gè)表,創(chuàng)建一個(gè)元素;對(duì)表中的每一列,創(chuàng)建一個(gè)屬性或是一個(gè)只有PCDATA內(nèi)容的子元素;根據(jù)表中的每一個(gè)主鍵/外鍵關(guān)系,創(chuàng)建該表元素的子元素#65377;
盡管XML有諸多的優(yōu)異性,它與傳統(tǒng)數(shù)據(jù)庫(kù)仍存在顯著的不同,甚至可以說,XML是不能也不會(huì)取代數(shù)據(jù)庫(kù)技術(shù)的#65377;從嚴(yán)格意義上來講,XML僅僅是文檔,盡管包含數(shù)據(jù),但是如果不通過其他軟件來進(jìn)行諸如文檔解析#65380;數(shù)據(jù)合成等數(shù)據(jù)處理,它本身只不過是一個(gè)文本文件#65377;所以,相對(duì)于數(shù)據(jù)庫(kù)系統(tǒng)的意義,XML文檔與其他文本文件并沒有什么區(qū)別#65377;要發(fā)揮XML的強(qiáng)大優(yōu)勢(shì),必然要采用一種XML數(shù)據(jù)模型與數(shù)據(jù)庫(kù)轉(zhuǎn)換的機(jī)制#65377;
XML數(shù)據(jù)模型與數(shù)據(jù)之間的轉(zhuǎn)換可以分為模板驅(qū)動(dòng)和模型驅(qū)動(dòng)兩種形式#65377;
基于模板驅(qū)動(dòng)只能應(yīng)用于關(guān)系數(shù)據(jù)庫(kù)與XML文檔之間傳遞數(shù)據(jù),它需要在一個(gè)模板中嵌入帶參數(shù)的SQL命令,并用數(shù)據(jù)傳輸如中間件等實(shí)體軟件進(jìn)行處理#65377;基于模型驅(qū)動(dòng)的轉(zhuǎn)換是,當(dāng)把數(shù)據(jù)從數(shù)據(jù)庫(kù)傳送到XML文檔或把數(shù)據(jù)從XML文檔傳送到數(shù)據(jù)庫(kù)時(shí),是用一個(gè)具體模型實(shí)現(xiàn)的,而不是僅僅依賴內(nèi)嵌SQL命令#65377;關(guān)系數(shù)據(jù)庫(kù)的理論依據(jù)是關(guān)系模型;面向?qū)ο蟮睦碚撘罁?jù)是對(duì)象模型;而XML的文檔依據(jù)是XML Schemas或DTD#65377;
總體說來,專用接口模塊就是將由各數(shù)據(jù)源的數(shù)據(jù)到一個(gè)XML數(shù)據(jù)模型的雙向轉(zhuǎn)換#65377;
2.3數(shù)據(jù)集成模塊
該集成系統(tǒng)為用戶提供根據(jù)特定集成應(yīng)用而設(shè)計(jì)的一個(gè)虛擬集成視圖#65377;虛擬集成視圖是一個(gè)虛擬關(guān)系(或虛擬對(duì)象類)集合#65377;采用XML作為集成系統(tǒng)的公共模型,用一個(gè)DTD描述集成層的一個(gè)虛擬對(duì)象類,一個(gè)元素對(duì)應(yīng)虛擬對(duì)象類的一個(gè)屬性,所有虛擬對(duì)象類的DTD組成集成系統(tǒng)的集成模式#65377;根據(jù)不同用戶的不同需求,可定義不同的XSL樣式表,來屏蔽一些對(duì)象或?qū)ο蟮膶傩裕淖儗?duì)象的顯示形式,提供不同的用戶視圖#65377;
2.4集成方法
如何實(shí)現(xiàn)對(duì)各個(gè)數(shù)據(jù)源的集成存取,即如何將用戶對(duì)繼承視圖的存取轉(zhuǎn)換成對(duì)異構(gòu)數(shù)據(jù)源的操作#65377;目前來講,共有兩種方法,即GAV(GlobaL As View)和LAV(Local As View)#65377;GAV方法要求為集成視圖中的每一個(gè)虛擬關(guān)系(或虛擬對(duì)象類)R寫出一個(gè)查詢,說明如何從信息源得到R的元組(或?qū)ο?#65377;這種方法的特點(diǎn)是查詢轉(zhuǎn)換簡(jiǎn)單,但增加新數(shù)據(jù)源時(shí)比較麻煩#65377;LAV方法則相反,它要求為每一個(gè)數(shù)據(jù)源S給出一個(gè)針對(duì)集成視圖的查詢,說明集成視圖中的哪些元組(或?qū)ο?可在S中找到#65377;它的優(yōu)點(diǎn)是易于插入新數(shù)據(jù)源,但查詢轉(zhuǎn)換相對(duì)麻煩#65377;在此系統(tǒng)中采用的是GAV方法#65377;本文為集成模式中的每一個(gè)虛擬對(duì)象類創(chuàng)建一個(gè)能動(dòng)態(tài)生成XML文檔的ASP文件,說明如何從信息源得到該虛擬對(duì)象類的對(duì)象,如何將源數(shù)據(jù)轉(zhuǎn)換成集成數(shù)據(jù)#65377;當(dāng)用戶要訪問集成數(shù)據(jù)時(shí),系統(tǒng)按下列步驟進(jìn)行查詢轉(zhuǎn)換:
①根據(jù)用戶提出的查詢條件,生成一棵查詢樹;
②將諸如選擇#65380;投影操作盡量推向葉節(jié)點(diǎn)(即數(shù)據(jù)源);
③將對(duì)各數(shù)據(jù)源的操作追加到相應(yīng)的ASP文件中;
④調(diào)用ASP文件,生成來自多數(shù)據(jù)源的包含用戶所需數(shù)據(jù)的XML文檔;⑤選擇合適的XSL,應(yīng)用于所生成的XML文檔,提交給用戶#65377;
2.5特點(diǎn)分析
本文提出的四層架構(gòu)的企業(yè)級(jí)異構(gòu)數(shù)據(jù)集成的模式,具有以下一些特點(diǎn):
(1)在分布#65380;異構(gòu)環(huán)境下的異構(gòu)數(shù)據(jù)集成方案和構(gòu)架結(jié)構(gòu),基于術(shù)語標(biāo)準(zhǔn)化的一致性操作平臺(tái)#65377;
(2)靈活的資源共享方式,可以根據(jù)自身需要提出訪問請(qǐng)求#65377;結(jié)構(gòu)化數(shù)據(jù)#65380;半結(jié)構(gòu)化數(shù)據(jù)和非結(jié)構(gòu)化數(shù)據(jù)都轉(zhuǎn)換成統(tǒng)一的格式,提高網(wǎng)絡(luò)傳輸速度#65377;
(3)安全的驗(yàn)證控制措施#65377;半結(jié)構(gòu)化數(shù)據(jù)和非結(jié)構(gòu)化數(shù)據(jù)的有效檢索方案#65377;
(4)兼容不同數(shù)據(jù)庫(kù)結(jié)構(gòu)和平臺(tái),模型中的中間文檔采用標(biāo)準(zhǔn)化的語義及操作表示,通過語義和操作的轉(zhuǎn)換,兼容現(xiàn)有數(shù)據(jù)庫(kù)結(jié)構(gòu)和平臺(tái)#65377;為信息增加語義信息,提高檢索效率#65377;為特定的數(shù)據(jù)源提供專用接口,將各種類型的數(shù)據(jù)轉(zhuǎn)換成統(tǒng)一格式的數(shù)據(jù),也可以通過接口對(duì)數(shù)據(jù)源進(jìn)行更新操作#65377;
(5)實(shí)現(xiàn)模塊之間邏輯和技術(shù)的低耦合性#65377;
(6)適合Web應(yīng)用,便于用戶通過Internet訪問#65377;
(7)一定的擴(kuò)展性和可移植性#65377;在數(shù)據(jù)源擴(kuò)展時(shí),只要配置相應(yīng)的數(shù)據(jù)接口和更新元數(shù)據(jù)即可,易于擴(kuò)展#65377;統(tǒng)一格式的數(shù)據(jù)可以通過企業(yè)域進(jìn)行跨平臺(tái)交換,具有一定的可移植性#65377;
3結(jié)束語
一直以來,由于異構(gòu)數(shù)據(jù)源之間的顯著差異,使得異構(gòu)數(shù)據(jù)集成成為一個(gè)難以解決的問題#65377;而XML的出現(xiàn),為異構(gòu)數(shù)據(jù)集成技術(shù)帶來了希望,也使共享不同數(shù)據(jù)庫(kù)中的數(shù)據(jù)成為可能,為解決異構(gòu)數(shù)據(jù)集成提供了機(jī)會(huì)#65377;相信在以后,隨著XML體系結(jié)構(gòu)的完善,可以更好地實(shí)現(xiàn)異構(gòu)數(shù)據(jù)的集成#65380;共享及利用,并大大提高信息系統(tǒng)的整體性能#65377;
本文中所涉及到的圖表、注解、公式等內(nèi)容請(qǐng)以PDF格式閱讀原文。