摘要:隨著Internet上連有越來越多的異構數據庫系統,這就導致數據共享比較困難,造成了資源的極大浪費。本文建立了兩種異構數據庫平臺,闡述了使用XML和WebService實現異構數據庫存取數據的原理,最后實現了異構數據庫中表之間數據交換,為異構數據庫之間數據共享提供了技術支持。
關鍵詞:異構數據庫;XML;WebService
1 前言
隨著Internet應用的不斷普及,Internet上連接著各種類型的數據庫系統,形成了大量的信息資源庫。由于種種原因,這些信息資源庫采用的是不同數據模型的數據庫,導致數據共享比較困難,造成了資源很大的浪費。為了共享分布在不同數據庫中的信息資源,Internet的異構分布式信息系統正在迅速發展,最終實現不同數據庫之間的數據信息資源、硬件設備資源和人力資源的合并和共享,實現數據的共享和透明訪問[1][2][6][7]。
2 異構數據庫和XML的優勢
2.1 異構數據庫
異構數據庫系統是相關的多個數據庫系統的集合,可以實現數據的共享和透明訪問,每個數據庫系統在加入異構數據庫系統之前本身就已經存在,擁有自己的DMBS。異構數據庫的各個組成部分具有自身的自治性,在實現數據共享的同時,每個數據庫系統仍保有自己的應用特性、完整性控制和安全性控制。異構數據庫系統的異構性主要體現在以下幾個方面:
(1)計算機體系結構的異構;(2)各個參與的數據庫可以分別運行在大型機、小型機、工作站、PC或嵌入式系統中;(3)基礎操作系統的異構,各個數據庫系統的基礎操作系統可以是Unix、Windows NT、Linux等;(4)DMBS本身的異構。所以異構數據庫可以是同為關系型數據庫系統的Oracle、SQL Server等,也可以是不同數據模型的數據庫,如關系、模式、層次、網絡、面向對象,函數型數據庫等共同組成一個異構數據庫系統[6][7]。
2.2 XML技術優勢
XML是世界互聯網協會(World Wide Web Consortium,WSC)于1998年2月頒布。由于XML源自標準通用標記語言SGML,XML作為一種可擴展的標記語言,目前已成為信息描述的事實標準。XML與其他語言相比,具有明顯的優勢,表現在以下四個方面:(1)XML可以從HTML中分離數據,通過XML,可以在HTML文件之外存儲數據;(2)XML用于交換數據,通過XML,我們可以在不兼容的系統之間交換數據,將大大減少交換數據時的復雜性,并且還可以使得這些數據能被不同的程序讀取;(3)XML可以用于共享數據,通過XML,純文本文件可以用來共享數據,XML也可以用于存儲數據,利用XML純文本文件可以用來存儲數據,大量的數據可以存儲到XML文件中或者數據庫中,應用程序可以讀寫和存儲數據;(4)XML可以充分利用數據,XML是與軟件、硬件和應用程序無關的,所以可以使你的數據可以被更多的用戶、更多的設備所利用[2][3][4]。
基于XML的優勢,下一代的XML數據庫目前是研究的前沿,但由于很多標準還在制定中,而且XML讀取效率較低,所以目前沒有大規模應用。
2.3 WebService優勢
Web Service主要是為了使原來各孤立的站點之間的信息能夠相互通信、共享而提出的一種接口。Web Service所使用的是Internet上統一、開放的標準,如HTTP、XML、SOAP(簡單對象訪問協議)、WSDL等,所以Web Service可以在任何支持這些標準的環境(Windows、Linux)中使用。SOAP協議(Simple Object Access Protocal簡單對象訪問協議),它是一個用于分散和分布式環境下網絡信息交換的基于XML的通訊協議。在SOAP議下,軟件組件或應用程序能夠通過標準的HTTP協議進行通訊。它的設計目標就是簡單性和擴展性,這有助于大量異構程序和平臺之間的互操作性,從而使存在的應用程序能夠被廣泛的用戶訪問[3]。所以Web Service一旦部署以后,其他Web Service應用程序可以發現并調用它部署的服務。
3 實現過程
3.1 原理和開發環境
基于上述XML和WebService的技術優勢,可以把不同結構的數據庫中的數據,轉換成XML結構的數據,通過HTTP協議在網絡中傳輸,接收方可以把收到的XML數據進行轉換,轉換成其他方式的數據。這樣,在異構數據系統中實現了數據的透明訪問,用戶就可以將異構分布式數據庫系統看成普通的分布式數據庫系統,用自己熟悉的數據處理語言去訪問數據庫,如同訪問一個數據庫系統一樣。
軟件開發環境,設置了兩臺服務器,一臺安裝Linux和Oracle10g,另一臺安裝Windows2003和SQL 2005,在Oracle和SQL 2005數據庫中分別建立一張表DishMenu,兩張表具有相同的結構,其中Oracle10g上的有數據,SQL2005上的是空表。另外還設置了一臺編程工作站,使用vs 2008為編程工具。
3.2 WebService編程
3.2.1 訪問Linux和Oracle平臺
打開VS2008,建立一個WebService項目DishOrder,并在Web.config文件中配置連接字符串為“Data Source=Linux-Oracle; Initial Catalog=DishDB; Integrated Security=True”,表明Linux主機名為Linux-Oracle,建立的Oracle數據庫為DishDB。建立一個WebService服務接口,代碼如下:
[WebMethod]
public DataTable GetDataView(string sql)
{SqlCommand sqlcomm = new SqlCommand(sql, conn);
conn.Open();//打開數據庫連接
SqlDataReader dr = sqlcomm.ExecuteReader();//執行SQL語句
DataTable table = new DataTable();
table.Load(dr);
return table; //返回結果類型為Table }
程序運行過程中,輸入要執行的SQL語句:SELECT * FROM DishMenu where price = 12,作為GetDataView的參數,如圖1所示:

相應的SOAP協議表現為:
SOAP 1.2
以下是 SOAP 1.2 請求和響應示例。所顯示的占位符需替換為實際值。
POST /DishSrvs/DishService.asmx HTTP/1.1
Host: localhost
Content-Type: application/soap+xml; charset=utf-8
Content-Length: length
HTTP/1.1 200 OK
Content-Type: application/soap+xml; charset=utf-8
Content-Length: length
單擊“調用”按鈕,SQL語句執行,得到的結果為:
可以看出,執行的結果是一個XML樹型結構,包括2條記錄,記錄的字段名分別為:ID、Name、Price、Type、Peppery、rowguid 6個關鍵字,值分別在對應的關鍵字標記里。
3.2.2 轉換成異構數據
由上面的結果可以看到,SQL語句在Linux+Oracle平臺上執行的結果,已經轉換成了XML樹型結構,下面要做的是把XML結構的數據保存到Windows2003+SQL 2005數據庫DishMenu表中。為此,添加一個GrideView控件,在數據源中選擇“XML”文件,添加3.2.1中SQL語句執行的XML結果,XML結構的數據成功的綁定到GridView控件,如圖2所示。

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

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