XML作為一種數(shù)據(jù)格式在上世紀90年代中期出現(xiàn),一開始其主要目的是應(yīng)用于系統(tǒng)間數(shù)據(jù)的交換。為便于數(shù)據(jù)交換,其設(shè)計包含了幾個主要的特點,首先是采用自描述的標簽式數(shù)據(jù)描述方式,數(shù)據(jù)本身描述自己的含義,從而使數(shù)據(jù)的可讀性大大提高,十分易于人或程序理解。

另外,XML采用層次型(樹型)的方式組織數(shù)據(jù),通過層次關(guān)系體現(xiàn)出數(shù)據(jù)與數(shù)據(jù)之間的關(guān)系。層次模型能夠比較清晰地描述復(fù)雜對象,并易于擴展。經(jīng)過近10年的發(fā)展,XML已經(jīng)成為數(shù)據(jù)交換的事實標準,國際上形成了很多行業(yè)性的XML技術(shù)標準,對信息技術(shù)產(chǎn)生很大的影響。

雖然XML設(shè)計之初主要應(yīng)用于數(shù)據(jù)交換,但這種新型的數(shù)據(jù)組織方式卻在應(yīng)對信息的復(fù)雜性、可理解性和靈活性的挑戰(zhàn)方面開啟了新的道路,迎合了技術(shù)發(fā)展的方向和潮流。同時XML也模糊了傳統(tǒng)上結(jié)構(gòu)化數(shù)據(jù)和非結(jié)構(gòu)化數(shù)據(jù)的嚴格分界線,對20余年來關(guān)系型數(shù)據(jù)庫理論基礎(chǔ)產(chǎn)生沖擊。人們反思數(shù)據(jù)究竟應(yīng)該是關(guān)系的還是層次化的,是單一的表格關(guān)系還是多樣化的對象?

與此同時,在過去10余年中,另外一個重要的技術(shù)也對IT產(chǎn)生了重要的影響,這就是面向?qū)ο蟮募夹g(shù)。

面向?qū)ο蠹夹g(shù)鼓勵設(shè)計者使用對象(而不是表)來思考數(shù)據(jù),在面向?qū)ο蟮脑O(shè)計思想中,數(shù)據(jù)也是以對象的形式存在,層次結(jié)構(gòu)是對數(shù)據(jù)對象最直接、最自然的體現(xiàn)。

而關(guān)系型數(shù)據(jù)庫的理論與面向?qū)ο蟮乃枷氩⒉黄ヅ洌珽-R模型中沒有對象的概念,在關(guān)系型數(shù)據(jù)庫中實現(xiàn)對象的嵌套、對象的多樣性很不直觀,需要很大的代價。在關(guān)系理論中,數(shù)據(jù)應(yīng)該被組織成規(guī)范的表–也就是數(shù)據(jù)應(yīng)該按唯一的方式組織,使得程序員能夠消除冗余,確保數(shù)據(jù)變化的一致性。這種設(shè)計技術(shù)的引入確保了關(guān)系表中的數(shù)據(jù)是一組獨立的、通過鍵來關(guān)聯(lián)數(shù)據(jù)。這種技術(shù)來自集合論的數(shù)學(xué)理論,但問題是集合論不能表達數(shù)據(jù)之間所有的關(guān)系和結(jié)構(gòu)。

以規(guī)范的方式存儲數(shù)據(jù)常常要求程序員在存入數(shù)據(jù)庫之前分解對象,并且重新組織數(shù)據(jù)–就像在車庫中停車時,你把它的門、椅子、輪子等等分別卸下來存放。這不僅消耗資源,而且沒有任何意義。

今天在應(yīng)用領(lǐng)域,軟件開發(fā)已經(jīng)廣泛采用了面向?qū)ο蟮脑O(shè)計思想和技術(shù)。而面向?qū)ο蟮臄?shù)據(jù)庫技術(shù)卻遲遲未被市場接受。對象數(shù)據(jù)庫出現(xiàn)時,關(guān)系型數(shù)據(jù)庫供應(yīng)商已經(jīng)積聚了巨大的動力,并占領(lǐng)了大量市場份額。在標準的SQL接口下,訪問關(guān)系型數(shù)據(jù)庫的面向?qū)ο蟪绦蚝苋菀讓?。相反,多?shù)早期的對象數(shù)據(jù)完全不提供SQL接口,不適合任何查詢應(yīng)用程序。

XML技術(shù)的出現(xiàn),以及相關(guān)國際標準的制定(如Xquery, SQL/XML)為數(shù)據(jù)庫引入面向?qū)ο蟮募夹g(shù)提供了新的動力?,F(xiàn)實外部世界的技術(shù)挑戰(zhàn),XML、面向?qū)ο蠹夹g(shù)與標準的成熟為新一代數(shù)據(jù)庫的創(chuàng)新提供了條件。那么未來會是怎樣呢?迎接新的技術(shù)變革我們準備好了嗎?
 
融合之道:混合數(shù)據(jù)庫與PureXML

今天,關(guān)系數(shù)據(jù)庫推動各種規(guī)模的公司發(fā)展業(yè)務(wù)。盡管這些數(shù)據(jù)庫是受歡迎而且重要的,但從長遠來看,它們根本無法與用 XML 表示的半結(jié)構(gòu)化(和分層)內(nèi)容相比。我們無法忽略過去20年來業(yè)界在關(guān)系型數(shù)據(jù)庫上的巨大投入(企業(yè)在關(guān)系數(shù)據(jù)和關(guān)系數(shù)據(jù)庫管理系統(tǒng) (RDBMS) 方面的投資高達萬億美元)。

因此,簡單地將 RDBMS 替換成純 XML 存儲的做法并不可取,但我們更無法回避新技術(shù)的潮流和巨大價值。世界既可以是關(guān)系的,也可以是層次的,兩種技術(shù)各自有其優(yōu)勢和局限性,因而容納關(guān)系型和層次型兩類模型的混合數(shù)據(jù)庫就成為數(shù)據(jù)庫發(fā)展的必然選擇。

IBM 的新一代數(shù)據(jù)庫 DB2 9中第一次實現(xiàn)了關(guān)系型引擎與層次型引擎的結(jié)合,實現(xiàn)了混合數(shù)據(jù)庫。IBM將此技術(shù)稱為pureXML技術(shù)。
關(guān)系型數(shù)據(jù)庫很早就已經(jīng)開始考慮對XML的支持,但傳統(tǒng)的技術(shù)一般還是基于關(guān)系型數(shù)據(jù)庫的基本框架,用表之間的關(guān)系去模擬XML的層次結(jié)構(gòu).僅僅是對關(guān)系型數(shù)據(jù)的一些功能性增強,而非真正去適應(yīng)XML所代表的層次型結(jié)構(gòu)和面向?qū)ο蟮臄?shù)據(jù)處理方法,因而難以發(fā)揮XML的靈活性、擴展性等方面的優(yōu)勢,大大限制了XML技術(shù)在數(shù)據(jù)庫的應(yīng)用.

關(guān)系數(shù)據(jù)庫中的第一代 XML 支持是切分(或分解)文檔以適應(yīng)關(guān)系表格,或?qū)⑽臋n原封不動地存儲為字符或二進制大對象(CLOB 或 BLOB)。這兩個方法中的任一種,都嘗試將 XML 模型強制轉(zhuǎn)換成關(guān)系模型。以大對象保存XML數(shù)據(jù)的方式,使得數(shù)據(jù)庫無法理解XML中的信息內(nèi)容,每次對XML中任何信息的訪問都必須將整個文檔取出,然后再分解獲得相應(yīng)的信息內(nèi)容,效率和靈活性都存在極大的限制. 

如果采用將XML文檔中的數(shù)據(jù)項都拆分到很多個對應(yīng)的關(guān)系型表中的方式,首先失去了XML靈活性的優(yōu)勢。由于XML的數(shù)據(jù)項與關(guān)系型表中字段的對應(yīng)是固定的,所以XML的擴展和變化必然要求數(shù)據(jù)庫中對應(yīng)表的結(jié)構(gòu)改變;另外數(shù)據(jù)對象拆分后,已經(jīng)不再有物理上對象的概念,同樣在功能和性能上都有很大的局限性。
 
與過去關(guān)系型數(shù)據(jù)庫的XML增強功能不同,pureXML技術(shù)第一次真正意義上提供了一種與XML層次型結(jié)構(gòu)相匹配的層次型存儲方式和相對應(yīng)的操作訪問方式。在pureXML中,XML 作為一種新的數(shù)據(jù)類型。幾乎每個 DB2 組件、工具和實用程序都已得到增強,以識別和處理這種新數(shù)據(jù)類型。新的存儲模式以解析后的注釋樹形式(類似于 XML 文檔對象模型 (DOM))保留 XML,它與關(guān)系數(shù)據(jù)存儲分開。

想了解數(shù)據(jù)庫發(fā)展最新趨勢,請點擊這里

分享到

多易

相關(guān)推薦