摘要:本文主要介紹了可擴(kuò)展標(biāo)記語(yǔ)言(XML)和純XML數(shù)據(jù)庫(kù)管理系統(tǒng)(NXDBMS),給出了XML數(shù)據(jù)庫(kù)(NXD)的概念,并分析了NXDBMS的體系結(jié)構(gòu)。
關(guān)鍵詞:XML;純XML數(shù)據(jù)庫(kù);體系結(jié)構(gòu)
中圖分類號(hào):TP392 文獻(xiàn)標(biāo)識(shí)碼:B
文章編號(hào):1672-5913(2007)09-0049-03
1 XML簡(jiǎn)介
如果說(shuō)20世紀(jì)是計(jì)算機(jī)的時(shí)代,那么21世紀(jì)則是Internet和Web的時(shí)代。與此相關(guān)的技術(shù)也得到了飛速發(fā)展。硬件方面已從原來(lái)的8086和8088發(fā)展到目前1GHz處理速度的中央處理器,其發(fā)展速度之快遠(yuǎn)非幾年前人們所能預(yù)料。在軟件方面更是這樣,從Internet和Web的出現(xiàn)到1992年發(fā)布HTML(HyperText Markup Language,超文本標(biāo)記語(yǔ)言)[1]的第一個(gè)版本,也只僅僅幾年的時(shí)間。盡管HTML的第一個(gè)版本十分簡(jiǎn)陋,但它卻從此改變了計(jì)算機(jī)的發(fā)展方向,此后各種與此相關(guān)的技術(shù)如雨后春筍般層出不窮,Java、CSS(Cascading Style Sheet,層疊樣式表)[2]、DOM(Document Object Model,文檔對(duì)象模型)[3]、ActiveX、COM(Component Object Model,組件對(duì)象模型)[4]等技術(shù)相繼形成并逐漸開(kāi)始發(fā)展成熟。盡管所有這些技術(shù)的出現(xiàn)都曾給Web技術(shù)帶來(lái)過(guò)一定的震動(dòng),但從沒(méi)有哪項(xiàng)技術(shù)能像XML(eXtensible Markup Language,擴(kuò)展標(biāo)記語(yǔ)言)[5]一樣如此轟動(dòng)整個(gè)Web世界。XML出現(xiàn)不過(guò)幾年時(shí)間就開(kāi)始影響并變革整個(gè)Internet的發(fā)展趨勢(shì)[6]。
XML的全稱是eXtensible Markup Language(可擴(kuò)展標(biāo)記語(yǔ)言),它是一種專門(mén)為Internet所設(shè)計(jì)的標(biāo)記語(yǔ)言。XML的重點(diǎn)是管理信息的數(shù)據(jù)本身,而不是數(shù)據(jù)的樣式,數(shù)據(jù)的顯示則交給另外的技術(shù)來(lái)解決[6]。目前,XML有兩種通用的樣式添加技術(shù),一種是CSS,另一種是XSL(eXtensible Style Language,擴(kuò)展樣式語(yǔ)言)[7]。XML這種明確的分工導(dǎo)致的將是更高效的Web程序設(shè)計(jì),更快的搜索引擎、更統(tǒng)一的數(shù)據(jù)表示和更方便的數(shù)據(jù)交換的出現(xiàn)[6]。
XML是SGML(Standard Generalized Markup Language,標(biāo)準(zhǔn)通用標(biāo)記語(yǔ)言)[8-9]的一個(gè)子集,本質(zhì)上是一種特殊的SGML。SGML是于1986年通過(guò)ISO(International Organization for Standardization,國(guó)際標(biāo)準(zhǔn)化組織)[10]的認(rèn)證才開(kāi)始被大家普遍接受。盡管XML的應(yīng)用已經(jīng)有好幾年的歷史,但是直到1998年2月,W3C(World Wide Web Consortium,萬(wàn)維網(wǎng)聯(lián)盟)[11]才正式制定出統(tǒng)一的標(biāo)準(zhǔn)來(lái)規(guī)范XML的使用,這就是眾所周知的XML 1.0規(guī)范(W3C于2006年8月16日給出了推薦標(biāo)準(zhǔn)的第4版)[12]。
本質(zhì)上XML是一組規(guī)定,它是Internet上的“世界語(yǔ)”,因而它為不同的應(yīng)用程序之間進(jìn)行數(shù)據(jù)交換提供了一個(gè)公用的平臺(tái)。XML文件只負(fù)責(zé)數(shù)據(jù)的保存和傳輸,而不負(fù)責(zé)這些數(shù)據(jù)的顯示,它實(shí)現(xiàn)了信息的數(shù)據(jù)和樣式的分離。XML縮短了人和計(jì)算機(jī)之間的邏輯距離,它還是一種人和機(jī)器都能看懂的語(yǔ)言[6]。
2 XML數(shù)據(jù)庫(kù)
所謂數(shù)據(jù)庫(kù)就是一組相互有關(guān)聯(lián)的數(shù)據(jù)集合,而XML數(shù)據(jù)庫(kù)是一個(gè)XML文檔的集合,這些文檔是持久的并且是可操作的[13]。目前XML數(shù)據(jù)庫(kù)有三種類型[14] :
* 一種稱為XML Enabled Database(XEDB),即能處理XML的數(shù)據(jù)庫(kù)。其特點(diǎn)是在原有的數(shù)據(jù)庫(kù)系統(tǒng)上擴(kuò)充對(duì)XML數(shù)據(jù)的處理功能,使之能適應(yīng)XML數(shù)據(jù)存儲(chǔ)和查詢的需要。一般的做法是在數(shù)據(jù)庫(kù)系統(tǒng)之上增加X(jué)ML映射層,這可以由數(shù)據(jù)庫(kù)供應(yīng)商提供,也可以由第三方廠商提供。映射層管理XML數(shù)據(jù)的存儲(chǔ)和檢索,但原始的XML元數(shù)據(jù)和結(jié)構(gòu)可能會(huì)丟失,而且數(shù)據(jù)檢索的結(jié)果不保證是原始的XML形式。XEDB的基本存儲(chǔ)單位與具體的實(shí)現(xiàn)緊密相關(guān)。
* 另一種稱為Native XML Database(NXD),即純XML數(shù)據(jù)庫(kù)。其特點(diǎn)是以自然的方式處理XML數(shù)據(jù),以XML文檔作為基本的邏輯存儲(chǔ)單位。針對(duì)XML數(shù)據(jù)存儲(chǔ)和查詢特點(diǎn)專門(mén)設(shè)計(jì)適用的數(shù)據(jù)模型和方法。
* 第三種稱為Hybrid XML Database(HXD),即混合XML數(shù)據(jù)庫(kù)。根據(jù)應(yīng)用的需求,可以視其為XEDB或NXD的數(shù)據(jù)庫(kù),比較典型的例子是Ozone[15]。
3 純XML數(shù)據(jù)庫(kù)管理系統(tǒng)
3.1 什么是純XML數(shù)據(jù)庫(kù)
處理和存儲(chǔ)XML數(shù)據(jù)的需要已經(jīng)產(chǎn)生了好幾種新的軟件工具,其中之一便是“Native XML數(shù)據(jù)庫(kù)”(Native XML Database,簡(jiǎn)稱NXD)。純XML數(shù)據(jù)庫(kù)或NXD這個(gè)術(shù)語(yǔ)在很多方面都具有欺騙性。事實(shí)上,很多所謂的NXD根本就不是真正獨(dú)立的數(shù)據(jù)庫(kù),而且也不真正地以真實(shí)自然的形式(例如,文本)存儲(chǔ)XML數(shù)據(jù)[16]。那么,什么是真正的NXD?讓我們看一下Ronald Bourret[17]在《XML and Databases》一文中給出的有關(guān)NXD的最初定義[18]。
一個(gè)純XML數(shù)據(jù)庫(kù):
* 相對(duì)于XML文檔中的數(shù)據(jù),定義了XML文檔的邏輯模型,并且按照該模型來(lái)存儲(chǔ)和檢索文檔。這樣的模型至少應(yīng)該包括元素、屬性、PCDATA以及文檔順序。例如,Xpath數(shù)據(jù)模型、XML Infoset[19]以及由DOM和SAX 1.0[20]中的事件所隱含的模型都是這類數(shù)據(jù)模型。
* 就像關(guān)系數(shù)據(jù)庫(kù)以行作為表的邏輯存儲(chǔ)的基本單位一樣,以XML文檔作為NXD的邏輯存儲(chǔ)的基本單位。
* 不要求有任何特殊的基本物理存儲(chǔ)模型。例如,它可以建立在關(guān)系的、層次的或面向?qū)ο髷?shù)據(jù)庫(kù)之上,或者使用諸如索引文件、壓縮文件此類的專門(mén)的存儲(chǔ)格式。
從這個(gè)定義中我們可以學(xué)到很多東西,至少可以簡(jiǎn)單地總結(jié)以下三點(diǎn):
* 純XML數(shù)據(jù)庫(kù)是專門(mén)用來(lái)存儲(chǔ)XML數(shù)據(jù)的,而且完整無(wú)缺地存儲(chǔ)XML模型的所有成份。
* 文檔進(jìn)得去出得來(lái)。
* NXD是真正獨(dú)立的數(shù)據(jù)庫(kù)。
在很多方面,XML都不同于其他著名的數(shù)據(jù)模型(如關(guān)系模型、面向?qū)ο竽P停?。將XML映射到另一種數(shù)據(jù)模型常常引起“阻抗失配”,并導(dǎo)致功能和性能上的局限[21]。因此,NXD必須是直接存儲(chǔ)XML數(shù)據(jù)。
3.2 純XML數(shù)據(jù)庫(kù)管理系統(tǒng)的體系結(jié)構(gòu)
純XML數(shù)據(jù)庫(kù)管理系統(tǒng)(NXDBMS)是目前XML研究領(lǐng)域的一個(gè)熱點(diǎn)問(wèn)題,也是核心問(wèn)題,已經(jīng)出現(xiàn)了一批相對(duì)獨(dú)立的系統(tǒng)。從查詢方法上可以把NXDBMS分為兩種,一種方法大量地吸收了文檔處理和編程語(yǔ)言思想而不是數(shù)據(jù)庫(kù)處理數(shù)據(jù)的思想,如Kweelt[22]、X-Hive[23]等。采用導(dǎo)航的方式遍歷XML文檔,把長(zhǎng)路徑轉(zhuǎn)換為嵌套循環(huán)的數(shù)據(jù)搜索。這種方法在處理的數(shù)據(jù)集相對(duì)較小時(shí)效率很好,但隨著數(shù)據(jù)量的增大,其效率急劇下降。例如,Xindice就規(guī)定其能夠處理的文檔大小不能超過(guò)5MB!
另一種NXDBMS真正基于數(shù)據(jù)庫(kù)思想,支持描述化查詢語(yǔ)言和一次一集合的查詢處理方式,提供完整的查詢優(yōu)化策略。典型的系統(tǒng)有Tamino、Timber、Natix等。
如圖1所示,和傳統(tǒng)的關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)(RDBMS)一樣,NXDBMS的體系結(jié)構(gòu)也分為用戶接口、查詢處理、存儲(chǔ)管理和物理存儲(chǔ)四大部分。由于我們暫時(shí)不考慮NXD的事務(wù)管理、并發(fā)控制和故障恢復(fù),因此圖1中的磁盤(pán)存儲(chǔ)器里沒(méi)有給出相關(guān)的“日志”數(shù)據(jù)的信息。
4 小結(jié)
對(duì)于NXDBMS,目前學(xué)術(shù)界有兩種完全不同的看法。一種看法認(rèn)為NXDBMS是萬(wàn)能的,它將成為數(shù)據(jù)庫(kù)系統(tǒng)中的標(biāo)準(zhǔn),而關(guān)系數(shù)據(jù)庫(kù)系統(tǒng)只是它的特例而已。而另一種看法則認(rèn)為NXDBMS不是萬(wàn)能的,它不打算代替已有的數(shù)據(jù)庫(kù)系統(tǒng),它僅僅是另外一種簡(jiǎn)單的XML開(kāi)發(fā)工具。對(duì)于這些看法的討論和NXDBMS的發(fā)展方向及目標(biāo)的確定,數(shù)據(jù)庫(kù)研究人員責(zé)無(wú)旁貸。
參考文獻(xiàn):
[1] http://www.w3.org/MarkUp/
[2] http://www.w3.org/Style/CSS/
[3] http://www.w3.org/DOM/
[4] http://www.microsoft.com/com/tech/com.asp
[5] http://www.w3.org/XML/
[6] 栗松濤.XML程序設(shè)計(jì)[M].北京:清華大學(xué)出版社,2001.
[7] http://www.w3.org/Style/XSL/
[8] http://xml.coverpages.org/sgml.html
[9] http://www.w3.org/MarkUp/SGML/
[10] http://www.iso.com/
[11] http://www.w3.org/
[12] http://www.w3.org/TR/REC-xml/
[13] Mark Graves.XML數(shù)據(jù)庫(kù)設(shè)計(jì)[M].尹志軍.北京:機(jī)械工業(yè)出版社,2002.
[14] http://www.xmldb.org/faqs.html
[15] http://www.ozone-db.org/frames/home/what.html
[16] Introduction to Native XML Databases, Kimbro Staken, http://www.xml.com/lpt/a/2001/10/31/nativexmldb.html
[17] http://www.rpbourret.com/index.htm
[18] XML and Databases, Ronald Bourret, http://www.rpbourret.com/xml/XMLAndDatabases.htm
[19] http://www.w3.org/TR/xml-infoset/
[20] http://sax.sourceforge.net/和http://www.saxproject.org
[21] Chapter 2 \"Tamino—Software AG's Native XML Server\", Harald Schoning, In book of \"XML Data Management: Native XML and XML-Enabled Database Systems\", Akmal B. Chaudhri, Awais Rashid, Roberto Zicari, Addisson-Wesley, March 2003
[22] Kweelt: More than just \"Yet another framework to query XML!\", Arnaud Sahuguet, In Proceedings of ACM SIGMOD International Conference on Management of Data, Santa Barbara, California, May 21-24, 2001. Software available at: http://cheops.cis.upenn.edu/Kweelt/
[23] X-hive Corp (2002) X-Hive/DB, Available at: http://www.x-hive.com
收稿日期:2007-04-10
作者簡(jiǎn)介:馮建華(1967.08-),男,漢族,山西人,副教授,研究方向:數(shù)據(jù)庫(kù)。