(武漢理工大學(xué) 計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院, 武漢 430070)
摘 要:隨著信息技術(shù)的發(fā)展,Web上的數(shù)據(jù)日趨成為當(dāng)今數(shù)據(jù)的主流,但是Web上的數(shù)據(jù)多是異構(gòu)的,而越來越多的人需要訪問各種異構(gòu)數(shù)據(jù),為了滿足這種需求,必須有一種系統(tǒng)能夠支持異構(gòu)數(shù)據(jù)集成。異構(gòu)數(shù)據(jù)集成的方法有很多,給出一個(gè)基于XML的虛擬法異構(gòu)數(shù)據(jù)集成系統(tǒng)體系結(jié)構(gòu),引入虛擬法,提出用虛擬法進(jìn)行異構(gòu)數(shù)據(jù)集成;最后引入數(shù)據(jù)清洗技術(shù),能夠較好地解決異構(gòu)數(shù)據(jù)的集成。
關(guān)鍵詞:虛擬法;包裝器;查詢引擎;數(shù)據(jù)清洗
中圖分類號(hào):TP311.13 文獻(xiàn)標(biāo)志碼:A
文章編號(hào):10013695(2009)01017203
Research on virtual approach about heterogeneous data integration based on XML
YUAN Jingling,XU Lili,MIAO Lianchao
(School of Computer Science Technology, Wuhan University of Technology, Wuhan430070, China)
Abstract:With the development of information technology, Webbased data becomes the mainstream of today’s data, but data on Web are mostly heterogeneous. More and more people need to access all kinds of heterogeneous data, so there must be a kind of system which can support heterogeneous data integration. There are many kinds of methods that can carry out heterogeneous data integration, but this paper introduced a kind of architecture of the virtual approach for heterogeneous data integration based on XML in order to solve the problem of heterogeneous data integration on Web. It proposed to use the virtual approach to carry out heterogeneous data integration, and finally introduced the technology of data cleaning which could solve the integration of heterogeneous data better.
Key words:virtual approach;wrapper;search engine;data cleaning
0 引言
隨著計(jì)算機(jī)技術(shù),特別是Internet的迅速發(fā)展,可共享的資源越來越多,遍布于Internet中的Web服務(wù)器將各種異構(gòu)數(shù)據(jù)集成在一起,形成一個(gè)全球性的信息共享環(huán)境,成為人們獲取信息的主要渠道。Web上的數(shù)據(jù)是數(shù)據(jù)集成系統(tǒng)中最大的數(shù)據(jù)來源,具有全面、及時(shí)、多樣等特點(diǎn)。
異構(gòu)數(shù)據(jù)不僅是指數(shù)據(jù)庫之間的異構(gòu),而且還包括不同結(jié)構(gòu)數(shù)據(jù)之間的異構(gòu)性。隨著信息化建設(shè)的不斷推進(jìn),在選擇數(shù)據(jù)處理方式時(shí)存在著時(shí)間和空間上的差異,使得對(duì)數(shù)據(jù)的描述千差萬別,數(shù)據(jù)環(huán)境的差異也越來越大,主要表現(xiàn)在以下幾個(gè)方面:
a)系統(tǒng)異構(gòu),即數(shù)據(jù)源所依賴的業(yè)務(wù)應(yīng)用系統(tǒng)、數(shù)據(jù)庫管理系統(tǒng)乃至操作系統(tǒng)間的不同構(gòu)成了系統(tǒng)異構(gòu)。
b)模式異構(gòu),即數(shù)據(jù)源在存儲(chǔ)模式上的不同。存儲(chǔ)模式包括關(guān)系模式、對(duì)象模式、對(duì)象關(guān)系模式和文檔嵌套模式等幾種,其中關(guān)系模式為主流存儲(chǔ)模式。
c)數(shù)據(jù)異構(gòu),不同數(shù)據(jù)源具有不同的數(shù)據(jù)類型,包括結(jié)構(gòu)化數(shù)據(jù)(數(shù)據(jù)庫)、半結(jié)構(gòu)化數(shù)據(jù)(HTML、XML)、非結(jié)構(gòu)化數(shù)據(jù)(如文本、圖片)。
d)語義異構(gòu),表現(xiàn)在相同的數(shù)據(jù)形式表示不同的語義或同一語義由不同形式的數(shù)據(jù)表示[1]。
異構(gòu)數(shù)據(jù)集成是將互相關(guān)聯(lián)的異構(gòu)數(shù)據(jù)源集成到一起,使用戶能以透明的方式訪問這些數(shù)據(jù)源,并能夠低代價(jià)、高效率地使用這些異構(gòu)數(shù)據(jù)。如何對(duì)各種異構(gòu)數(shù)據(jù)源中的數(shù)據(jù)進(jìn)行有效集成,給用戶提供一個(gè)統(tǒng)一和透明的訪問界面,同時(shí)還要保持局部系統(tǒng)的自治性是異構(gòu)數(shù)據(jù)集成研究的主要問題。
1 系統(tǒng)設(shè)計(jì)方案
目前,關(guān)于數(shù)據(jù)集成方案的研究很多,各不相同,但就其基本方法來說,大體上可歸為如下兩類:
a)倉庫法(warehousing approach)。建立一個(gè)數(shù)據(jù)倉庫,將參加集成的各數(shù)據(jù)源的數(shù)據(jù)副本存儲(chǔ)到數(shù)據(jù)倉庫中;同時(shí),系統(tǒng)將提供對(duì)該數(shù)據(jù)倉庫的查詢機(jī)制,此后所有的操作都直接在數(shù)據(jù)倉庫上進(jìn)行。這種方式的優(yōu)點(diǎn)是數(shù)據(jù)倉庫是集成的、面向主題的、隨時(shí)間變化的持久的數(shù)據(jù)集合,無須訪問數(shù)據(jù)源,因此訪問效率高,既可用于數(shù)據(jù)集成,又可用于決策支持;缺點(diǎn)是數(shù)據(jù)重復(fù)存儲(chǔ),難以更新,比較適用于簡單系統(tǒng)中。使用的技術(shù)主要涉及如何有效地加載數(shù)據(jù)、增量維護(hù)數(shù)據(jù)等。
b)虛擬法(virtual approach)[2]。也稱為中間件法(wrapper/mediator)。在這種方式下,數(shù)據(jù)仍然存儲(chǔ)在各自獨(dú)立的數(shù)據(jù)源,數(shù)據(jù)之間通過wrapper按全局模式進(jìn)行轉(zhuǎn)換,用戶針對(duì)全局模式提出查詢,由查詢引擎對(duì)用戶的全局查詢進(jìn)行查詢解析、重寫和分解;然后各數(shù)據(jù)源根據(jù)查詢要求自行獨(dú)立處理,由mediator把結(jié)果提取出來集成后返回給用戶。它實(shí)際上是一種軟件組件,支持虛擬數(shù)據(jù)庫。該方式無須重復(fù)存儲(chǔ)大量數(shù)據(jù),數(shù)據(jù)更新及時(shí),比較適合于高度自治、集成數(shù)量多且更新變化快的數(shù)據(jù)集成系統(tǒng),是目前主要的研究方向。虛擬法體系結(jié)構(gòu)中使用的技術(shù)與傳統(tǒng)數(shù)據(jù)服務(wù)器中的技術(shù)有著很大的不同。前者采用的技術(shù)更多地涉及到查詢上的代數(shù)操作;后者采用的技術(shù)大部分集中在查詢計(jì)算以及與存儲(chǔ)有關(guān)的問題上(如數(shù)據(jù)的聚類、索引等)。
根據(jù)對(duì)以上兩種集成方案的分析,綜合考慮數(shù)據(jù)倉庫和虛擬法方式的優(yōu)缺點(diǎn),結(jié)合目前狀況和需求,本文采用虛擬法進(jìn)行相應(yīng)的設(shè)計(jì)開發(fā)。虛擬法架構(gòu)的系統(tǒng)安全性更好,靈活度更高,系統(tǒng)性能更穩(wěn)定,對(duì)系統(tǒng)資源的要求也更低,能夠從根本上解決其他兩種方式在實(shí)際應(yīng)用中的不足,有較高的實(shí)用價(jià)值。一方面,集成系統(tǒng)通過XML將匯集分在各個(gè)異構(gòu)數(shù)據(jù)源的信息進(jìn)行數(shù)據(jù)清洗、轉(zhuǎn)換和加載;另一方面,用戶通過Internet連接到集成系統(tǒng)中,進(jìn)行查詢操作。
集成系統(tǒng)包括三層:用戶應(yīng)用層、中介層和信息抽取層。用戶層主要是用戶提出查詢;中介層包括查詢引擎、數(shù)據(jù)清洗、中間數(shù)據(jù)庫和XML文檔以及wrapper;信息抽取層包括各異構(gòu)數(shù)據(jù)源。系統(tǒng)實(shí)現(xiàn)的基本框架如圖1所示。
2 系統(tǒng)實(shí)現(xiàn)關(guān)鍵技術(shù)
2.1 XML的特點(diǎn)
XML是一種半結(jié)構(gòu)化的數(shù)據(jù)模型。其可擴(kuò)展性、靈活性及自描述性等諸多特性,使得它可以描述不規(guī)則的數(shù)據(jù),能夠集成來自不同數(shù)據(jù)源的數(shù)據(jù),可以將多個(gè)應(yīng)用程序所生成的數(shù)據(jù)納入同一個(gè)XML文件。因此,把XML作為集成系統(tǒng)中集成層的數(shù)據(jù)描述工具和轉(zhuǎn)換工具是必然的選擇。XML具有內(nèi)容的自描述性、跨平臺(tái)性、內(nèi)容與顯示分離、可擴(kuò)展性等特點(diǎn),為數(shù)據(jù)訪問和交換提供了一種新的模式,使描述各種格式的數(shù)據(jù)成為可能。基于XML的各種技術(shù)不斷涌現(xiàn),XML將成為一種新的數(shù)據(jù)互操作的標(biāo)準(zhǔn)。
2.2 中介層模型
2.2.1 查詢引擎
查詢引擎模塊主要包含:
a)查詢解析。用戶提出的查詢請(qǐng)求是Xquery形式,對(duì)用戶提出的請(qǐng)求進(jìn)行簡單的語法分析,把不合理的查詢進(jìn)行修改或直接返回給用戶,把初步處理過的查詢進(jìn)行重寫。
b)查詢重寫。給定數(shù)據(jù)庫D和在數(shù)據(jù)庫D上定義的視圖集合V{V1,V2,…,Vn}。對(duì)數(shù)據(jù)庫D的查詢q,如果存在查詢q1,其中q至少查詢了視圖集合V中一個(gè)視圖,而且q1的查詢結(jié)果與q在數(shù)據(jù)庫中的查詢結(jié)果一致,則稱q1是q的查詢重寫。如果q1只對(duì)視圖集合V中的視圖進(jìn)行查詢,則稱上述查詢重寫q1為q的完全重寫。
c)查詢分解。對(duì)重寫后的查詢進(jìn)行分解,分解為對(duì)各個(gè)數(shù)據(jù)源的查詢請(qǐng)求。
2.2.2 Wrapper中的數(shù)據(jù)映射
包裝器主要完成三個(gè)功能:a)解析中介器提交過來的子查詢請(qǐng)求;b)根據(jù)請(qǐng)求內(nèi)容對(duì)數(shù)據(jù)進(jìn)行讀取和查詢;c)將查詢結(jié)果轉(zhuǎn)換成統(tǒng)一的數(shù)據(jù)格式,返回給中介器。Wrapper組件由兩部分組成,即wrapper生成器和wrapper實(shí)例。每個(gè)wrapper都要為某個(gè)特定的數(shù)據(jù)源制定相應(yīng)的接口,這個(gè)功能由wrapper生成器完成。各個(gè)數(shù)據(jù)源的schema通過相應(yīng)的wrapper溶入到全局schema。這個(gè)過程中,wrapper將數(shù)據(jù)源中的數(shù)據(jù)轉(zhuǎn)換為一個(gè)DOM對(duì)象[3]。
例如,有student和course兩個(gè)關(guān)系表,它們與XML DTD之間的映射如下:
Create table student
(StuNo char(7) not 1,stuName char(10),Gender char(2))
Create table course
(CNo char(5) not 1,CName char(10),CTeacher char(10))
〈!ELEMENT Student(StuName,Gender)〉
〈!ATTLIST StuNo IDREF #REQUIRED〉
〈!ELEMENT StuName(#PCDATA)〉
〈!ELEMENT Gender(#PCDATA)〉
〈!ELEMENT Course(CName,CTeacher)〉
〈!ATTLIST CNo IDREF #REQUIRED〉
〈!ELEMENT CName(#PCDATA)〉
〈!ELEMENT CTeacher(#PCDATA)〉
2.2.3 XML與中間數(shù)據(jù)庫的映射
XML與數(shù)據(jù)庫之間的映射可以分為兩種:模板驅(qū)動(dòng)和模型驅(qū)動(dòng)。
基于模板驅(qū)動(dòng)沒有預(yù)先定義文檔結(jié)構(gòu)與數(shù)據(jù)庫結(jié)構(gòu)之間的映射關(guān)系,只能應(yīng)用于關(guān)系數(shù)據(jù)庫與XML文檔之間傳遞數(shù)據(jù),使用時(shí)將帶參數(shù)的SQL命令內(nèi)嵌于模板中,并用中間件等軟件來進(jìn)行處理。采用這種方法進(jìn)行集成不需要一個(gè)明確的數(shù)據(jù)模式。
模板驅(qū)動(dòng)的映射優(yōu)點(diǎn)是可以相當(dāng)靈活;缺點(diǎn)是目前只支持將關(guān)系數(shù)據(jù)庫轉(zhuǎn)換為XML文檔。
基于模型驅(qū)動(dòng)的轉(zhuǎn)換把數(shù)據(jù)從數(shù)據(jù)庫傳送到XML文檔,或從XML文檔傳送到數(shù)據(jù)庫時(shí)不僅僅依賴于內(nèi)嵌的SQL命令,要用一個(gè)具體的模型。需要構(gòu)建一個(gè)統(tǒng)一的描述方法來描述數(shù)據(jù),通過這種描述來訪問全局信息系統(tǒng),并采用合適的訪問機(jī)制來訪問數(shù)據(jù)源或者數(shù)據(jù)視圖。
模型驅(qū)動(dòng)的優(yōu)點(diǎn)是簡單易用;缺點(diǎn)是靈活性不夠。
下面是Java編寫的用DOM API解析上面的XML文檔:
public class DomParse
{
public class DomParse()
{
DocumentBuilderFactory df=DocumentBuilderFactory.newInstance();
try
{
DocumentBuilder db=df.newDocumentBuilder();
Document doc=db.parse(new File(\"student.xml\"));
Element root=doc.getDocumentElement();
NodeList students=root.getChildNodes();
if(students!=NULL)
{for cint i=0; i { Node student=students.getChildNodes().item(i); System.out.println(student.getNodeValue()); } //end for } //end if } //end try catch(ParserConfigurationException e) { e.printstacktrace(); } catch(IOEception e) { e.printstacktrace(); } } public static void main(String args[]) { new DomParse(); } } 2.2.4 對(duì)中間數(shù)據(jù)庫的數(shù)據(jù)清洗 數(shù)據(jù)質(zhì)量是評(píng)價(jià)一個(gè)數(shù)據(jù)集成系統(tǒng)優(yōu)劣的關(guān)鍵。面對(duì)現(xiàn)階段巨大而零亂的數(shù)據(jù),人工處理非常困難,數(shù)據(jù)質(zhì)量問題因此成為制約數(shù)據(jù)應(yīng)用的瓶頸之一。數(shù)據(jù)清洗是解決數(shù)據(jù)質(zhì)量問題的一個(gè)關(guān)鍵步驟,是保證和提高數(shù)據(jù)質(zhì)量的關(guān)鍵,重要性是不言而喻的。 數(shù)據(jù)清洗(data cleaning)是一個(gè)減少錯(cuò)誤和不一致性,解決對(duì)象識(shí)別的過程。隨著計(jì)算機(jī)科學(xué)技術(shù)的發(fā)展與普及,以及人們對(duì)信息的需求越來越廣泛,數(shù)據(jù)的共享已經(jīng)不局限于一個(gè)部門內(nèi)數(shù)據(jù)庫的相互訪問,還涉及到部門間的數(shù)據(jù)共享。對(duì)于實(shí)際運(yùn)行的系統(tǒng)來說,很多因素都可能產(chǎn)生數(shù)據(jù)庫系統(tǒng)間的差異性,因此在異構(gòu)數(shù)據(jù)集成中存在大量的“臟數(shù)據(jù)”。所謂“臟數(shù)據(jù)”是指數(shù)據(jù)不在給定的范圍內(nèi)或?qū)τ趯?shí)際業(yè)務(wù)毫無意義,或是數(shù)據(jù)格式非法以及錯(cuò)誤操作產(chǎn)生等。這些“臟數(shù)據(jù)”會(huì)扭曲事實(shí),影響信息系統(tǒng)的運(yùn)行效果。 Web異構(gòu)數(shù)據(jù)源中的數(shù)據(jù)提取工作的完成并不意味著結(jié)束,如果僅僅是將這些信息抽取出來不加以利用,則這些信息將毫無價(jià)值。異構(gòu)數(shù)據(jù)集成系統(tǒng)中數(shù)據(jù)的清洗一般分為七個(gè)步驟:元素化(將非標(biāo)準(zhǔn)的數(shù)據(jù)統(tǒng)一格式化成數(shù)據(jù)元素)、標(biāo)準(zhǔn)化(將元素標(biāo)準(zhǔn)化)、校驗(yàn)(對(duì)標(biāo)準(zhǔn)化的元素進(jìn)行校驗(yàn)分析,即在內(nèi)容、規(guī)則上驗(yàn)證字段值的正確性,若發(fā)現(xiàn)錯(cuò)誤則加以改正)、匹配(在其他記錄中尋找相似的記錄,發(fā)現(xiàn)重復(fù)異常)、消除重復(fù)記錄(根據(jù)匹配結(jié)果進(jìn)行處理,刪除部分記錄或把多個(gè)記錄合并為一個(gè)信息更完整的記錄)、去除無效記錄(依據(jù)龐大的參考數(shù)據(jù)庫或者通過電話訪問核實(shí),找出無效的記錄或?qū)⑦@些記錄更正補(bǔ)全)、檔案化、系統(tǒng)化(將結(jié)果寫入新的數(shù)據(jù)庫中,這樣既可使用清理過的數(shù)據(jù),又可保留對(duì)原數(shù)據(jù)的操作記錄,為今后的進(jìn)一步分析或使用留下必要的記錄信息)。 2.3 信息抽取層 信息抽取層位于系統(tǒng)的底層,是系統(tǒng)數(shù)據(jù)提供者,主要功能是抽取和集成分布在多個(gè)異構(gòu)數(shù)據(jù)源上的信息。Web上的數(shù)據(jù)經(jīng)過抽取并打包到一個(gè)XML文檔,最后將該文檔返回給中介層。 3 集成系統(tǒng)的特點(diǎn)分析 本文提出的三層架構(gòu)的虛擬法異構(gòu)數(shù)據(jù)集成系統(tǒng)具有以下幾個(gè)特點(diǎn): a)數(shù)據(jù)仍然存儲(chǔ)在各自獨(dú)立的數(shù)據(jù)源,各數(shù)據(jù)源根據(jù)查詢要求自行獨(dú)立處理。因此,數(shù)據(jù)更新及時(shí),避免了數(shù)據(jù)大量重復(fù)存儲(chǔ)。 b)用戶針對(duì)全局模式提出查詢,由查詢引擎對(duì)用戶的全局查詢進(jìn)行查詢解析、重寫和分解。 c)采用數(shù)據(jù)清理機(jī)制消除數(shù)據(jù)的不一致性、重復(fù)性,使得從Web數(shù)據(jù)源中抽取出的信息可以更有效地集成到此系統(tǒng)中,實(shí)現(xiàn)信息的再利用。 d)采用XML到中間數(shù)據(jù)庫的映射機(jī)制,完成數(shù)據(jù)庫與XML文檔之間的數(shù)據(jù)傳遞。 e)利用wrapper技術(shù)抽取和集成分布在多個(gè)異構(gòu)數(shù)據(jù)源上的信息,并將文檔返回。 4 結(jié)束語 企業(yè)內(nèi)部或企業(yè)之間的分布式異構(gòu)系統(tǒng)的數(shù)據(jù)交互和集成對(duì)于提高企業(yè)辦事效率、節(jié)省成本都有著重要的意義。數(shù)據(jù)集成是企業(yè)業(yè)務(wù)集成和門戶集成的基礎(chǔ)。本文從實(shí)際出發(fā),目的旨在解決Web上的異構(gòu)數(shù)據(jù)集成問題,在所設(shè)計(jì)的系統(tǒng)中利用了虛擬法結(jié)合時(shí)下比較流行的XML技術(shù)、數(shù)據(jù)清洗技術(shù),從而很方便地實(shí)現(xiàn)了異構(gòu)數(shù)據(jù)集成問題。 參考文獻(xiàn): [1] 景婭萍.基于Web異構(gòu)數(shù)據(jù)源的整合與集成[J].貴州教育學(xué)院學(xué)報(bào),2004,15(4):7273,79. [2]洪小偉,劉亞軍.基于XML異構(gòu)數(shù)據(jù)集成的研究[D].南京:東南大學(xué),2004. [3]李軍懷,周明全,耿國華,等.XML在異構(gòu)數(shù)據(jù)集成中的應(yīng)用研究[J].計(jì)算機(jī)應(yīng)用,2002,22(9):1012. [4]ALBERT J. Data integration in the RODIN multidatabase system[C]//Proc of the 1st International Conference on Cooperative Information Systems. 1996:4857. [5]劉華,胡燕.Web信息集成中數(shù)據(jù)清洗的研究[D].武漢:武漢理工大學(xué),2007. [6]顧天竺,沈潔,陳曉紅,等.基于XML的異構(gòu)數(shù)據(jù)集成模式的研究[J].計(jì)算機(jī)應(yīng)用研究,2007,24(4):9496.