摘? 要: 基于Web Service的框架為多數(shù)據(jù)系統(tǒng)提出了一種新的分布式體系結(jié)構(gòu)。該系統(tǒng)可擴展到Internet,并且具有松耦合、跨平臺、語言無關(guān)、與特定服務(wù)無關(guān)等特點。
關(guān)鍵詞: Web Service程序? 多數(shù)據(jù)庫? SOAP消息
?
隨著數(shù)據(jù)庫技術(shù)和網(wǎng)絡(luò)技術(shù)的發(fā)展,人們對數(shù)據(jù)資源共享的要求越來越高。在實際應(yīng)用領(lǐng)域中,需要將分布在同一網(wǎng)絡(luò)甚至不同網(wǎng)絡(luò)中的異構(gòu)數(shù)據(jù)庫系統(tǒng)中的數(shù)據(jù)進(jìn)行集成和共享。
多數(shù)據(jù)庫系統(tǒng)(MDBS)是多個已存的、自治的、異構(gòu)的數(shù)據(jù)庫系統(tǒng)的聯(lián)合。參與構(gòu)成多數(shù)據(jù)庫系統(tǒng)的各數(shù)據(jù)庫系統(tǒng)稱為局部或成員數(shù)據(jù)庫系統(tǒng)(LDBS)。局部數(shù)據(jù)庫分布在網(wǎng)絡(luò)的不同節(jié)點上。多數(shù)據(jù)庫系統(tǒng)在所有局部數(shù)據(jù)庫系統(tǒng)之上構(gòu)成全局系統(tǒng)管理層,提供外部用戶接口,使用戶能實現(xiàn)對異種數(shù)據(jù)庫的透明訪問。多數(shù)據(jù)庫系統(tǒng)屏蔽了不同數(shù)據(jù)庫在物理上和邏輯上的差異,從而滿足人們對數(shù)據(jù)資源共享的要求。
目前,對于異構(gòu)系統(tǒng)的集成和通信有多種理論和技術(shù)方案,比較主流的是微軟的DCOM/COM和.NET、Sun的Java以及OMG的CORBA。但是,基于這些技術(shù)的架構(gòu)在互聯(lián)互通方面存在較大缺陷,需要構(gòu)建專門的通信組件來實現(xiàn)它們之間的通信。
Web Service是新一代的面向服務(wù)的分布式計算模型?;诖四P?本文提出了一種新的多數(shù)據(jù)庫體系結(jié)構(gòu),并且在自行設(shè)計的多數(shù)據(jù)系統(tǒng)Panorama上進(jìn)行了部分原型實現(xiàn),論證了該種設(shè)計的可行性。
1?Web Service概述
Web Service是一種新型的Web應(yīng)用程序,是自適應(yīng)、自我描述、模塊化的應(yīng)用程序。這些應(yīng)用程序可以跨越Web進(jìn)行發(fā)表、定位和調(diào)用。Web Service解決了不同平臺之間、不同程序間的交互,相當(dāng)于一個集成中間件平臺。通常,Web Service基于幾種通用標(biāo)準(zhǔn):UDDI(Universal Discovery,Description,Integration)提供了一種讓客戶端動態(tài)發(fā)布和查找 Web Service的機制;WSDL(Web Service Description Language)描述Web Service的功能及接口,為發(fā)布和查找Web Service提供支持;SOAP(Simple Object Access Protocol)提供了一種在無中心分布式的環(huán)境中使用XML交換結(jié)構(gòu)化數(shù)據(jù)的簡單輕量級通信機制。
2?基于Web Service的多數(shù)據(jù)庫系統(tǒng)參考模型WSD-RM
WSD-RM基于Web Service進(jìn)行構(gòu)建,所以模型構(gòu)建的重點是如何架構(gòu)服務(wù)層次、如何定義具體的服務(wù)以及如何使定義的服務(wù)互操作能組成有效的服務(wù)鏈。
2.1 架構(gòu)WSM-RM模型的服務(wù)模型
圖1從系統(tǒng)服務(wù)層次間通信的情況描述了基于Web Service的多數(shù)據(jù)庫參考模型WSM-RM的體系結(jié)構(gòu)。該體系結(jié)構(gòu)主要由三個層次構(gòu)成:服務(wù)提供者、服務(wù)請求者和服務(wù)代理。服務(wù)提供者作為服務(wù)的提供方,發(fā)布處于服務(wù)代理中的具體服務(wù)(如操作方式、網(wǎng)絡(luò)資源等)的描述信息。服務(wù)請求者作為請求服務(wù)的客戶端,向服務(wù)代理發(fā)出請求,查詢所需服務(wù)的描述信息,得到返回的相關(guān)服務(wù)信息后,向服務(wù)提供者請求相應(yīng)的服務(wù)。服務(wù)代理注冊服務(wù)相關(guān)信息,為服務(wù)請求者提供服務(wù)相應(yīng)的信息。
?
?
服務(wù)提供者用WSDL描述WSM-RM體系中各項服務(wù)的相關(guān)操作特性及接口。每一項操作都可能具備四種操作狀態(tài):
(1)單向狀態(tài):該種狀態(tài)下服務(wù)只單項接收消息。
(2)通知狀態(tài):這種狀態(tài)下服務(wù)發(fā)送消息。
(3)請求—回應(yīng)狀態(tài):服務(wù)接收消息,并返回相應(yīng)的結(jié)果。
(4)懇求—回應(yīng)狀態(tài):服務(wù)發(fā)送消息,接收相應(yīng)的返回消息。
多數(shù)據(jù)庫系統(tǒng)服務(wù)池作為具體的服務(wù)集存在于WSM-RM中。它接收來自服務(wù)請求的服務(wù)請求并將這一請求推送至服務(wù)提供者。服務(wù)提供者對請求進(jìn)行一定的檢查(如權(quán)限檢查等)后將這一請求轉(zhuǎn)化為以WSDL描述的標(biāo)準(zhǔn)服務(wù)激起服務(wù)池中的相應(yīng)服務(wù)鏈,最后把結(jié)果集返回給服務(wù)請求者。
WSM-RM體系中各項服務(wù)的通信基于SOAP消息。由于SOAP基于XML的消息機制,并且使用諸如HTTP、SMTP這樣的標(biāo)準(zhǔn)協(xié)議族,所以SOAP天生具有跨平臺、語言無關(guān)等特性。但是SOAP也存在缺陷:XML的機制使得消息體冗長龐大;HTTP協(xié)議使得網(wǎng)絡(luò)傳輸效率低下;SOAP目前只定義了諸如String、Int等簡單數(shù)據(jù)類型,對復(fù)雜數(shù)據(jù)類型的支持還有待完善。
2.2 組織WSM-RM模型的服務(wù)
從WSM-RM模型的服務(wù)模型中可以看出,其根本的功能是服務(wù)。如何定義基礎(chǔ)的服務(wù)、尤其是如何使這些基礎(chǔ)的服務(wù)合同協(xié)作,有機地組合成“復(fù)合”的服務(wù)(有效服務(wù)鏈)是該模型需要解決的問題。
定義基礎(chǔ)服務(wù)集實質(zhì)上是一個需求分析的過程,它涉及到軟件工程的問題,限于篇幅,本文恕不贅述。根據(jù)用戶的需求和系統(tǒng)本身功能的需要,該模型定義了二類基礎(chǔ)服務(wù)集:管理類服務(wù)集和事物類服務(wù)集。管理類服務(wù)集包括四項基礎(chǔ)服務(wù):模式信息管理服務(wù)、查詢優(yōu)化服務(wù)、全局查詢管理服務(wù)、全局事務(wù)管理服務(wù)。事物類服務(wù)集包括四項服務(wù):查詢事務(wù)服務(wù)、更新事務(wù)服務(wù)、刪除事務(wù)服務(wù)和創(chuàng)建事務(wù)服務(wù)。
WSM-RM為了解決基礎(chǔ)服務(wù)的互操作問題,定義了有效服務(wù)規(guī)則:通過比較服務(wù)的語義特點(服務(wù)的具體內(nèi)容)和語法特點(服務(wù)操作狀態(tài))來決定是否可以把服務(wù)添加到有效服務(wù)鏈中以組成復(fù)合服務(wù)。下面重點介紹根據(jù)語義特點進(jìn)行服務(wù)組合的方法。
????Web服務(wù)潛在的語義對檢察有效服務(wù)至關(guān)重要。目前,對Web服務(wù)進(jìn)行描述的WSDL語言幾乎不支持語義描述,但是有研究人員提出用實體的概念來描述Web服務(wù)的語義。本文將用此概念來描述Web服務(wù)的語義并進(jìn)行擴展。
根據(jù)詞在語義上的同義性對實體進(jìn)行分類。服務(wù)操作可以定義為二類實體:范疇(Category)和類別(Type)。每一項服務(wù)操作包含二個成員實體,一個屬于范疇實體,另一個屬于類別實體。服務(wù)提供者確定服務(wù)操作和這二個實體的關(guān)系并且對每一項服務(wù)操作進(jìn)行初始化。
范疇的成員實體包含三個屬性:名字(Name)、同義詞(Synonyms)和細(xì)述(Specification)。名字屬性給出當(dāng)前操作的主題域名,例如數(shù)據(jù)、模式等。同義詞屬性給出當(dāng)前操作影響域的同義替換域名,例如數(shù)字、數(shù)值等可以作為數(shù)據(jù)的同義詞。細(xì)述屬性定義當(dāng)前范疇實體的特征集,例如數(shù)據(jù)庫、模式、表等可以作為數(shù)據(jù)實體的細(xì)述。
類型的成員實體同樣包含名字、同義詞和細(xì)述三個屬性。名字屬性描述當(dāng)前服務(wù)操作提供的具體服務(wù),例如查詢、更新等;其他二個屬性和范疇實體的成員屬性相同。
對Web服務(wù)進(jìn)行語義描述后,服務(wù)之間的互操作問題轉(zhuǎn)化為服務(wù)操作的范疇和類型是否兼容、是否存在包含關(guān)系的問題。下面定義服務(wù)之間的兼容性。
假設(shè)有二種服務(wù)操作opi和opj,若滿足以下條件,則稱Category(opi)與Category(opj)兼容:
第一個條件檢驗opi和opj的主題域是否相同或相似。第二個條件檢驗opi是否提供opj范疇實體的所有特征集。同理也可以定義Type(opi)與Type(opj)的兼容規(guī)則?;诖?這里定義服務(wù)的語義組合規(guī)則:如果服務(wù)操作滿足相應(yīng)的范疇兼容和類型兼容,則認(rèn)為相應(yīng)的服務(wù)在語義上是可以組合的。
2.3 WSM-RM模型的體系結(jié)構(gòu)
圖2為WSM-RM模型的體系結(jié)構(gòu)圖。WSM-RM模型可以分為五個層次:局部數(shù)據(jù)源層、局部代理層、基礎(chǔ)服務(wù)層、復(fù)合服務(wù)層和全局管理層。
?
?
全局管理層中包括幾個組件:請求處理器、服務(wù)組織管理器、服務(wù)定位器、服務(wù)匹配器和服務(wù)優(yōu)化器。請求處理器接收來自用戶的請求并進(jìn)行處理;服務(wù)組織管理器根據(jù)經(jīng)處理的請求和收集到的關(guān)于服務(wù)的信息定制服務(wù)計劃并將計劃推送到服務(wù)匹配器;服務(wù)匹配器根據(jù)“有效服務(wù)”規(guī)則檢查服務(wù)計劃是否有效可行,然后將檢查通過的服務(wù)計劃送至服務(wù)優(yōu)化器,對服務(wù)計劃進(jìn)行優(yōu)化后返回至服務(wù)匹配器;服務(wù)定位器接收來自服務(wù)匹配器的服務(wù)計劃,通過查詢位于服務(wù)代理中的WSDL描述定位所需的服務(wù),將結(jié)果服務(wù)計劃集返回給請求處理器;請求處理器根據(jù)服務(wù)計劃調(diào)用相應(yīng)的復(fù)合服務(wù)或基礎(chǔ)服務(wù)。
復(fù)合服務(wù)層定義了多個復(fù)合服務(wù)。復(fù)合服務(wù)實質(zhì)上是滿足有效服務(wù)規(guī)則的若干服務(wù)計劃。為了提高服務(wù)效率,使請求處理器不需每次按照服務(wù)計劃在基礎(chǔ)服務(wù)層提取相應(yīng)的服務(wù),復(fù)合服務(wù)層事先根據(jù)用戶需求定義好若干服務(wù)計劃供請求處理器調(diào)用,同時根據(jù)一定邏輯規(guī)則將新的服務(wù)計劃加入其中。由于復(fù)合服務(wù)層相當(dāng)于一個服務(wù)緩沖區(qū),容量有限,因此需要對服務(wù)定義優(yōu)先級,以決定其是否應(yīng)該留在復(fù)合服務(wù)層中。優(yōu)先級的級別可以用通常的FIFO(First In First Out)原則或者LRU(Last Recently Used)原則排隊。
基礎(chǔ)服務(wù)層定義了滿足用戶需求的所有基礎(chǔ)服務(wù)?;A(chǔ)服務(wù)包含事物類服務(wù)和管理類服務(wù)。
局部數(shù)據(jù)源層定義了若干局部數(shù)據(jù)庫,后者是已存的、自治的、異構(gòu)的數(shù)據(jù)庫系統(tǒng),有各自的模式信息和數(shù)據(jù)結(jié)構(gòu)。在局部代理層根據(jù)局部數(shù)據(jù)源的數(shù)量定義了相應(yīng)數(shù)量的局部代理。后者一方面提取局部數(shù)據(jù)源的數(shù)據(jù)信息、模式信息等為上層服務(wù),另一方面也接受來自上層的數(shù)據(jù)請求信息并轉(zhuǎn)發(fā)至下層。局部代理提取的各項關(guān)于局部數(shù)據(jù)源的信息經(jīng)過包裝器作用后成為統(tǒng)一可用的數(shù)據(jù),為各項基礎(chǔ)服務(wù)提供數(shù)據(jù)來源。
2.4 WSM-RM模型的特點
WSM-RM模型充分利用了Web Service規(guī)范面向服務(wù)的特點,將局部數(shù)據(jù)庫通過局部代理和包裝器封裝成若干Web Service服務(wù),對外提供基本的數(shù)據(jù)操縱、事務(wù)處理等服務(wù)。任何數(shù)據(jù)庫系統(tǒng)只要設(shè)計出相應(yīng)的局部代理和包裝器,并且進(jìn)行適當(dāng)?shù)臄?shù)據(jù)集成,提供相應(yīng)的模式信息,就可以加入到基于WSM-RM的多數(shù)據(jù)庫系統(tǒng)。該系統(tǒng)甚至可以集成文件系統(tǒng)、Web網(wǎng)頁等。在這里局部代理和包裝器起了至關(guān)重要的作用:屏蔽了具體數(shù)據(jù)源的差異,對上層呈現(xiàn)統(tǒng)一的接口。不同的局部數(shù)據(jù)庫配備不同的局部代理,在處理局部查詢時并行執(zhí)行,提高了系統(tǒng)的效率。另外,還可以根據(jù)需要通過增添或者卸載某些Web服務(wù)來加入、替換或升級所需的功能,使系統(tǒng)具有良好的伸縮性。由于Web Service協(xié)議棧的最底層是網(wǎng)絡(luò)層,該層可表示任意多個網(wǎng)絡(luò)協(xié)議,如HTTP、FTP、SMTP、消息隊列(Message Queuing)、因特網(wǎng)ORB間協(xié)議(Internet Inter ORB Protocol,IIOP)上的遠(yuǎn)程方法調(diào)用(Remote Method Invocation,RMI)等。因此可以根據(jù)不同的需求來選擇網(wǎng)絡(luò)技術(shù),包括安全性、可用性以及可靠性,從而使Web Service具有良好的可擴展性。
由于WSM-RM模型基于Web Service規(guī)范,因此Web Service尤其是SOAP實現(xiàn)的性能直接影響系統(tǒng)的性能。
3? 結(jié)束語
如何將Web Service技術(shù)和多數(shù)據(jù)庫相結(jié)合,研究和開發(fā)出具有松耦合、跨平臺、語言無關(guān)、與特定服務(wù)無關(guān)并且可擴展到Internet的多數(shù)據(jù)庫系統(tǒng)已成為目前Internet和數(shù)據(jù)庫技術(shù)研究領(lǐng)域交叉的一個新的發(fā)展方向。本文提出的基于Web Service框架的多數(shù)據(jù)系統(tǒng)體系結(jié)構(gòu),克服了傳統(tǒng)多數(shù)據(jù)庫體系結(jié)構(gòu)的不足,充分利用了基于面向服務(wù)的Web Service分布式計算模型的優(yōu)勢,具有良好的擴展性、伸縮性、易維護(hù)性等特點。
在研究中發(fā)現(xiàn),作為Web Service底層通信協(xié)議的SOAP,盡管與它的前輩DCOM和CORBA等比較起來有良好的伸縮性、互操作性等優(yōu)勢,但是這些優(yōu)勢在某種程度上是以效率相對低下來換取的,這對于科學(xué)計算和海量數(shù)據(jù)操作等應(yīng)用來說是致命問題。未來的工作將集中在SOAP協(xié)議的研究上,探索其作為通信協(xié)議效率低下的原因以及對SOAP的改進(jìn)技術(shù)。
?
參考文獻(xiàn)
1?uddi.org.UDDI Technical White Paper,2000.http://www.uddi.org
2?Christensen E.Web Services Description Language(WSDL) 1.0.IBM/Microsoft Joint Working Document. http://www4.ibm.com/software/developer/library/wwsdl.html?dwzone=web/,2000
3?Mitra.N.Simple Object Access Protocol(SOAP) 1.2.W3C?working draft,2002;6