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

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

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

與此同時,在過去10余年中,另外一個重要的技術也對IT產(chǎn)生了重要的影響,這就是面向對象的技術。

面向對象技術鼓勵設計者使用對象(而不是表)來思考數(shù)據(jù),在面向對象的設計思想中,數(shù)據(jù)也是以對象的形式存在,層次結構是對數(shù)據(jù)對象最直接、最自然的體現(xiàn)。

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

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

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

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

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

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

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

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

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

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

分享到

多易

相關推薦