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

一種xml壓縮數(shù)據(jù)的多查詢處理方法

文檔序號(hào):6469300閱讀:184來(lái)源:國(guó)知局
專利名稱:一種xml壓縮數(shù)據(jù)的多查詢處理方法
技術(shù)領(lǐng)域
本發(fā)明屬數(shù)據(jù)庫(kù)技術(shù)領(lǐng)域,具體涉及一種快速有效 地對(duì)一個(gè)XML文檔進(jìn)行多查詢處理的方法。采用該方法 可以在分布式協(xié)作的服務(wù)器/客戶端網(wǎng)絡(luò)下,有效地克服 XML文檔自身的冗余問(wèn)題,并高效地實(shí)現(xiàn)多查詢處理。
背景技術(shù)
繼HTM"Hyper Text Markup Language) 語(yǔ)言之后,
XML (eXtensibleMarkup Language)語(yǔ)言業(yè)已逐漸成為互
聯(lián)網(wǎng)信息的主要表示和交換工具。隨著XML文檔的使用
曰頻繁廣泛網(wǎng)絡(luò)上越來(lái)越多的信息以XML的模式來(lái)
進(jìn)行存儲(chǔ)和傳遞,同時(shí)一些需要傳遞的XML文檔規(guī)模也
不斷增大。在有限帶寬和處理能力的條件下,怎樣有效
的進(jìn)行信息的傳遞,既能提高查詢技術(shù)又減小對(duì)帶寬的
消耗,成為當(dāng)、/ * 目'J研究的熱點(diǎn)話題之一。對(duì)XML文檔進(jìn)行
壓縮從而減小其規(guī)模成為一種可能的解決方式。由于XML
文檔不同于般的文本性文檔,它同時(shí)包含了數(shù)據(jù)信息
和數(shù)據(jù)間的結(jié)構(gòu)關(guān)系,怎樣才能有效地利用XML文檔的
特征來(lái)進(jìn)行有效的壓縮,同時(shí)又不會(huì)對(duì)查詢處理帶來(lái)過(guò)
多的冗余操作,是針對(duì)XML壓縮的兩個(gè)關(guān)鍵問(wèn)題。
2000年第 一 種針對(duì)XML的壓縮方法XMill被提出, 其動(dòng)機(jī)是最大程度的減小XML文檔的規(guī)模。因此XMill 將XML的結(jié)構(gòu)和數(shù)據(jù)分割開(kāi)來(lái),先對(duì)文檔抽取結(jié)構(gòu) (skeleton),再對(duì)文檔進(jìn)行遍歷,對(duì)相同路徑下的所有 結(jié)點(diǎn)歸類(lèi)到同一個(gè)桶中,遍歷結(jié)束之后,每個(gè)桶內(nèi)的數(shù)據(jù)具有相同的特性,如全部都是整數(shù),或全都是字符串。 由于針對(duì)整數(shù)、字符串和浮點(diǎn)數(shù)的最優(yōu)壓縮技術(shù)互不相
同,針對(duì)分類(lèi)之后得到的桶,XMill選擇最適合的方法進(jìn) 行壓縮,從而保證了整個(gè)文檔的高壓縮率。
不同于XMill, XMLPPM針對(duì)遍歷XML文檔的SAX流 進(jìn)行動(dòng)態(tài)的壓縮,這個(gè)方法通過(guò)采用了部分匹配預(yù)測(cè) (Prediction by Partial Match)方法進(jìn)行壓縮而得以 命名。在SAX遍歷的過(guò)程中,對(duì)于每個(gè)XML標(biāo)簽,都構(gòu) 造一個(gè)PPM模型進(jìn)行編碼。該模型包含了幾個(gè)部分Syms 部分,用于存儲(chǔ)首次出現(xiàn)的標(biāo)簽和屬性(attribute)名; Elts部分,利用索引表示當(dāng)前的標(biāo)簽并保存下來(lái)以維持 原文檔的結(jié)構(gòu);Atts則用于區(qū)分標(biāo)簽和屬性,因?yàn)槠渲?只保存了屬性名和文本數(shù)據(jù);Chars用來(lái)保存每個(gè)標(biāo)簽對(duì) 應(yīng)的數(shù)據(jù)。在Chars中的每個(gè)文本數(shù)據(jù)之前,都標(biāo)注上 對(duì)應(yīng)元素的索弓l;而Atts和Chars中都通過(guò)"〈n> "來(lái) 維持四個(gè)模型之間的關(guān)系,從而維持模型之間的交叉依 賴。通過(guò)使用PPM模型來(lái)對(duì)即將來(lái)到的字符串進(jìn)行預(yù)測(cè), XMLPPM方法實(shí)現(xiàn)了當(dāng)前XML壓縮方法中的最高壓縮率。
XMill和XMLPPM通過(guò)對(duì)XML文檔的數(shù)據(jù)和結(jié)構(gòu)進(jìn)行 分離并針對(duì)數(shù)據(jù)類(lèi)型選擇壓縮方法實(shí)現(xiàn)了較高的壓縮 率,但是這兩種方法得到的壓縮文檔不能保存原有的結(jié) 構(gòu),如果要對(duì)壓縮文檔進(jìn)行查詢,就需要將整個(gè)文檔進(jìn) 行解壓縮,而這將耗費(fèi)比壓縮更多的時(shí)間和空間。因此 學(xué)者們轉(zhuǎn)向了支持直接?xùn)嗽兊膲嚎s方法。2002年,針對(duì) 日益廣泛的手機(jī),PDA和Palm的有限CPU,第 一 種同態(tài) 壓縮技術(shù)XGRIND得以提出。
XGRIND是一種非自適應(yīng)的壓縮方法,在壓縮開(kāi)始前, 它必須采用DTD來(lái)建立字典,同時(shí)還要對(duì)原文檔進(jìn)行一次預(yù)掃描以搜集所有的詞頻信息,從而建立對(duì)應(yīng)的
Huffman編碼器。在壓縮過(guò)程中,對(duì)于文檔中每個(gè)元素和 屬性,直接采用字典中對(duì)應(yīng)的索引數(shù)進(jìn)行替代。而對(duì)大 量的非枚舉型元素,采用已有的Huffman編碼器進(jìn)行編 碼。此外枚舉型數(shù)據(jù)則直接使用二元編碼。XGRIND旨在 保留原文檔的結(jié)構(gòu),因此壓縮后的文檔實(shí)現(xiàn)了和原文檔 的——對(duì)應(yīng),也使得大部分的XPath査詢能夠直接在壓 縮文檔上進(jìn)行執(zhí)行。但對(duì)于包含范圍謂詞(range predicate)查詢,必須對(duì)壓縮文檔進(jìn)行對(duì)應(yīng)部分的局部 解壓縮。由于該方法只針對(duì)XML文檔的冗余標(biāo)簽,而沒(méi) 有解決文檔中的路徑和數(shù)據(jù)重復(fù)問(wèn)題,其壓縮率遠(yuǎn)遠(yuǎn)低 于XMill和XMLPPM。同時(shí)由于無(wú)法對(duì)所有的復(fù)雜查詢進(jìn) 行直接解析,XGRIND的査詢支持率也不盡人意。
在分析了 XGRIND的優(yōu)點(diǎn)和缺點(diǎn)之后,2004年XPress 被提出。這一方法創(chuàng)新性地提出了針對(duì)標(biāo)簽壓縮的逆向 數(shù)學(xué)編碼,不僅有效地進(jìn)行編碼,同時(shí)增強(qiáng)了其對(duì)查詢 執(zhí)行的支持。這一方法將標(biāo)簽(包括元素和屬性)轉(zhuǎn)化 為 一 個(gè)浮點(diǎn)數(shù)據(jù),轉(zhuǎn)化規(guī)則依賴于該標(biāo)簽所處的路徑和 所有的祖先結(jié)點(diǎn)信息。這種壓縮方法通過(guò)數(shù)值區(qū)間的包 含來(lái)表示結(jié)點(diǎn)之間的祖先和后代關(guān)系。對(duì)于文檔中的文 本數(shù)據(jù),XPress則根據(jù)數(shù)據(jù)特征來(lái)選擇使用字典或 Huffman編碼。由于逆向編碼有效的保持了路徑信息, XPress對(duì)查詢的支持率大大提高。同時(shí)這一編碼方式, 對(duì)于復(fù)雜路徑中的后代査詢也進(jìn)行了有效的解決。

發(fā)明內(nèi)容
本發(fā)明的目的在于提供一種XML壓縮數(shù)據(jù)的多查詢 處理方法,其是一種在分布式網(wǎng)絡(luò)環(huán)境下的結(jié)構(gòu)化査詢索引樹(shù)結(jié)構(gòu),使之作為全局結(jié)構(gòu)優(yōu)化整個(gè)網(wǎng)絡(luò)的穩(wěn)定性, 并具有多樣的査詢支持能力。 該方法步驟是
a,對(duì)原始的XML文檔進(jìn)行壓縮;
b,采用 SQIT構(gòu)造算法,建立結(jié)構(gòu)化査詢索引樹(shù)
SQIT;
c,根據(jù)建立的構(gòu)化査詢索引樹(shù)SQIT,進(jìn)行SQIT查 詢算法處理。
所述的SQIT構(gòu)造算法,其步驟是 步驟l,輸入?yún)?shù)Sq和R,其中,Sq是査詢集合,R是査 詢樹(shù)的根節(jié)點(diǎn);
步驟2,初始化循環(huán)變量qn為0,用來(lái)標(biāo)記當(dāng)前處理的 査詢;
步驟3 ,判斷條件,如果Sq中還有未被處理的査詢,就執(zhí) 行4 ;否則,就執(zhí)行1 2 ;
步驟4,Q是Sq中正在被處理的查詢,如果Q是復(fù)雜查詢, 就將Q轉(zhuǎn)化為SXP,然后初始化循環(huán)變量sn; 步驟5,針對(duì)當(dāng)前每一個(gè)棧,都執(zhí)行6;
步驟6,如果Q包含當(dāng)前棧頂元素,就執(zhí)行7;否則,執(zhí)
行8;
步驟7,把Q壓入當(dāng)前棧內(nèi),如果Q包含多個(gè)棧頂元素, 就合并這些棧,并把Q作為棧頂元素;
步驟8 ,如果棧頂元素包含Q ,就執(zhí)行9 ;否則,執(zhí)行5 ;
步驟9,把Q壓入到棧的次頂元素中;
步驟10,如果Q與所有的棧頂元素都沒(méi)有包含關(guān)系,就 新建一個(gè)棧,把Q壓入新棧;
步驟11,計(jì)算共享前綴,并把所有棧頂元素記為R的孩 子;步驟12,初始化循環(huán)變量n為0;
步驟13,針對(duì)每一個(gè)棧,如果含有多個(gè)元素,就遞歸執(zhí) 行1;
步驟14,輸出SQIT樹(shù),結(jié)束。
所述的SQIT査詢算法處理,其步驟是 步驟1,輸入?yún)?shù)Doc和Sqit,其中,Doc是壓縮的XML 文檔,Sqit是包含所有子?xùn)嗽兊腟QIT樹(shù); 步驟2,初始化,新建關(guān)于Doc根節(jié)點(diǎn)的路徑結(jié)構(gòu)PSr, 并將Sqit的根壓入到PSr的UnsatNodes中,再把PSr壓入 到路徑棧中;
步驟3 ,針對(duì)每 一 個(gè)標(biāo)志T ,執(zhí)行4 ;
步驟4,新建T的路徑結(jié)構(gòu)PST,并把路徑棧的棧頂元素
記為PSp。
七發(fā)明的優(yōu)點(diǎn)在于,在分布式協(xié)作的服務(wù)器/'客戶端網(wǎng)
絡(luò)下為了有效地克服XML文檔自身的冗余問(wèn)題,并高
效地實(shí)現(xiàn)多査詢處理,我們提出了 一種針對(duì)壓縮數(shù)據(jù)的
基于結(jié)構(gòu)化査詢索引樹(shù)(SQIT)的多查詢處理算法該
方法不僅能夠支持更加復(fù)雜的査詢,還能增強(qiáng)通査詢
樹(shù)在分布式環(huán)境中的魯棒性,以適應(yīng)分布式環(huán)境中中轉(zhuǎn)
節(jié)點(diǎn)不穩(wěn)定的情況。在同類(lèi)技術(shù)和方法中,本發(fā)明處于
領(lǐng)先水平,是相關(guān)領(lǐng)域的技術(shù)突破。在與其他技術(shù)所作
的同等實(shí)驗(yàn)中,這些技術(shù)優(yōu)勢(shì)得到了極佳的驗(yàn)證。


圖1SQIT構(gòu)造流程圖。
圖2基于SQIT的査詢處理流程圖。
圖3一組查詢及對(duì)應(yīng)的SQIT示意圖。
圖4SQIT上的復(fù)雜査詢執(zhí)行過(guò)程示意圖。
具體實(shí)施例方式
有關(guān)的一些名詞、概念和定義 1, XPath的包含關(guān)系
對(duì)兩個(gè)XPath查詢Ql和Q2,如果對(duì)任何給定的XML 文檔Q 1的結(jié)果都被Q2的查詢結(jié)果所包含,我們稱Q 1被 Q2所包含,并將這個(gè)關(guān)系記為Q2 Ql。
2 , 查詢樹(shù)
對(duì)客戶端針對(duì)服務(wù)器端一個(gè)XML文檔提交的/7個(gè) XPath查詢("…。 ),服務(wù)器端根據(jù)以下規(guī)則構(gòu)造査詢樹(shù) a)服務(wù)器端持有的壓縮XML文檔記為査詢樹(shù)的虛擬根 節(jié)點(diǎn),因?yàn)槿魏?一 個(gè)査詢結(jié)果都是被該文檔所包含;
根節(jié)點(diǎn)的后代節(jié)點(diǎn)魚(yú)厶 朱 口由所有查詢的對(duì)應(yīng)節(jié)點(diǎn)所組
欣 對(duì)每個(gè)査詢節(jié)占 "、、作遞歸定義對(duì)于當(dāng)前節(jié)點(diǎn),必、有
個(gè)后代査詢節(jié)占隹A 朱 口(為空時(shí)即為葉節(jié)點(diǎn))。利用
分類(lèi)算法對(duì)集合內(nèi)所有查詢進(jìn)行分類(lèi)。分類(lèi)結(jié)束后
每個(gè)類(lèi)內(nèi)最大査詢對(duì)應(yīng)的節(jié)點(diǎn)是當(dāng)前節(jié)點(diǎn)的孩子節(jié)
點(diǎn)類(lèi)內(nèi)的其它査詢節(jié)點(diǎn)組成該孩子的后代查詢節(jié)
點(diǎn)集。
3, XPath的簡(jiǎn)化 對(duì)于一個(gè)形如。=…/a"的XPath, 可簡(jiǎn)化為『=/a,/^…/a,,記為。-C;對(duì)于形如 C = //a…,則等同于對(duì)整個(gè)XML文檔(doc)進(jìn)行查詢。 4, 查詢索弓|樹(shù)(Query Index Tree, QIT):
QIT是在服務(wù)器端的查詢索引。對(duì)客戶端提交的/2
個(gè)査詢",C ......,",根據(jù)查詢之間的包含關(guān)系,
確定査詢樹(shù)如下a) 由于所有查詢的結(jié)果都是被査詢文 査詢樹(shù)的根標(biāo)記為";
b) 每個(gè)分支節(jié)點(diǎn)都有一個(gè)子孫集合, 都被當(dāng)前分支節(jié)點(diǎn)的查詢所包含;
c) 每個(gè)節(jié)點(diǎn)標(biāo)記為(Qid, begin, end
表示提交該節(jié)點(diǎn)査詢對(duì)應(yīng)的客戶端 作為該節(jié)點(diǎn)査詢結(jié)果在壓縮文檔中 當(dāng)前節(jié)點(diǎn)位置標(biāo)記的結(jié)果精確與否 5,子索引
客戶端提交的査詢。對(duì)應(yīng)的子索引為服務(wù)器端的QIT 中以。的節(jié)點(diǎn)的子樹(shù),該子樹(shù)提供的信息包括節(jié)點(diǎn)。的 所有子孫節(jié)點(diǎn)查詢,以及每個(gè)子孫節(jié)點(diǎn)查詢?cè)趬嚎s文檔 中的查詢結(jié)果索引。
6,復(fù)雜路徑結(jié)構(gòu)SXP:
給定XPath査詢。,根據(jù)。的分割片斷以及片斷之間 的關(guān)系組合而成的結(jié)構(gòu)即為SXP。SXP作為 一 種樹(shù)形結(jié)構(gòu), 表示為(r, A, &),其中
a) K表示有查詢。的分割片斷組成的集合;
b) A為主鏈接集合,即組成P的主路徑中的所有有向 邊,其中最后一個(gè)分割片斷的結(jié)束元素即為最終返 回的元素名。
c) &為次鏈接集合,其中每條邊都用于連接謂詞中的 分支片斷和對(duì)應(yīng)主路徑上的分割片斷。
7,結(jié)構(gòu)化査詢索引樹(shù)SQIT:
與普通査詢樹(shù)相同,SQIT是基于査詢之間的包含關(guān) 系確定層次結(jié)構(gòu),但進(jìn)一步挖掘了父子節(jié)點(diǎn)之間的共享 前綴關(guān)系以提高查詢處理的時(shí)間。SQIT的定義如下
給定 一 個(gè)提交的XPath查詢集SQ= {Ql, Q2, , Qn},
檔"的 一 部分, 集合中所有查詢
,p/l )。其中Qid id, begin禾卩 end 的位置,P/I表示SQ對(duì)應(yīng)的SQIT表示為一個(gè)三元組(VQ, E, R),其中每 個(gè)元素的意義為
VQ是一個(gè)查詢節(jié)點(diǎn)的有限集合,其中每個(gè)節(jié)點(diǎn)對(duì)應(yīng) 一個(gè)SQ中獨(dú)立的査詢。E是代表査詢樹(shù)中父子關(guān)系的邊 的集合;R為查詢樹(shù)的虛擬根,用以保證根據(jù)包含關(guān)系得 到的結(jié)構(gòu)是樹(shù)而不是森林。在下文中我們交替使用"査 詢"和"査詢節(jié)點(diǎn)"表示查詢樹(shù)中的節(jié)點(diǎn)及其對(duì)應(yīng)查詢。
每個(gè)査詢節(jié)點(diǎn)都被定義為一個(gè) (Qcid, SXPQ, begin[], end[])的四元結(jié)構(gòu),其中"Qcid"用于表示 對(duì)應(yīng)客戶端的標(biāo)志,"SXPQ"為該查詢對(duì)應(yīng)的SXP結(jié)構(gòu); 而"begin [] " " end []"分別用來(lái)記錄該查詢對(duì)應(yīng)每個(gè)結(jié) 果片段的起始和結(jié)束位置。
所有的查詢節(jié)點(diǎn)組成根節(jié)點(diǎn)R的后代集合;E是用于 代表VQ中節(jié)點(diǎn)間包含關(guān)系的邊的集合。
算法描述 1 , SQIT的構(gòu)造算法
SQIT的構(gòu)造算法如圖l所示。SQIT的構(gòu)造算法,主 要通過(guò)遞歸計(jì)算查詢之間的包含關(guān)系來(lái)實(shí)現(xiàn)。在算法主 體當(dāng)中,我們采用棧結(jié)構(gòu)來(lái)存儲(chǔ) 一 個(gè)分支上的查詢節(jié)點(diǎn), 而每個(gè)棧中的節(jié)點(diǎn)都會(huì)被遞歸地進(jìn)行分類(lèi)直到每個(gè)分類(lèi) 中只有一個(gè)節(jié)點(diǎn)為止。構(gòu)造SQIT的流程圖如圖2所示, 其 一 般步驟如下
Step 1:首先建立一個(gè)空棧,并將隨機(jī)抽取的第一 個(gè)査詢推入該棧當(dāng)中。
Step 2:針對(duì)每一個(gè)新到來(lái)的査詢,如果是復(fù)雜查 詢,就對(duì)它轉(zhuǎn)化為SXP,然后,將它和當(dāng)前所有棧的棧頂
査詢比較,針對(duì)不同情況,分別做如下的處理
a)如果該査詢被某個(gè)棧的棧頂查詢所包含,新查詢的節(jié)點(diǎn)將被推入這個(gè)棧,而目前的棧頂節(jié)點(diǎn)將保持不 變。
b)如果新查詢包含了某個(gè)棧的棧頂節(jié)點(diǎn)査詢,它將作 為這個(gè)棧的桟頂被保存,同時(shí)繼續(xù)和其他棧頂比 較,因?yàn)榭赡苡衅渌麠C的棧頂也被當(dāng)前査詢所包 含。 一 旦這種情況出現(xiàn),我們將把兩個(gè)棧進(jìn)行合并, 并且把新査詢作為合并棧的棧頂。
C)如果對(duì)新査詢沒(méi)有棧頂與之存在包含關(guān)系,我們將 為它建立一個(gè)新棧。
Step 3:在所有查詢都執(zhí)行完成后,每個(gè)棧代表一 個(gè)獨(dú)立的查詢類(lèi)。對(duì)包含超過(guò)一個(gè)節(jié)點(diǎn)的類(lèi),遞歸調(diào)用 分類(lèi)算法并根據(jù)包含關(guān)系建立層次結(jié)構(gòu),直到整棵SQIT 建立完成。
在以上的算法執(zhí)行過(guò)程中,我們討論了 一個(gè)査詢包 含多個(gè)分類(lèi)的情況,但同時(shí)還有 一 種情況,即 一 個(gè)查詢 可能被超過(guò)一個(gè)的分支所包含。如果要在SQIT中完全保 存這種關(guān)系,SQIT將被構(gòu)造成為 一 個(gè)圖而不是樹(shù),這樣 使得査詢處理的過(guò)程需要判斷哪些是祖先哪些是后代。 例如 XPath 査詢 QH= " /a/求/d/e ,,, 同時(shí)被 QC = "/a/*/d"和QD二" /a/7e"所包含。為了避免SQIT演
變成圖,我們可以采用一些啟發(fā)式策略,例如選擇包含
節(jié)點(diǎn)比較少的分支(例如QD )。這是因?yàn)榉种е泄?jié)點(diǎn)越多,嵌套的層數(shù)可能越深,那么對(duì)每個(gè)XML節(jié)點(diǎn)遞歸判斷的
可能性就越高,因此選擇節(jié)點(diǎn)較少的分支可以減小查詢
處理的復(fù)雜度。另外 一 種直觀的方法則是將這個(gè)查詢歸
類(lèi)到遇到的第一個(gè)包含它的分支中,在我們的算法里,
為了簡(jiǎn)化問(wèn)題就采用了這種策略。
2 ,多査詢處理算法在查詢處理的過(guò)程中,壓縮文檔將按照SAX流的方 式被遍歷。對(duì)每個(gè)壓縮狀態(tài)下的標(biāo)簽,SQIT中的每個(gè)査 詢都有且只有以下的一種狀態(tài)滿足,不滿足或部分滿 足。在査詢處理過(guò)程中,三種不同類(lèi)型的數(shù)據(jù)結(jié)構(gòu)將被 用來(lái)保存對(duì)應(yīng)這個(gè)標(biāo)簽T的查詢節(jié)點(diǎn)狀態(tài)
a) UnsatNodes保存SQ I T中不滿足子樹(shù)的根節(jié)點(diǎn);
b) WaitCXPs保存在T處獲得部分滿足的片段對(duì)應(yīng)的后 繼片段;
c) SatNodes保存在T處獲得完全滿足的所有節(jié)點(diǎn)。
最后,我們用 一 個(gè)棧path structure來(lái)保存這個(gè)壓 縮標(biāo)簽T對(duì)應(yīng)的三個(gè)結(jié)構(gòu)。
對(duì) 一 個(gè)壓縮的XML標(biāo)簽T,如果SQIT中的 一 個(gè)查詢 不能被滿足,則沒(méi)有必要檢測(cè)它的任何 一 個(gè)子孫。我們 只用保存棧中這些節(jié)點(diǎn)的不滿足狀態(tài)即可。因?yàn)镾QIT中 的祖先節(jié)點(diǎn)査詢包含了所有后代的査詢, 一旦SQIT中一 棵子樹(shù)的根不能得到滿足,那么這棵子樹(shù)內(nèi)的所有其他 節(jié)點(diǎn)都不可能被當(dāng)前標(biāo)簽所滿足。
對(duì)于每個(gè)到來(lái)的標(biāo)簽,還有 一 些節(jié)點(diǎn)可能在這個(gè)標(biāo) 簽上獲得部分滿足。對(duì)每個(gè)部分滿足的復(fù)雜査詢來(lái)說(shuō), 我們將保存其SXP結(jié)構(gòu)中等待被滿足的部分(當(dāng)前被滿 足片斷的后繼片斷)放入當(dāng)前標(biāo)簽的WaitCXPs當(dāng)中。
圖3詳細(xì)描述了基于SQIT的多査詢處理算法,圖4 是其流程圖。其 一 般執(zhí)行步驟如下
Step 1:首先,對(duì)查詢文檔的根元素構(gòu)造一個(gè)初始 的pathstructure(PS)結(jié)構(gòu),并把SQIT根節(jié)點(diǎn)的所有 孩子插入到該P(yáng)S結(jié)構(gòu)的UnsatNodes中去。
Step 2:當(dāng)一個(gè)遍歷到下一個(gè)新的壓縮標(biāo)簽T時(shí)(假 設(shè)T的父親標(biāo)簽為P),每個(gè)P的UnsatNodes中的査詢節(jié)點(diǎn)Qu和P的WaitCXPs中等待的分割片斷都要與T進(jìn)行 比較。對(duì)任何 一 個(gè)Qu節(jié)點(diǎn),我們按照以下策略來(lái)檢測(cè)該 節(jié)點(diǎn)是否能被當(dāng)前標(biāo)簽滿足利用共享索引5\來(lái)確定哪 些檢測(cè)可以直接跳過(guò)。 一 旦5",的值大于當(dāng)前檢測(cè)CXP的 層數(shù),那么當(dāng)前CXP將被跳過(guò)。只有當(dāng)比較的CXP層數(shù) 與&相等時(shí),這個(gè)CXP的后繼片斷將被加入到WaitCXPs 當(dāng)中對(duì)于共享索引為零的SXP孩子,它們的首個(gè)分割片 斷將被與71比較。
針對(duì)査詢節(jié)點(diǎn)Qu的不同情況,分別做如下的處理
a) 如果Qu的查詢是簡(jiǎn)單路徑查詢,對(duì)應(yīng)的區(qū)間將和 當(dāng)前壓縮標(biāo)簽的值進(jìn)行比較;
b) 如果Qu的查詢是復(fù)雜查詢且己經(jīng)被轉(zhuǎn)化成為對(duì)應(yīng) 的SXP ,則根片斷將和T進(jìn)行比較,
c) 如果跟片斷被滿足,那么所有的后繼片斷將作為等 候片斷被插入T的WaitCXPs中,同時(shí)Qu的SXP孩 子節(jié)點(diǎn)也要與當(dāng)前的T繼續(xù)比較。
d) 如果Qu在此處獲得完全滿足,那么Qu的所有孩子 都必須跟T進(jìn)行比較。但如果Qu在T處仍然處于 不滿足狀態(tài),那么Qu將被保存到T的UnsatNodes 中去。
下面通過(guò) 一 個(gè)實(shí)例來(lái)說(shuō)明如何執(zhí)行XML數(shù)據(jù)多查詢 處理技術(shù)。它可以通過(guò)如下幾個(gè)步驟來(lái)完成 首先對(duì)原始XML文檔進(jìn)行壓縮 利用算法1,建立結(jié)構(gòu)化查詢索引樹(shù)SQIT。 根據(jù)建立完成的結(jié)構(gòu)化査詢索引樹(shù)SQIT,利用查詢 算法3進(jìn)行査詢處理。
其中,每一步的具體過(guò)程在發(fā)明內(nèi)容部分已有詳細(xì) 描述。附圖5 —組査詢及對(duì)應(yīng)的SQIT:
査詢集SQ={QA, QB, QI}在圖5下方的框當(dāng)中,由
客戶端提交的九個(gè)査詢,并被組織成上方的樹(shù)所示的 SQIT??梢钥闯鲇捎赒B被QA包含,QB對(duì)應(yīng)的節(jié)點(diǎn)成為 QA節(jié)點(diǎn)的后代。
當(dāng)標(biāo)簽<^>到來(lái)時(shí),。,的第 一 個(gè)片段 "/a "獲得滿 足,同時(shí)"的第一個(gè)片段與。p的相同,當(dāng)然也可以被滿 足。因此"和"的第 一 個(gè)片段可以被同時(shí)評(píng)估;否則當(dāng) "被完全滿足后才開(kāi)始評(píng)估。w時(shí),。。結(jié)果中每個(gè)元素的 路徑信息都己經(jīng)被丟失。除了及時(shí)地保留了每個(gè)潛在結(jié) 果的路徑信息以外,我們可以通過(guò)前綴共享原則來(lái)避免 "和。w反復(fù)地與標(biāo)簽Q,比較,因?yàn)檫@樣的比較可能由于 前綴的不斷共享而重復(fù)到更深的層次,使得查詢?cè)u(píng)估的 復(fù)雜度呈指數(shù)增長(zhǎng)。因此我們使用了共享索引標(biāo)記到從 SQIT分支節(jié)點(diǎn)指出的有向邊上。在例3中,從"到"的 有向邊上,標(biāo)記的共享索引"(1)"表示"共享了與其父 親節(jié)點(diǎn)相同的第 一 個(gè)片段。而。,的第 一 個(gè)片段 "/a/b " 對(duì)應(yīng)的區(qū)間與 "/a "的區(qū)間沒(méi)有直接的關(guān)系,因此。f和 "之間的共享索引為"(0)"。
附圖6SQIT上的復(fù)雜查詢執(zhí)行過(guò)程
在圖5中,QA, QC, QD, QB, QF和QH是由不同客戶 端A-H提交的復(fù)雜査詢。在SQIT構(gòu)造階段,這些查詢都 被轉(zhuǎn)化為SXP結(jié)構(gòu)并插入到SQIT當(dāng)中。我們用Qij表示 每個(gè)查詢的分割片斷,其中i〈{A, B,…,H},而j代表 每個(gè)SXP中每個(gè)片斷(即CXP)的編號(hào)。圖6展示了查詢 執(zhí)行的過(guò)程。
首先QA作為根節(jié)點(diǎn)的孩子在初始化過(guò)程中插入文檔 根元素的 UnsatNodes中。在壓縮標(biāo)簽〈a〉到來(lái)時(shí),在根節(jié)點(diǎn)UnsatNodes中的節(jié)點(diǎn)QA被檢測(cè),并發(fā)現(xiàn)與當(dāng)前標(biāo) 簽匹配,因此QA作為〈a〉的SatNodes被插入,同時(shí)QA 的所有孩子(包括SXP與路徑查詢的孩子)都將與當(dāng)前 標(biāo)簽〈a〉進(jìn)行比較。顯然QC和QD的第一個(gè)CXP能夠獲得 滿足,因此它們的SXP孩子將被繼續(xù)檢測(cè),同時(shí)QH的第 一個(gè)CXP也獲得滿足。對(duì)于以上幾個(gè)獲得滿足的CXP,他 們的后繼片斷(QC2, QD2和 QH2)將被插入到〈a〉的 WaitCXPs當(dāng)中。其中QG作為簡(jiǎn)單路徑,對(duì)應(yīng)的區(qū)間無(wú)法 與〈a〉的編碼相匹酉己。因此QG將豐皮插入〈a〉的UnsatNodes 中。同樣的動(dòng)作在不同標(biāo)簽到來(lái)時(shí)執(zhí)行。例如當(dāng)標(biāo)簽〈d〉 到來(lái)時(shí),QC將獲得完全滿足并插入到〈d〉的SatNodes中, 而他的孩子節(jié)點(diǎn)QB ,作為無(wú)法被滿足的復(fù)雜查詢,將被 插入至U對(duì)應(yīng)的UnsatNodes中。
權(quán)利要求
1、一種XML壓縮數(shù)據(jù)的多查詢處理方法,該方法步驟是a,對(duì)原始的XML文檔進(jìn)行壓縮;b,采用SQIT構(gòu)造算法,建立結(jié)構(gòu)化查詢索引樹(shù)SQIT;c,根據(jù)建立的構(gòu)化查詢索引樹(shù)SQIT,進(jìn)行SQIT查詢算法處理。
2、 按權(quán)利要求l所述的XML壓縮數(shù)據(jù)的多査詢處理方法, 其中SQIT構(gòu)造算法的步驟是步驟l,輸入?yún)?shù)Sq和R,其中,Sq是査詢集合,R是査 詢樹(shù)的根節(jié)點(diǎn);步驟2,初始化循環(huán)變量qn為0,用來(lái)標(biāo)記當(dāng)前處理的 查詢;步驟3 ,判斷條件,如果Sq中還有未被處理的查詢,就執(zhí) 行4 ;否則,就執(zhí)行1 2 ;步驟4,Q是Sq中正在被處理的査詢,如果Q是復(fù)雜查詢, 就將Q轉(zhuǎn)化為SXP,然后初始化循環(huán)變量sn; 步驟5,針對(duì)當(dāng)前每一個(gè)棧,都執(zhí)行6;步驟6 ,如果Q包含當(dāng)前棧頂元素,就執(zhí)行7 ;否則,執(zhí) 行8;步驟7,把Q壓入當(dāng)前棧內(nèi),如果Q包含多個(gè)棧頂元素, 就合并這些棧,并把Q作為棧頂元素 ,步驟8 ,如果棧頂元素包含Q ,就執(zhí)行9 ;否則,執(zhí)行5 ; 步驟9,把Q壓入到棧的次頂元素中;步驟10,如果Q與所有的棧頂元素都沒(méi)有包含關(guān)系,就 新建一個(gè)棧,把Q壓入新棧;步驟11,計(jì)算共享前綴,并把所有棧頂元素記為R的孩 子;步驟12,初始化循環(huán)變量n為0;步驟13,針對(duì)每一個(gè)棧,如果含有多個(gè)元素,就遞歸執(zhí) 行1;步驟14,輸出SQIT樹(shù),結(jié)束。
3、按權(quán)利要求l所述的XML壓縮數(shù)據(jù)的多査詢處理方法, 其中SQIT査詢算法處理,其步驟是步驟1,輸入?yún)?shù)Doc和S,it,其中,Doc是壓縮的XML 文檔,S。it是包含所有子查詢的SQIT樹(shù); 步驟2,初始化,新建關(guān)于Doc根節(jié)點(diǎn)的路徑結(jié)構(gòu)PSr, 并將S,"的根壓入至lJ PSr的U固tNodes中,再把PSr壓入 到路徑棧中;步驟3 ,針對(duì)每 一 個(gè)標(biāo)志T ,執(zhí)行4 ;步驟4,新建T的路徑結(jié)構(gòu)PST,并把路徑棧的棧頂元素 記為PSp。
全文摘要
本發(fā)明為一種壓縮XML數(shù)據(jù)多查詢處理方法,其是一種在分布式網(wǎng)絡(luò)環(huán)境下的結(jié)構(gòu)化查詢索引樹(shù)結(jié)構(gòu),使之作為全局結(jié)構(gòu)優(yōu)化整個(gè)網(wǎng)絡(luò)的穩(wěn)定性,并具有多樣的查詢支持能力;該方法步驟是a,對(duì)原始的XML文檔進(jìn)行壓縮;b,采用SQIT構(gòu)造算法,建立結(jié)構(gòu)化查詢索引樹(shù)SQIT;c,根據(jù)建立的構(gòu)化查詢索引樹(shù)SQIT,進(jìn)行SQIT查詢算法處理。在給定XML源文檔和查詢語(yǔ)句的基礎(chǔ)上,首先構(gòu)造對(duì)應(yīng)的結(jié)構(gòu)化查詢索引樹(shù)SQIT,然后在此基礎(chǔ)上進(jìn)行查詢處理。本發(fā)明方法新穎高效,并具有很好的可擴(kuò)展性。
文檔編號(hào)G06F17/30GK101436199SQ20081020069
公開(kāi)日2009年5月20日 申請(qǐng)日期2008年9月27日 優(yōu)先權(quán)日2008年9月27日
發(fā)明者周傲英, 和菊珍, 王曉玲 申請(qǐng)人:復(fù)旦大學(xué)
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
贵定县| 景洪市| 安义县| 孝昌县| 桐梓县| 寿宁县| 东宁县| 安康市| 伊宁市| 崇阳县| 库尔勒市| 梧州市| 洛南县| 宜宾县| 琼海市| 宜州市| 庆云县| 怀柔区| 肃南| 通道| 临沂市| 博野县| 夏邑县| 横山县| 墨江| 博野县| 吐鲁番市| 丰顺县| 延安市| 句容市| 娄底市| 花莲市| 交口县| 仁怀市| 年辖:市辖区| 观塘区| 敦化市| 张家口市| 台北县| 工布江达县| 庆城县|