XML資料庫:最新進展和發展方向
08-09
雖然學術界和工業界對XML資料庫的研究和開發並不完全一致,但是兩者的目標卻非常相似:解決現有問題,擴展應用領域。1.學術界與工業界的兩種不同索求Ronald Bourret 在他那篇著名的《XML Database Products》中,將XML資料庫產品分為中間件(Middleware)、支持XML的資料庫(XML-Enabled Databases)、純XML資料庫(Native XML Databases)、XML伺服器(XML Servers)、Wrappers、內容管理系統(Content Management Systems)、XML查詢引擎(XML Query Engines)、XML Data Binding、Discontinued products等九種,在業界影響很大。但是,在XML資料庫的研究和開發人員眼裡,或許只有支持XML的資料庫、純XML資料庫能夠稱得上是真正意義上的XML資料庫。支持XML的資料庫可以被看做是支持XML數據的資料庫系統,它可能是關係資料庫、對象資料庫等。就在一年半以前,還有相當多的人在爭論關係庫支持的XML資料庫和純XML資料庫孰優孰劣的問題。但是,純XML資料庫卻在這種爭論中悄然進步,在技術上有了長足的發展。人們已經越來越傾向於認為XML資料庫就是純XML資料庫。隨著金融界確立XBRL(XML的一個子集)標準和政府規範電子政務的XML格式,實踐推動著XML資料庫技術不斷向前發展。XML資料庫系統從最初簡單的查詢引擎,不斷地加入查詢優化、事務處理、觸發器、並發控制、代數系統等傳統的資料庫技術,一步步地從性能和功能上完善自己。從目前XML資料庫的產品情況來看,學術界的實驗系統和市場產品之間有著些許微妙的差別,儘管它們的主流技術是一致的。學術界完成的實驗室原型系統一般側重於下面的一些特點:● 專註於查詢性能的提高,對查詢優化的研究較多。為了提高查詢效率,學術界十分重視索引結構的設計,先後提出二十幾種適合於XML數據的索引方式,比如影響很大、簡單易用的三元組索引,並在此基礎上開發出了以結構化聯接為基礎的查詢模式匹配方法。● 強調平台無關性。在XML資料庫研究的早期,業界曾存在一個爭論:到底將XML數據存儲在關係庫中,還是另外開發存儲XML的物理資料庫。這在一定程度上影響著XML的研究者,在設計索引結構時必須考慮使索引過的XML數據可以存儲在多種資料庫結構中。● 從理論的角度較多地考慮了XML資料庫的模式設計規範化問題。設計了基於鍵的函數依賴推理,在如何優化XML資料庫設計、消除數據冗餘和不一致方面有了一些實質上的進展。工業界的XML資料庫產品更加強調實用,有著一些與學術界原型系統不盡相同的特點:● 現有的主流XML資料庫產品都在底層提供collection數據結構,以存儲XML元素節點,通過B+樹結構來索引這些元素節點。這一點與關係庫系統的底層處理如出一轍。在collection之上一般還會有一級或兩級索引,以加快查詢處理速度。這一點比平台無關的實驗原型系統更高效實用。● 市場上的資料庫產品通過引入日誌管理,建立了較完善的事務處理機制,這為上層的資料庫應用開發提供了便利。目前的商用XML資料庫一般提供事務處理功能,包括提交、回滾和日誌文件。通過提供事務日誌機制,紀錄系統執行的每個事務的詳細情況,保證在系統出現問題後可以完全恢復。● 增強了對異構數據源的集成管理。樹型結構的XML數據有其難以管理的一面,但是,XML技術的可擴展性又使得它具有集成異構數據源的強大能力。因此,市場上的XML資料庫產品普遍具有較強的集成多種數據源的功能。這也是當前市場上的XML資料庫產品的一大亮點。2.實驗室的原型系統和商用化產品最近幾年以來,在學術界和工業界的共同推動下,如雨後春筍般誕生出大量的XML資料庫原型系統和商用產品。在Ronald Bourret的《XML Database Products》中一共列了36種XML資料庫產品,大致上可分為三大類型:● 商業類(commercial):如Ipedo、Tamino、Natix、Xyleme等。其中,美國Ipedo公司的Ipedo XML Database和德國Software AG公司的Tamino是其中的佼佼者,成為目前市場上的主流產品。● 研究類(research):如Stanford大學早期開發的Lore等。● 開放源碼類(open source):其中影響較大的是Berkeley DB XML、dbXML、XDB和Xindice。需要指出的是, Lore database systems 只是Stanford大學早期針對半結構化數據而開發的資料庫系統。Lore連同其專設語言Lorel都是為半結構化數據而寫的。儘管說XML數據在某種程度上也是一種半結構化數據,但是,兩者之間還是有著一些差別,導致Lore database systems很難成為一種完全意義上的XML資料庫系統。事實上,在學術界,真正受到關注的XML資料庫原型系統有三家:密歇根大學安阿伯分校的Timber、西雅圖華盛頓大學的Tukwila和威斯康星大學麥迪遜分校的Niagara。其中,影響最大的是Timber,在該系統的實施過程中,產生了許多有關XML資料庫的新的概念和方法。當然,多倫多大學的Tox也是一個相當不錯的系統,尤其是其出色的索引結構。但是,總體上不如前面的三家有名。3.核心技術的進展綜合XML資料庫的實驗室原型和商業產品的共性,形成了如圖1所示的一幅XML資料庫的一般結構圖。依據圖1, XML資料庫的核心技術主要包括:1.查詢語言自從1995年XML技術的研究和開發逐漸升溫以來,形形色色的XML查詢語言不斷問世。比較有代表性的如早期的 XML-QL、XQL、UnQL,後來的Quilt、Xpath,以及由Quilt發展而來的XQuery。在W3C的極力推動和學術界、工業界的大力支持下,XQuery逐漸在這些查詢語言中脫穎而出,成為事實上的工業標準。XQuery的FLWR語句規範,有著與關係資料庫的SQL完全類似的表達方式,使得它在一般用戶眼裡,也變得友好起來。而Xpath可以理解為是XQuery的一個子集。Xpath表達式在相關文獻中被證明與查詢模式樹是等價的,這也與學術界推崇的模式樹查詢方式一致,使得實驗室系統可以毫不困難地處理Xpath查詢表達式,並能進行查詢優化。這一點在XML資料庫研究中顯得頗有價值。2.XML文檔解析在圖1中,將XML文檔載入資料庫時,會經過一個XML數據解析器。數據解析器會依據一定的規則對XML數據進行解析後裝入資料庫。目前的數據解析器一般提供SAX(simple API for XML)和DOM(document object model)兩種方式。SAX和DOM是針對XML文檔的兩種不同的應用程序編程介面API。SAX更多地依賴語法制導(syntax driven),而DOM則提供一組功能程序來開發與XML數據相關的應用。SAX解析器是邊讀入邊解析,帶有一定的實時性,特別適合於XML流數據的處理。而DOM解析器是待整個文檔均導入內存後才開始解析,在一定程度上受到內存容量的限制。目前的XML資料庫產品均支持這兩種解析方式。3.查詢處理查詢處理的方式和效率,一直是XML資料庫研究和開發者關注的首要問題。如圖1所示,XML資料庫的查詢處理一般是從解析查詢語言(如XQuery)的查詢語句表達式開始的。XML資料庫的查詢解析器將表達式解析為一棵查詢模式樹(有的系統叫做語法樹)。假設一個XQuery表達式為:book [tittle = 『XML』] // [ year = 『2000』]它所對應的模式樹如圖2所示,它表示我們要查詢的 book節點滿足下面的條件:● 有一個子節點tittle,它的內容為串值XML;● 它有一個後代節點year,它的內容為串值2000。從語義上來說,就是:查找「一本2000年出版的、名為XML的書」。接下來就是到XML資料庫中去匹配這棵樹,得到最終的XML結果文檔。在如何匹配模式樹的技術上,實驗室原型系統與商業產品之間有著一些差別。比如,在Timber中,考慮了一種叫做「結構化聯接」的技術。它的基本思路是將上述的模式樹分解為二元關係序列。而在此之前,也已經將XML文檔庫做了索引處理,文檔中每個元素節點均被標以一個三元組索引,形式為:(文檔標識符,開始位置:結束位置,層號)。於是,該查詢模式可以分兩步來完成:在索引過的XML資料庫中匹配上述分解的二元結構關係;將查找到的二元結構匹配結果組裝(stitching)成最終的符合上述查詢表達式的完整文檔。結構化聯接技術在2002年被提出並在Timber中實現以後,在學術界引起過較大的反響。自2002年以來不斷有技術上的改進文章出現在資料庫的三大國際會議(VLDB、SIGMOD/PODS、ICDE)上,其中較有影響的成果是隱檢整枝聯接(holistic twig join)技術,可以用相互連接的多棧結構一次性生成查詢結果文檔。在商用產品中,由於文檔元素節點均存儲在B+樹結構中,可以直接到底層的資料庫中去查找相關的匹配節點序列,再根據其指針關聯,將結果節點集組裝成結果文檔。總的來說,實驗室產品在輸入節點序列較長時效率會較高,尤其是隱檢整枝聯接技術。而商用產品在查詢的文檔較大時更顯優勢。在查詢處理階段,實驗室產品做了而商用產品沒做的事情就是模式樹的最小化。它的主要思想就是,模式樹的匹配效率依賴於模式樹的規模(元素節點的多少)。而一般的模式樹均存在一定量的冗餘節點,可以通過最小化演算法予以去除。根據復旦大學資料庫研究中心XML小組的實驗結果表明,在隨機建立的XML查詢模式樹集合中,最小化演算法平均可以消除30%的冗餘節點。當然,模式樹最小化演算法的時間複雜度比較高,目前的關注點主要在於時間複雜度的降低上。最新演算法的時間複雜度已經降低到低階的多項式時間了。這項技術的實用化是值得期待的。4.事務處理和版本控制目前的商用XML資料庫一般提供事務處理功能,包括提交、撤回和日誌文件。我們知道,事務為資料庫的一組操作,這些操作組成一個邏輯單元,執行時要麼全部完成,要麼全部不做(do all or do nothing)。XML資料庫通過提供事務日誌機制,紀錄系統執行的每個事務的詳細情況,保證在系統出現問題後可以完全恢復。事務遵循的ACID性質 (原子性、一致性、獨立性和持久性) 保證了大部分事務處理穩定地運行。商用XML資料庫也包含對XML文檔的版本控制功能。使用版本控制,用戶或應用程序可以檢入(check in)或檢出(check out)XML文檔,利用版本號、日期或者標籤獲得以前版本的文檔,以及顯示XML文檔的版本歷史信息。每一個處於版本控制之下的文檔都有自己的歷史信息,紀錄了修改文檔的作者以及時間等。使用者可以根據文檔或用戶或日期來查看整個的版本歷史信息。版本控制允許用戶通過查詢更新原信息。通過更新引擎可以注釋、修改和精鍊信息。內置的版本系統跟蹤信息的變化,提供這些變化的歷史信息。應該說,在事務處理和版本控制機制上,實驗室產品的考慮是不夠的,所提供的事務處理的功能顯得簡單。儘管加州大學洛杉磯分校的資料庫實驗室在XML的版本控制方面有一些突出的成果,但是,目前尚未形成產品。還有一個需要說明的是多事務並發控制機制和加鎖協議。這項技術的研發目前剛剛起步。現今的商用XML資料庫只在邏輯層面提供並發加鎖協議,但粒度為整個文檔。隨著單個XML文檔的增大,這個粒度顯然太粗。這一點可能要等待研究界開發出粒度為文檔元素節點的並發協議了。5.代數系統和模式規範化代數表達式和資料庫模式設計理論曾經是關係資料庫理論的精髓。代數系統成為關係庫查詢優化的重要工具,而範式理論的提出也曾為RDBMS設計優化的庫結構提供了依據。那麼,人們不禁要問,在XML資料庫中是否存在相類似的理論和方法?由於這兩個問題有一定的難度,註定只能是由學術界的實驗系統先行一步。學術界公認的三大實驗系統都設計了相應的代數系統,其中影響最為廣泛的是Timber中實現的TAX(Tree Algebra for XML)。TAX以整個文檔樹作為操作的基本單位,在邏輯層提供選擇、投影、聯接等類似關係庫的9種基本操作和5種附加操作,以匹配模式樹得到實例樹(witness tree)為基本操作方法。在物理層提出7種基本操作實現上述邏輯運算。Timber依據TAX對XML查詢語句進行改寫和優化,但是效果並不理想。業界對TAX存在問題的看法是,過分地模仿了關係庫的代數系統而忽略了對XML文檔本身特點的考慮。XML模式規範化理論的早期開拓者是賓夕法尼亞大學的樊文飛等人。從定義XML的鍵(key)和函數依賴,到 XML和DTD範式,再到基於約束的XML資料庫的模式規範化,XML資料庫的模式規範化理論在穩步地推動著。國內的復旦大學資料庫研究中心等單位也有著不錯的研究進展。在未來兩年內,估計會有較成熟的XML資料庫模式設計理論投入到實驗室產品和商用系統中。6.多數據源的集成多數據源的集成是資料庫市場對XML資料庫系統提出的要求。從1970年IBM公司的E.F.Codd提出關係資料庫的概念以來,關係資料庫在幾乎所有的應用領域都取得了巨大成功。XML資料庫是一個新事物,它從誕生的那一天起,就面臨著關係資料庫一統天下的局面。有人說,關係資料庫完全戰勝層次和網狀資料庫用了將近20年時間,XML資料庫也會用20年時間戰勝關係資料庫。這種看法並不全面。至少從目前來看,兩者應該各展所長,共同服務於巨大的資料庫市場。那麼,XML資料庫的優勢在哪呢?用XML技術來進行多數據源的集成就是其中之一。從2001年以後,面對多數據源的集成這個傳統關係型資料庫系統做不了的事情,Ipedo等商用資料庫系統將自己的資料庫系統擴展為一個集成平台,它可以將關係資料庫系統、MIS系統、OA系統、文件系統等集成在同一個平台上,給用戶提供統一的界面。如Ipedo公司的Ipedo XML智能平台,為用戶提供XML View來統一訪問底層的異構數據。人們也從這一點上進一步看到了XML技術的力量。4.未來的技術發展方向經過近5年業界同仁的共同努力,XML資料庫技術取得了很大的進展,已經有若干種XML資料庫產品問世並服務於社會生活的各個方面。但是,XML資料庫的事業才剛剛開始,還有很多問題等待著我們去解決。未來幾年,XML資料庫技術有可能在下述方面取得進展:● 異構數據源的集成。XML資料庫對多數據源的集成,是對XML技術可擴展性這一長處的極好發揮。但是,就目前的集成程度和在應用層上所提供的功能來看還是遠遠不夠的。如何從對數據的集成過渡到對系統的集成,從而在遠景目標上實現類似於網格計算(grid computing)概念的系統,恐怕是XML資料庫工作者的核心任務之一。● 底層索引結構。目前的商用XML資料庫系統優於實驗室原型系統的特點之一就是其底層的索引結構。但是,現有的商用XML資料庫的底層索引結構一般都是B+ 樹。雖然B+樹索引是一種成熟的索引結構,但是,研究結果顯示,在XML資料庫中,它的性能表現並不是最好的。學術界已經開發出了若干種適用於XML數據的索引結構,如XR樹、XB樹等,需要XML資料庫工作者來進一步關注。● 並發加鎖協議。在現有的XML資料庫系統中,加鎖的粒度是整個文檔,事務並發的層次也在文檔一級。隨著應用級文檔的日益增大,這個粒度在一定程度上將會成為系統效率的瓶頸。如何通過邊鎖(edge lock)機制來實現元素節點級粒度的加鎖?這一工作現在吸引了不少研究者的目光,而且,上述的鎖協議是在邏輯層,如何將它映射到底層的B+樹索引(或者 XR樹索引)上,也是必須要做的一件事情。● XML模式規範化是一個值得關注的方向。一旦取得突破,將會使我們可以像在關係庫中那樣方便地設計XML資料庫的結構,消除數據的冗餘和不一致現象。目前,這一領域已經成為學術界關注的熱點。但是,完整的、為業界所公認的理論體系尚未建立。
推薦閱讀:
你的讚賞是我堅持原創的動力
讚賞共 0 人讚賞推薦閱讀:
※幕布剛剛開啟——從時代困境到藝術方向
※廚房灶台不能朝什麼方向?會沒財又沒福!
※認識自我、擺正位置、找准方向、輕裝上陣
※「三個一塊」為密切幹群關係指明方向