XML and Databases 筆記

來源:互聯網
上載者:User
作為一種“資料庫”格式,XML有一些優勢:例如,它是自描述的(所用的標記描述了資料的結構和類型,儘管缺乏語義),可交換的(portable),能夠以樹型或圖形結構描述資料。同樣它也有缺點,例如,它顯得有些繁瑣,由於要對它進行解析和文本轉換,所以資料訪問速度較慢。

XML及其周邊技術是否可以算作“資料庫” -- 資料庫管理系統(DBMS)。答案是“在某種程度上是(sort
of)”。好的一面是,XML提供了許多資料庫所具備的東西:儲存(XML文檔), 模式(DTD, XML schema,RElAX NG 等等),
查詢語言(XQuery, XPath, XQL, XML-QL, QUILT等等),編程介面(SAX,
DOM,JDOM)等等。不好的一面在於,它缺少一些作為實用的資料庫所應具備的特性:高效的儲存,索引,安全,事務和資料一致性,多使用者訪問,觸發器,在查詢多個檔案等等。

因此,儘管在資料量小、使用者少和效能要求不太高的環境下,可以將XML文檔用作資料庫,但是卻不適用於使用者量大、資料完整性以及效能要求高的情形。

將一個XML檔案的schema映射到資料庫的schema有兩種方法:基於表格的映射對象-關係映射

基於表格的映射把XML檔案看作一個(或一組)表格,將各欄位資料以子項目的形式或以屬性的形式儲存。

基於表格的映射對存取關係型資料比較適用,比如在兩個關係型資料庫之間轉換資料。其明顯不足就是不適于格式不符的XML檔案。
對象-關係的映射方式將XML檔案中的資料視為特定的對象樹的模型。在這個模型中,元素及其類型、元素內容或混合內容(複合元素類型)通常被視為類。只具有PCDATA內容的元素(簡單元素類型)、屬性以及PCDATA都被當作簡單屬性。然後通過傳統的對象-關係映射技術或
SQL 3的物件檢視將該模型映射到關係型資料庫。也就是說,類被映射到表格,簡單屬性被映射到欄位,而值為對象屬性被映射為成對的主鍵/外鍵(primary
key/foreign key)。

原生XML資料庫的資料存放區

還可以將XML檔案中的資料存放區在原生XML資料庫(native XML
database)中。這麼做有幾個理由。首先,當你的資料是半結構化的資料時。也就是說,它的結構是普通的,但是如果將其映射到關聯式資料庫,結果是要麼出現大量空值(null)的欄位,要麼表格的數量過多,浪費空間或效率低下。雖然半結構化的資料可儲存到物件導向的或層次型資料庫中,你還可以選擇將它以XML檔案的形式儲存於原生XML資料庫。

將資料存放區在原生XML資料庫中的第二個理由是讀出速度。根據XML資料庫儲存資料的物理方式的不同,資料的讀出速度可以做到比關係型資料庫[的讀取速度]快得多。其原因是,原生XML資料庫對整個檔案一起進行實體儲存體,和[表示]檔案各個部分的物理(而不是邏輯)指標可採用同一儲存策略。這就可以不使用串連(joins)或只使用物理串連讀取檔案,無論哪種情況都比關係型資料庫所用的邏輯連接要快。

以上述銷售訂單檔案為例。在關係型資料庫中,它可能被存為四個表格 -- SalesOrders,
Items, Customers, 和 Parts --
讀取檔案時需要將這些表格結合起來。在原生XML資料庫中,整個檔案可被儲存在磁碟的一個地方,在讀取檔案或其片斷時只需要一次尋找和一次讀取操作。關聯式資料庫在讀取資料時則需要四次尋找以及至少四次讀取操作。

這樣做的一個明顯缺點就是,只有資料的讀取順序和寫入磁碟的順序相同時,才可以提高速度。如果你想要的資料檢視不同,比如只想要客戶及其訂單列表,效能可能比關聯式資料庫更差。所以,如果你的應用中是單個資料檢視為主,為了提高效能,才可以考慮將資料存放區到原生XML資料庫。

將資料存放區在原生XML資料庫中的第三個理由是你想利用XML的專屬特性,如執行XML查詢。由於今天以資料為中心的應用幾乎沒有這樣做的,而且關聯式資料庫正在逐步支援XML查詢語言,這個理由越來越不充分。

將資料存放區在原生XML資料庫中的一個問題是,大多數原生資料庫只能以XML[的形式]返回資料。(支援元素和屬性到應用程式變數綁定的只是少數)。如果你的應用程式需要另一種資料格式(很有可能),使用資料之前必須先解析XML。對本地的應用程式而言顯然是個缺點,而這種前期準備在(比如)ODBC中就不存在。對於將XML作為資料載體使用的分布式應用程式而言,這個問題不很嚴重,因為不管用的是哪種資料庫,這種前期工作必須要有。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.