劉芳 楊暢 皮碧媛
摘要: 詳細(xì)分析了當(dāng)前分布異構(gòu)數(shù)據(jù)庫訪問技術(shù)的研究現(xiàn)狀和發(fā)展趨勢,結(jié)合Web Services的優(yōu)勢構(gòu)造了一個基于Web Services的分布異構(gòu)數(shù)據(jù)庫訪問系統(tǒng),并闡述了系統(tǒng)的實現(xiàn)過程。該系統(tǒng)能夠有效地支持分布式數(shù)據(jù)查詢,數(shù)據(jù)源透明并且支持跨平臺檢索。
關(guān)鍵詞: 分布異構(gòu); 數(shù)據(jù)庫訪問技術(shù); Web Services
中圖分類號:TP301文獻(xiàn)標(biāo)志碼:A 文章編號:1006-8228(2012)05-01-02
Research of database access technology for heterogeneous distributed environment
Liu Fang1, Yang Chang2, Pi Biyuan1
(1. Engineering College of Jiangxi yuzhou scientific vocational college, Xinyu, Jiangxi 338029, China;
2. The Pinghu campus of Jiaxing University Institute of computer)
Abstract: The status and development trend of Database Access Technology for Heterogeneous Distributed Environment is analyzed, Combined the advantages of web service, a model of database access system based on Web Services for Heterogeneous Distributed Environment is constructed, and then the system implementation process is elaborated, This system can achieve distributed data query, and data source is transparent and supports cross-platform retrieval.
Key words: heterogeneous distributed; database access technology; Web Services
0 引言
網(wǎng)絡(luò)技術(shù)的迅速發(fā)展,為企業(yè)與企業(yè)之間實現(xiàn)資源共享提供了可能。然而企業(yè)內(nèi)部各個部門所使用的數(shù)據(jù)庫系統(tǒng)往往不相同,不同企業(yè)所使用的數(shù)據(jù)庫系統(tǒng)也可能不一致,隨著企業(yè)內(nèi)部各部門之間以及企業(yè)與企業(yè)之間的聯(lián)系日益緊密,迫切需要把這些相對孤立的信息資源有效地統(tǒng)一起來,提高信息資源的共享程度。在這種分布異構(gòu)環(huán)境下實現(xiàn)不同數(shù)據(jù)庫之間數(shù)據(jù)資源的共享,成為當(dāng)前信息化建設(shè)過程中急需解決的問題之一。
1 研究現(xiàn)狀及發(fā)展趨勢
把異構(gòu)數(shù)據(jù)庫集成起來,給用戶呈現(xiàn)一個通用的數(shù)據(jù)視圖,是有效解決異構(gòu)數(shù)據(jù)庫訪問的關(guān)鍵。目前常用解決異構(gòu)數(shù)據(jù)庫集成的方法主要有數(shù)據(jù)庫遷移和轉(zhuǎn)換、多數(shù)據(jù)庫系統(tǒng)和中間件[1]技術(shù)等。數(shù)據(jù)庫遷移和轉(zhuǎn)換方法的主要原理是,通過數(shù)據(jù)類型的轉(zhuǎn)換實現(xiàn)格式的一致性,使得數(shù)據(jù)源中的數(shù)據(jù)遷移到新的數(shù)據(jù)庫管理系統(tǒng)能夠被有效管理。然而這種方法在對數(shù)據(jù)進(jìn)行更新時很難達(dá)到同步,往往不能應(yīng)用在數(shù)據(jù)更新比較頻繁而實時要求較高的情況下。
多數(shù)據(jù)庫系統(tǒng)是一個能夠?qū)崿F(xiàn)對多個異構(gòu)數(shù)據(jù)庫進(jìn)行有效管理的系統(tǒng),它呈現(xiàn)在用戶面前的往往是一個集成度較高的結(jié)構(gòu)而其內(nèi)部又能實現(xiàn)各個異構(gòu)數(shù)據(jù)庫的自治,系統(tǒng)相對比較成熟,然而擴(kuò)展性較差。多數(shù)據(jù)庫系統(tǒng)主要有全局模式和聯(lián)邦數(shù)據(jù)庫系統(tǒng)兩種類型,由于缺乏相應(yīng)的統(tǒng)一標(biāo)準(zhǔn),需要進(jìn)行某些特定的限制條件才能實現(xiàn),其靈活性和通用性比較差。
中間件是一個介于異構(gòu)數(shù)據(jù)庫系統(tǒng)和應(yīng)用程序之間的統(tǒng)一接口,其作用主要是協(xié)調(diào)各數(shù)據(jù)庫系統(tǒng)并且給應(yīng)用程序訪問集成數(shù)據(jù)提供相應(yīng)支持。圖1所示是一個利用中間件技術(shù)實現(xiàn)異構(gòu)數(shù)據(jù)庫訪問的常用模型。
[用戶][數(shù)據(jù)集成和查詢處理器][包裝器][包裝器][包裝器][數(shù)據(jù)庫][數(shù)據(jù)庫][數(shù)據(jù)庫]
圖1基于中間件的異構(gòu)數(shù)據(jù)庫訪問模型
中間件能夠有效地解決異構(gòu)數(shù)據(jù)庫系統(tǒng)中數(shù)據(jù)冗余以及不一致的問題,呈現(xiàn)給用戶的數(shù)據(jù)視圖是一致的,并且可以通過統(tǒng)一的查詢語句實現(xiàn)相關(guān)的應(yīng)用,有效地屏蔽了異構(gòu)數(shù)據(jù)間的差異,集成后的所有數(shù)據(jù)從用戶角度來說都是統(tǒng)一無差異的。基于中間件的異構(gòu)數(shù)據(jù)庫集成方法,根本不需要對原始數(shù)據(jù)的存儲和管理進(jìn)行改變,有效地解決了數(shù)據(jù)同步的問題,同時能夠保證各個異構(gòu)數(shù)據(jù)庫的自治性。目前,中間件技術(shù)是實現(xiàn)對異構(gòu)數(shù)據(jù)庫系統(tǒng)進(jìn)行有效訪問的理想方案[2]。
2 基于Web Services的異構(gòu)數(shù)據(jù)庫中間件
從數(shù)據(jù)庫應(yīng)用的角度來說,網(wǎng)絡(luò)上的每一個節(jié)點中的資源都可以看成是一個數(shù)據(jù)庫,每一個節(jié)點就相當(dāng)于一個數(shù)據(jù)源??梢奍nternet就是一個大型而復(fù)雜的分布異構(gòu)數(shù)據(jù)庫環(huán)境,用傳統(tǒng)的數(shù)據(jù)庫管理系統(tǒng)已經(jīng)難以有效解決分布異構(gòu)數(shù)據(jù)的通訊問題,實現(xiàn)異構(gòu)數(shù)據(jù)集成系統(tǒng)中的互操作,成為解決分布異構(gòu)環(huán)境下數(shù)據(jù)庫訪問的關(guān)鍵問題。
分布式技術(shù)將網(wǎng)絡(luò)上的資源相互連接起來,對外表現(xiàn)為一個統(tǒng)一的整體,對用戶是透明的。面向?qū)ο蠹夹g(shù)通過封裝、繼承、多態(tài)等技術(shù)提供了良好的代碼重用機(jī)制。分布式對象技術(shù)為網(wǎng)絡(luò)計算平臺上軟件的開發(fā)提供了很好的解決方案[3]。目前三大主流分布式對象中間件技術(shù)是,公共對象請求代理體系結(jié)構(gòu)(CORBA)、分布組件對象模式(DCOM)和JAVA企業(yè)應(yīng)用組件技術(shù)(EJB)。表1所示為三種主流分布式對象中間件技術(shù)的比較。
表1三種主流分布式對象中間件技術(shù)的比較
[[接口定義
開發(fā)語言&CORBA&OMG IDL接口支持多語言&DCOM&與C++緊密集成&EJB&JAVA RMI API接口定義&平臺
通信&CORBA&支持異構(gòu)平臺間通信&DCOM&僅限WINDOWS平臺&EJB&幾乎所有OS和WEB服務(wù)
器、瀏覽器&]]
異構(gòu)數(shù)據(jù)集成系統(tǒng)中的互操作,可以利用前面介紹的CORBA、EJB和DCOM等技術(shù)來實現(xiàn),但它們過多地依賴于特定的對象模型,支持特定的通信協(xié)議,而無法在Internet環(huán)境下發(fā)揮作用。利用Web Services具有的完好封裝、松散耦合和規(guī)范協(xié)議高度集成能力等特性,可以對每個數(shù)據(jù)源創(chuàng)建一個Web Service,然后使用WSDL向服務(wù)中心注冊,這樣集成系統(tǒng)就可以向注冊中心發(fā)送查找請求并選擇合適的數(shù)據(jù)源,然后通過SOAP協(xié)議從這些數(shù)據(jù)源獲取數(shù)據(jù)。這種方法很好地解決了分布環(huán)境下異構(gòu)數(shù)據(jù)集成中數(shù)據(jù)通信的問題,具有簡單性、開放性、靈活性、動態(tài)性、高效性、安全性等優(yōu)勢。
3 基于Web Services的分布異構(gòu)數(shù)據(jù)庫訪問系統(tǒng)模型
基于Web Services的中間件給應(yīng)用程序提供了一個訪問分布異構(gòu)數(shù)據(jù)的平臺,通過這一平臺,用戶可以對分布在不同位置的遠(yuǎn)端數(shù)據(jù)源進(jìn)行查詢,實現(xiàn)了多個分布異構(gòu)數(shù)據(jù)的資源共享?;赪eb Services的分布異構(gòu)數(shù)據(jù)庫訪問系統(tǒng)模型如圖2所示。
該模型把整個系統(tǒng)劃分為表示層、應(yīng)用層、中間件層和數(shù)據(jù)層。表示層主要由各種應(yīng)用程序和瀏覽器等各種終端設(shè)備構(gòu)成,用戶通過表示層能夠訪問部署在應(yīng)用層服務(wù)器中的應(yīng)用程序和服務(wù)。應(yīng)用層的主要任務(wù)是實現(xiàn)與用戶的交互,把中間件層返回的合成結(jié)果,根據(jù)用戶的不同需求,以相應(yīng)的格式進(jìn)行包裝后反饋到表示層,用戶根本不需要知道數(shù)據(jù)源所處的位置、數(shù)據(jù)的存儲格式以及具體的數(shù)據(jù)集成環(huán)境,獲得經(jīng)過所需要的中間件層和數(shù)據(jù)層處理后的結(jié)果。
圖2基于Web Services的分布異構(gòu)數(shù)據(jù)庫系統(tǒng)模型
中間件層是整個模型的業(yè)務(wù)處理核心,其主要任務(wù)有,請求服務(wù)、服務(wù)分解、服務(wù)結(jié)果、結(jié)果合成、注冊服務(wù)、服務(wù)引用和服務(wù)管理。該層一般需要先進(jìn)行初始化生成元數(shù)據(jù)。元數(shù)據(jù)相當(dāng)于一個虛擬數(shù)據(jù)庫,是依照服務(wù)管理的要求而產(chǎn)生的。用戶提出某個請求時,由服務(wù)請求分解程序根據(jù)元數(shù)據(jù)中的映射關(guān)系將其分解為一個或多個服務(wù)請求,同時轉(zhuǎn)到相應(yīng)的服務(wù)引用去申請Web Service,由包裝器打包執(zhí)行結(jié)果并傳回到中間件層,經(jīng)服務(wù)結(jié)果程序處理后,再由結(jié)果合成程序形成用戶所要求的形式通過應(yīng)用界面反饋給用戶。
數(shù)據(jù)層主要由各種分布異構(gòu)數(shù)據(jù)庫構(gòu)成。為了能夠高效靈活地集成這些分布異構(gòu)數(shù)據(jù)庫,較好地實現(xiàn)數(shù)據(jù)層與中間件層的通訊,每個數(shù)據(jù)源都有一個Web Service包裝器,對數(shù)據(jù)源進(jìn)行封裝并進(jìn)行代理,注冊相應(yīng)的Web Service。服務(wù)請求者調(diào)用服務(wù)后,服務(wù)管理程序根據(jù)請求執(zhí)行相應(yīng)的服務(wù),然后把執(zhí)行結(jié)果打包以SOAP形式傳輸?shù)街虚g件層。
4 基于Web Services的分布異構(gòu)數(shù)據(jù)庫訪問系統(tǒng)實現(xiàn)過程
結(jié)合上述基于Web Services的分布異構(gòu)數(shù)據(jù)庫訪問系統(tǒng)模型,系統(tǒng)的實現(xiàn)可以劃分為初始化和運行兩個過程,如圖3所示。
[用戶界面][服務(wù)請求分解][服務(wù)引用][服務(wù)請求][分解請求并將請
求轉(zhuǎn)給服務(wù)引用][UDDI(私有)] [Web Service包裝器m][Web Service包裝器n][請求轉(zhuǎn)給相應(yīng)的
Web Services包裝器][數(shù)據(jù)源m][數(shù)據(jù)源m][服務(wù)調(diào)用][服務(wù)調(diào)用][服務(wù)結(jié)果][結(jié)果合成] [結(jié)果處理] [合成結(jié)果]
圖3分布異構(gòu)數(shù)據(jù)庫訪問系統(tǒng)實現(xiàn)過程
初始化過程主要是利用中間件系統(tǒng)實現(xiàn)元數(shù)據(jù)信息的生成。這一過程一般通過中間件管理員和各數(shù)據(jù)庫管理員來完成。中間件管理員負(fù)責(zé)在中間件系統(tǒng)中完成對元數(shù)據(jù)定義的全局描述;各數(shù)據(jù)庫管理員利用本地數(shù)據(jù)源包裝器,負(fù)責(zé)完成相關(guān)私有服務(wù)的發(fā)布和注冊,并通過中間件管理系統(tǒng)實現(xiàn)共享。
用戶經(jīng)應(yīng)用界面進(jìn)行服務(wù)請求,經(jīng)應(yīng)用層的應(yīng)用服務(wù)器提交到中間件層的服務(wù)請求分解程序。服務(wù)請求分解程序根據(jù)元數(shù)據(jù)和各數(shù)據(jù)庫管理員注冊的共享信息,將其分解為多個服務(wù)請求,同時從服務(wù)注冊中心獲得相應(yīng)服務(wù)的信息,通過服務(wù)引用將獲取的信息打包并發(fā)送到相應(yīng)的服務(wù)包裝器。服務(wù)被執(zhí)行后其結(jié)果被打包以SOAP形式發(fā)送給中間件層的服務(wù)結(jié)果程序進(jìn)行結(jié)果合成,生成符合用戶需求的規(guī)范信息返回到應(yīng)用層,同時把最終結(jié)果在表示層上的相應(yīng)界面顯示給用戶。
5 結(jié)束語
本文構(gòu)造的基于Web Services的分布異構(gòu)數(shù)據(jù)庫訪問系統(tǒng),以中間件系統(tǒng)作為數(shù)據(jù)處理的核心,能夠?qū)⒍鄠€分布異構(gòu)數(shù)據(jù)庫中的數(shù)據(jù)集成后以單一的接口返回給用戶。該系統(tǒng)能夠完成有效的分布式數(shù)據(jù)查詢,數(shù)據(jù)源透明并且支持跨平臺檢索。當(dāng)然,本系統(tǒng)在數(shù)據(jù)安全以及查詢優(yōu)化方面考慮還不夠周全,將是我們后期的研究重點。
參考文獻(xiàn):
[1] 聶麗平,張維勇等.分布式異構(gòu)數(shù)據(jù)庫集成技術(shù)的研究與應(yīng)用[J].合肥工業(yè)大學(xué)學(xué)報(自然科學(xué)版),2006.3:309~312
[2] 王越, 楊平利等.一種分布異構(gòu)數(shù)據(jù)庫集成中間件的設(shè)計與實現(xiàn)[J].微電子學(xué)與計算機(jī),2009.7:80~83
[3] 李亞紅,吳江等.基于Web Services實現(xiàn)異構(gòu)數(shù)據(jù)庫集成技術(shù)研究[J]. 計算機(jī)應(yīng)用研究,2006.2:81~83