[摘要] XML廣泛應(yīng)用于WEB數(shù)據(jù)的表示和交換,而海量XML數(shù)據(jù)的存儲(chǔ)、處理對傳統(tǒng)數(shù)據(jù)庫提出了嚴(yán)峻的挑戰(zhàn),Native XML數(shù)據(jù)庫應(yīng)運(yùn)而生,本文重點(diǎn)討論了NXD數(shù)據(jù)庫數(shù)據(jù)存儲(chǔ)的幾個(gè)方面,指出其有待進(jìn)一步研究的問題。
[關(guān)鍵詞] XML Native XML Database 數(shù)據(jù)庫
隨著Internet進(jìn)入社會(huì)生活的各個(gè)方面,電子商務(wù)等的廣泛應(yīng)用,關(guān)系型數(shù)據(jù)庫在處理信息的復(fù)雜化,多樣化,差異化,靈活性,可讀性等方面的不足日益明顯。特別是目前Web Service的蓬勃發(fā)展,XML越來越多地活躍在數(shù)據(jù)交換和存儲(chǔ)領(lǐng)域,其數(shù)據(jù)量指數(shù)級(jí)的增長,要求更有效的數(shù)據(jù)管理能力和更快、更精確的查詢,而這是傳統(tǒng)關(guān)系型數(shù)據(jù)庫領(lǐng)域所沒有涉及到的,可以說是數(shù)據(jù)庫發(fā)展的一個(gè)分水嶺。NXD(Native XML Database)技術(shù)的出現(xiàn)給數(shù)據(jù)庫研究界帶來了巨大的機(jī)會(huì),如何高效存儲(chǔ)管理XML數(shù)據(jù)也自然成為研究的熱點(diǎn)。
一、XML和XML數(shù)據(jù)庫
XML是The Extensible Markup Language(可擴(kuò)展標(biāo)識(shí)語言)的簡寫, 具有擴(kuò)展性、自描述性、自相容性等優(yōu)點(diǎn),成為Internet上數(shù)據(jù)表示和數(shù)據(jù)交換的標(biāo)準(zhǔn)。
對XML文檔進(jìn)行存取管理和查詢的XML數(shù)據(jù)庫分為兩類:支持XML數(shù)據(jù)庫管理系統(tǒng)(XED)和純XML數(shù)據(jù)庫管理系統(tǒng)(NXD)。XED(XML Enabled Database)是在原有關(guān)系數(shù)據(jù)庫基礎(chǔ)上擴(kuò)展了XML支持模塊,通過適當(dāng)?shù)腦ML API對XML文檔進(jìn)行查詢和修改,完成XML數(shù)據(jù)和關(guān)系數(shù)據(jù)庫之間的格式轉(zhuǎn)換和傳輸。NXD(Native XML Database)則出現(xiàn)在XML數(shù)據(jù)處理領(lǐng)域內(nèi),是專門設(shè)計(jì)用于存儲(chǔ)和管理XML文檔的數(shù)據(jù)庫,它以XML文檔作為數(shù)據(jù)庫的存儲(chǔ)單元進(jìn)行操作和管理,保持XML文檔的樹形結(jié)構(gòu),省掉了XML文檔和傳統(tǒng)數(shù)據(jù)庫的數(shù)據(jù)轉(zhuǎn)換過程。
二、NXD的概述
1.NXD定義
RonaldBourret在“XMLandDatabases”一文中給出有關(guān)NXD的定義。一個(gè)純XML數(shù)據(jù)庫是指:(1)相對于XML文檔中的數(shù)據(jù),定義了XML文檔的邏輯模型,并且按照該模型來存儲(chǔ)和檢索文檔。這樣的模型至少應(yīng)該包括元素、屬性、PCDATA以及文檔順序。(2)就像關(guān)系數(shù)據(jù)庫以行作為表的邏輯存儲(chǔ)基本單位一樣,NXDBMS以XML文檔作為NXD的邏輯存儲(chǔ)基本單位。(3)不要求有任何特殊的基本物理存儲(chǔ)模型,它可以建立在關(guān)系的、層次的或面向?qū)ο髷?shù)據(jù)庫之上,或者使用諸如索引文件、壓縮文件此類的專門存儲(chǔ)格式。
但在很多方面,XML應(yīng)不同于關(guān)系模型和面向?qū)ο竽P偷葦?shù)據(jù)模型,將XML映射到另一種數(shù)據(jù)模型常常引起“阻抗失配”,并導(dǎo)致功能和性能上的局限。因此,業(yè)界提出NXD必須直接存儲(chǔ)和處理XML數(shù)據(jù)。
2.NXD特性
純XML數(shù)據(jù)庫的特性有:(1)文件集(Document Collections):支持集合(Collection)的概念,集合級(jí)別上的查詢,修改操作都會(huì)反映到集合內(nèi)的每個(gè)文檔中。(2)查詢語言(Query Languages):目前主流的是XPath,但其存在不能分組,排序和連接等缺陷,因此 XQuery作為Xpath的替代品,有希望成為純XML數(shù)據(jù)庫的專用語言。(3)更新和刪除(Updates and Deletes):NXD 絕大多數(shù)產(chǎn)品在這方面仍是薄弱環(huán)節(jié)。(4)事務(wù)、鎖定和并發(fā)(Transactions,Locking,and Concurrency);支持事務(wù)處理。鎖定通常是對整個(gè)文檔的,所以多用戶并發(fā)性相對較低。(5)純XML數(shù)據(jù)庫提供良好的編程接口。(6)能夠高效而精確的還原XML文檔。
三、NXD數(shù)據(jù)存儲(chǔ)結(jié)構(gòu)
1.物理存儲(chǔ)
將元數(shù)據(jù)、XML數(shù)據(jù)、索引和統(tǒng)計(jì)數(shù)據(jù)如何放置在物理磁盤上永遠(yuǎn)是一個(gè)挑戰(zhàn)性的問題,因?yàn)榈讓拥拇鎯?chǔ)表達(dá)對上層的查詢處理和優(yōu)化有著重要的性能影響。
純XMl數(shù)據(jù)庫在物理上存儲(chǔ)XML文檔主要有三種方案:
(1)字節(jié)流方式:即將XML數(shù)據(jù)轉(zhuǎn)換為字節(jié)流,這種方式將文檔轉(zhuǎn)換為字節(jié)流,然后將其存儲(chǔ)在文件系統(tǒng)的文本文件中或存儲(chǔ)為數(shù)據(jù)庫的BLOB字段中,然后在這些文件或字段上面加一些索引,通過這種方式來提供某些數(shù)據(jù)的功能,當(dāng)存儲(chǔ)和檢索整個(gè)文檔時(shí),這種方式效率較高,并且能夠精確地再現(xiàn)原來的XML文檔,但缺點(diǎn)在于任何一次查詢文檔時(shí)都必須通過分析器處理后才能獲得結(jié)構(gòu)信息。
(2)元模型方式:即按照某種物理模型存儲(chǔ)XML文檔,這里模型的不同,分為兩種方案,一種是采用現(xiàn)有的關(guān)系數(shù)據(jù)庫或面向?qū)ο髷?shù)據(jù)庫作為XML數(shù)據(jù)的存儲(chǔ)庫,在重組文檔片段或不同文檔時(shí)比較快,但在邏輯層和物理層的數(shù)據(jù)需要經(jīng)過轉(zhuǎn)換,因而會(huì)降低處理效率。另一種是為XMl數(shù)據(jù)庫設(shè)計(jì)專有的存儲(chǔ)方案,如 INFONYTEDB采用的PDOM方式就是首先將文檔轉(zhuǎn)化為DOM結(jié)構(gòu),然將其映射到一些特殊的文件中。這種方案能夠以一種比較自然的方式來存儲(chǔ)XML數(shù)據(jù),避免物理層和邏輯層數(shù)據(jù)之間轉(zhuǎn)換,但由于采用全新的存儲(chǔ)方案,技術(shù)不夠成熟。
(3)混合型,這種方式又可以細(xì)分為兩種類型:冗余型和雜交型。冗余型是指每份數(shù)據(jù)保持兩份副本,一份基于文本方式存儲(chǔ),一份基于模型存儲(chǔ)。這樣可以同時(shí)利用兩種方式的優(yōu)點(diǎn),但是兩份數(shù)據(jù)很可能處于不一致的狀態(tài),且更新效率較低。雜交型存儲(chǔ)方式中規(guī)定一個(gè)數(shù)據(jù)單元,粒度大于數(shù)據(jù)單元的部分以元模型方式存儲(chǔ),否則以字節(jié)流方式存儲(chǔ)。
在實(shí)際的純XML數(shù)據(jù)庫中用的比較多的是基于元模型的方式和雜交方式 。
2.數(shù)據(jù)模式
在傳統(tǒng)的關(guān)系數(shù)據(jù)庫中,模式嚴(yán)格地約束著數(shù)據(jù)的類型、操作和結(jié)構(gòu),數(shù)據(jù)完全對應(yīng)于模式,數(shù)據(jù)的插入、查詢、更新和存儲(chǔ)都必須遵循模式的定義。而XML數(shù)據(jù)具有半結(jié)構(gòu)化的特征,數(shù)據(jù)與模式信息之間并不具有完全對應(yīng)的關(guān)系,此時(shí)模式僅僅是作為查詢或者了解數(shù)據(jù)的一個(gè)說明,并不具有約束數(shù)據(jù)的功能。因此,如何在純XML數(shù)據(jù)庫中發(fā)揮XML模式的作用是一個(gè)需要研究的問題。
3.存儲(chǔ)粒度
XML數(shù)據(jù)是一棵由各種節(jié)點(diǎn)組成的樹,常見的節(jié)點(diǎn)包括元素(Element)節(jié)點(diǎn)、屬性(Attribute)節(jié)點(diǎn)和文本(Text)節(jié)點(diǎn)。但是NXD中,一條記錄所對應(yīng)的子樹有多大、包含多少個(gè)什么樣的節(jié)點(diǎn),這是NXD的存儲(chǔ)粒度問題。記錄的粒度分為三種:(1)結(jié)點(diǎn)級(jí):一個(gè)結(jié)點(diǎn)就是一條記錄。(2)子樹級(jí):XML文檔的一個(gè)片段(一個(gè)子樹)對應(yīng)一個(gè)記錄。目前,有兩種劃分子樹的方法:①根據(jù)物理塊大小,使子樹的大小與物理塊大小相近,不需要文檔模式信息的支持;②根據(jù)邏輯意義劃分子樹,使子樹成為一個(gè)比較完整的邏輯單位,需要文檔模式信息的支持。(3)文檔級(jí):一個(gè)XML文檔是一條記錄,文檔是作為一個(gè)整體來操作的,不需要有DTD或XMLSchema等模式信息的支持。
不同的粒度對存儲(chǔ)空間和查詢的支持各不相同。對同一個(gè)XML文檔來說,記錄的粒度越小,記錄的數(shù)目就越多,記錄之間的指針就越多,存儲(chǔ)空間需要的也越多,從而記錄的存儲(chǔ)效率較低,但小粒度的存儲(chǔ)方法使每個(gè)元素和屬性,包括文本都可以被單獨(dú)查詢、修改或刪除,且對其他文檔結(jié)構(gòu)影響最小,具有最大的靈活性,也無須利用文檔的模式信息。記錄的粒度越大,為了讀取某一個(gè)節(jié)點(diǎn)需要讀進(jìn)的節(jié)點(diǎn)數(shù)就越多,更新時(shí)效率就越低,但是大粒度的存儲(chǔ)方法不需要存儲(chǔ)過多的邏輯指針和物理指針,能夠節(jié)省存儲(chǔ)空間,且重構(gòu)整個(gè)文檔會(huì)比較快一些。因此,根據(jù)查詢的要求如何確定XML數(shù)據(jù)的存儲(chǔ)粒度也是一個(gè)挑戰(zhàn)性的問題。
4.存儲(chǔ)順序
如果NXD中存儲(chǔ)XML文檔的記錄粒度是狹義的節(jié)點(diǎn)或者子樹,那么這些記錄在物理空間中的組織方式就是記錄的存儲(chǔ)順序問題,存儲(chǔ)順序是指記錄在物理上的相鄰關(guān)系。記錄的存儲(chǔ)順序一般有以下幾種:(1)深度優(yōu)先順序存儲(chǔ),這是最常見的存儲(chǔ)順序。(2)廣度優(yōu)先順序存儲(chǔ)。(3)按某個(gè)條件簇集存儲(chǔ),將滿足某個(gè)條件的所有記錄存儲(chǔ)在同一個(gè)物理塊內(nèi)或物理上相鄰的物理塊內(nèi)。對于XML文檔來說,將記錄的節(jié)點(diǎn)按類型相同的記錄簇集存儲(chǔ),雖然在物理存儲(chǔ)上破壞了節(jié)點(diǎn)的順序,但有利于數(shù)據(jù)查詢和更新。
根據(jù)存儲(chǔ)粒度和存儲(chǔ)順序,將會(huì)產(chǎn)生以下幾種具體的存儲(chǔ)方法:①基于元素的深度優(yōu)先(DEB)方法;②基于子樹的深度優(yōu)先(DSB)方法;③基于元素的廣度優(yōu)先(BEB)方法;④基于子樹的深度優(yōu)先(BSB)方法;⑤基于元素的同類簇集(CEB)方法;⑥基于子樹的同類簇集(CSB)方法。
如何確定NXD中記錄的存儲(chǔ)順序,以及如何針對不同的應(yīng)用選取不同的存儲(chǔ)方法,或者是針對不同的查詢選擇不同的存儲(chǔ)方法,這些都是挑戰(zhàn)性的問題。
四、 應(yīng)用
Natix有著良好的存儲(chǔ)系統(tǒng),其記錄內(nèi)部的結(jié)點(diǎn)不完全是以字節(jié)流方式存儲(chǔ)的文本。存儲(chǔ)粒度上,Natix有自己獨(dú)特的劃分子樹的方式和分裂子樹的算法 ,且記錄子樹的大小是可以動(dòng)態(tài)確定的。物理上,XML文檔映射成樹的結(jié)構(gòu),在樹結(jié)構(gòu)中包含三種結(jié)點(diǎn):(1)聚集結(jié)點(diǎn):指樹的內(nèi)部結(jié)點(diǎn)。(2)文字結(jié)點(diǎn):指頁結(jié)點(diǎn),內(nèi)容可以是字符,圖形,聲音和視頻等。(3)代理結(jié)點(diǎn):實(shí)際上是記錄之間聯(lián)系的橋梁。下面以一個(gè)XML文檔實(shí)例進(jìn)行說明,見圖1。XML文檔映射的樹狀結(jié)構(gòu)見圖2。物理樹的存儲(chǔ)結(jié)構(gòu)見圖3。
如:
綜上所述,純XML數(shù)據(jù)庫雖然在解決XML數(shù)據(jù)存儲(chǔ),高效處理和查詢等方面較傳統(tǒng)數(shù)據(jù)庫有一定的優(yōu)勢,但是目前仍然存在很多具有挑戰(zhàn)性的問題,這些問題給數(shù)據(jù)庫研究人員提供了廣闊的平臺(tái),也為我國在數(shù)據(jù)庫研究方面趕超世界先進(jìn)水平提供了機(jī)遇。相信隨著XML更為廣泛的應(yīng)用于醫(yī)療、金融、電子政務(wù)、制造業(yè)及電子商務(wù)等領(lǐng)域, Native XML數(shù)據(jù)庫的明天更美好。
參考文獻(xiàn):
[1]Amer-Yahia S,Cho S,Lakshmanan L V S,et al.Minimization of Tree Pattern Queries.In:Mehrotra S et al Eds.Proceedings of the 20th ACM SIGMOD International Conference on Management of Data. Santa Barbara,California,USE.May 21-24,2001.New York:ACM Press,2001.497-508
[2]萬常選:XML數(shù)據(jù)庫技術(shù)[M].北京:清華大學(xué)出版社,2005 50-51