摘要:為了實(shí)現(xiàn)異構(gòu)環(huán)境中數(shù)據(jù)集成的目標(biāo),提出了基于XML、B/S三層架構(gòu)的企業(yè)異構(gòu)數(shù)據(jù)庫之間數(shù)據(jù)共享的實(shí)施方案,設(shè)計(jì)和實(shí)現(xiàn)了一個(gè)通用的異構(gòu)數(shù)據(jù)集成系統(tǒng)。文章介紹了該系統(tǒng)的核心體系結(jié)構(gòu)、工作流程和各模塊的功能;闡述了XML文檔模式的驗(yàn)證和提取、XML文檔問的映射、XML文檔模式和數(shù)據(jù)庫關(guān)系模式之間的映射等關(guān)鍵模塊的設(shè)計(jì)和實(shí)現(xiàn):最后簡(jiǎn)要說明了實(shí)現(xiàn)系統(tǒng)所采用的相關(guān)Java技術(shù)。
關(guān)鍵詞:數(shù)據(jù)集成;XML;關(guān)系模式;映射
0 引言
企業(yè)信息化的逐步深入,使得任何一個(gè)獨(dú)立的信息持有或使用單位都有可能成為一個(gè)異構(gòu)的數(shù)據(jù)源。與此同時(shí),企業(yè)又需要訪問各種異構(gòu)數(shù)據(jù)源,來加強(qiáng)戰(zhàn)略伙伴之間的合作關(guān)系,對(duì)資源進(jìn)行集成和協(xié)調(diào),快速響應(yīng)市場(chǎng)需求,提高自身競(jìng)爭(zhēng)力。為此,必須要有一種系統(tǒng)能夠支持異構(gòu)數(shù)據(jù)源的數(shù)據(jù)集成。
數(shù)據(jù)集成即是把不同來源、格式、特點(diǎn)、性質(zhì)的異構(gòu)數(shù)據(jù)在邏輯上或物理上有機(jī)地集中起來,為用戶提供全面的數(shù)據(jù)共享。在企業(yè)數(shù)據(jù)集成領(lǐng)域,已經(jīng)有了很多成熟的框架可以利用。目前通常采用聯(lián)邦數(shù)據(jù)庫系統(tǒng)(Federated Database System,F(xiàn)DBS)、中介系統(tǒng)(Mediation System)和數(shù)據(jù)倉庫(Data Warehouse)等方法來構(gòu)造集成系統(tǒng),這些框架在不同的側(cè)重點(diǎn)和應(yīng)用上解決了數(shù)據(jù)共享問題,本文研究了目前國內(nèi)外數(shù)據(jù)集成策略以及相關(guān)應(yīng)用技術(shù),在此基礎(chǔ)上提出了一種基于XML(eXtensible Markup Language,可擴(kuò)展標(biāo)記語言)、B/S三層架構(gòu),建立數(shù)據(jù)交換中心的總體解決方案,并結(jié)合相關(guān)的Java技術(shù)實(shí)現(xiàn)了其系統(tǒng)原型。
1 相關(guān)技術(shù)簡(jiǎn)介
1.1 XML技術(shù)
XML是由W3C(World Wide Web Consortium,萬維網(wǎng)聯(lián)盟)定義的一種語言,它是SGML(Standard Generalized Markup Language,標(biāo)準(zhǔn)通用標(biāo)記語言)的一個(gè)簡(jiǎn)化子集。XML文件是由標(biāo)記及其所標(biāo)記的內(nèi)容構(gòu)成的文本文件。與HTML(HyperText Markup Language,超文本標(biāo)記語言)文件不同的是,這些標(biāo)記可由用戶自定義,使得XML文件能夠很好地體現(xiàn)數(shù)據(jù)的結(jié)構(gòu)和含義。WBC推出XML的主要目的是使Intenet網(wǎng)絡(luò)上的數(shù)據(jù)相互交流更方便,讓文件的內(nèi)容更加簡(jiǎn)明易懂。
作為表示結(jié)構(gòu)化數(shù)據(jù)的行業(yè)標(biāo)準(zhǔn),XML具有許多特點(diǎn),如可擴(kuò)展性、自描述性等等,非常適合用于企業(yè)間異構(gòu)數(shù)據(jù)的集成。
1.2 Web服務(wù)
為了在數(shù)據(jù)的發(fā)送方和接收方之間建立一個(gè)通道,需要有一種能夠跨平臺(tái)、跨語言的協(xié)議或組件,它能夠使用XML來描述和包裝需交換的數(shù)據(jù)或?qū)ο髢?nèi)容,以使得各種平臺(tái)的數(shù)據(jù)和對(duì)象都能通過同一個(gè)標(biāo)準(zhǔn)進(jìn)行傳輸。HTTP(HyperText Trans-fer Protocol,超文本傳輸協(xié)議)和SOAP(simple Object Ac-tess Protocol,簡(jiǎn)單對(duì)象訪問協(xié)議)正是這樣一種協(xié)議。
HTTP是ISO/OSI開發(fā)系統(tǒng)互聯(lián)參考模型的應(yīng)用層協(xié)議,采用請(qǐng)求,響應(yīng)方式傳送WWW的數(shù)據(jù)。SOAP是一種輕量級(jí)協(xié)議,用于在分散型、分布式環(huán)境中交換結(jié)構(gòu)化信息。SOAP利用XML技術(shù)定義一種可擴(kuò)展的消息處理框架,并提供了一種可通過多種底層協(xié)議進(jìn)行交換的消息結(jié)構(gòu)(如圖1所示)。這種框架獨(dú)立于任何一種特定的編程模型和其他特定實(shí)現(xiàn)的語義。
2 基于XML的企業(yè)間信息集成框架
2.1整體解決方案
系統(tǒng)在整體結(jié)構(gòu)上采用“數(shù)據(jù)交換中心”的思想來解決不同企業(yè)應(yīng)用系統(tǒng)之間的協(xié)同問題。通過采用統(tǒng)一的數(shù)據(jù)交換標(biāo)準(zhǔn),使各應(yīng)用系統(tǒng)與數(shù)據(jù)交換中心相連,利用數(shù)據(jù)交換中心來實(shí)現(xiàn)數(shù)據(jù)共享和路由。由于隔離了數(shù)據(jù)存儲(chǔ)層和應(yīng)用層,應(yīng)用與其底層的數(shù)據(jù)結(jié)構(gòu)和存儲(chǔ)方式無關(guān),從而不需要對(duì)原有業(yè)務(wù)系統(tǒng)進(jìn)行改造,也不需要對(duì)已有的業(yè)務(wù)流程重新開發(fā)。這種連接方式實(shí)現(xiàn)了數(shù)據(jù)的無縫集成和共享訪問,既保證了各業(yè)務(wù)系統(tǒng)的有效協(xié)同,同時(shí)又保證了各應(yīng)用系統(tǒng)的相互獨(dú)立性和低耦合性,從整體上提高了系統(tǒng)運(yùn)作的高效性和安全性。
基于數(shù)據(jù)安全性、系統(tǒng)性能、系統(tǒng)擴(kuò)展性和實(shí)施難度等方面的考慮,整個(gè)體系結(jié)構(gòu)在物理拓?fù)渖喜捎眯切徒Y(jié)構(gòu)(如圖2所示)。
根據(jù)以上拓?fù)浣Y(jié)構(gòu),結(jié)合異構(gòu)數(shù)據(jù)交換需求和現(xiàn)有技術(shù)的可行性,考慮采用基于Web服務(wù)的數(shù)據(jù)交換模式來實(shí)現(xiàn)異構(gòu)數(shù)據(jù)集成?;赪eb服務(wù)的數(shù)據(jù)交換模式獨(dú)立于所有的參與者,可以很好地實(shí)現(xiàn)數(shù)據(jù)的實(shí)時(shí)性和完整性,能更好地屏蔽企業(yè)的內(nèi)部數(shù)據(jù)(具體的數(shù)據(jù)處理由企業(yè)的業(yè)務(wù)邏輯來決定)。更重要的是,它是一種高度松散耦合的交換方式,參與數(shù)據(jù)交換的任何一方修改了其業(yè)務(wù)邏輯或數(shù)據(jù)格式,所影響的只是它本身,共享的方法屏蔽了所有的外部改變。
2.2框架結(jié)構(gòu)
數(shù)據(jù)交換中心之所以能夠交換基于不同操作平臺(tái)和數(shù)據(jù)庫的數(shù)據(jù),主要得益于其對(duì)信息的統(tǒng)一表示、完整的消息服務(wù)能力以及功能完備的交換平臺(tái)軟件系統(tǒng)。信息的統(tǒng)一表示依靠元語言標(biāo)準(zhǔn)、信息標(biāo)準(zhǔn)、元數(shù)據(jù)標(biāo)準(zhǔn)、顯示標(biāo)準(zhǔn)、解析標(biāo)準(zhǔn)、轉(zhuǎn)換標(biāo)準(zhǔn)和封裝標(biāo)準(zhǔn)來保證。完整的消息服務(wù)能力依靠信息的統(tǒng)一封裝、統(tǒng)一編址、信息的可靠性傳輸、路由管理等技術(shù)手段實(shí)現(xiàn)。交換平臺(tái)軟件系統(tǒng)一般采用基于基礎(chǔ)/中心數(shù)據(jù)庫的數(shù)據(jù)交換、消息中間件服務(wù)器等技術(shù)方式。
以下給出該數(shù)據(jù)交換中心節(jié)點(diǎn)及企業(yè)終端節(jié)點(diǎn)的框架結(jié)構(gòu)(如圖3所示),并對(duì)各模塊功能予以說明。
(1)數(shù)據(jù)操作引擎:它是負(fù)責(zé)接收和發(fā)送XML數(shù)據(jù)的平臺(tái)。實(shí)現(xiàn)接收功能的部分實(shí)際上是一些監(jiān)聽組件,監(jiān)聽并接收來自數(shù)據(jù)交換節(jié)點(diǎn)傳入的數(shù)據(jù);實(shí)現(xiàn)發(fā)送功能的部分是通過各種傳輸協(xié)議來把XML數(shù)據(jù)發(fā)送到指定目標(biāo)地址。
(2)XML解析器:主要完成XML模式的確認(rèn),即測(cè)試文檔是否符合施加到其文檔類型之上的約束條件。分析該XML文檔的語法和格式是否正確,以確保在傳輸過程中沒有數(shù)據(jù)丟失和錯(cuò)誤。分析企業(yè)所用的Schema是否和交換中心使用的Schema一致,如果不一致,則需要進(jìn)行映射處理。
(3)XML映射器:當(dāng)企業(yè)所用的Schema和交換中心使用的Schema不一致的時(shí)候,將用到該功能模塊。它首先檢查是否有相應(yīng)的XSLT(可擴(kuò)展樣式表語言)文件。如果有,則直接按該文件的規(guī)則把企業(yè)的XML轉(zhuǎn)換為標(biāo)準(zhǔn)格式的XML文件;如果沒有,則從企業(yè)用的Schema中提取出對(duì)應(yīng)的數(shù)據(jù)格式和數(shù)據(jù)類型以及字段名,根據(jù)業(yè)務(wù)規(guī)則把標(biāo)準(zhǔn)Schema中對(duì)應(yīng)的數(shù)據(jù)格式、數(shù)據(jù)類型以及字段名一一映射,系統(tǒng)將按此生成一個(gè)XSLT文件并用此文件進(jìn)行映射。
以企業(yè)間完成一次數(shù)據(jù)交換為例,XML解析器與XML映射器進(jìn)行的數(shù)據(jù)解析過程描述如下。
步驟1:XML檢查器首先檢查在數(shù)據(jù)交換中心服務(wù)器上是否有發(fā)送方所發(fā)送數(shù)據(jù)類型的Schema文件。如果沒有,就提取傳入數(shù)據(jù)的Schema并將此Schema作為發(fā)送方對(duì)所傳送數(shù)據(jù)類型的Schema,并轉(zhuǎn)入第3步。
步驟2:如果有,則用該Schema來檢查接收到的XML文檔是否符合該Schema所規(guī)定的結(jié)構(gòu)。如果不符合,則認(rèn)為發(fā)送方的數(shù)據(jù)結(jié)構(gòu)發(fā)生了變化,提取傳入數(shù)據(jù)的Schema并將此Schema作為發(fā)送方對(duì)所傳送數(shù)據(jù)類型的Schema。
步驟3:檢查數(shù)據(jù)交換中心服務(wù)器端是否有該數(shù)據(jù)類型的通用Schema。如果沒有,則將發(fā)送方的Schema作為該數(shù)據(jù)類型的通用Schema,并轉(zhuǎn)入第5步。
步驟4:如果有,則檢查通用Schema和發(fā)送方的Schema是否一致。如果一致,則轉(zhuǎn)入第5步;如果不一致,則檢查是否有相應(yīng)的XSLT文件。如果有,就用該XSLT文檔將接收到的XML文檔轉(zhuǎn)化為通用的格式;如果沒有相應(yīng)的XSLT,則需要用XML文檔的映射器生成一個(gè)XSLT文檔,再用該XSLT將接收到的XML文檔轉(zhuǎn)化為通用的格式。
步驟5:檢查接收方在服務(wù)器端是否有所要交互數(shù)據(jù)類型的Schema文檔。如果沒有,則以通用Schema作為接收方的Schema文檔,并進(jìn)行后續(xù)處理。如果有,就檢查該Schema是否和通用的Schema一致。若一致就進(jìn)行后續(xù)處理,不一致就檢查是否有相應(yīng)的XSLT文件。如果有,就用該XSLT文檔將通用的XML文檔轉(zhuǎn)化為符合接收方Schema的格式;如果沒有相應(yīng)的XSLT,則需要用XML文檔的映射器生成一個(gè)XSLT文檔,將通用的XML文檔轉(zhuǎn)化為符合接收方Schema的格式。
(4)XML-based轉(zhuǎn)換器:主要完成XML數(shù)據(jù)模式與其它相應(yīng)數(shù)據(jù)模式(關(guān)系模式、HTML文檔、文本文件等)的轉(zhuǎn)換。
利用XML文檔作為中間文件的數(shù)據(jù)集成,必須實(shí)現(xiàn)數(shù)據(jù)庫和XML文檔之間的雙向轉(zhuǎn)換。兩者轉(zhuǎn)換的實(shí)質(zhì)是,XML文檔中的數(shù)據(jù)(可以是內(nèi)容、屬性值、元素名等)與關(guān)系模式中字段的映射,XML文檔中數(shù)據(jù)的相互位置的關(guān)系與關(guān)系模式中元組與元組的關(guān)系及元組與字段的關(guān)系的映射。本文采用模型驅(qū)動(dòng)方法實(shí)現(xiàn)相互映射,它將XML文檔中的數(shù)據(jù)視為特定的對(duì)象樹模型。在這個(gè)模型中,元素及其類型、元素內(nèi)容或混合內(nèi)容(復(fù)合元素類型)通常被視為類,只具有文本內(nèi)容的元素(簡(jiǎn)單元素類型)、屬性以及文本都被當(dāng)作簡(jiǎn)單屬性,然后借助于傳統(tǒng)的對(duì)象一關(guān)系映射技術(shù)將XML文檔映射成關(guān)系數(shù)據(jù)庫。
(5)XML-based封裝器:把經(jīng)過處理后得到的數(shù)據(jù)按一定的規(guī)則轉(zhuǎn)化為XML文件,并將該XML采用SOAP格式進(jìn)行封裝。
(6)數(shù)據(jù)處理器:直接與數(shù)據(jù)庫及其他信息系統(tǒng)進(jìn)行交互。
3 實(shí)現(xiàn)
針對(duì)該系統(tǒng)的特點(diǎn),采用如下的開發(fā)環(huán)境。
應(yīng)用服務(wù)器采用Apache組織的Tomcat。Tomcat在本應(yīng)用系統(tǒng)中有兩個(gè)作用:其一是作為企業(yè)內(nèi)部MIS系統(tǒng)的Web服務(wù)器,其二是提供Web Service功能。
開發(fā)工具選擇Java進(jìn)行應(yīng)用系統(tǒng)的開發(fā)。Java需要另外的開發(fā)包支持,這里選的是JWSDP,它內(nèi)部已經(jīng)整合了開發(fā)Web Service及客戶端的工具。
開發(fā)平臺(tái)選用Windows系統(tǒng)?;贘ava優(yōu)秀的跨平臺(tái)性,Web Service也能很方便地部署到其他的操作平臺(tái)。
4 結(jié)束語
通過對(duì)當(dāng)前各種數(shù)據(jù)集成策略的比較,以及對(duì)XML技術(shù)、Web服務(wù)技術(shù)的研究,本文提出了基于XML的異構(gòu)數(shù)據(jù)集成框架,并對(duì)其內(nèi)部結(jié)構(gòu)進(jìn)行了詳細(xì)說明。該框架采用星型拓?fù)浣Y(jié)構(gòu),便于對(duì)數(shù)據(jù)集中管理,實(shí)施時(shí)可以在數(shù)據(jù)交換中心制定一套統(tǒng)一的安全管理策略。數(shù)據(jù)交換發(fā)生在中心節(jié)點(diǎn)上,該節(jié)點(diǎn)接收來自各個(gè)企業(yè)的數(shù)據(jù),解析接收到的數(shù)據(jù)并按數(shù)據(jù)交換目的地所識(shí)別的格式進(jìn)行轉(zhuǎn)換,然后發(fā)送到目的地。通過數(shù)據(jù)交換中心節(jié)點(diǎn),可以在數(shù)據(jù)源和目的地之間建立一個(gè)透明的安全數(shù)據(jù)通道。