傳統(tǒng)的分布對象技術(shù)分別有OMG的CORBA、 Microsoft的DCOM 以及SUN的RMI。然而CORBA缺少方便的開發(fā)工具和強有力的廠商支持,門檻稍高,入門較困難;DCOM 跨平臺性較差;RMI對多語言融合的支持卻很弱。同時,這幾種技術(shù)都有相似的缺陷:①CORBA、DCOM和RMI雖然能調(diào)用實現(xiàn)的系統(tǒng),但均要求服務(wù)器和客戶端必須緊密耦合,并且體系結(jié)構(gòu)相同;②CORBA、DCOM和RMI依賴于特定的對象模型協(xié)議,目前只在企業(yè)內(nèi)部使用廣泛,都不太適合在Internet環(huán)境下進行多源異構(gòu)數(shù)據(jù)庫融合的設(shè)計開發(fā)。
Web服務(wù)的出現(xiàn)滿足了信息化服務(wù)所要求的基本功能,它是微軟.NET 框架下多源異構(gòu)應(yīng)用的典型方案,并在中間件基礎(chǔ)上,采用XML和Web服務(wù)技術(shù)實現(xiàn)了各異構(gòu)數(shù)據(jù)庫的融合,提供了一種全新的以松耦合的方式在Internet環(huán)境下部署分布式應(yīng)用的解決方案。任何操作系統(tǒng)、任何語言編寫的客戶端都能夠訪問服務(wù)器提供的Web服務(wù),其客戶端與服務(wù)器端之間以XML消息作為聯(lián)系,解決異構(gòu)數(shù)據(jù)庫集成的難題,彌補了CORBA、DCOM和RMI方法的不足。本文提出的基于Web服務(wù)分布式異構(gòu)數(shù)據(jù)庫B/S三層架構(gòu)的智能集成方法優(yōu)化了傳統(tǒng)的集成方法和數(shù)據(jù)模式映射,同時還利用Spring 框架的Quartz定時任務(wù)調(diào)度實現(xiàn)集成系統(tǒng)的智能更新,整個系統(tǒng)具有實時性、可擴展性、高響應(yīng)性等特點。
本文的第二部分介紹Web服務(wù)和異構(gòu)數(shù)據(jù)庫系統(tǒng),第三部分提出基于Web服務(wù)的分布式異構(gòu)數(shù)據(jù)庫集成系統(tǒng)總體架構(gòu)和各功能模塊,第四部分對描述系統(tǒng)設(shè)計與實現(xiàn),第五部分進行測試驗證,第六部分對本文進行總結(jié)。
1 相關(guān)理論與技術(shù)概述
1.1 Web服務(wù)體系結(jié)構(gòu)
Web服務(wù)是一種面向服務(wù)的分布式計算體系結(jié)構(gòu),相比傳統(tǒng)的分布對象技術(shù)和集成技術(shù),能夠提供面向Internet的標準程序接口,具有跨防火墻、軟件和數(shù)據(jù)重用、良好的封裝性、松散耦合性和高度可集成性等優(yōu)點[4]。
Web服務(wù)作為一個新型的分布式計算模型,具有自包容和自描述的優(yōu)點。由三個角色和三個操作組成。三個角色分別為服務(wù)提供者、服務(wù)請求者和服務(wù)代理,三個操作為發(fā)布、查找和綁定。Web服務(wù)的關(guān)鍵技術(shù)包括SOAP(Simple Object Access Protoco1)、WSDL(Web Service Description Language)、UDDI(Web Service Description Language)、XML。XML是Web服務(wù)的技術(shù)基礎(chǔ),Web服務(wù)中各種信息的描述都是基于XML。SOAP提供了一種通信機制,它是分布式環(huán)境中交換信息的通用協(xié)議,保證了Web服務(wù)和其它應(yīng)用程序之間可靠通信;WSDL是以XML的格式來描述Web服務(wù)。UDDL用來創(chuàng)建Web服務(wù)注冊中心,它是Web服務(wù)注冊和發(fā)現(xiàn)的技術(shù)規(guī)范[6]。Web服務(wù)體系結(jié)構(gòu)如圖1。
1.2 異構(gòu)數(shù)據(jù)庫
圖1 Web服務(wù)結(jié)構(gòu)
異構(gòu)數(shù)據(jù)庫實現(xiàn)數(shù)據(jù)共享的同時,每個數(shù)據(jù)庫系統(tǒng)保持著自己的完整性、自治性和安全性。異構(gòu)數(shù)據(jù)庫系統(tǒng)中的異構(gòu)性主要表現(xiàn)為數(shù)據(jù)異構(gòu)、系統(tǒng)異構(gòu)和語義異構(gòu)[5]。
(1)數(shù)據(jù)異構(gòu)。異構(gòu)數(shù)據(jù)庫系統(tǒng)中數(shù)據(jù)異構(gòu)表現(xiàn)在不同數(shù)據(jù)源對同一數(shù)據(jù)有不同的定義,例如格式、數(shù)據(jù)類型或精度等等。比如在SQL Server中用int、float、double等類型,而在Oracle中用Number統(tǒng)一表示數(shù)值型的屬性。因此在異構(gòu)數(shù)據(jù)庫之間共享數(shù)據(jù)時,需要對數(shù)據(jù)異構(gòu)加以考慮。
(2)系統(tǒng)異構(gòu): 異構(gòu)數(shù)據(jù)庫系統(tǒng)中系統(tǒng)異構(gòu)主要指數(shù)據(jù)所依賴的應(yīng)用系統(tǒng)存在的差異,比如硬件平臺(大型機、PC機)、數(shù)據(jù)庫管理系統(tǒng)(MySQL、SQL Server) 和操作系統(tǒng)(Unix、Windows)等的不同。
(3)語義異構(gòu): 語義異構(gòu)是指屬性含義相同,但是屬性名的接口模式不同。從簡單的命名沖突(如同名異義,同義異名)到復(fù)雜的結(jié)構(gòu)語義沖突,語義異構(gòu)在數(shù)據(jù)庫中主要表現(xiàn)在屬性異構(gòu)。比如屬性“姓名”,有的用“Name”,也有的用“XingMing”,屬性名“type”,有的表示車型,也有的表示食物類型等。數(shù)據(jù)庫的語義異構(gòu)是數(shù)據(jù)集成過程中需要解決的關(guān)鍵問題。
1.3 異構(gòu)數(shù)據(jù)庫集成的常用技術(shù)
異構(gòu)數(shù)據(jù)集成的常用技術(shù)為:聯(lián)邦數(shù)據(jù)庫、數(shù)據(jù)倉庫和中間件方式。
(1)聯(lián)邦數(shù)據(jù)庫采用模式集成的方法,其基本思想是在數(shù)據(jù)庫系統(tǒng)集成時,從各異構(gòu)數(shù)據(jù)庫中獲取數(shù)據(jù)源的數(shù)據(jù)視圖,并將其集成為全局模式。用戶就可以直接通過全局模式透明地訪問各數(shù)據(jù)源中的數(shù)據(jù)。各數(shù)據(jù)源間互相獨立,通過數(shù)據(jù)轉(zhuǎn)換接口實現(xiàn)相互訪問。聯(lián)邦數(shù)據(jù)庫優(yōu)點是容易操作實現(xiàn),缺點是當異構(gòu)數(shù)據(jù)源變化時,種類復(fù)雜,工作量大,擴展性差,僅適合數(shù)據(jù)源較少的情況下使用[8]。
(2)數(shù)據(jù)倉庫概念始于上世紀 80 年代中期,其基本思想是將各個數(shù)據(jù)源的數(shù)據(jù)復(fù)制到同一數(shù)據(jù)倉庫中,用戶可以直接訪問數(shù)據(jù)倉庫進行集中查詢獲取數(shù)據(jù)。數(shù)據(jù)倉庫優(yōu)點是便于控制,容易處理,缺點是當數(shù)據(jù)信息重復(fù)存儲時,無法將數(shù)據(jù)源的更新信息及時準確地反映到數(shù)據(jù)倉庫中。數(shù)據(jù)倉庫僅適合數(shù)據(jù)源比較穩(wěn)定,并且數(shù)據(jù)訪問較頻繁的情況,不適合于用戶實時查詢。
(3)基于中間件的數(shù)據(jù)集成模式是目前最典型的數(shù)據(jù)集成方法。中間件由中介器(Mediator)和包裝器(Wrapper)組成。中間件方式并不改變數(shù)據(jù)原來的存儲方式和位置,它為異構(gòu)數(shù)據(jù)源提供一個統(tǒng)一的虛擬視圖[7]。中間件模型適用于變化頻繁、結(jié)構(gòu)多樣且數(shù)據(jù)源較多的情況。本文的系統(tǒng)結(jié)構(gòu)就是采用中間件的方式。
2 基于Web服務(wù)的分布式異構(gòu)數(shù)據(jù)庫數(shù)據(jù)集成系統(tǒng)
2.1 用戶需求分析
在該異構(gòu)數(shù)據(jù)查詢系統(tǒng)中,共有三種用戶參與,分別是各異構(gòu)數(shù)據(jù)庫管理員、集成系統(tǒng)管理員和普通用戶。其中集成系統(tǒng)管理員享有最高權(quán)限,可以創(chuàng)建和管理用戶、審查和批準需要加入的異構(gòu)數(shù)據(jù)源、獲取異構(gòu)數(shù)據(jù)源的元數(shù)據(jù)、合成并管理全局數(shù)據(jù)庫模式等;各異構(gòu)數(shù)據(jù)庫管理員能夠登陸數(shù)據(jù)源注冊系統(tǒng),根據(jù)需要填寫注冊信息,選擇需要共享的表和字段并注冊;普通用戶只能登陸查詢系統(tǒng),根據(jù)相關(guān)的查詢權(quán)限對數(shù)據(jù)進行查詢。系統(tǒng)用戶如圖 3所示。
圖 2 系統(tǒng)用戶
2.2 體系結(jié)構(gòu)
Web服務(wù)集成中間件系統(tǒng)體系自下而上包括數(shù)據(jù)庫層、數(shù)據(jù)集成層和統(tǒng)一應(yīng)用層。其中,底層的各個異構(gòu)數(shù)據(jù)源構(gòu)成了系統(tǒng)的數(shù)據(jù)庫層;數(shù)據(jù)集成層采用中間件技術(shù),封裝了異構(gòu)數(shù)據(jù)庫集成系統(tǒng)的業(yè)務(wù)邏輯;各種應(yīng)用程序和對應(yīng)的訪問接口構(gòu)成了系統(tǒng)的統(tǒng)一應(yīng)用層。數(shù)據(jù)庫智能集成系統(tǒng)框架圖如圖2所示。
圖3 基于Web服務(wù)的分布式異構(gòu)數(shù)據(jù)庫智能集成系統(tǒng)框架圖
該系統(tǒng)采用 B/S模式,構(gòu)成了客戶/服務(wù)器三層架構(gòu)。采用這種設(shè)計有以下幾種優(yōu)勢:
(1)安裝升級簡便。通過瀏覽器訪問數(shù)據(jù)庫簡化了客戶端。在升級軟件的時候,不需要對客戶端升級。
(2)易擴展維護。所有應(yīng)用程序均在服務(wù)器端,開發(fā)維護過程可集中在服務(wù)器端,不需要考慮數(shù)據(jù)庫端和客戶端。
(3)可移植性強。本文采用JavaBean技術(shù),可以在不同Web服務(wù)器、不同操作系統(tǒng)上運行,而且可以在不同的平臺間移植,不需要重新編譯。
(4)可靠性強。多層體系結(jié)構(gòu)可以有效地優(yōu)化系統(tǒng)總體性能,提高系統(tǒng)的可靠性和伸縮性。
(5)數(shù)據(jù)智能更新快。綜合包裝器中的智能更新模塊采用Spring框架,該方法中Quartz任務(wù)定時掃描更新各異構(gòu)數(shù)據(jù)庫上傳的XML描述文檔,充分保證了抽象數(shù)據(jù)表的實時性、智能性和有效性。
2.3 功能模塊設(shè)計
(1)客戶端功能模塊
統(tǒng)一應(yīng)用層也就是用戶界面,即異構(gòu)數(shù)據(jù)庫集成系統(tǒng)的使用者。用戶可以通過數(shù)據(jù)集成層來訪問異構(gòu)數(shù)據(jù)庫的共享數(shù)據(jù)資源。本系統(tǒng)不需安裝客戶端軟件,直接利用瀏覽器作為客戶端用戶的界面,可以把XML表示的數(shù)據(jù)轉(zhuǎn)換成為Html格式,直觀方便,非常適合異構(gòu)數(shù)據(jù)集成系統(tǒng)[8]。
(2)服務(wù)器端功能模塊
本文采用Tomcat作為Web服務(wù)器。Tomcat作為一個優(yōu)秀的開源Web應(yīng)用服務(wù)器,是Apache Jakarta的子項目之一。其性能穩(wěn)定、技術(shù)先進,而且免費開源,因而深受軟件開發(fā)商和Java愛好者的認可,Web應(yīng)用服務(wù)器目前使用廣泛。
數(shù)據(jù)庫服務(wù)器主要是提供實際的數(shù)據(jù)管理功能,為數(shù)據(jù)站點存儲數(shù)據(jù)集。該系統(tǒng)主要支持的數(shù)據(jù)庫服務(wù)器有Oracle、SQL Server、MySql、Access 等。
(3)數(shù)據(jù)模式轉(zhuǎn)換功能模塊
數(shù)據(jù)集成層是實現(xiàn)異構(gòu)數(shù)據(jù)庫中數(shù)據(jù)轉(zhuǎn)換的核心,目的是訪問各個數(shù)據(jù)源,集成數(shù)據(jù)源信息,協(xié)調(diào)各數(shù)據(jù)源間信息。數(shù)據(jù)集成層在各局部數(shù)據(jù)提供的共享數(shù)據(jù)的基礎(chǔ)之上建立一個全局的虛擬視圖,并不存儲實際的數(shù)據(jù)。具體包括:元數(shù)據(jù)DB、元數(shù)據(jù)管理器、綜合包裝器、中介器、應(yīng)用層訪問統(tǒng)一接口、異構(gòu)數(shù)據(jù)庫統(tǒng)一接口,下面分別對各模塊加以介紹。
元數(shù)據(jù)DB負責儲存各異構(gòu)數(shù)據(jù)庫的元數(shù)據(jù)庫信息。元數(shù)據(jù)庫信息包括注冊信息、連接信息URL、各元數(shù)據(jù)庫用戶與全局用戶的匹配關(guān)系、模式映射信息、訪問策略信息等。元數(shù)據(jù)DB支撐整個系統(tǒng)的運行[9]。
元數(shù)據(jù)管理器負責制定集成系統(tǒng)的全局模式與局部數(shù)據(jù)庫的模式之間的轉(zhuǎn)換規(guī)則。
中介器負責異構(gòu)數(shù)據(jù)庫的注冊、公共模型的生成和全局查詢請求的接收。中介器由三個組件構(gòu)成,包括:異構(gòu)數(shù)據(jù)注冊模塊、查詢規(guī)劃模塊和結(jié)果合并過濾模塊。其中,異構(gòu)數(shù)據(jù)注冊模塊的主要功能是:在共享數(shù)據(jù)注冊階段,負責公共模型的建立以及異構(gòu)數(shù)據(jù)庫的共享注冊;查詢規(guī)劃模塊的主要功能是:在數(shù)據(jù)集成階段,將客戶端提交的基于全局數(shù)據(jù)庫的標準查詢分解成針對各個異構(gòu)數(shù)據(jù)庫的子查詢,并提交到相應(yīng)的包裝器;結(jié)果合并過濾模塊的主要功能是:將各異構(gòu)數(shù)據(jù)庫查詢返回的 XML文檔進行合并,形成完整統(tǒng)一的查詢結(jié)果,反饋至客戶端瀏覽器。
綜合包裝器的功能是實現(xiàn)數(shù)據(jù)位置和訪問的透明,對異構(gòu)的數(shù)據(jù)進行包裝。綜合包裝器由智能更新模塊、查詢結(jié)果轉(zhuǎn)換模塊和數(shù)據(jù)庫操作模塊三個組件構(gòu)成。智能更新模塊采用spring框架的quartz任務(wù)定時的掃描由不同的異構(gòu)數(shù)據(jù)庫上傳的XML描述文檔,通過解析這些XML文檔,實現(xiàn)數(shù)據(jù)自動更新,從而保證抽象數(shù)據(jù)表的有效性、實時性、智能性。查詢結(jié)果轉(zhuǎn)換模塊負責將SQL查詢的結(jié)果轉(zhuǎn)換為XML文檔。數(shù)據(jù)庫操作模塊負責連接后臺各個異構(gòu)數(shù)據(jù)庫,包括初始化數(shù)據(jù)庫連接、分配連接、封裝數(shù)據(jù)庫基本操作、關(guān)閉連接等功能。
數(shù)據(jù)集成層對外提供了兩個統(tǒng)一接口,即應(yīng)用層訪問統(tǒng)一接口和底層異構(gòu)數(shù)據(jù)庫訪問接口。其功能是屏蔽各數(shù)據(jù)庫的差異,提供數(shù)據(jù)的透明訪問,使得使用者無需知道數(shù)據(jù)的數(shù)據(jù)源模式及具體的物理位置等信息,只需通過系統(tǒng)定義的與具體數(shù)據(jù)源無關(guān)的SQL語句進行訪問。
3 關(guān)鍵技術(shù)分析
3.1 數(shù)據(jù)映射
數(shù)據(jù)轉(zhuǎn)換是中間件層的首要任務(wù),數(shù)據(jù)轉(zhuǎn)換的目的是將不同數(shù)據(jù)源轉(zhuǎn)換成統(tǒng)一格式,為各異構(gòu)數(shù)據(jù)源的局部模式提供統(tǒng)一的全局模式。關(guān)系數(shù)據(jù)庫是目前市場上的主導(dǎo),XML文檔的結(jié)構(gòu)和關(guān)系數(shù)據(jù)庫的數(shù)據(jù)結(jié)構(gòu)的差異較大。關(guān)系數(shù)據(jù)庫用二維表存儲數(shù)據(jù),用主鍵和外鍵的方式體現(xiàn)數(shù)據(jù)之間的關(guān)系;而XML文檔采用層次嵌套結(jié)構(gòu),數(shù)據(jù)類型、數(shù)據(jù)長度都不規(guī)則,通過子元素與父元素嵌套的形式體現(xiàn)數(shù)據(jù)間的關(guān)系。為了采用SQL工具操作XML數(shù)據(jù),在關(guān)系數(shù)據(jù)庫和XML之間架起橋梁,或?qū)ML轉(zhuǎn)換成表格式的表單,必須解決XML與關(guān)系數(shù)據(jù)庫間的映射[6]。
(1)關(guān)系模式到XML 模式映射
轉(zhuǎn)換的算法可如下描述:
Input:關(guān)系數(shù)據(jù)庫
Output:XML 模式
Step 1:將關(guān)系模式從關(guān)系數(shù)據(jù)庫中提取出來。
Step 2:用 SQL 語句來重構(gòu)數(shù)據(jù)庫中的約束。
Step 3:由關(guān)系模式重構(gòu)映射結(jié)構(gòu)。
Step 4:由映射結(jié)構(gòu)和重構(gòu)的結(jié)果生成 XML Schema 模式。
Step 5:將從在XML文檔中嵌入從數(shù)據(jù)庫提取出的數(shù)據(jù)。
Step 6:對XMLSchema 格式文檔及所表示的數(shù)據(jù) XML 文檔進行輸出。
整個流程如圖3所示。
圖 4 關(guān)系模式到XML模式的映射
(2)XML 模式到關(guān)系模式的映射
轉(zhuǎn)換算法如下:
Input:XML Schema文檔
Output:關(guān)系模式
Step 1:形式化描述XML Schema文檔。
Step 2:從 描述的XML Schema 文檔中,提取元素組成元素樹。
Step 3:映射轉(zhuǎn)化元素樹,輸出關(guān)系數(shù)據(jù)數(shù)。
Step 4:將得到的關(guān)系數(shù)據(jù)樹動態(tài)合成為SQL語句。
Step 5:使用 SQL 語句將 XML 文檔中的數(shù)據(jù)嵌入到關(guān)系數(shù)據(jù)庫.
關(guān)系模式在轉(zhuǎn)化前后必須保持一致,其轉(zhuǎn)換流程如圖5所示。
圖 5 XML模式到關(guān)系模式的映射
3.2 Quartz定時調(diào)度法
Spring框架的Quartz作為流行的企業(yè)級任務(wù)調(diào)度技術(shù),任務(wù)調(diào)度為應(yīng)用系統(tǒng)請求的特定任務(wù)執(zhí)行操作安排,Spring為Quartz的重要組件提供Bean風格的擴展類。Spring容器生命周期和其環(huán)境下創(chuàng)建的組件對象,爭對具體任務(wù)可以執(zhí)行停止或啟動。在Spring的開發(fā)應(yīng)用中可以充分利用不同形式的任務(wù)定時調(diào)度功能。
包裝器的智能更新模塊,就是采用Spring的任務(wù)定時調(diào)度方法,掃描各異構(gòu)數(shù)據(jù)庫上傳的 xml 描述文檔,實時更新抽象數(shù)據(jù)表。更新抽象數(shù)據(jù)表可直接通過調(diào)用JDK Timer中schedule來執(zhí)行,執(zhí)行過程中的重要參數(shù)有間隔時間、啟動時間延遲、任務(wù)對象[3]。
Spring引入了TaskScheduler,不同形式的任務(wù)定時調(diào)度。按某個時間間隔重復(fù)執(zhí)行任務(wù),也可以在給定時間點執(zhí)行一次任務(wù),該方法中的Cron觸發(fā)器可以靈活定義執(zhí)行時間[3]。
例如:scheduler.schedule(task, new CronTrigger(″* 206-15 * * MON-FRI″));在每周星期一到星期五的6點20分至15點20分執(zhí)行設(shè)定的任務(wù)。
假設(shè)定義一個服務(wù),根據(jù)各異構(gòu)數(shù)據(jù)庫上傳的XML文檔,配置定義服務(wù)的執(zhí)行時間點。服務(wù)定義如下:
Importorg.springframework.stereotype.Service;
@Service
public class TaskOne {
public void OnePrint() {
System.out.println(″One測試打印″); } }
XML配置規(guī)定抽象數(shù)據(jù)表主要表達如下,即1秒后開始更新,每隔3秒執(zhí)行一次。
cron=″1 / 3 * * * *?″ />
4 系統(tǒng)的部署
由于集成系統(tǒng)中各異構(gòu)的數(shù)據(jù)源是自治的,這些資源分屬于不同的部門,有些數(shù)據(jù)需要一定的權(quán)限才能訪問,有些數(shù)據(jù)甚至不能共享,所以需對可共享的內(nèi)容進行設(shè)定。系統(tǒng)的具體部署包括以下兩個階段:
4.1 數(shù)據(jù)注冊階段
由中介器中的注冊管理器來完成,主要任務(wù)是完成對各異構(gòu)數(shù)據(jù)源在數(shù)據(jù)集成層中的注冊,選擇集成的內(nèi)容(共享的表和字段)和訪問的權(quán)限,并建立數(shù)據(jù)庫集成的模型。在這個階段,主要有各異構(gòu)數(shù)據(jù)庫管理員和集成系統(tǒng)管理員兩類角色參與,他們的主要任務(wù)如下:
各異構(gòu)數(shù)據(jù)庫管理員:主要完成登錄數(shù)據(jù)集成系統(tǒng),選擇數(shù)據(jù)庫中共享的內(nèi)容,對共享的數(shù)據(jù)的訪問權(quán)限進行設(shè)定。選擇自己欲注冊的數(shù)據(jù)庫類型,向集成系統(tǒng)管理員注冊信息,如數(shù)據(jù)庫主機名、IP地址、用戶名、密碼。
數(shù)據(jù)集成系統(tǒng)管理員:主要審核各注冊的異構(gòu)數(shù)據(jù)源,確定訪問權(quán)限和集成內(nèi)容。由數(shù)據(jù)集成層建立共享的公共模型,并收集各注冊的數(shù)據(jù)庫信息。
4.2 系統(tǒng)運行階段
此階段的主要任務(wù)是接受用戶提出的查詢請求并對請求做出相應(yīng)的解答。圖5為系統(tǒng)的數(shù)據(jù)查詢流程圖,包括以下四個步驟:
步驟1:用戶從瀏覽器利用HTTP協(xié)議,向應(yīng)用層統(tǒng)一接口發(fā)出查詢請求,接口收到用戶查詢請求后進行分析執(zhí)行,轉(zhuǎn)化為查詢參數(shù);
步驟2:中介器得到查詢參數(shù)后,到元數(shù)據(jù)中查找目標數(shù)據(jù)庫及數(shù)據(jù)表,并通過查詢規(guī)劃模塊進行SQL分解,生成異構(gòu)數(shù)據(jù)庫相對應(yīng)的SQL子查詢語句SQL1 ,SQL2,…,并放入隊列之中準備執(zhí)行;
步驟3:綜合包裝器通過數(shù)據(jù)庫操作模塊,從查詢隊列中將SQL子查詢語句SQL1,SQL2,…發(fā)送到相應(yīng)的異構(gòu)數(shù)據(jù)庫中執(zhí)行;
步驟4:異構(gòu)數(shù)據(jù)庫將數(shù)據(jù)查詢響應(yīng)后數(shù)據(jù)發(fā)送給綜合包裝器,通過查詢結(jié)果轉(zhuǎn)化模塊,把各異構(gòu)數(shù)據(jù)庫的查詢結(jié)果DATA1 ,DATA2…轉(zhuǎn)化成XML1,XML2…文檔;
步驟5:中介器再對各個數(shù)據(jù)庫提供的查詢結(jié)果XML1,XML2…文檔作集成處理,即將XML1,XML2…經(jīng)由結(jié)果合并過濾模塊的處理,合并不完整的數(shù)據(jù)和過濾重復(fù)的數(shù)據(jù)。將完整統(tǒng)一的查詢結(jié)果XML發(fā)送給客戶端瀏覽器,經(jīng)由瀏覽器呈現(xiàn)在用戶面前。
圖5 系統(tǒng)數(shù)據(jù)查詢流程圖
5 系統(tǒng)測試
5.1 系統(tǒng)測試環(huán)境的搭建
數(shù)據(jù)庫訪問中間件技術(shù)采用Visual Studio2010作為開發(fā)工具,對多數(shù)據(jù)庫在異構(gòu)環(huán)境下的訪問,采用數(shù)據(jù)庫為SQL Server2005、Oracle、MySql和Access, Web服務(wù)器使用Tomcat,操作系統(tǒng)采用Windows XP Professional SP2。整個系統(tǒng)的實驗環(huán)境如圖6所示。
5.2 測試內(nèi)容與結(jié)果
本文對異構(gòu)數(shù)據(jù)的智能集成系統(tǒng)及其關(guān)鍵技術(shù)點做了詳細的分析和設(shè)計,并且給出了整個系統(tǒng)實現(xiàn)的詳細流程方案,現(xiàn)通過實現(xiàn)一個簡單的數(shù)據(jù)源注冊功能來驗證上述的系統(tǒng)[10]。
由圖7知,實驗環(huán)境部署包含一臺數(shù)據(jù)集成中心服務(wù)器、一臺客戶機端和四臺數(shù)據(jù)庫服務(wù)器。數(shù)據(jù)集成中心Server是本系統(tǒng)的核心Server,實現(xiàn)了對異構(gòu)數(shù)據(jù)源的訪問和注冊,各異構(gòu)數(shù)(下轉(zhuǎn)第90頁)(上接第70頁)據(jù)庫的元數(shù)據(jù)和中間件都位于該服務(wù)器上;客戶機端是通過瀏覽器訪問數(shù)據(jù)集成層統(tǒng)一接口,以實現(xiàn)對異構(gòu)數(shù)據(jù)的透明訪問;數(shù)據(jù)庫Server存儲了具體的查詢數(shù)據(jù),用來實現(xiàn)對異構(gòu)數(shù)據(jù)庫數(shù)據(jù)源的管理和存儲。
圖 6 系統(tǒng)實驗環(huán)境部署圖
每臺機器上都部署著自己的運行環(huán)境,從系統(tǒng)部署流程可知,從各異構(gòu)數(shù)據(jù)庫Server登陸數(shù)據(jù)集成中心的數(shù)據(jù)源注冊系統(tǒng),數(shù)據(jù)集成中心根據(jù)所填的信息,與相應(yīng)的數(shù)據(jù)庫進行連接,獲得元數(shù)據(jù)。異構(gòu)數(shù)據(jù)集成中數(shù)據(jù)源注冊系統(tǒng)界面如圖7所示。
圖 7 數(shù)據(jù)源注冊系統(tǒng)界面
6 結(jié)束語
本系統(tǒng)在現(xiàn)有的異構(gòu)數(shù)據(jù)庫集成解決方案的基礎(chǔ)之上,對原有的模式集成方法的進行了多方面的擴展,使用XML、Web服務(wù)等技術(shù)實現(xiàn)了基于中間件的B/S模式下異構(gòu)數(shù)據(jù)庫的集成,本文重點分析了XML與關(guān)系數(shù)據(jù)庫之間的映射,提出了通過spring框架的quarzt定時任務(wù),實時的對集成系統(tǒng)全局數(shù)據(jù)表進行更新,以達到系統(tǒng)的智能集成。該系統(tǒng)成功解決了異構(gòu)數(shù)據(jù)庫集成時操作復(fù)雜、需要人工干預(yù)等問題。由實驗結(jié)果可以看出,該設(shè)計方案較為合理且簡單實用,可以被復(fù)用,效果良好,具有高實時性、可擴展性、高響應(yīng)性能等特點。
推薦資訊
- » 基于遺傳算法的虛擬牙齒矯正路徑規(guī)劃
- » 基于連續(xù)潮流計算的VSC-MTDC異步互聯(lián)電網(wǎng)…
- » 基于大數(shù)據(jù)的水產(chǎn)養(yǎng)殖系統(tǒng)設(shè)計
- » EDF多任務(wù)調(diào)度算法在物聯(lián)網(wǎng)數(shù)據(jù)監(jiān)控平臺中…
- » 逆變拓撲在感應(yīng)加熱處理中的專利發(fā)展技術(shù)…
- » 基于無線節(jié)點資源的通信路徑選擇在自組網(wǎng)…
- » 地鐵綜合自動化集成系統(tǒng)方案解析
- » 基于Web服務(wù)異構(gòu)數(shù)據(jù)庫智能集成的研究
- » 基于深度學(xué)習(xí)的智能車輛輔助駕駛系統(tǒng)設(shè)計
- » 基于Swish激活函數(shù)的人臉情緒識別研究