【摘要】:針對目前異構數據庫間數據訪問的問題,提出了種基于XML的數據交換技術。研究了XML模式與關系模式相互轉換的方法,討論了XML數據的關系存儲以及XML與關系數據庫的映射策略,分析了基于不同映射的數據轉換的可行性。
【關鍵詞】:XML;關系數據庫;映射
1 引言
隨著計算機網絡和數據庫系統的迅速發展的同時,由于數據庫技術本身的發展和數據庫市場的變化,造成了各種數據庫并存的局面。越來越多的應用需要在異構數據源之間進行訪問,XML技術便應運而生。然而,目前大部分應用的數據存儲在關系數據庫中,XML數據又以XML文檔形式存在,因此,研究XML文檔與關系數據庫的轉換對異構數據源之間的數據集成非常重要。
2 XML與關系數據庫的比較
傳統的關系數據庫建立在數據庫管理系統基礎上,由于各數據庫管理系統之間的異構性及其所依賴操作系統的異構性,很難實現在異構數據庫之間進行通信,同時對關系數據庫的訪問還依賴于系統對ODBC的支持程度。而利用XML文檔,開發人員可以編碼任何關系數據庫中的面向記錄的數據,并很好地保持這些數據的邏輯結構,甚至可以根據實際應用的需要更改這些數據的邏輯結構。同時,XML文檔具有透明性和平臺無關性,獨立于傳輸協議,可以使用FTP、HTTP、RPC 等多種方式傳輸。
但是,XML作為一種形式語言,以文本的形式對數據進行描述,存在管理和檢索上的困難,仍然無法完全取代數據庫。首先,數據庫具有靈活而高效率的數據操作手段,可以處理海量的數據信息。就XML文檔而言,目前主要通過XML解析器提供的API來實現對文檔數據的訪問,但隨著XML文檔的數據量增大,這種方法的效率明顯不如訪問數據庫的效率高,而且XML文檔數據的維護也更加困難。其次,從并發性來說,目前對XML文檔的訪問不具備并發性。最后,從安全性來說,數據庫擁有一個很好的安全控制體系,允許用戶對數據進行不同級別的處理,而這也是XML文檔所不具備的。
3 XML數據的關系存儲
XML數據源有XML純文本文檔、關系型數據庫以及其他應用數據幾類。針對于XML具體應用,在存儲XML文檔的數據庫技術上,形成了兩大陣營。一種陣營主張在原有的傳統關系數據庫基礎上,通過擴展XML支持模塊或中間件,來完成XML數據和數據庫之間的格式轉換和傳輸;另一種陣營主張利用NXD技術來解決XML文檔的存儲管理。利用關系數據庫來存儲XML數據的方法是XML半結構數據轉換為結構化數據后存儲于二維表中,來實現對XML數據的存儲和管理。由于XML和關系數據庫數據模式的互異性,不能簡單地將XML文檔存儲于關系數據表中,為了實現在XML文件和數據庫之間交換數據,必須提供一個XML映射層,將XML文檔模式(DTD、XML Schema)映射到關系數據庫模式。
4 XML與關系數據庫的映射方法
一個具體的XML模式到關系模式的數據轉換,需要涉及較為復雜的XML格式分析處理及相應的數據庫操作和有效性校驗。兩者之間的映射為雙向映射,根據映射關系的建立方式不同,主要存在以下兩種方法:基于模板驅動的映射和基于模型驅動的映射。
4.1 基于模板驅動的映射
XML文檔包含簡單元素和復雜元素兩類,簡單元素包含的內容是不具層次結構的簡單內容,而復雜元素可包含屬性、子元素,還可以包含多個子元素,其中子元素還可以是復雜元素。基于模板驅動的轉換方法是一種淺層映射,只能用于從其他類型數據到XML文檔之間的數據傳遞,并不支持面向對象之間或者關系與對象之間的信息交互,它無需提前定義好XML文檔和其他數據之間的映射,只需在XML文檔模板中嵌入一些SQL命令,這些命令在轉換時被系統識別和執行,把執行的結果替換到指令的位置,生成最終的XML文檔即可。
具體的規則算法是:第一,簡單元素直接映射成表的列。第二,復雜元素映射成數據表,對其包含的屬性進行分類處理,若是簡單子元素按映射第一規則處理,若是復雜子元素則形成此子元素引用,然后將此引用看作簡單元素映射為父元素形成的數據表的列。第三,對復雜子元素形成的引用,重復第一、第二規則,直到所有表的列均是由簡單元素映射而成。
同理,可以得到從關系數據庫到XML文檔的映射規則算法。
4.2 基于模型驅動的映射
基于模型驅動的映射是一種深層映射,是模式和模式之間的映射。當把數據從數據庫傳送到XML文檔或把數據從XML文檔傳送到數據庫時,需要用一個具體的模型來實現,而不是僅僅依賴內嵌SQL命令,關系數據庫的理論依據是關系模型,而XML文檔依據的是XML Schema和DTD。基于模型驅動實現數據在關系數據庫和XML文檔間的雙向傳輸關鍵是在關系模式和DTD或XML Schema之間建立雙向映射。
具體的思路是把一個XML文檔表示為由數據對象構成的樹,每一個元素類型和對象模式中的對象相對應,再通過傳統的關系—對象模型映射到關系模式中。在XML文檔中的數據有兩個公共的模型,即表模型和對象模型。表模型是基于表的映射,許多中間件包在轉換XML文檔成關系數據庫數據所使用的模型,就是將XML文檔當成一個單獨的表對象或一系列表對象。對象模型是基于對象—關系的映射,在這種模型下,元素通常對應了一個對象或屬性或PCDATA(PCDATA表示已解析字符數據,在這里指不需再解析的最小數據單元)對象。它將XML文檔用一棵對象樹來表示。
5 結束語
XML是一個數據表示的開放標準,其特點使得它在數據和信息管理、數據交換、應用集成等方面有著重要用途。不論是從用戶和開發者的角度,還是從利用關系技術的事務管理、數據存儲、安全功能等方面考慮,都應該充分研究XML與關系數據庫的數據轉換問題,建立完全支持XML數據存儲和數據管理的關系數據庫數據產品,為進一步解決異構數據源集成問題提供切實的理論和實踐依據。
參考文獻:
[1] 盧菊平, 郭江杰. 精通JSP+ XML + CSS網絡開發混合編程. 北京: 電子工業出版社, 2006.
[2] 龔紅焱, 劉奕明, 陳涵生. XML與數據庫結合技術的探討[J]. 計算機工程, 2005, 31(4): 1142116.
[3] 婁家星. 淺析數據庫與XML的結合[J]. 信息技術與信息化, 2006(4): 1092111.
[4] 黎東華. XML數據存儲模式的研究[J]. 計算機與現代化, 2006(11):108- 112.
[5] 郭瑞華. XML數據的存儲策略研究[J]. 現代圖書情報技術, 2005(6): 65- 69