欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

基于模式的xml存儲(chǔ)方法及應(yīng)用的制作方法

文檔序號(hào):6424996閱讀:294來源:國知局
專利名稱:基于模式的xml存儲(chǔ)方法及應(yīng)用的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及一種XML存儲(chǔ)方法及應(yīng)用,尤其涉及一種基于模式的XML存儲(chǔ)方法及應(yīng)用。
背景技術(shù)
XML文檔是用標(biāo)簽自定義的文檔,它包含元素節(jié)點(diǎn),屬性節(jié)點(diǎn),文本節(jié)點(diǎn)等。XML文檔具體如下<pre listing-type="program-listing">  <bib>   <vendorl>   <name>LongMark</name>   <book1 isbn=″isbn1001″>   <title>C++</title>   <author1>   <fname>Rose</fname>   <lname>Smith</lname>   </author>   <price>50</price>   </book1>   <book2 isbn=″isbn1002″>   <title>XML</title>   <author2>   <fname>Steven</fname>   <lname>Tom</lname>   </author2>   <price>80</price>   </book>   </vendor1>   <vendor2>...</vendor2>   <bib></pre>如上所示,&lt;bib&gt;,&lt;vender&gt;等是元素節(jié)點(diǎn),isbn是屬性節(jié)點(diǎn),C++是文本節(jié)點(diǎn)。元素節(jié)點(diǎn)可以嵌套,外層節(jié)點(diǎn)是內(nèi)層節(jié)點(diǎn)的父節(jié)點(diǎn),內(nèi)層節(jié)點(diǎn)是外層節(jié)點(diǎn)的子節(jié)點(diǎn)。比如,&lt;bib&gt;是&lt;vendor&gt;的父節(jié)點(diǎn),&lt;vendor&gt;就是name的父節(jié)點(diǎn)。
XML數(shù)據(jù)可以表示成樹狀的數(shù)據(jù),比如上述的XML文檔可以表示成圖1中的結(jié)構(gòu)。用于數(shù)據(jù)交換的XML文檔通常是有模式定義的。模式定義XML的結(jié)構(gòu),比如元素節(jié)點(diǎn)可以有哪些類型的子節(jié)點(diǎn)和屬性節(jié)點(diǎn),子節(jié)點(diǎn)可以重復(fù)出現(xiàn)的次數(shù)等。圖2是圖1所示文檔的模式定義。其中帶“*”號(hào)的節(jié)點(diǎn)表示可以重復(fù)出現(xiàn)的節(jié)點(diǎn)。這里,vendor,book和author是可以重復(fù)出現(xiàn)的節(jié)點(diǎn)。
隨著XML數(shù)據(jù)越來越成為數(shù)據(jù)交換和數(shù)據(jù)表示的標(biāo)準(zhǔn),對(duì)XML數(shù)據(jù)高效的管理和查詢的需求越來越強(qiáng)烈。而高效的管理和查詢直接依賴于XML數(shù)據(jù)的存儲(chǔ)方式。所以,一種高效的XML存儲(chǔ)方法,是高效的XML管理和查詢的關(guān)鍵和前提。
目前,在XML存儲(chǔ)結(jié)構(gòu)中,物理存取的最小單位是記錄。記錄即是一棵子樹,它由一個(gè)或多個(gè)節(jié)點(diǎn)(如Element Node、Attribute Node、Text Node等)組成,是邏輯存取的最小單位。如果要讀取某一個(gè)節(jié)點(diǎn),必須把該節(jié)點(diǎn)所在的整個(gè)記錄讀取進(jìn)來。
欲理解XML的存儲(chǔ),首先要弄清楚兩個(gè)關(guān)鍵問題一是記錄的粒度,二是記錄的存儲(chǔ)順序。
記錄的粒度就是記錄中包含有的幾個(gè)節(jié)點(diǎn)。一般地,記錄的粒度有三種。
節(jié)點(diǎn)級(jí)的,每一個(gè)節(jié)點(diǎn)就是一個(gè)記錄。如vendor、book等分別是一個(gè)記錄。
子樹級(jí)的,一棵子樹是一個(gè)記錄。比如,bib(vendor(name))是一個(gè)記錄。劃分子樹的標(biāo)準(zhǔn)是使每一個(gè)記錄的大小盡可能地跟物理塊的大小接近。這樣劃分出來的記錄類型是沒有規(guī)律的。
文檔級(jí)的,整個(gè)文檔是一個(gè)記錄。比如,如圖1所示的整棵樹是一個(gè)記錄。
如果記錄的粒度是節(jié)點(diǎn)級(jí)的或者子樹級(jí)的,那么接下來面臨的問題就是記錄的存儲(chǔ)順序,也就是記錄在存儲(chǔ)上的物理連接關(guān)系。記錄的存儲(chǔ)順序一般有以下幾種按深度優(yōu)先順序存儲(chǔ)。這是最常見的存儲(chǔ)順序。比如,在圖1中,如果按照深度優(yōu)先方式,則遍歷的順序是bib,vendor,name,book1,title1,author1,fname1,lname1,price1,book2,title2,author2,fname2,lname2,price2。假設(shè)一個(gè)物理塊能容納4個(gè)記錄,那么第一個(gè)物理塊存放bib,vendor,name,book1,第二個(gè)物理塊存放title1,author1,fname1,lname1,以此類推。
按廣度優(yōu)先順序存儲(chǔ)。比如,在圖1中,若記錄按照廣度優(yōu)先的順序則是bib,vendor,name,book1,book2,title1,author1,price1,title2,author2,price2,fname1,lname1,fname2,lname2。仍假設(shè)一個(gè)物理塊能容納4個(gè)記錄,那么第一個(gè)物理塊存放bib,vendor,name,book1,第二個(gè)物理塊存放book2,title1,author1,price1,以此類推。
目前,現(xiàn)有的存儲(chǔ)方法大多數(shù)采用按照深度優(yōu)先的順序存儲(chǔ)。節(jié)點(diǎn)的粒度是節(jié)點(diǎn)級(jí),子樹級(jí)或者文檔級(jí)。它們都沒有借助模式信息,導(dǎo)致同類數(shù)據(jù)不能存放在一起,從而不能為XML的查詢提供高效的數(shù)據(jù)訪問。比如,上述XML的文檔中的兩個(gè)author節(jié)點(diǎn),它們實(shí)際上是同類節(jié)點(diǎn),都表示了書的作者的信息。這兩個(gè)作者節(jié)點(diǎn)在以上的存儲(chǔ)方法中不會(huì)相鄰存儲(chǔ)在一起,而對(duì)書的作者的查詢往往要求訪問所有的作者信息,這樣,就大大影響了查詢效率。

發(fā)明內(nèi)容
針對(duì)上述現(xiàn)有XML存儲(chǔ)方法所存在的問題和不足之處,本發(fā)明提出了一種可提高查詢效率的基于模式的XML存儲(chǔ)方法及應(yīng)用。
本發(fā)明是這樣實(shí)現(xiàn)的一種XML存儲(chǔ)方法,包括以下步驟(1)對(duì)XML事先給定的模式,選取該模式定義的特定節(jié)點(diǎn)作為記錄節(jié)點(diǎn);(2)按步驟(1)的方法把輸入的XML文檔劃分成一個(gè)一個(gè)記錄,并記錄其類型;(3)對(duì)步驟(2)中得到的記錄按類型進(jìn)行分類,類型相同的記錄存儲(chǔ)在一起。
優(yōu)選地,所述步驟(1)中的節(jié)點(diǎn)滿足以下條件的被選取節(jié)點(diǎn)是模式樹的根節(jié)點(diǎn);或節(jié)點(diǎn)是可重復(fù)節(jié)點(diǎn)且有子節(jié)點(diǎn)。
優(yōu)選地,所述記錄在邏輯頁的存儲(chǔ)組織成鏈表結(jié)構(gòu),各記錄之間用指針鏈接起來,每個(gè)記錄有兩個(gè)指針,prev指向前一個(gè)記錄,next指向后一個(gè)。邏輯頁的頭部有頭指針和尾指針,分別指向第一個(gè)記錄,和最后一個(gè)記錄。第一個(gè)記錄的prev指針指向NULL,最后一個(gè)記錄的next指針指向NULL。
優(yōu)選地,所述聚簇存儲(chǔ)具體為同類型的記錄按照上述方法存儲(chǔ)于一個(gè)邏輯頁中,如果需要多個(gè)頁,則各頁之間又通過指針鏈接起來。
一種XML存儲(chǔ)方法的應(yīng)用,該方法可用于含有結(jié)構(gòu)化數(shù)據(jù)的數(shù)據(jù)庫中。
本發(fā)明根據(jù)XML模式樹劃分記錄類型,并據(jù)此對(duì)XML文檔數(shù)據(jù)劃分記錄,然后把相同類型的記錄聚簇存儲(chǔ)在一起。本發(fā)明的存儲(chǔ)方式的粒度是子樹級(jí)的。但是子樹的劃分有別于以前的任何方法,而且存儲(chǔ)順序也不是按照深度優(yōu)先或者廣度有限,而是同類記錄聚簇的順序。
具體而言,本發(fā)明具有以下優(yōu)點(diǎn)1、提高了查詢效率;大部分情況下,查詢需要訪問同類節(jié)點(diǎn),本發(fā)明正是把同類的相關(guān)聯(lián)的節(jié)點(diǎn)存儲(chǔ)在一起,回答一個(gè)查詢所需要的內(nèi)外存交換的次數(shù)就大大減少,從而減少了查詢時(shí)間,提高了查詢效率。
2、便于數(shù)據(jù)管理;本發(fā)明將同類節(jié)點(diǎn)聚簇存儲(chǔ)在一起,在進(jìn)行數(shù)據(jù)更新等管理時(shí),能使管理工作更加方便和迅速。
3、節(jié)省了存儲(chǔ)空間;本發(fā)明的存儲(chǔ)的粒度是子樹級(jí),相比節(jié)點(diǎn)級(jí)的存儲(chǔ)方法,子樹級(jí)需要更少的指針,因而需要更少的存儲(chǔ)空間??纱蟠蠊?jié)約了存儲(chǔ)容量。


下面結(jié)合附圖對(duì)本發(fā)明作出詳細(xì)說明。
圖1為現(xiàn)有XML文檔的樹狀數(shù)據(jù)結(jié)構(gòu)示意圖;圖2為圖1的模式結(jié)構(gòu)示意圖;
圖3為本發(fā)明流程示意圖。
具體實(shí)施例方式
如圖3所示,本發(fā)明借助模式信息,將XML文檔的同類數(shù)據(jù)放在一起存儲(chǔ)。若要求將同類型記錄聚簇存儲(chǔ),關(guān)鍵問題是選定某些特定類型的節(jié)點(diǎn)作為記錄節(jié)點(diǎn)。而這可以根據(jù)模式來完成。首先,給定一個(gè)具體的模式,如何選定模式定義上的特定節(jié)點(diǎn)作為記錄節(jié)點(diǎn)呢?本發(fā)明選取記錄類型的方法是這樣的如果模式樹上一個(gè)節(jié)點(diǎn)滿足以下條件,則被選定為記錄節(jié)點(diǎn)類型為模式樹的根節(jié)點(diǎn),或者是可重復(fù)節(jié)點(diǎn)(即前面所述XML文檔中帶“*”,標(biāo)志的),而且有子節(jié)點(diǎn)。
對(duì)于圖2中的模式定義來說,按本發(fā)明方法選取出來的記錄節(jié)點(diǎn)類型應(yīng)該是bib(vendor)、vendor(name、book)、book(title、author、price)、author(fname、lname)這四個(gè)。本發(fā)明選擇記錄類型的方法隱含了語義的信息。如果一個(gè)節(jié)點(diǎn)類型是可重復(fù)的而且有子節(jié)點(diǎn)的,說明它是比較完整的邏輯單位。比如,author表示作者信息,book表示了書的信息等等。在查詢中,該邏輯單位內(nèi)的節(jié)點(diǎn)可能要經(jīng)常一起被查詢。比如,查詢book節(jié)點(diǎn),可能經(jīng)常以price為謂詞判斷,而以title為返回的結(jié)果節(jié)點(diǎn)等。
選擇好記錄的類型之后,下一步是把輸入的XML文檔劃分成一個(gè)一個(gè)記錄。比如,對(duì)于圖1所表示的XML文檔,根據(jù)前述方法劃分出來的記錄類型,可以生成記錄如下類型1bib(vendor1,vendor2...)類型2vendor(name,book1,book2,...)類型3book1(title,author1,price),book2(title,author2,price)類型4author1(fname,lname),author2(fname,lname)生成好記錄之后,下一步是要把這些記錄按照類型存儲(chǔ)在一起。比如,在第二步生成的記錄中,有四種類型,相同的類型,如類型3中的book1和book2,將會(huì)相鄰存儲(chǔ)在一起。其存儲(chǔ)利用指針結(jié)構(gòu),各記錄順序存放,記錄之間用指針鏈接,存儲(chǔ)頁頭部有兩個(gè)指針,頭指針和尾指針,分別指向第一個(gè)記錄,和最后一個(gè)記錄。第一個(gè)記錄的prev指針指向NULL,鏈尾記錄的next指針指向NULL。這樣,相同類型的記錄就組織成了一條鏈表,使從book1開始,可以順著鏈表訪問book2,book3,...,直到bookn。
本發(fā)明可使利用本發(fā)明存儲(chǔ)結(jié)構(gòu)的數(shù)據(jù)庫更具可管理性,維護(hù)起來相當(dāng)方便。同時(shí),利用本發(fā)明存儲(chǔ)結(jié)構(gòu)的數(shù)據(jù)庫占用的存儲(chǔ)空間相對(duì)較小,節(jié)約了系統(tǒng)的寶貴存儲(chǔ)空間。利用本發(fā)明存儲(chǔ)結(jié)構(gòu)的數(shù)據(jù)庫可使查詢的效率得到提高。
本發(fā)明的存儲(chǔ)方法可用于任何含有結(jié)構(gòu)化數(shù)據(jù)的數(shù)據(jù)庫中。特別是應(yīng)用到關(guān)系數(shù)據(jù)庫的各系統(tǒng)中。
權(quán)利要求
1.一種XML存儲(chǔ)方法,包括以下步驟(1)對(duì)XML事先給定一個(gè)模式,選取該模式定義的特定節(jié)點(diǎn)作為記錄節(jié)點(diǎn);(2)按步驟(1)的方法把輸入的XML文檔劃分成一個(gè)一個(gè)記錄,并記錄其類型;(3)對(duì)步驟(2)中得到的記錄按類型進(jìn)行分類,類型相同的記錄存儲(chǔ)在一起。
2.如權(quán)利要求1所述的XML存儲(chǔ)方法,其特征在于,所述步驟(1)中的節(jié)點(diǎn)滿足以下條件的被選取的節(jié)點(diǎn)是模式樹的根節(jié)點(diǎn);或節(jié)點(diǎn)是可重復(fù)節(jié)點(diǎn)且有子節(jié)點(diǎn)。
3.如權(quán)利要求1所述的XML存儲(chǔ)方法,其特征在于,所述存儲(chǔ)方式具體為指針結(jié)構(gòu),頭指針指向第一個(gè)記錄,尾指針指向鏈尾的記錄,第一個(gè)記錄的prev指針指向NULL,鏈尾記錄的next指針指向NULL。
4.如權(quán)利要求3所述的XML存儲(chǔ)方法,其特征在于,所述記錄存儲(chǔ)在一起具體為同類型的記錄存儲(chǔ)于同一個(gè)邏輯頁中,或者多個(gè)通過指針相鏈接的邏輯頁中。
5.一種權(quán)利要求1方法的應(yīng)用,其特征在于,該方法可用于含有結(jié)構(gòu)化數(shù)據(jù)的數(shù)據(jù)庫中。
全文摘要
本發(fā)明公開了一種XML存儲(chǔ)方法,包括對(duì)XML事先給定一個(gè)模式,選取該模式定義的特定節(jié)點(diǎn)作為記錄節(jié)點(diǎn);把輸入的XML文檔劃分成一個(gè)一個(gè)記錄,并記錄其類型;對(duì)得到的記錄按類型進(jìn)行分類,類型相同的記錄存儲(chǔ)在一起。本發(fā)明可使利用本發(fā)明存儲(chǔ)結(jié)構(gòu)的數(shù)據(jù)庫更具可管理性,維護(hù)起來相當(dāng)方便。同時(shí),利用本發(fā)明存儲(chǔ)結(jié)構(gòu)的數(shù)據(jù)庫占用的存儲(chǔ)空間相對(duì)較小,節(jié)約了系統(tǒng)的寶貴存儲(chǔ)空間。利用本發(fā)明存儲(chǔ)結(jié)構(gòu)的數(shù)據(jù)庫可使查詢的效率得到提高。
文檔編號(hào)G06F17/30GK1588368SQ200410073869
公開日2005年3月2日 申請(qǐng)日期2004年9月7日 優(yōu)先權(quán)日2004年9月7日
發(fā)明者孟小峰, 羅道鋒, 安靖, 王宇, 陸世潮 申請(qǐng)人:孟小峰, 羅道鋒, 安靖, 王宇, 陸世潮
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
固镇县| 即墨市| 石台县| 大城县| 桃源县| 桓台县| 桓台县| 习水县| 达日县| 定安县| 神木县| 古蔺县| 武城县| 栾城县| 东阿县| 保山市| 茌平县| 盐津县| 都江堰市| 临沭县| 东乌| 颍上县| 大方县| 深水埗区| 电白县| 宕昌县| 周至县| 自治县| 石屏县| 巩义市| 修水县| 保定市| 平昌县| 莱州市| 台南市| 界首市| 通化市| 扎兰屯市| 调兵山市| 常州市| 定兴县|