陳愛(ài)華
(武漢交通職業(yè)學(xué)院,湖北武漢 430065)
隨著Internet應(yīng)用的不斷普及,Internet上連接著各種類型的數(shù)據(jù)庫(kù)系統(tǒng),形成了大量的信息資源庫(kù)。由于種種原因,這些信息資源庫(kù)采用的是不同數(shù)據(jù)模型的數(shù)據(jù)庫(kù),導(dǎo)致數(shù)據(jù)共享比較困難,造成了資源很大的浪費(fèi)。為了共享分布在不同數(shù)據(jù)庫(kù)中的信息資源,Internet的異構(gòu)分布式信息系統(tǒng)正在迅速發(fā)展,最終實(shí)現(xiàn)不同數(shù)據(jù)庫(kù)之間的數(shù)據(jù)信息資源、硬件設(shè)備資源和人力資源的合并和共享,實(shí)現(xiàn)數(shù)據(jù)的共享和透明訪問(wèn)[1~4]。
異構(gòu)數(shù)據(jù)庫(kù)系統(tǒng)是相關(guān)的多個(gè)數(shù)據(jù)庫(kù)系統(tǒng)的集合,可以實(shí)現(xiàn)數(shù)據(jù)的共享和透明訪問(wèn),每個(gè)數(shù)據(jù)庫(kù)系統(tǒng)在加入異構(gòu)數(shù)據(jù)庫(kù)系統(tǒng)之前本身就已經(jīng)存在,擁有自己的DMBS。異構(gòu)數(shù)據(jù)庫(kù)的各個(gè)組成部分具有自身的自治性,在實(shí)現(xiàn)數(shù)據(jù)共享的同時(shí),每個(gè)數(shù)據(jù)庫(kù)系統(tǒng)仍保有自己的應(yīng)用特性、完整性控制和安全性控制。異構(gòu)數(shù)據(jù)庫(kù)系統(tǒng)的異構(gòu)性主要體現(xiàn)在以下幾個(gè)方面:
(1)計(jì)算機(jī)體系結(jié)構(gòu)的異構(gòu),(2)各個(gè)參與的數(shù)據(jù)庫(kù)可以分別運(yùn)行在大型機(jī)、小型機(jī)、工作站、PC或嵌入式系統(tǒng)中,(3)基礎(chǔ)操作系統(tǒng)的異構(gòu),各個(gè)數(shù)據(jù)庫(kù)系統(tǒng)的基礎(chǔ)操作系統(tǒng)可以是Unix、Windows NT、Linux等,(4)DMBS本身的異構(gòu)。所以異構(gòu)數(shù)據(jù)庫(kù)可以是同為關(guān)系型數(shù)據(jù)庫(kù)系統(tǒng)的Oracle、SQL Server等,也可以是不同數(shù)據(jù)模型的數(shù)據(jù)庫(kù),如關(guān)系、模式、層次、網(wǎng)絡(luò)、面向?qū)ο蟆⒑瘮?shù)型數(shù)據(jù)庫(kù)等共同組成一個(gè)異構(gòu)數(shù)據(jù)庫(kù)系統(tǒng)[6][7]。
XML是世界互聯(lián)網(wǎng)協(xié)會(huì)(World Wide Web Consortium,WSC)于 1998年2月頒布。由于XML源自標(biāo)準(zhǔn)通用標(biāo)記語(yǔ)言SGML,XML作為一種可擴(kuò)展的標(biāo)記語(yǔ)言,目前已成為信息描述的事實(shí)標(biāo)準(zhǔn)。XML與其他語(yǔ)言相比,具有明顯的優(yōu)勢(shì),表現(xiàn)在以下四個(gè)方面:①XML可以從HTML中分離數(shù)據(jù),通過(guò)XML,可以在 HTML文件之外存儲(chǔ)數(shù)據(jù)。②XML用于交換數(shù)據(jù),通過(guò)XML,我們可以在不兼容的系統(tǒng)之間交換數(shù)據(jù),將大大減少交換數(shù)據(jù)時(shí)的復(fù)雜性,并且還可以使得這些數(shù)據(jù)被不同的程序讀取。③XML可以用于共享數(shù)據(jù),通過(guò)XML,純文本文件可以用來(lái)共享數(shù)據(jù)。XML也可以用于存儲(chǔ)數(shù)據(jù),利用XML純文本文件可以用來(lái)存儲(chǔ)數(shù)據(jù)。大量的數(shù)據(jù)可以存儲(chǔ)到XML文件中或者數(shù)據(jù)庫(kù)中。應(yīng)用程序可以讀寫(xiě)和存儲(chǔ)數(shù)據(jù)。④XML可以充分利用數(shù)據(jù),XML是與軟件、硬件和應(yīng)用程序無(wú)關(guān)的,所以可以使你的數(shù)據(jù)被更多的用戶、更多的設(shè)備所利用[2,5~6]。
基于XML的優(yōu)勢(shì),下一代的XML數(shù)據(jù)庫(kù)目前是研究的前沿,但由于很多標(biāo)準(zhǔn)還在制定中,而且XML讀取效率較低,所以目前沒(méi)有大規(guī)模應(yīng)用。
Web Service主要是為了使原來(lái)各孤立的站點(diǎn)之間的信息能夠相互通信、共享而提出的一種接口。Web Service所使用的是Internet上統(tǒng)一、開(kāi)放的標(biāo)準(zhǔn),如 H TTP、XML、SOAP(簡(jiǎn)單對(duì)象訪問(wèn)協(xié)議)、WSDL等,所以Web Service可以在任何支持這些標(biāo)準(zhǔn)的環(huán)境(Windows、Linux)中使用。SOAP協(xié)議(Simple Object Access Protocal簡(jiǎn)單對(duì)象訪問(wèn)協(xié)議),它是一個(gè)用于分散和分布式環(huán)境下網(wǎng)絡(luò)信息交換的基于XML的通訊協(xié)議。在SOAP協(xié)議下,軟件組件或應(yīng)用程序能夠通過(guò)標(biāo)準(zhǔn)的HT TP協(xié)議進(jìn)行通訊。它的設(shè)計(jì)目標(biāo)就是簡(jiǎn)單性和擴(kuò)展性,這有助于大量異構(gòu)程序和平臺(tái)之間的互操作性,從而使存在的應(yīng)用程序能夠被用戶廣泛訪問(wèn)[5]。所以Web Service一旦部署以后,其他Web Service應(yīng)用程序可以發(fā)現(xiàn)并調(diào)用它部署的服務(wù)。
基于上述XML和WebService的技術(shù)優(yōu)勢(shì),可以把不同結(jié)構(gòu)的數(shù)據(jù)庫(kù)中的數(shù)據(jù),轉(zhuǎn)換成XM L結(jié)構(gòu)的數(shù)據(jù),通過(guò)HT TP協(xié)議在網(wǎng)絡(luò)中傳輸,接收方可以把收到的XML數(shù)據(jù)進(jìn)行轉(zhuǎn)換,轉(zhuǎn)換成其他方式的數(shù)據(jù)。這樣,在異構(gòu)數(shù)據(jù)系統(tǒng)中實(shí)現(xiàn)了數(shù)據(jù)的透明訪問(wèn),用戶就可以將異構(gòu)分布式數(shù)據(jù)庫(kù)系統(tǒng)看成普通的分布式數(shù)據(jù)庫(kù)系統(tǒng),用自己熟悉的數(shù)據(jù)處理語(yǔ)言去訪問(wèn)數(shù)據(jù)庫(kù),如同訪問(wèn)一個(gè)數(shù)據(jù)庫(kù)系統(tǒng)一樣。
軟件開(kāi)發(fā)環(huán)境,設(shè)置了兩臺(tái)服務(wù)器,一臺(tái)安裝Linux和Oracle10g,另一臺(tái)安裝Window s2003和SQL 2005,在Oracle和SQL 2005數(shù)據(jù)庫(kù)中分別建立一張表DishMenu,兩張表具有相同的結(jié)構(gòu),其中Oracle10g上的有數(shù)據(jù),SQL2005上的是空表。另外還設(shè)置了一臺(tái)編程工作站,使用vs 2008為編程工具。
2.2.1 訪問(wèn)Linux和Oracle平臺(tái)
打開(kāi) VS2008,建立一個(gè) WebService項(xiàng)目DishOrder,并在Web.config文件中配置連接字符串為“Data Source=Linux-Oracle;Initial Catalog=DishDB;Integrated Security=T rue”,表明Linux主機(jī)名為L(zhǎng)inux-Oracle,建立的Oracle數(shù)據(jù)庫(kù)為DishDB。建立一個(gè)WebService服務(wù)接口,代碼如下:

程序運(yùn)行過(guò)程中,輸入要執(zhí)行的SQL語(yǔ)句:SELECT*FROM DishMenu where price=12,作為GetDataView的參數(shù),如圖1所示:

圖1 WebService執(zhí)行
相應(yīng)的SOAP協(xié)議表現(xiàn)為:
SOAP 1.2
以下是SOAP 1.2請(qǐng)求和響應(yīng)示例。所顯示的占位符需替換為實(shí)際值。



可以看得出來(lái),執(zhí)行的結(jié)果是一個(gè)XM L樹(shù)型結(jié)構(gòu),包括2條記錄,記錄的字段名分別為:ID、Name、Price、Type、Peppery、rowguid 6 個(gè)關(guān)鍵字,值分別在對(duì)應(yīng)的關(guān)鍵字標(biāo)記里。
2.2.2 轉(zhuǎn)換成異構(gòu)數(shù)據(jù)
由圖2可見(jiàn),SQL語(yǔ)句在Linux+Oracle平臺(tái)上執(zhí)行的結(jié)果,已經(jīng)轉(zhuǎn)換成了XML樹(shù)型結(jié)構(gòu),下面要做的是把XML結(jié)構(gòu)的數(shù)據(jù)保存到Windows2003+SQL 2005數(shù)據(jù)庫(kù) DishMenu表中。為此,添加一個(gè)GrideView控件,在數(shù)據(jù)源中選擇“XML”文件,添加2.2.1中SQL語(yǔ)句執(zhí)行的XML結(jié)果,XML結(jié)構(gòu)的數(shù)據(jù)成功的綁定到GridView控件,如圖2所示。

圖2 XML數(shù)據(jù)綁定到控件
XML數(shù)據(jù)成功綁定到GridView控件后,可以為GridView控件添加自動(dòng)更新事件,事件執(zhí)行的結(jié)果是把GrideView中的數(shù)據(jù)插入到SQL2005數(shù)據(jù)庫(kù)中相應(yīng)的表中,當(dāng)然事先要在SQL2005中增加一張與DishMenu的結(jié)構(gòu)一樣的表,否則更新數(shù)據(jù)不能成功。最后看到SQL2005中更新的數(shù)據(jù)如圖3所示,在SQL2005中輸入:SELECT*FROM DishMenu where(price=12),執(zhí)行SQL語(yǔ)句,結(jié)果正好是XML結(jié)構(gòu)中的數(shù)據(jù),也與在Oracle中執(zhí)行的結(jié)果相同。

圖3 SQL2005中SQL執(zhí)行結(jié)果
如何讓用戶透明使用異構(gòu)信息資源庫(kù),達(dá)到資源最大共享,是目前信息資源共享的一個(gè)重大阻力,為了解決這個(gè)問(wèn)題,文中 SELECT*FROM DishMenu where price=12 SQL語(yǔ)句,把在 Linux平臺(tái)上的 Oracle中的數(shù)據(jù),通過(guò)WebService的調(diào)用,執(zhí)行生存一個(gè)XML樹(shù)型結(jié)果,然后把XML中保存的結(jié)果放入GrideView控件中。通過(guò)GrideView控件的自動(dòng)更新事件,把數(shù)據(jù)保存到Windows平臺(tái)上的SQL2005數(shù)據(jù)庫(kù)中。最后在SQL2005中執(zhí)行相同的SQL語(yǔ)句,得到的結(jié)果與保存在XML中的數(shù)據(jù)相同。這說(shuō)明,使用XML和WebService可以實(shí)現(xiàn)不同平臺(tái)下的不同數(shù)據(jù)庫(kù)之間的數(shù)據(jù)交換。
1 劉淑梅.基于XML的異構(gòu)數(shù)據(jù)庫(kù)集成技術(shù)研究[J].衡水學(xué)院學(xué)報(bào),2008(2):1-2.
2 巫丹丹,李冠宇,于水明.面向服務(wù)的Web異構(gòu)數(shù)據(jù)集成體系結(jié)構(gòu)研究[J].計(jì)算機(jī)與數(shù)字工程,2007(8):2-3.
3 俞 勇,蔣烈輝.基于Web Service的醫(yī)療保險(xiǎn)系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)與現(xiàn)代化,2009(02):26-30.
4 胡 澤,廖聞劍,彭艷兵.WebService技術(shù)研究及應(yīng)用[J].硅谷,2009(5):48.
5 吳 迪,陳鋼.新一代的Web Services技術(shù)[J].計(jì)算機(jī)應(yīng)用研究,2003,(03).Vol.5,No.7,March 2009:1644-1646
6 張 潔,盧德唐.異構(gòu)數(shù)據(jù)集成方案的優(yōu)化設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)輔助工程,2008(3):2-4.
7 關(guān) 輝.異構(gòu)數(shù)據(jù)庫(kù)間數(shù)據(jù)交換技術(shù)研究與實(shí)現(xiàn)[M].數(shù)據(jù)庫(kù)及信息管理,2007(5):1-3.