版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
摘要:隨著XML數(shù)據(jù)的日益增多,XML已經(jīng)成為了互聯(lián)網(wǎng)上數(shù)據(jù)表示和數(shù)據(jù)交換的標準格式。同時也涌現(xiàn)出大量的XML數(shù)據(jù)存儲方法,比較有代表性的有XML專用數(shù)據(jù)庫存儲、面向對象數(shù)據(jù)庫存儲、關系數(shù)據(jù)庫存儲等。由于關系數(shù)據(jù)庫的大力發(fā)展、廣泛應用和其成熟的技術,在存儲管理XML的各種可能的方式中,基于關系數(shù)據(jù)庫的XML數(shù)據(jù)存儲成為一種可行而有前景的方式,受到了廣泛的關注。由于關系數(shù)據(jù)庫的二維平面關系表結構與XML的層次結構有很大差異,怎樣在關系數(shù)據(jù)庫中有效地存儲XML文檔,同時又能保持其結構信息和文檔信息成為一個難題。為了解決這一難題,使得XML模式與關系模式之間的映射問題,成為XML文檔的關系化存儲技術的核心問題。本文主要探討了XML與數(shù)據(jù)庫映射的方法。目錄第一章 前言 1第二章 XML技術 3·2.1XML的特點 3·2.2XML的應用分析 42.3.1DTD 52.3.2XMLSchema 62.4XML解析技術 72.4.1SAX 82.4.2.DOM 82.4.3.DOM與SAX比較 9第三章 XML與數(shù)據(jù)庫技術 103.1XML是數(shù)據(jù)庫嗎? 103.2數(shù)據(jù)和文檔的對比 103.2.1以數(shù)據(jù)為中心的文件 113.2.2以文檔為中心的文件 113.2.3數(shù)據(jù)、文檔和數(shù)據(jù)庫 11第四章 XML與關系數(shù)據(jù)庫的轉換 134.1邊模型映射法 134.2結點模型映射法 16第五章 結束語 19第六章 致謝 20前言近年來,互聯(lián)網(wǎng)得到了迅猛發(fā)展,它提供了全球范圍的網(wǎng)絡互聯(lián)與通信功能,其豐富的信息資源給人們的學習和生活帶來了極大的便利。作為互聯(lián)網(wǎng)最主要應用的Web實際上已成為最大的信息資源庫。電子商務、電子出版、遠程教育等基于Web的新興領域的全面興起使得傳統(tǒng)的Web資源更加復雜化和多樣化。人們對Web服務功能的需求也達到更高的標準,如用戶需要對Web進行智能化的語義搜索和對數(shù)據(jù)按照不同的需求進行多樣化顯示等個性化服務;公司和企業(yè)要為客戶創(chuàng)建和分發(fā)大量有價值的文檔信息,以及對不同平臺、不同格式的數(shù)據(jù)源進行有效的數(shù)據(jù)交換和集成等等。在這種大環(huán)境下,以簡單易學、靈活通用著稱的HTML,隨著網(wǎng)絡應用的日益廣泛,局限性逐漸明顯,越來越不能適應作為Intemet上信息交換和表示的工具了。XML(eXtensibleMarkupLanguage)作為SGML(StandardGeneralizedMarkupLanguage)的一個優(yōu)化子集,它不像HTML那樣事先定義好一組標簽,而是提供了一個標準,只要遵循這個標準,你可以靈活的定義自己的標記。XML不僅能夠存儲數(shù)據(jù),而且能夠存儲結構和語義信息,具有通用的數(shù)據(jù)表示能力,能表示結構化、半結構化及元結構化數(shù)據(jù),可以描述不同種類應用軟件中的數(shù)據(jù),這使其在數(shù)據(jù)交互和信息共享方面擁有天然的優(yōu)勢,成為Web上數(shù)據(jù)表示與交換的通用標準。XML與HTML相比主要有以下幾點優(yōu)勢:(1)XML簡單,具有自我描述能力。通過語義標記來說明數(shù)據(jù)的語義,容易理解且易于解析。這使得XML具有機器可讀性,具體應用可以按照各種方式解析、過濾及重構XML文檔。(2)XML具有靈活性。HTML的標記是預定義的,具有固定的名稱及語義,不能擴展,而XML的標記可由用戶定義,可以被任意的擴展。XML的嵌套結構可以表示各種復雜的數(shù)據(jù)結構,各種格式的數(shù)據(jù)都可以較容易的轉換為XML數(shù)據(jù),這使得XML非常適合于Web信息的發(fā)布和集成。(3)XML具有平臺獨立性。XML可用于不同類型、系統(tǒng)間的交換格式的傳送,從而簡化了從一個應用程序到另一個應用程序之間傳遞信息的工作。(4)XML實現(xiàn)了結構、內容和顯示相分離。文檔類型定義(DTD)或XML模式(XMLschema)描述了XML文檔的結構,即元素間的嵌套關系。XML文檔實例只描述數(shù)據(jù),使得數(shù)據(jù)具有獨立性,而XML文檔的顯示具有多樣性,XML文檔的顯示是由XML文檔配合XSL(eXtensibleStyleLanguage)來完成的,對同一個XML文檔可以根據(jù)應用的需要以不同的風格顯示。由于XML的諸多優(yōu)勢,出現(xiàn)大量的XML數(shù)據(jù),并且保持著快速增長,使得對XML有效存儲和操作方面的研究日益受到重視。同時由于關系數(shù)據(jù)庫技術的大力發(fā)展、成熟的技術和廣泛的應用,使得XML文檔的關系化存儲成為研究的一大熱點。本文所研究的就是XML與關系數(shù)據(jù)庫之間的轉換方法。
XML技術XML(eXtensibleMarkupLanguage,可擴展標記語言)是由W3C[”】于1998年2月發(fā)布的一種標準,是SGML的一個簡化集。它繼承了SGML的強大功能,去除了繁瑣的定義,彌補了HTML作為網(wǎng)絡標準語言的不足。它將SGML的豐富功能和HTML的易用性結合到了萬維網(wǎng)的應用中,深受軟件開發(fā)商的支持和程序開發(fā)人員的厚愛。目前XML在很多方面都有應用,具有如下特點:·2.1XML的特點XML作為一種標記語言,具有嚴格、規(guī)范的語法,創(chuàng)建XML文檔必須滿足一定的規(guī)范,依據(jù)XML1.0規(guī)格,所有的XML文檔都必須是格式良好的(well.formed),一個格式正確的XML文檔必須符合以下幾點要求:(1)聲明語句。XML聲明必須以小寫xml聲明,并設置version屬性,必須出現(xiàn)在第一行,其格式如下:<?xmlversion=”1.0”standalone=”yes/no”encoding=”UTF一8II?>,聲明的作用是告訴瀏覽器或者其它處理程序:這個文檔是XML文檔。聲明語句中的version表示文檔遵守的XML規(guī)范的版本;standalone表示文檔是否附帶DTD文件,如果有,參數(shù)為no;encoding表示文檔所用的語言編碼,默認是UTF.8(2)元素。元素組成了XML文檔中的大部分內容,XML文檔有且只有一個根元素,所有元素(Elemem)構成一個層次樹,元素之間必須正確嵌套。元素由一對標記組成,結束標記匹配相應的起始標記。格式為:<標記名>內容叫標記名>。(3)屬性。元素可以用屬性來注釋,屬性通常用來給元素提供所顯示內容的額外信息,出現(xiàn)位置為元素的起始標記中,對于一個元素來說,不能存在多個相同名稱的屬性,元素大小寫敏感。格式為:屬性名=屬性值。(4)處理指令。處理指令通常用來為處理XML文檔的應用程序提供信息,這些信息包括如何處理文檔,如何顯示文檔等。處理指令的出現(xiàn)位置可以為元素的后裔,也可以為根元素的前面或者后面。格式為:<?targetdate?>。(5)注釋。XML注釋出現(xiàn)位置可以為元素的后裔,也可以為根元素的前面或者后面。格式為:<!一注釋內容_>。(6)命名空間。XML允許設計者定義自己的標記名,命名空間的出現(xiàn)解決了重名的情況。格式為:xmlns:prefix=’URI’。下圖給出了一個良構的XML文檔例子,如下:圖表SEQ圖表\*ARABIC1·2.2XML的應用分析作為互聯(lián)網(wǎng)的新技術,XML的應用非常廣泛,滲透到了互聯(lián)網(wǎng)的各個角落。借用Gartner公司的報告中的一句話:“商業(yè)公司不能再做局外人了,不能對XML置之不理’’。可見,XdvlL的重要性,以下是XML的主要應用場合:(1)數(shù)據(jù)交換。電子商務通過互聯(lián)網(wǎng)傳輸和交換商務數(shù)據(jù),并對商務數(shù)據(jù)進行人工或自動處理,這也是XML的主要應用領域之一。XML的可擴展性和自相容性等特點,使之成為數(shù)據(jù)交換的有力工具。(2)內容管理。XML只用元素和屬性來描述數(shù)據(jù),而不提供數(shù)據(jù)的顯示方法,它提供了一個獨立于平臺和語言的內容,使用象XSLT這樣的語言能夠輕易地將XML文件轉換成各種格式文件,比如HTML,WML,PDF,flat,等等。(3)WEB集成?,F(xiàn)在有越來越多的設備也支持XML了,為了利用互聯(lián)網(wǎng)技術和標準為移動設備連接互聯(lián)網(wǎng)建立全球性的同一規(guī)范,Phone.com聯(lián)合了Motorola等通訊公司建立了WAP論壇,推出了WAP規(guī)范,同時W3C也定義了基于XML的手持設備置標語言HDML。(4)配置管理。許多應用都將配制數(shù)據(jù)存儲在各種文件里,將配制數(shù)據(jù)標記為XML格式,能使其更具可讀性,并能方便地集成到應用系統(tǒng)中去。使用XML配制文件的應用程序能夠方便地處理所需數(shù)據(jù),不用象其他應用那樣要經(jīng)過重新編譯才能修改和維護應用系統(tǒng)?!?.3XML模式語言XML模式語言負責定義和描述XML文檔的結構和內容模式。它可以定義XML文檔中存在哪些元素和元素之間的關系,并且可以定義元素和屬性的數(shù)據(jù)類型。XML模式語言主要有兩種:DTD和XMLSchema,現(xiàn)分別介紹如下:2.3.1DTDDTD是DocumentTypeDefinition(文檔類型定義)的簡稱。它是一套關于標記的語法規(guī)則,詳細描述一組XML文檔的結構。DTD列出了可用在文檔中的元素、屬性、實體和符號表示法,說明在文檔中可以使用哪些標一記,哪些標記可以出現(xiàn)在其它標記中,哪些標記具有屬性,使用的標記應按什么順序出現(xiàn)等。例如,圖表2是一個XMLDTD的例子,圖表1中的XML文檔就是符合這個DTD的描述的:圖表SEQ圖表\*ARABIC2在DTD文檔中,可以利用操作符號(0次或多次)、+(至少1次)、?(0次或1次)、l(或選)來定義子元素的出現(xiàn)次數(shù)。其中ELEMENT表示元素,ATTLIST表示屬性,#PCDATA表示數(shù)據(jù),DTD假設所有取值都只能是字符串值。XML文檔中DTD的使用方法分兩種:內部DTD,即在XML文檔的序言部分中直接加入DTD的描述;外部DTD,即DTD可作為一個完全獨立的文件,將DTD存儲在一個后綴為.dtd的文件中,在XML文件中調用它。可以看出,內部DTD相當繁瑣,通用性低,而同一個外部DTD文件,可以被多個XML文檔引用;外部DTD文件的可移植性很好,當需要修改的時候,只修改外部DTD文件,而不需逐一修改使用了該DTD的所有XML文檔。使用了DTD的XML文檔必須符合該模板的要求,在分析階段必須通過DTD的有效性驗證。隨著XML技術的廣泛使用,DTD逐漸暴露了自身存在的不足:DTD是基于正則表達式的,描述能力有限;DTD沒有數(shù)據(jù)類型的支持,在大多數(shù)應用環(huán)境下能力不足;DTD的約束定義能力不足,無法對XML實例文檔做出更細致的語義限制:DTD的結構不夠結構化,重用的代價相對較高;DTD并非使用XML作為描述手段,而DTD的構建和訪問并沒有標準的編程接口,無法使用標準的編程方式進行DTD維護。2.3.2XMLSchema同DTD一樣,Schema也是一種XML文檔模式定義語言。但與DTD不同的是,Schema克服了DTD的幾個局限,XMLSchema與DTD相比,有如下幾個優(yōu)點:XMLSchema使用標準XML語法,本身就是一個XML文檔,可以直接用成熟的XML文檔解析器讀取;XML提供了豐富的數(shù)據(jù)類型,包括數(shù)字型、布爾型、日期型等等,并且可以定義新的數(shù)據(jù)類型,允許對數(shù)據(jù)進行更嚴格的合法性檢查;XMLSchema支持繼承性,即可利用一個已有的XMLSchema產(chǎn)生一個新的)(MLSchema;XML支持命名空間,保證了標記的唯一性;XMLSchema的擴展性好,它的內容模型是開放的,可以隨意擴充、更新等。下面是一個XMLSchema的例子,一般,這樣的模式文件保存在一個后綴為xsd的文件中,與圖表2中dtd是等價模式,同樣可以描述圖表1的XML文檔。圖表SEQ圖表\*ARABIC32.4XML解析技術XML文檔實際上就是純文本數(shù)據(jù),使用XML數(shù)據(jù)格式的應用程序首先必須能對XML數(shù)據(jù)進行讀取、分析,進而進行處理。SAX(SimpleAPIsforXML)與DOM(DocumentObjectModel)是兩種常用的XML應用程序接口標準。它們在應用程序開發(fā)過程的作用如下圖:圖表SEQ圖表\*ARABIC4下面分別給予詳細的介紹。2.4.1SAXSAX(TheSimpleAPIforXML)即簡單編程接口,第一個被廣泛采用的用Java編寫的XMLAPI,是一個事實上的標準【181。SAX是一個通用的,基于事件的XML解析的標準編程接口。SAX是事件驅動的“推”模型,是一種基于回調(callback)機制的程序運行方法,即它不需要一次讀入整個文檔,是邊讀文檔邊對文檔進行解析,文檔的讀入過程就是SAX的解析過程。從這一點來說,SAX是一種輕量型的解析方法。圖表SEQ圖表\*ARABIC52.4.2.DOMDOM(DocumentObjectModel)即文檔對象模型,一個來自W3C的成熟標準。DOM將XML文檔看作是一個分層的對象模型,是一棵節(jié)點樹,稱為DOM樹。在DOM樹中,有一個根節(jié)點,即根元素,其它節(jié)點都是這個根節(jié)點的后代節(jié)點,節(jié)點用來表示XML文檔中的元素,屬性、文本、注釋、處理指令以及類似的信息。DOM是文檔驅動的,即它一次把整個XML文檔讀入內存,然后向應用程序提供對整個文檔可操作的DOM樹,可以通過這棵樹來訪問所需信息。DOM解析器需要一次把XML文檔讀入內存,從這一點來講j它是一種重量型的解析方法。圖表SEQ圖表\*ARABIC62.4.3.DOM與SAX比較SAX和DOM是兩類不同的XML文檔解析方法,兩種技術各有利弊。主要區(qū)別在于:應用程序的目的:如果必須對數(shù)據(jù)進行更改,并且作為XML將它輸出,則在大多數(shù)情況下,使用DOM。與使用XSL轉換來完成的簡單結構更改不一樣,如果是對數(shù)據(jù)本身進行更改,則尤其應該使用DOM。數(shù)據(jù)的數(shù)量:對于大文件,SAX是更好的選擇。將如何使用數(shù)據(jù):如果實際上只使用一小部分數(shù)據(jù),則使用SAX將數(shù)據(jù)抽取到應用程序中,這種方法更好些。另一方面,如果知道將需要向后引用已經(jīng)處理過的信息,則SAX可能不是正確的選擇。需要速度:通常SAX實現(xiàn)比DOM實現(xiàn)快。值得說明的是,SAX和DOM并不是互斥的,這一點很重要??梢允褂肈OM來創(chuàng)建事件的SAX流,可以使用SAX來創(chuàng)建DOM樹。事實上,大多數(shù)解析器常常使用SAX來創(chuàng)建DOM樹。XML與數(shù)據(jù)庫技術3.1XML是數(shù)據(jù)庫嗎?"XML是數(shù)據(jù)庫嗎?"在嚴格意義上將,如果"XML"是指XML文檔時,答案是"否"。盡管XML文檔包含了數(shù)據(jù),但是如果沒有其他的軟件來處理這些數(shù)據(jù),它對于數(shù)據(jù)庫的意義和其他文本文件沒有什么區(qū)別。如果在更為寬泛一些的意義上將,當"XML是指XML文檔以及所有相關的XML的工具和技術時,答案則是"是"。之所以肯定是由于XML提供了許多數(shù)據(jù)庫中所需要的部分:存儲(XML文檔),結構(DTD,XMLschema語言),查詢語言(XQL,XML-QL,QUILT等),編程接口(SAX,DOM),等等。不過...XML還缺少很多在真實的數(shù)據(jù)庫中所必備的內容:有效的存儲、索引、安全、交易、數(shù)據(jù)完備性、多用戶訪問、觸發(fā)、多文檔查詢等。因此如果在數(shù)據(jù)量一般、用戶較少、性能要求不高的環(huán)境下可以把XML當作數(shù)據(jù)庫來使用;而在大多產(chǎn)品的環(huán)境中,要求有許多的用戶使用、需要嚴格的數(shù)據(jù)完整性并且對性能有很高的要求,XML就不能勝任了。而且,考慮到象dBase和Access等數(shù)據(jù)庫既便宜又十分易用,因此甚至在第一種情況下XML都很少有理由充當數(shù)據(jù)庫的角色。3.2數(shù)據(jù)和文檔的對比在選擇數(shù)據(jù)庫時,最重要的判斷因素可能是你是利用數(shù)據(jù)庫來保存數(shù)據(jù)還是保存文檔。如果你想保存數(shù)據(jù),你需要的數(shù)據(jù)庫主要是面向數(shù)據(jù)存儲(例如關系型數(shù)據(jù)庫或者面向對象型數(shù)據(jù)庫)以及在數(shù)據(jù)庫和XML文檔之間相互轉換。從另一個角度來將,如果你想存儲文檔,你需要一個專門設計用來存儲文件的內容管理系統(tǒng)。雖然你可以自己把文件保存在關系數(shù)據(jù)庫或面向對象數(shù)據(jù)庫中,可是你常會發(fā)現(xiàn)你的工作是在重復內容管理系統(tǒng)的功能。類似的,雖然一個內容管理系統(tǒng)通常是建立在面向對象數(shù)據(jù)庫或關系數(shù)據(jù)庫之上,但要是把一個內容管理系統(tǒng)當做數(shù)據(jù)庫來使用就可能非常的令人困繞。你需要存儲數(shù)據(jù)還是文檔,答案常常取決于你的XML文檔。原因是XML文件分為兩大類:以數(shù)據(jù)為中心和以文檔為中心3.2.1以數(shù)據(jù)為中心的文件以數(shù)據(jù)為中心的文件的特點是結構相當規(guī)范、數(shù)據(jù)顆粒度好(也就是說,數(shù)據(jù)中最小的獨立單元是PCDATA元素或者是屬性)、很少或者沒有混合內容。其中同層次元素和PCDATA的出現(xiàn)順序并不重要。典型的例子是,XML文檔包含了銷售定單、飛行安排、餐館菜單等等。數(shù)據(jù)為中心的文檔常被用于機器的使用,這時XML可能是多余的它僅僅是數(shù)據(jù)傳輸?shù)氖侄味?。在XML的世界中,許多內容豐富的文檔實際上都是數(shù)據(jù)為中心的。我們以顯示圖書信息的A網(wǎng)站為例。雖然這個頁面是相當巨大的文本,但是這個文本的結構是高度規(guī)范的,其中許多的部分對任何的書本描述頁面都是相同的,并且特點頁面中的各部分的大小都是有限的。也就是說,該頁面可以通過一個簡單的、數(shù)據(jù)為中心的XML文檔來建立,其中包含了從數(shù)據(jù)庫中檢索得到的文本信息以及一個XSL樣式表。通常,目前任何通過在模板中填充數(shù)據(jù)庫數(shù)據(jù)而動態(tài)構造HTML頁面的網(wǎng)站都可以被上面介紹的用以數(shù)據(jù)為中心的XML文檔和一個或者多個的XSL樣式表方式替代。3.2.2以文檔為中心的文件以文檔為中心的文檔的特點是:結構不規(guī)范、數(shù)據(jù)顆粒度更大(即,最小的獨立數(shù)據(jù)單元是包含有混合內容的元素或者就是整個XML文檔)以及含有大量的混合內容。其中相同層次的元素和PCDATA出現(xiàn)順序是非常重要的。典型的例子是書、電子郵件、廣告以及大多數(shù)XHTML文檔。以文檔為中心的文檔是用于人的使用。3.2.3數(shù)據(jù)、文檔和數(shù)據(jù)庫在現(xiàn)實情況中,以數(shù)據(jù)為中心的文件和文檔為中心的文件之間的區(qū)別并不是很嚴格。例如,一個以數(shù)據(jù)為中心的文件(如一張發(fā)票),也有可能包含粗顆粒度、不規(guī)則的數(shù)據(jù)(如發(fā)票的描述部分)。而一個以文檔為中心文件(如用戶手冊)也可能包含有良好顆粒度、規(guī)則的結構化數(shù)據(jù)(通常是元數(shù)據(jù)),例如作者和修訂日期。除此之外,讓你的文檔具有以數(shù)據(jù)為中心或者以文檔為中心的特點有助于你判斷是關心數(shù)據(jù)還是文檔,這也將決定你需要采用什么樣的系統(tǒng)。要存儲或檢索數(shù)據(jù),你可以使用一個數(shù)據(jù)庫(通常是關系型、面向對象型或者是層次型)和中間件(字帶或者是采用第三方),你也可以使用XML服務器(即創(chuàng)建分布式應用的平臺,例如利用XML進行數(shù)據(jù)傳輸?shù)碾娮由虅諔?。要保存文檔,你將需要一個內容管理系統(tǒng)或者是一致性的DOM實現(xiàn)系統(tǒng)。
XML與關系數(shù)據(jù)庫的轉換當前XML文檔數(shù)據(jù)映射的研究,主要是XML與關系數(shù)據(jù)庫的映射。將XML文檔映射為關系模式進行存儲,有兩大類映射方法:模型映射(modelmapping)和結構映射(structuremapping),其中基于結構的映射方法又可以分為兩類,分別是:基于DTD的結構映射方法和基于XMLSchema的結構映射方法。對于模型映射,需要將XML文檔模型(即文檔樹結構)映射為關系模式,關系模式表示XML文檔模型的構造,對于所有XML文檔都有固定的關系模式,因此,它是XMLSchema(或DTD)無關的。而對于結構映射,需要將XMLSchema(或而對于結構映射,需要將XMLSchema(或DTD)映射為關系模式,關系模式用來表示目標XML文檔的邏輯結構(即XMLSchema或DTD),它是XMLSchema(或DTD)相關的。在進行關系數(shù)據(jù)庫映射時,從XML文檔的DTD或Schema推斷XML元素應該怎樣映射到關系表,然后再根據(jù)生成的關系模式,對XML文檔進行解析分解,并將數(shù)據(jù)存入關系數(shù)據(jù)庫,這樣的映射策略屬于結構映射方法。在本文中只考慮模型映射。模型映射方法模型映射法又分為:邊模型映射方法和結點模型映射方法。將一個XML文檔看成是一個有序有向邊標記圖,稱為XML圖,設計一個(或若干個)關系存儲XML圖的邊信息和結點值,該策略是屬于基于邊的模型映射方法,稱為邊模型映射方法。設計若干個關系來存儲XML文檔樹的結點信息、結點值和結構信息(通過區(qū)間編碼來譯碼結構信息,或直接存儲雙親/孩子結點對或祖先/后裔結點對),該策略是屬于基于結點的模型映射方法,稱為結點模型映射方法。4.1邊模型映射法一個XML文檔能夠用一個有序有向邊標記圖來表示在這種圖中,每一個XML元素用一個結點表示,結點被標上XML對象的oid:元素與子元素(或屬性)之間的關系用圖中的邊來表示,并在邊上標上子元素(或屬性)名:為了表示XML元素中各子元素的順序,可以對圖中從某結點引出的邊進行排序:XML文檔中的值作為圖中葉結點(即屬性或最底層子元素結點)表示。例如圖7即為圖1的XML文檔對應XML文檔圖。圖表SEQ圖表\*ARABIC7有了XML圖之后,就可以分別設計關系表存儲XML文檔的邊信息和值。對于用來存儲邊信息的邊表有三種設計方案:第一種是所有具有相同名稱的邊存放在一個邊表中,這種方法稱為Binary方法。因此,圖2—7所示的文檔圖所對應的Binary方法的book和ISBN邊表,其它依次類推:圖表SEQ圖表\*ARABIC8圖表SEQ圖表\*ARABIC9第二種是用一個表來存儲圖的所有邊信息,這種方法稱為Edge方法。系模式為:Edge(source,ordinal,label,flag,target)。其中source域和target域表示引出結點和引入結點的oid,ordinal域表示該邊在兄弟邊中的位置序號,label與用來存儲邊標記(即改邊所指向結點的標記名),flag屬性用來反映邊所指向的結點類型(葉結點類型為integer、string等,非葉結點類型為ref)??梢钥闯觯珺inary邊表與Edge邊表原理相同,只是Binary邊表將所有具有相同邊標記的邊存放在一個表中,可以說,Binary邊表是Edge邊表的水平分割。因此,圖表7所示的文檔圖所對應的Edge邊表為:圖表SEQ圖表\*ARABIC10第三種是采用一個邊表來存儲圖中所有路徑的邊信息,該方法稱為Universal方法。對于用來存儲XML文檔值的值表有兩種設計方案:第一種是不單獨設計值表,將值和邊存儲在同一個表中,在邊表中直接增加一個屬性value,用于存儲葉結點的值,這種方法稱為內聯(lián)方法。其關系模式為:Inner_Edge(source,ordinal,label,flag,target,value)。第二種是為每一種可能的取值類型設計一個值表,該方法稱為分離值表。其關系模式為Valuetypc(vid,value),其中vid存儲葉結點的oid,value屬性用來存儲葉結點的值。從上面的映射模式可以看出,XML文檔圖的生成是基于XML文檔本身,與XMLSchema和DTD沒有關系,并且映射的過程中記錄了結點的位置信息,因此反過來,也可以從關系數(shù)據(jù)庫復原XML文檔。綜上所述,三種邊表設計方案連同兩種值表設計方案,合在一起一共有六種存儲模式。D.Florescu和D.Kossmann對這六種基本的存儲模式的結果占關系數(shù)據(jù)庫大小、執(zhí)行不同類型的X/VlL查詢的執(zhí)行時間、從關系數(shù)據(jù)重構XML文檔的時間等三個性能參數(shù)進行了量化分析,結論是:Binary邊表方法優(yōu)于Edge邊表方法,Edge邊表方法又優(yōu)于Universal邊表方法;內聯(lián)值表方法優(yōu)于分離值表方法;Binary邊表帶內聯(lián)值表的存儲模式能獲得最好的綜合性能。Binary方法和Universal方法查詢性能不好的主要原因是由于邊表太大,因此執(zhí)行連接操作非常費時。事實上,對于一個給定查詢來說,邊表中存放的數(shù)據(jù)大部分是不相關的。換句話說,在Binary方法中僅僅相關的數(shù)據(jù)被處理,即使卷入大量的連接和回路操作,由于現(xiàn)代關系查詢引擎有非常強的查詢處理能力,也能獲得很好的查詢性能。內聯(lián)值表方法優(yōu)于分離值表方法的主要原因是內聯(lián)方法無須進行邊表與值表之間的連接操作。對于許多不同的數(shù)據(jù)類型,由于在關系數(shù)據(jù)庫系統(tǒng)中,空值通常以一種緊縮方式進行存儲,因此空間就節(jié)省了,解決了大量冗余的問題。4.2結點模型映射法(1)XRel模式M.Yoshikawa,T-Amagara等基于結點模型映射方法提出了一個XML數(shù)據(jù)的關系存儲模式,稱為XRel[341。XRel是通過區(qū)間編碼[start,end]來反映(譯碼)XML文檔的模型結構,并根據(jù)內容來劃分,分為元素邊、屬性邊和文本邊,同時將所有路徑進行存儲,因此,XRel模式由四個關系表組成:Element(pathlD,doclD,start,end,ordinal)Attribute(patMD,doclD,start,end,value)TextCoathID,doclD,start,end,value)Path(pathlDpathexp)其中,在Path表中,pathlD為標記路徑(1abel—path)的標識,pathexp域存儲標記路徑,為了實現(xiàn)路徑表達式的字符串匹配操作,將標記路徑中的“/,,替換為“彤"進行存儲。對于Element,Attribute和Text表,主鍵是(doclD,start),pathlD是外鍵。每一個不同的標記路徑作為Path表的一個元組,因此它能夠有效地處理帶“*”操作的正則路徑表達式查詢。第一步,利用字符串中的匹配操作,能夠快速地查找出與給定正則路徑表達式相匹配的所有標記路徑的標識:第二步,利用這些路徑標識,能夠快速地查找出隸屬于這些路徑終端的值(元素結點、文本結點或屬性結點)。XRel的最大優(yōu)點在于它與XPath標準的緊密結合,從而能夠對基于XPath的查詢給予相當好的性能支持,但同時它也存在很大的不足之處,尤其是它的PATH信息具有很大的冗余信息,一個簡單的修改節(jié)點名字的操作,都會需要相當復雜的操作。(2)XParent模式香港科技大學JiangHaifeng,LuHongjun和WangWei等基于結點模型映射方法提出了另一個XML數(shù)據(jù)的關系存儲模式,稱為XParent。XParent是通過一個單獨的Parent(Parent.ID,child.ID)表來反映XML文檔的模型結構,并根據(jù)內容和“結構與非結構”來劃分邊,同時將所有路徑進行存儲,因此,XParent模式也由四個關系表組成:LabelPath(pathlD,length,pathexp)Parent(pid,cid)Element(pathlD,did,ordinal)Data(pathlD,did,ordinal,value)其中l(wèi)ength為標記路徑的長度,即標記路徑中邊標記的個數(shù):pathexp域存儲標記路徑,與XRel類似,這里將標記路徑中的“/”替換為“./”進行存儲:did為XML文檔中元素結點的標識,它也可以作為以該結點為終端點的數(shù)據(jù)路徑的標識:pid,cid分別為XML文檔的數(shù)據(jù)路徑中的雙親結點、孩子結點的標識。這里,沒有考慮文檔標識d
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 員工個人總結怎么寫2021
- 指導培養(yǎng)教師工作計劃
- 2022年高中工作計劃
- 2025年柔性自動化裝備項目合作計劃書
- 自行車車形容2篇
- 2025年耐高溫濾料合作協(xié)議書
- 入職競業(yè)協(xié)議書(2篇)
- 2025年高純石英纖維正交三向織物項目發(fā)展計劃
- 2025年青霉素類抗菌藥物合作協(xié)議書
- 地下車庫租賃協(xié)議
- GB/T 1226-2017一般壓力表
- GA 1517-2018金銀珠寶營業(yè)場所安全防范要求
- 山東省初中生物科學探究專題復習課件
- 掘進工作面設計說明書
- 評標專家?guī)煜到y(tǒng)系統(tǒng)總體建設方案參考模板
- 頑固性高血壓的介入治療進展課件
- 三年級上冊數(shù)學課件北師大版專項復習 操作題、圖形題專項
- 黃土高原水土流失說課
- 醬香型白酒生產(chǎn)工藝課件
- 河北省石家莊市藥品零售藥店企業(yè)藥房名單目錄
- 《來自地球的力》名師教案
評論
0/150
提交評論