王雅軒,頊 聰
WANG Ya-xuan,XU Cong
(大連外國語學(xué)院 軟件學(xué)院,大連 116044)
隨著計算機(jī)的發(fā)展,許多企業(yè)為了滿足自身的需求,設(shè)計自己的信息系統(tǒng),而這些信息是獨立設(shè)計的,并且操作系統(tǒng)和網(wǎng)絡(luò)結(jié)構(gòu)的不同造成了各種不同類型的信息資源。我們把這些不同的信息資源稱為異構(gòu)信息[1]。由于異構(gòu)信息的存在,使企業(yè)之間難以實現(xiàn)數(shù)據(jù)的共享。為了實現(xiàn)資源的有效利用以及系統(tǒng)間信息的高度共享,集成異構(gòu)數(shù)據(jù)庫就成為迫切的需要。目前數(shù)據(jù)集成典型的方法主要有模式集成方法和數(shù)據(jù)復(fù)制方法[2]。
異構(gòu)數(shù)據(jù)集成必須把各種異構(gòu)數(shù)據(jù)最終都轉(zhuǎn)化為一種統(tǒng)一的全局?jǐn)?shù)據(jù)模式,以供用戶訪問。XML是W3G設(shè)計的一種可擴(kuò)展標(biāo)記語言,利用XML人們對于不同數(shù)據(jù)源,按照一定規(guī)則轉(zhuǎn)換成統(tǒng)一的數(shù)據(jù)模式,可以對其進(jìn)行統(tǒng)一訪問[3]。目前XML與數(shù)據(jù)庫之間的映射主要有兩種方法:模板驅(qū)動和模型驅(qū)動。在基于模板驅(qū)動的映射中,并不預(yù)先定義文檔結(jié)構(gòu)和數(shù)據(jù)庫結(jié)構(gòu)之間的映射關(guān)系,而是在數(shù)據(jù)轉(zhuǎn)換軟件的處理模板中嵌入說明命令,讓數(shù)據(jù)傳輸中間件來執(zhí)行該模板。以模型驅(qū)動的映射模式的原理就是利用XML文檔中的數(shù)據(jù)模型的結(jié)構(gòu)顯性或隱性地將其映射成數(shù)據(jù)庫的結(jié)構(gòu),反之亦然。具體實現(xiàn)時,把一個XML 文檔表示為由數(shù)據(jù)對象構(gòu)成的樹,每個元素類型和對象模式中的對象相對應(yīng),然后使用傳統(tǒng)的對象-關(guān)系映射技術(shù)將這個模型映射到關(guān)系數(shù)據(jù)庫。
文中提出了一種基于XML 技術(shù)的異構(gòu)數(shù)據(jù)庫數(shù)據(jù)集成的構(gòu)架,屬于模式集成方法。通過在用戶應(yīng)用程序和各種數(shù)據(jù)源之間建立一個中間層,來對用戶層屏蔽數(shù)據(jù)源的差異。從而向用戶層提供一致的數(shù)據(jù)視圖,完成從實際數(shù)據(jù)源到用戶數(shù)據(jù)視圖的轉(zhuǎn)換,并在中間充當(dāng)數(shù)據(jù)總線[4]。
本系統(tǒng)的集成框架圖如圖1 所示,系統(tǒng)分為三層,從下至上各層的基本服務(wù)功能如下:
圖1 異構(gòu)數(shù)據(jù)庫數(shù)據(jù)集成的構(gòu)架圖
1)數(shù)據(jù)服務(wù)器層:系統(tǒng)數(shù)據(jù)的提供者,它包括各種類型的數(shù)據(jù)庫。每個數(shù)據(jù)源與企業(yè)內(nèi)部各部門的MIS系統(tǒng)相連,構(gòu)成自己的本地應(yīng)用。
2)應(yīng)用服務(wù)器層:以XML 格式的文檔作為異構(gòu)數(shù)據(jù)源的集成,并對用戶層的訪問提供支持;提供必要的數(shù)據(jù)轉(zhuǎn)換功能進(jìn)行數(shù)據(jù)與XML 格式的相互轉(zhuǎn)換,將數(shù)據(jù)存儲到XML 數(shù)據(jù)空間中,并維持XML數(shù)據(jù)空間與各異構(gòu)數(shù)據(jù)源之間的映射關(guān)系。
3)用戶層:用戶層可以是Web 瀏覽器或?qū)S玫目蛻舳耍峁蓴?shù)據(jù)的應(yīng)用服務(wù)器層進(jìn)行數(shù)據(jù)訪問。
從實現(xiàn)角度來看,由于用戶層和數(shù)據(jù)服務(wù)器層相對比較簡單,在此主要對應(yīng)用服務(wù)器層的關(guān)鍵技術(shù)進(jìn)行討論。應(yīng)用服務(wù)器層的詳細(xì)框架圖如圖2所示。
圖2 XML中間件層框架圖
3.1 公共模型的建立
這部分主要包括局部數(shù)據(jù)庫關(guān)系模式的提取及關(guān)系數(shù)據(jù)模式到XML Schema 的轉(zhuǎn)換。關(guān)系模式提取方法的目的是構(gòu)建共享數(shù)據(jù)庫的關(guān)系模式(包括表、字段、屬性、主鍵和外鍵),保證數(shù)據(jù)提取的完整性,為進(jìn)一步的模式轉(zhuǎn)化提供基礎(chǔ)。其輸入是在數(shù)據(jù)庫注冊流程結(jié)束時,中間件層所接收到的局部數(shù)據(jù)庫連接信息(數(shù)據(jù)庫名稱、數(shù)據(jù)庫用戶名、密碼以及主機(jī)地址)和數(shù)據(jù)庫類型。輸出是數(shù)據(jù)庫關(guān)系模式的列表表示集,結(jié)果可采用一個一維數(shù)組和多個二維數(shù)組分別存儲注冊異構(gòu)數(shù)據(jù)庫中的關(guān)系表表名和每個表的屬性字段名稱、字段類型、可否空、主鍵和外鍵屬性。
由于XML DTD 采用了非XML 文檔語法規(guī)則、不支持?jǐn)?shù)據(jù)類型等原因,在關(guān)系數(shù)據(jù)模式到XML 模式轉(zhuǎn)換中使用DTD 無法對關(guān)系表之間的約束進(jìn)行轉(zhuǎn)換[5,6]。而XML Schema 的語法結(jié)構(gòu)比DTD 復(fù)雜,比DTD更具有表現(xiàn)力,更適應(yīng)于各領(lǐng)域應(yīng)用的使用[7,8],所以本文使用包含約束條件的數(shù)據(jù)庫關(guān)系模式到XML Schema 轉(zhuǎn)換算法來實現(xiàn)數(shù)據(jù)庫關(guān)系模式到XML 的轉(zhuǎn)換。
算法描述如下:
1)每一個異構(gòu)數(shù)據(jù)源模式轉(zhuǎn)換為XML Schema 的轉(zhuǎn)換結(jié)果定義唯一的命名空間。
2)對每一個表R 和字段A1,…,An ,創(chuàng)建復(fù)雜類型元素和子元素Al ,…,An ,并設(shè)置各個子元素的數(shù)據(jù)類型。對于數(shù)據(jù)庫DataBase和表R1,…,Rm ,在XML Schema 中增加一個DataBase 元素,并插入一個復(fù)合類型元素,其子元素分別為R1,…,Rm ,各子元素相應(yīng)的數(shù)據(jù)類型為每個表創(chuàng)建的復(fù)雜類型。
3)表中主鍵映射的屬性或元素定義為key 屬性,外鍵映射的屬性或元素定義為keyref 屬性。根據(jù)表中的主鍵外鍵關(guān)系,創(chuàng)建子元素,若一個表中的外鍵作為另一個表中的主鍵或主鍵的一部分,則同一字段為外鍵的表映射為父元素,而另一個表映射為子元素。
3.2 查詢處理器的查詢分配
查詢處理器的查詢分配是將用戶基于總體視圖的查詢分解為對各個數(shù)據(jù)源的子查詢,并發(fā)送到相應(yīng)的數(shù)據(jù)源。查詢分配器在執(zhí)行檢索分配時,要參照公共模型的信息,將子查詢準(zhǔn)確地發(fā)送至各個目標(biāo)數(shù)據(jù)源。本系統(tǒng)采用查詢分配方式是GAV 方法,方法描述如下:
1)將接收的用戶檢索請求通過DOM解析器(Document Object Model)轉(zhuǎn)換成XML 格式文檔,得到轉(zhuǎn)換后的XML Schema 定義。
2)在XML Schema 的Query 元素復(fù)合數(shù)據(jù)類型定義中,設(shè)子元素Item 表示查詢的項目,F(xiàn)orm子元素表示查詢的目標(biāo)表名,Where 子元素描述查詢條件,其中,Item 和Form 子元素可以有任意多項。
3)在查詢的分配過程中,通過遍歷公共模型,查詢分配器找出Form 元素值所在的異構(gòu)數(shù)據(jù)源,同時找出Item 元素值中每一項對應(yīng)的數(shù)據(jù)表,然后進(jìn)行XML 子查詢文檔的構(gòu)建。
XML的出現(xiàn),為異構(gòu)數(shù)據(jù)集成技術(shù)帶來了希望,也使共享不同數(shù)據(jù)庫中的數(shù)據(jù)成為可能,為解決異構(gòu)數(shù)據(jù)集成提供了機(jī)會。相信在以后,隨著XML體系結(jié)構(gòu)的完善,可以更好地實現(xiàn)異構(gòu)數(shù)據(jù)的集成、共享及利用,并大大提高信息系統(tǒng)的整體性能。
[1]Susame Busses Ralf-detlefKutsche,U if laser and her bertweberFederated information systems: concepts[R].Terminology andArchitectures.For schung sherichte DesFzchbereichs Informatik1999.
[2]陳躍國,王京春.數(shù)據(jù)集成綜述[J].計算機(jī)科學(xué),2004,31(5):48-50.
[3]陶以政,唐定勇.基于Java 和XML技術(shù)的異構(gòu)信息系統(tǒng)數(shù)據(jù)集成框架應(yīng)用研究[J].計算機(jī)應(yīng)用研究,2004(5):38-40.
[4]BOURRET C,BORNHOVD A,BUCHMANN A.Generic Load Extract Utility for Data Transfer Between XML Documents and Relational Databases [Z].W ECW IS 2000,Milpit as,California,2000,6.
[5]楊芳,陶世群.基于XML異構(gòu)數(shù)據(jù)庫系統(tǒng)的集成設(shè)計[J].計算機(jī)工程與設(shè)計,2005,26(7):1907-1909.
[6]Chen Shyh–Kwei,LO Ming-Ling,WuKun-Lung.A practical approach to extracting DTD-conforming XML documents from heterogeneous data sources [J].Information Sciences,2006,176(7):820-844.
[7]Valentine Chelsea,Dykes Lucinda,Ed T.XML Schema數(shù)據(jù)庫編程指南[M].北京:電子工業(yè)出版社,2002.
[8]Madrias,Passi K,Bhowmicks.An XML Schema integration and query mechanism system [J].Data &Knowledge Engineering,2007,65(2):266-303.