專利名稱:Xml文檔的聚類方法和系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明通常涉及XML文檔的聚類,尤其涉及以單遍工作量負(fù)荷完成的XML文檔的聚類。
背景技術(shù):
下面提供的一系列參考文獻(xiàn)與本發(fā)明相接近;其中的各個(gè)參考文獻(xiàn)以括弧中的縮寫(即[FK99],[TN91],等等...)的方式來(lái)引用。
當(dāng)前的數(shù)據(jù)庫(kù)或數(shù)據(jù)倉(cāng)庫(kù)系統(tǒng)使用兩個(gè)主要的方案來(lái)存儲(chǔ)XML文檔。第一種方案將XML文檔映射到關(guān)系表,關(guān)系表中的每行表示文檔的(抽象)XML樹(shù)中的一個(gè)邊[FK99]。通過(guò)現(xiàn)有的關(guān)系操作符來(lái)實(shí)現(xiàn)對(duì)存儲(chǔ)文檔的XML處理。第二種方案,即原生XML存儲(chǔ)(Native XML Storage)將文檔視為XML樹(shù)。它將XML樹(shù)劃分成不同記錄,這些記錄包含不相交連接的子樹(shù)[KM00]。接著以未解析的文本形式,或使用某種內(nèi)部表示,在盤頁(yè)面中存儲(chǔ)這些記錄。
對(duì)于支持用于通過(guò)鏈接(指針)遍歷在數(shù)據(jù)項(xiàng)之間進(jìn)行導(dǎo)航的操作符的數(shù)據(jù)庫(kù)系統(tǒng),相關(guān)數(shù)據(jù)項(xiàng)的聚類在物理布置數(shù)據(jù)方面是有益的。這里,如果2個(gè)節(jié)點(diǎn)通過(guò)鏈接相連,則它們是相關(guān)的,并且檢查它們中的一個(gè)很可能不久導(dǎo)致檢查另一個(gè)。例如,已經(jīng)表明,數(shù)據(jù)聚類對(duì)于例如IBM的IMS的層次數(shù)據(jù)庫(kù)[Sch77],及對(duì)于面向?qū)ο蟮臄?shù)據(jù)庫(kù)(OODB)[TN91,TN92,GKKM93]是有效的。
通常使用例如XSLT、XPath或XQuery的查詢語(yǔ)言處理XML文檔[WC3]。這些語(yǔ)言使用XPath導(dǎo)航操作符遍歷抽象XML樹(shù)的路徑。在原生XML存儲(chǔ)系統(tǒng)中,這導(dǎo)致在類似于層次或面向?qū)ο髷?shù)據(jù)庫(kù)中的記錄的所存儲(chǔ)的XML記錄上的導(dǎo)航。實(shí)際上,通常通過(guò)路徑索引輔助這種遍歷,這些路徑索引減少了所存儲(chǔ)記錄上的路徑導(dǎo)航的數(shù)量。然而,由于XML查詢模式通常是比較復(fù)雜的,并且維護(hù)多個(gè)路徑索引以覆蓋整個(gè)XML文檔的代價(jià)也是昂貴的,因此路徑索引不能完全消除這種路徑遍歷。此外,許多處理模式使用延遲的訪問(wèn),并且由于數(shù)據(jù)可能已經(jīng)更新,而會(huì)需要附加的遍歷以便重新生效。最后,一般物理布局模式能夠?qū)ML節(jié)點(diǎn)分散在許多記錄上。對(duì)于這種物理布局,類似預(yù)取或緩沖的常規(guī)I/O優(yōu)化技術(shù)對(duì)于復(fù)雜XML查詢可能是無(wú)效的。因此,將相關(guān)XML節(jié)點(diǎn)聚集在一起并且將它們存儲(chǔ)在相同盤頁(yè)面中,尤其是對(duì)于較大的XML文檔,是有益的。由于盤頁(yè)面具有有限的容量,所以不是所有的相關(guān)XML節(jié)點(diǎn)都能夠容納在單個(gè)盤頁(yè)面中。因此,需要決定如何向盤頁(yè)面分配相關(guān)XML節(jié)點(diǎn)。OODB中對(duì)象的聚類和相關(guān)XML節(jié)點(diǎn)的聚類之間的關(guān)鍵差別在于,在OODB中可根據(jù)其類規(guī)格事先得知對(duì)象的大小,而對(duì)于XML文檔,在沒(méi)有XML模式的情況下,是在對(duì)其進(jìn)行分析之后才知道節(jié)點(diǎn)大小。即使在XML模式可用時(shí),也僅在運(yùn)行時(shí)刻才知道文本節(jié)點(diǎn)的大小。
將相關(guān)XML節(jié)點(diǎn)分配到盤頁(yè)面的問(wèn)題可被視作樹(shù)分區(qū)問(wèn)題。要分區(qū)的樹(shù)是聚類樹(shù),即增加有節(jié)點(diǎn)和邊權(quán)重的XML樹(shù)。概括地講,邊權(quán)重模擬XML導(dǎo)航行為(邊權(quán)重越高,則意味著相連的XML節(jié)點(diǎn)更強(qiáng)烈地″相關(guān)″)。節(jié)點(diǎn)權(quán)重是XML節(jié)點(diǎn)的(文本)大小。問(wèn)題是將聚類樹(shù)的節(jié)點(diǎn)集合劃分為節(jié)點(diǎn)不相交子集(稱作聚類),使得一個(gè)聚類導(dǎo)出一個(gè)相連接的子樹(shù),每個(gè)聚類均適合一個(gè)盤頁(yè)面,并且聚類內(nèi)部邊的總權(quán)重(稱作分區(qū)的值)最大。反之,聚類間邊的總權(quán)重(分區(qū)的代價(jià))最小。直觀上,分區(qū)的值越高,則意味著盤訪問(wèn)越少。
對(duì)于樹(shù)分區(qū)問(wèn)題的一個(gè)廣為接受的方案是Lukes的基于動(dòng)態(tài)規(guī)劃的樹(shù)分區(qū)方法[Luk74]。這一方法以自底向上的方式對(duì)樹(shù)進(jìn)行操作,并且使用將逐漸增大的子樹(shù)分割成分區(qū)集合的迭代過(guò)程。每個(gè)分區(qū)是一組非不相交聚類,每個(gè)聚類滿足總權(quán)重限制(即盤頁(yè)面大小)。對(duì)于每個(gè)子樹(shù),并且對(duì)于每個(gè)可行的聚類權(quán)重,Lukes的方法尋找具有最大值的分區(qū)。當(dāng)被分區(qū)的子樹(shù)是整個(gè)樹(shù)本身時(shí),該方法完成。最終獲得的分區(qū)是整個(gè)樹(shù)的具有最大值的分區(qū)。然而,Lukes的方法需要過(guò)多的存儲(chǔ)器和運(yùn)行時(shí)間,這是由于動(dòng)態(tài)規(guī)劃的結(jié)果。于是,需要改進(jìn)Lukes的方法。
發(fā)明內(nèi)容
根據(jù)本發(fā)明的至少一個(gè)當(dāng)前優(yōu)選的實(shí)施例,概括地考慮了一種用于以單遍工作負(fù)荷完成的XML文檔聚類的系統(tǒng)和方法。
概括地講,本發(fā)明的一個(gè)方面提供了一種用于對(duì)XML文檔進(jìn)行聚類的系統(tǒng),該系統(tǒng)包括用于按節(jié)點(diǎn)分析XML文檔的裝置;用于初始化至少一個(gè)所分析的節(jié)點(diǎn)的裝置;用于對(duì)至少一個(gè)所分析的節(jié)點(diǎn)進(jìn)行分區(qū)的裝置;和用于處理至少一個(gè)所分析的節(jié)點(diǎn)的裝置。
本發(fā)明的另一個(gè)方面提供了一種用于單遍地對(duì)XML文檔進(jìn)行聚類的系統(tǒng),該系統(tǒng)包括用于按節(jié)點(diǎn)分析XML文檔的裝置;用于確定至少一個(gè)所分析的節(jié)點(diǎn)的XPath工作遍歷的裝置;用于對(duì)至少一個(gè)所分析的節(jié)點(diǎn)進(jìn)行聚類的裝置;和用于向頁(yè)面分配至少一個(gè)聚類的裝置。
本發(fā)明的另一個(gè)方面提供了一種用于對(duì)XML文檔進(jìn)行聚類的方法,該方法包括步驟按節(jié)點(diǎn)分析XML文檔;初始化至少一個(gè)所分析的節(jié)點(diǎn);對(duì)至少一個(gè)所分析的節(jié)點(diǎn)進(jìn)行分區(qū);和處理至少一個(gè)所分析的節(jié)點(diǎn)。
此外,本發(fā)明的另一個(gè)方面提供了一種機(jī)器可讀的程序存儲(chǔ)裝置,其有形地體現(xiàn)一種指令程序,該程序可被機(jī)器執(zhí)行以實(shí)現(xiàn)用于對(duì)XML文檔進(jìn)行聚類的方法步驟,所述方法包括步驟按節(jié)點(diǎn)分析XML文檔;初始化至少一個(gè)所分析的節(jié)點(diǎn);對(duì)至少一個(gè)所分析的節(jié)點(diǎn)進(jìn)行分區(qū);和處理至少一個(gè)所分析的節(jié)點(diǎn)。
為更好地理解本發(fā)明及其它和進(jìn)一步的特征和優(yōu)點(diǎn),參考以下結(jié)合附圖進(jìn)行的說(shuō)明,在所附權(quán)利要求中指出了本發(fā)明的范圍。
圖1示出了XML樹(shù)和相應(yīng)的聚類樹(shù);圖2示出了根據(jù)本發(fā)明的通用XML聚類系統(tǒng)的方框圖;
圖3以圖形方式示出了本發(fā)明的接近線性的特性;圖4以圖形方式針對(duì)各種單個(gè)的查詢工作負(fù)荷示出了聚類的缺頁(yè)情況;圖5以圖形方式針對(duì)各種組合的查詢工作負(fù)荷示出了聚類的缺頁(yè)情況;圖6是本發(fā)明的方法的流程圖;圖7是根據(jù)本發(fā)明的圖6所示的初始化單元的操作的流程圖;圖8是根據(jù)本發(fā)明的圖6所示的分區(qū)單元的流程圖;以及圖9是根據(jù)本發(fā)明的圖6所示的后處理單元的流程圖。
具體實(shí)施例方式
本發(fā)明的一個(gè)實(shí)施例是樹(shù)分區(qū)方法XC,它用于對(duì)較大的靜態(tài)XML文檔進(jìn)行聚類。在本發(fā)明的另一個(gè)實(shí)施例中,XC優(yōu)選被集成在具有SAX分析器和邊權(quán)重指派器(使用顯式權(quán)重或根據(jù)公布的工作負(fù)荷說(shuō)明導(dǎo)出權(quán)重)的系統(tǒng)中,其中工作負(fù)荷是固定的。該系統(tǒng)在操作時(shí)產(chǎn)生包含XML文檔的完成節(jié)點(diǎn)的聚類樹(shù)。如下所述,XC使用各種僅保留在將來(lái)能夠有用的那些聚類和分區(qū)的技術(shù),并且盡快釋放所有其余的數(shù)據(jù)結(jié)構(gòu)。
本公開(kāi)現(xiàn)在討論XC的關(guān)鍵特征。為了進(jìn)行討論,將使用圖1(a)中說(shuō)明的簡(jiǎn)單XML樹(shù)。圖1(b)示出了相應(yīng)的聚類樹(shù)(具有節(jié)點(diǎn)和邊權(quán)重)。聚類樹(shù)是增加有均為整數(shù)的節(jié)點(diǎn)和邊權(quán)重的XML樹(shù)。節(jié)點(diǎn)權(quán)重是XML節(jié)點(diǎn)的(文本)大小,而邊權(quán)重模擬將節(jié)點(diǎn)放置到相同聚類中的重要性。
本發(fā)明的方法優(yōu)選地用于將介質(zhì)劃分為大規(guī)模的XML樹(shù)(兆字節(jié)到千兆字節(jié))。對(duì)于大型XML樹(shù),多數(shù)應(yīng)用只能在存儲(chǔ)器中保存部分的XML樹(shù)。此外,通常按照文檔順序單遍地分析XML文檔,其中每個(gè)XML數(shù)據(jù)節(jié)點(diǎn)只被掃描一次。這對(duì)XC強(qiáng)制實(shí)行隱含的調(diào)用順序。不同于Lukes的方法,XC按照自底向上、自左到右的順序處理樹(shù)節(jié)點(diǎn)。例如,對(duì)于圖1(a)中示出的樹(shù),本發(fā)明的方法按照以下節(jié)點(diǎn)順序處理節(jié)點(diǎn)3、2、5、4、8、7、10、9、等等。在執(zhí)行期間的任意時(shí)刻,XC僅在存儲(chǔ)器中保存XML樹(shù)的一個(gè)片段。該片段是迄今已掃描的XML文檔的部分的子樹(shù)。XC沒(méi)有關(guān)于文檔的其余尚未掃描的部分的信息。所以,在每一步驟,XC單純根據(jù)從已掃描的XML節(jié)點(diǎn)獲得的信息做出決定。
類似于Lukes的方法,XC也對(duì)聚類樹(shù)進(jìn)行操作。一旦XC完全處理了聚類樹(shù)的一個(gè)子樹(shù),該子樹(shù)即被稱作已處理子樹(shù)(并且其根被稱作已處理節(jié)點(diǎn))。XC為一個(gè)子樹(shù)計(jì)算一組分區(qū),其中每個(gè)分區(qū)是一組不同的聚類。按照聚類的成員節(jié)點(diǎn)的權(quán)重的總和來(lái)計(jì)算聚類的權(quán)重。包含被分區(qū)子樹(shù)的根的聚類被稱作中樞聚類,并且其權(quán)重被指定為該分區(qū)的權(quán)重。考慮圖1(a)的樣本XML樹(shù)1.節(jié)點(diǎn)3(具有數(shù)據(jù)12345)是具有完全掃描子樹(shù)(包含其本身)的第一個(gè)節(jié)點(diǎn)。XC現(xiàn)在調(diào)用Lukes的方法的葉處理步驟,并且初始化用于節(jié)點(diǎn)3(葉)的結(jié)構(gòu)。一旦經(jīng)過(guò)處理,以節(jié)點(diǎn)3為根的子樹(shù)被轉(zhuǎn)換成只包含一個(gè)節(jié)點(diǎn)(節(jié)點(diǎn)3)的已處理子樹(shù)及其相關(guān)分區(qū),該分區(qū)包含其權(quán)重與節(jié)點(diǎn)3的權(quán)重相等的單個(gè)聚類(3)。
2.節(jié)點(diǎn)2是具有完全掃描子樹(shù)的下一節(jié)點(diǎn)(包含其本身和節(jié)點(diǎn)3)。XC現(xiàn)在對(duì)該子樹(shù)的根節(jié)點(diǎn)2執(zhí)行Lukes的方法的內(nèi)部結(jié)點(diǎn)處理步驟。類似于Lukes的方法,內(nèi)部循環(huán)在子節(jié)點(diǎn)(只有一個(gè),即節(jié)點(diǎn)3)上進(jìn)行迭代,并且產(chǎn)生中間分區(qū)。一旦經(jīng)過(guò)處理,以節(jié)點(diǎn)2為根的子樹(shù)被轉(zhuǎn)換成只包含一個(gè)節(jié)點(diǎn)(節(jié)點(diǎn)2)的已處理子樹(shù)及其相關(guān)分區(qū)。應(yīng)當(dāng)理解,本發(fā)明中是根據(jù)一般已知的方法,即合并和連接的方法創(chuàng)建分區(qū)。對(duì)于通過(guò)合并和連接創(chuàng)建分區(qū)的一般討論可參見(jiàn)[Luk74]。
本公開(kāi)現(xiàn)在討論使用權(quán)重區(qū)間的動(dòng)態(tài)規(guī)劃。在處理具有節(jié)點(diǎn)權(quán)重w≥1的節(jié)點(diǎn)時(shí),Lukes的方法檢查其權(quán)重為從w到權(quán)重邊界W的所有可能分區(qū)。這導(dǎo)致O(n W)空間復(fù)雜度和O(n W2)時(shí)間復(fù)雜度。這對(duì)于其中n的值可能上百萬(wàn)(XML節(jié)點(diǎn))并且W可能上千(字節(jié))的較大XML文件是禁止的。為解決此問(wèn)題,本發(fā)明的方法將(1,W)的權(quán)重范圍劃分成大小相等的權(quán)重區(qū)間,并且對(duì)于每個(gè)權(quán)重區(qū)間,僅使一個(gè)分區(qū)與之相關(guān)。由應(yīng)用使用塊大小參數(shù)來(lái)指定權(quán)重區(qū)間的數(shù)量。塊大小的值(表示為C)可以從1變化到W,并且是W的約數(shù)。在所考慮的其權(quán)重落在該區(qū)間內(nèi)的分區(qū)中,每個(gè)權(quán)重區(qū)間的相關(guān)分區(qū)具有最大值。所以,對(duì)于XC,在Lukes的方法[Luk74]的內(nèi)部結(jié)點(diǎn)處理之后,最多有Wc=W/C個(gè)與該節(jié)點(diǎn)相關(guān)的中間分區(qū)。類似地,內(nèi)部循環(huán)在從1到Wc的權(quán)重區(qū)間上進(jìn)行迭代。這些修改將空間復(fù)雜度降低到O(n Wc),并且將時(shí)間復(fù)雜度降低到O(n Wc2)。這種權(quán)重區(qū)間逼近技術(shù)僅用于將中間分區(qū)放置到適當(dāng)區(qū)間中。對(duì)是否合并聚類的判定仍然是根據(jù)實(shí)際的聚類權(quán)重(而不是區(qū)間)。
例如,當(dāng)對(duì)包含節(jié)點(diǎn)2和3的聚類子樹(shù)調(diào)用Lukes的方法時(shí),創(chuàng)建了2個(gè)中間分區(qū)。通過(guò)連接包含節(jié)點(diǎn)2和3的聚類而創(chuàng)建具有權(quán)重4和值0的第一分區(qū)p42。通過(guò)合并包含節(jié)點(diǎn)2和3的聚類而創(chuàng)建具有權(quán)重9和值20的分區(qū)p92。如果W=10并且塊大?。?0,則Wc=1并且p42和p92落在單個(gè)權(quán)重區(qū)間內(nèi),所以只保留較高值p92。如果W=10并且塊大?。?,則Wc=2,并且保留這兩個(gè)分區(qū)。如在Lukes的方法中那樣,一旦子樹(shù)被處理,則可以丟棄該子樹(shù)根的所有子節(jié)點(diǎn)(并且釋放存儲(chǔ)器)。
檢查邊界情況C=1和C=W是有益的。當(dāng)塊大小=1時(shí),本發(fā)明的方法完全如Lukes的方法那樣進(jìn)行操作;它也尋找一個(gè)最優(yōu)分區(qū)。當(dāng)塊大?。絎時(shí),每個(gè)節(jié)點(diǎn)只產(chǎn)生一個(gè)中間分區(qū)。換言之,XC按簡(jiǎn)單的“貪心”算法進(jìn)行操作。如果可能,它簡(jiǎn)單地合并其當(dāng)前分區(qū)的中樞聚類和子節(jié)點(diǎn)的中樞聚類,添加其他的子聚類,從而產(chǎn)生新的(和更加有價(jià)值的分區(qū))。否則,它簡(jiǎn)單地合并該節(jié)點(diǎn)和子節(jié)點(diǎn)的當(dāng)前分區(qū)。
本公開(kāi)現(xiàn)在討論就緒聚類(ready clusters)的識(shí)別。除權(quán)重區(qū)間之外,XC也使用其它策略來(lái)限制其存儲(chǔ)器耗用。第一,設(shè)計(jì)由XC用來(lái)表示節(jié)點(diǎn)、聚類和分區(qū)的基本數(shù)據(jù)結(jié)構(gòu),使得一旦一段邏輯數(shù)據(jù)不再需要,便能夠收回其相應(yīng)存儲(chǔ)器。第二,XC盡快從存儲(chǔ)器中移除XML文本數(shù)據(jù)。Lukes的方法保留可能的結(jié)果聚類,直到計(jì)算出最終的結(jié)果分區(qū)。聚類的每個(gè)XML節(jié)點(diǎn)均承載有相應(yīng)的XML文本。這導(dǎo)致在存儲(chǔ)器中保存整個(gè)XML文檔等等,直至計(jì)算出最終分區(qū)。這是完全不切實(shí)際的。本發(fā)明的方法通過(guò)主動(dòng)檢測(cè)就緒聚類來(lái)解決這個(gè)問(wèn)題。
如果滿足以下條件,則與已處理節(jié)點(diǎn)x相關(guān)的分區(qū)中的聚類是就緒的(1)它不包含節(jié)點(diǎn)x,因此不能參與任何將來(lái)的聚類合并操作,以及(2)它是與節(jié)點(diǎn)x相關(guān)的每個(gè)中間分區(qū)的成員,所以將是最終結(jié)果分區(qū)的成員。一旦處理了以節(jié)點(diǎn)x為根的子樹(shù),則就能夠檢測(cè)到就緒聚類。接著就緒聚類能夠被從中間分區(qū)中移除并被傳送(帶有其XML數(shù)據(jù))到頁(yè)面分配子系統(tǒng)(參見(jiàn)圖2)。一旦頁(yè)面分配子系統(tǒng)向某一頁(yè)面分配了一個(gè)就緒聚類(即其XML數(shù)據(jù)),則該聚類中包含的XML節(jié)點(diǎn)能夠和其XML數(shù)據(jù)一起被刪除。這可以導(dǎo)致存儲(chǔ)器利用率的顯著降低,并且隨之改善運(yùn)行時(shí)間。例如,在沒(méi)有識(shí)別就緒聚類的情況下對(duì)580KB的XML文檔進(jìn)行聚類會(huì)使用2.43MB的存儲(chǔ)器,并且花費(fèi)170秒的時(shí)間。當(dāng)識(shí)別出就緒聚類時(shí),相同文檔可以在1.2秒內(nèi)被聚類,并且只需要43KB的存儲(chǔ)器。這突顯出就緒聚類識(shí)別的關(guān)鍵作用。
本公開(kāi)現(xiàn)在討論處理存儲(chǔ)器限制。雖然本發(fā)明使用了降低技術(shù),然而存儲(chǔ)器耗用仍然非常巨大,尤其是對(duì)于較大的XML文檔和較小的塊大小值。較大的存儲(chǔ)器耗用通常增加(虛擬存儲(chǔ)器)缺頁(yè)情況的數(shù)量,因此使性能降級(jí)。錯(cuò)誤的頁(yè)面調(diào)度特性會(huì)使任何方法均不適用于在嚴(yán)格時(shí)間限制下操作的應(yīng)用,例如實(shí)時(shí)數(shù)據(jù)流應(yīng)用。如果僅當(dāng)存在大量可用存儲(chǔ)器時(shí)其才能夠在某一處運(yùn)行,則限制了方法的實(shí)用性。本發(fā)明的方法XC被設(shè)計(jì)成在指定時(shí)間和存儲(chǔ)器限制下操作的單遍(流數(shù)據(jù))XML應(yīng)用。塊大小參數(shù)控制迭代次數(shù),并且還影響存儲(chǔ)器耗用。而且,XC應(yīng)當(dāng)能夠在明確指定的存儲(chǔ)器耗用限制下進(jìn)行操作。
現(xiàn)在描述用于使本發(fā)明的基本方法能夠有效地遵從存儲(chǔ)器限制進(jìn)行工作的技術(shù)。這一技術(shù)將就緒聚類的思想擴(kuò)展到就緒子分區(qū)。就緒聚類是將成為最終計(jì)算的分區(qū)的一部分的聚類。就緒子分區(qū)是與(聚類樹(shù)的)已經(jīng)處理的子樹(shù)的根相關(guān)的最高值分區(qū),該子樹(shù)是針對(duì)整個(gè)聚類樹(shù)計(jì)算的最優(yōu)近似分區(qū)的子集。如果能夠識(shí)別就緒子分區(qū),則子分區(qū)的聚類能夠被傳遞到頁(yè)面分配子系統(tǒng),并且能夠立即收回相關(guān)數(shù)據(jù)結(jié)構(gòu),例如XML節(jié)點(diǎn)、其文本和聚類的存儲(chǔ)器。分區(qū)的消除也降低了將來(lái)動(dòng)態(tài)規(guī)劃考慮的選項(xiàng)數(shù)量;進(jìn)一步降低了存儲(chǔ)器使用。
通常,在已處理節(jié)點(diǎn)x處識(shí)別就緒子分區(qū)(充分條件是在與x相關(guān)的所有分區(qū)中,中樞聚類具有權(quán)重W)是很難的。而是,當(dāng)接近存儲(chǔ)器限制時(shí),當(dāng)前優(yōu)選的方法是簡(jiǎn)單地將某些子分區(qū)聲明為就緒的(如下所述)。這一方案急劇降低了存儲(chǔ)器耗用。然而這一方案具有一個(gè)缺點(diǎn)它影響了準(zhǔn)確性,因?yàn)樵诰途w子分區(qū)中可能有某些聚類會(huì)在將來(lái)的聚類合并操作中使用(這會(huì)增加最終分區(qū)的值)。因此,重要的是選擇就緒分區(qū),使得最終結(jié)果質(zhì)量(即價(jià)值)不受顯著的影響。
一旦處理了一子樹(shù),則保留其中間分區(qū),直到其父節(jié)點(diǎn)被處理。例如,對(duì)于圖1(a)中出現(xiàn)的XML樹(shù),保留節(jié)點(diǎn)7、9和11的中間分區(qū),直到處理了以節(jié)點(diǎn)6為根的子樹(shù)。根據(jù)本發(fā)明,維護(hù)當(dāng)前多達(dá)k個(gè)與已處理節(jié)點(diǎn)(即其父節(jié)點(diǎn)尚未處理的已處理子樹(shù)的根)相關(guān)的最高值分區(qū)的長(zhǎng)度受限的(參數(shù)k,例如k=8)列表HL。這個(gè)分區(qū)列表僅包含最優(yōu)分區(qū),使得最優(yōu)分區(qū)的值的總和始終最大。給定存儲(chǔ)器限制M,本發(fā)明的方法計(jì)算用于管理存儲(chǔ)器使用的高和低″水位標(biāo)志″(低<高<M)。當(dāng)存儲(chǔ)器使用超過(guò)高水位標(biāo)志時(shí),觸發(fā)校正動(dòng)作;一旦存儲(chǔ)器使用到達(dá)低水位標(biāo)志,則恢復(fù)正常操作。
當(dāng)超過(guò)高水位標(biāo)志時(shí),本發(fā)明的方法XC從HL中選擇具有最高值的分區(qū)P。XC接著將這個(gè)分區(qū)標(biāo)記為就緒子分區(qū),將其聚類傳遞到頁(yè)面分配子系統(tǒng),并且接著回收相關(guān)數(shù)據(jù)結(jié)構(gòu)的存儲(chǔ)器。P還會(huì)形成最終結(jié)果分區(qū)的子集。XC接著移除P與其相關(guān)的XML節(jié)點(diǎn)vP(即已處理子樹(shù)的根),并且丟棄vP到其父節(jié)點(diǎn)的鏈接。這個(gè)從HL中消除掉最高值分區(qū)的過(guò)程繼續(xù)執(zhí)行,直到存儲(chǔ)器使用落到低水位標(biāo)志之下,或最優(yōu)分區(qū)列表為空。如果存儲(chǔ)器使用違反規(guī)定的情況持續(xù)存在并且最優(yōu)分區(qū)列表為空,則在上述過(guò)程中一旦處理了任何子樹(shù),其最優(yōu)分區(qū)立即被標(biāo)記為就緒并且被消除掉。
現(xiàn)在參照?qǐng)D1(a)討論在存儲(chǔ)器使用違反規(guī)定期間,本發(fā)明的方法的特性。假定在處理文本節(jié)點(diǎn)15(INRIA)的同時(shí),存儲(chǔ)器使用越過(guò)高水位標(biāo)志。這時(shí),已經(jīng)處理了以節(jié)點(diǎn)2、4和6為根的3個(gè)子樹(shù),并且它們的最高值分區(qū)被存儲(chǔ)在HL中?,F(xiàn)在考慮相應(yīng)的聚類樹(shù)圖1(b)。假定在HL中節(jié)點(diǎn)6的最高值分區(qū)具有最高值,其后跟隨的是節(jié)點(diǎn)2的最高值分區(qū),接著是節(jié)點(diǎn)4的最高值分區(qū)。在這種情況下,(與節(jié)點(diǎn)6相關(guān)的)第一最高值分區(qū)被選擇為就緒分區(qū),節(jié)點(diǎn)6被刪除,并且不再是節(jié)點(diǎn)1的子節(jié)點(diǎn)。如果存儲(chǔ)器使用違反規(guī)定的情況持續(xù)存在,則(與節(jié)點(diǎn)2相關(guān)的)最高值分區(qū)是下一個(gè)要被聲明為就緒的分區(qū)。假定現(xiàn)在存儲(chǔ)器使用落在低水位標(biāo)志之下,則XC恢復(fù)正常操作(也就是說(shuō)直到下一次越過(guò)高水位標(biāo)志為止,保留已處理子樹(shù)的分區(qū),并且在處理期間如在Lukes的方法中那樣使用這些分區(qū))。
試探策略,即將HL中具有最高值的分區(qū)P標(biāo)記為就緒子分區(qū)的策略嘗試使早先的(與vP相關(guān)的)分區(qū)消除導(dǎo)致的可能價(jià)值損失最小。就緒子分區(qū)的聲明是在不了解尚待掃描的XML節(jié)點(diǎn)的結(jié)構(gòu)和大小的情況下進(jìn)行的。始終選擇最高值分區(qū)作為就緒分區(qū)的試探算法是一種解決這種不確定性的途徑。
本公開(kāi)現(xiàn)在討論根據(jù)本發(fā)明的XML聚類系統(tǒng)。圖2說(shuō)明了XML聚類系統(tǒng)200的體系結(jié)構(gòu),XML聚類系統(tǒng)200掃描XML文檔,將其劃分為聚類,并且將這些聚類分配到(盤)頁(yè)面,而所有這些操作均單遍完成。它包括3個(gè)不同的子系統(tǒng)邊權(quán)重指派器220、樹(shù)分區(qū)240和盤頁(yè)面分配260。附圖中子系統(tǒng)之間的邊(210、230、250和270)表示過(guò)程調(diào)用。邊權(quán)重指派器使用的應(yīng)用工作負(fù)荷信息通常能夠具有不同的形式(例如,統(tǒng)計(jì)數(shù)據(jù))。
根據(jù)本發(fā)明,根據(jù)這種在其中優(yōu)選地將XC用作樹(shù)分區(qū)子系統(tǒng)的體系結(jié)構(gòu)來(lái)實(shí)現(xiàn)XML聚類系統(tǒng)XCS。優(yōu)選地,使用C++版本的ApacheXerces SAX分析器(參見(jiàn)http//xml.apache.org/xerces2-j/index.html),雖然可以使用任何適當(dāng)?shù)姆治銎鳌?考慮到以流方式向SAX分析器饋送XML文檔的情境。)XML聚類系統(tǒng)是其中通過(guò)不同SAX事件調(diào)用不同功能部件的單個(gè)SAX應(yīng)用。該分析器對(duì)每個(gè)XML節(jié)點(diǎn)僅進(jìn)行一次掃描,并且創(chuàng)建該節(jié)點(diǎn)的存儲(chǔ)器內(nèi)數(shù)據(jù)結(jié)構(gòu)表示。這種存儲(chǔ)器內(nèi)數(shù)據(jù)結(jié)構(gòu)存儲(chǔ)該XML節(jié)點(diǎn)的文本大小,并且充當(dāng)聚類樹(shù)的節(jié)點(diǎn)。引導(dǎo)到該節(jié)點(diǎn)的邊接著被傳遞到邊權(quán)重指派器。
邊權(quán)重指派器220使用應(yīng)用工作負(fù)荷信息為聚類樹(shù)邊指派權(quán)重。在XCS的邊權(quán)重指派器中,工作負(fù)荷信息包括XPath查詢的列表。也可以提供特定XPath查詢的例如頻率或重要性的附加信息。工作負(fù)荷信息也可以包含實(shí)際查詢的近似;例如,一個(gè)參數(shù)化的查詢可以利用一個(gè)訪問(wèn)所有實(shí)例的查詢來(lái)近似。
對(duì)于工作負(fù)荷中的XPath查詢,邊權(quán)重指派器220優(yōu)選地使用初級(jí)(naive)流式XPath處理器的用于模擬執(zhí)行的模擬器(這種模擬器能夠被任何流式XPath處理器替代)。當(dāng)前,該模擬器支持以下類型的XPath查詢1.從文檔根開(kāi)始的簡(jiǎn)單路徑查詢;2.XPath派生或自身(″//″)查詢;3.具有位置和路徑預(yù)測(cè)的查詢。
另外,該模擬器模擬對(duì)查詢的子路徑使用路徑索引的執(zhí)行。通過(guò)適當(dāng)SAX事件調(diào)用模擬器。該模擬器識(shí)別會(huì)被初級(jí)XPath處理器在其實(shí)際執(zhí)行期間遍歷的XML節(jié)點(diǎn)。為此,該模擬器使用確定性自動(dòng)機(jī),該自動(dòng)機(jī)在遍歷XML鏈接的同時(shí)根據(jù)目標(biāo)節(jié)點(diǎn)內(nèi)容在狀態(tài)之間進(jìn)行切換。根據(jù)(1)XPath查詢的相對(duì)重要性/頻率,(2)XPath查詢中使用的軸和(3)執(zhí)行計(jì)劃(即有或者沒(méi)有使用路徑索引),為相應(yīng)的聚類樹(shù)邊指派權(quán)重增量。給予一個(gè)聚類樹(shù)邊的總權(quán)重是由于每個(gè)工作負(fù)荷查詢而導(dǎo)致的權(quán)重增量的總和。
直觀上,所指派的權(quán)重模擬初級(jí)XPath處理器(在時(shí)間上)連續(xù)遍歷該邊所連接的節(jié)點(diǎn)以及使用該邊的事實(shí)。邊權(quán)重越高,則在所連接的節(jié)點(diǎn)之間的遍歷親合性便越高。這種親合性源于經(jīng)常被遍歷,并且/或者經(jīng)常被″重要的″工作負(fù)荷查詢遍歷。能夠擴(kuò)展邊權(quán)重指派器220以俘獲更加復(fù)雜的工作負(fù)荷,例如涉及路徑聯(lián)接、或者復(fù)雜的預(yù)測(cè)、XQuery查詢和XSL-T模板的XPath表達(dá)的特性。不管XML工作負(fù)荷和執(zhí)行計(jì)劃的類型(即索引或非索引的)如何,所有XML查詢均最終被轉(zhuǎn)換成在抽象XML樹(shù)的邊上的遍歷。邊權(quán)重指派器220能夠使用高級(jí)查詢的邊遍歷信息和頻率/重要性來(lái)指派適當(dāng)?shù)倪厵?quán)重。
現(xiàn)在參照附圖1示出的XML樹(shù),以及包括3個(gè)XPath查詢及其相對(duì)權(quán)重的應(yīng)用工作負(fù)荷說(shuō)明邊權(quán)重指派器220的執(zhí)行。
1./bib/book/price202./bib/book/author/affiliation503./bib/book/author[2]/last}30該查詢工作負(fù)荷遍歷的所有的邊會(huì)被指派反映實(shí)際執(zhí)行的邊權(quán)重。
假定在工作負(fù)荷XPath查詢的實(shí)際執(zhí)行期間執(zhí)行的遍歷會(huì)在沒(méi)有使用任何路徑索引的情況下執(zhí)行,則這些XPath查詢的相對(duì)權(quán)重被用于計(jì)算查詢對(duì)邊權(quán)重的影響。例如,被第一工作負(fù)荷查詢遍歷的邊被指派20的權(quán)重增量,被第二查詢遍歷的邊被指派50的權(quán)重增量,并且被第三查詢遍歷的邊被指派30的權(quán)重增量。如果一個(gè)邊被不止一個(gè)工作負(fù)荷查詢所遍歷,則其邊權(quán)重表示累積的權(quán)重。例如,連接節(jié)點(diǎn)bib和book的邊(0,1)被所有3個(gè)XPath查詢遍歷。因此它會(huì)被指派累積的權(quán)重100。類似地,連接第二個(gè)author節(jié)點(diǎn)和book節(jié)點(diǎn)的邊(1,13)被第二和第三XPath查詢遍歷。因此這個(gè)邊會(huì)被指派權(quán)重80。最后,邊(1,20)僅被一個(gè)工作負(fù)荷查詢,即/bib/book/price遍歷,并且被指派權(quán)重20。
現(xiàn)在考慮當(dāng)路徑索引被用于解決某些工作負(fù)荷查詢時(shí)的情況。例如,考慮關(guān)于路徑/bib/book/author的索引。這里,連接節(jié)點(diǎn)bib和book的2個(gè)邊被指派權(quán)重0(被跳過(guò))。連接節(jié)點(diǎn)bib和book的邊(0,1)現(xiàn)在只會(huì)被第一查詢遍歷,并且被指派權(quán)重20。
一旦邊權(quán)重指派器220指派了邊權(quán)重,則由樹(shù)分區(qū)子系統(tǒng)240(在這種情況下為XC)處理聚類樹(shù)存儲(chǔ)器駐留部分。針對(duì)endElement()或character()SAX事件,或者在掃描XML屬性結(jié)束時(shí),調(diào)用樹(shù)分區(qū)子系統(tǒng)。于是,XML聚類系統(tǒng)遵循自底向上、自左到右的調(diào)用順序。樹(shù)分區(qū)子系統(tǒng)始終對(duì)具有作為其根、剛好完成的XML元素或?qū)傩缘木垲愖訕?shù)(高度為1)進(jìn)行操作。根據(jù)塊大小,XC首先計(jì)算子樹(shù)的不同分區(qū),并且接著檢測(cè)這些分區(qū)是否包含任何就緒聚類。就緒聚類被從所計(jì)算的分區(qū)中移除并且被傳送到頁(yè)面分配子系統(tǒng)260。無(wú)論怎樣,都為將來(lái)本發(fā)明的方法的調(diào)用而保留所產(chǎn)生的分區(qū)。
為了說(shuō)明樹(shù)分區(qū)子系統(tǒng)240的調(diào)用,考慮圖1提供的XML樹(shù)。首先對(duì)節(jié)點(diǎn)3調(diào)用樹(shù)分區(qū)子系統(tǒng)240,接著對(duì)節(jié)點(diǎn)2調(diào)用樹(shù)分區(qū)子系統(tǒng)240。一旦對(duì)以節(jié)點(diǎn)2為根的子樹(shù)進(jìn)行了分區(qū),則釋放節(jié)點(diǎn)3的存儲(chǔ)器內(nèi)表示。保留針對(duì)以2為根的子樹(shù)計(jì)算的分區(qū),直到節(jié)點(diǎn)2作為節(jié)點(diǎn)1的子節(jié)點(diǎn)再次用在分區(qū)過(guò)程中。繼續(xù)執(zhí)行這個(gè)對(duì)以x為根的子樹(shù)進(jìn)行分區(qū),釋放x的子節(jié)點(diǎn),檢測(cè)就緒聚類和保留分區(qū)的過(guò)程,直到x為根并且整個(gè)樹(shù)得到分區(qū)為止。
頁(yè)面分配子系統(tǒng)260向頁(yè)面分配就緒聚類。一旦檢測(cè)到就緒聚類,便調(diào)用該系統(tǒng)。優(yōu)選地,頁(yè)面分配子系統(tǒng)260按照就緒聚類權(quán)重的降序維護(hù)就緒聚類的排序列表。優(yōu)選地,頁(yè)面分配子系統(tǒng)260使用單純根據(jù)當(dāng)前可用就緒聚類的權(quán)重進(jìn)行頁(yè)面分配決定的在線裝箱算法。其工作如下1.一旦當(dāng)前存儲(chǔ)的就緒聚類的總大小超過(guò)限制(參數(shù)),則選擇最重的聚類并且將其分配給頁(yè)面。
2.使用其他的較小聚類,按照權(quán)重的降序嘗試填充這個(gè)頁(yè)面,直到達(dá)到頁(yè)面大小限制或所有待決聚類均被檢查過(guò)。
3.填充后的頁(yè)面被發(fā)送到盤,收回涉及其已分配的聚類的數(shù)據(jù)結(jié)構(gòu)的存儲(chǔ)器。
重復(fù)這個(gè)過(guò)程,直到所有就緒聚類均被映射到盤頁(yè)面。注意,一旦完成了文檔掃描,便啟動(dòng)頁(yè)面分配子系統(tǒng)以便將所有的其余在存儲(chǔ)器駐留的就緒聚類映射到盤頁(yè)面。
本公開(kāi)現(xiàn)在討論使用本發(fā)明獲得的實(shí)驗(yàn)結(jié)果。華盛頓大學(xué)XML數(shù)據(jù)倉(cāng)庫(kù)提供的若干XML文檔(www.cs.washington.edu/research/xmldatasets/)被用于評(píng)估本發(fā)明的方法。接著對(duì)比使用DFS(深度優(yōu)先存儲(chǔ))的DCS(深度優(yōu)先聚類系統(tǒng)),評(píng)估根據(jù)本發(fā)明使用本方法的系統(tǒng)。DFS是以深度優(yōu)先方式分析XML文檔的初級(jí)聚類算法。參見(jiàn)Tian等人“TheDesign and Performance Evaluation of Alternative XML StorageStrategies(可選XML存儲(chǔ)策略的設(shè)計(jì)和性能評(píng)估)”,Association forComputing Machinery SIGMOD Record(計(jì)算機(jī)協(xié)會(huì)SIGMOD記錄),31(1)(2002年3月),以得到有關(guān)DFS的一般性討論。它以“貪心”方式產(chǎn)生XML節(jié)點(diǎn),其中一旦完成這些XML節(jié)點(diǎn)的掃描,便將它們準(zhǔn)備好存儲(chǔ)到盤頁(yè)面中。DFS完全忽略邊權(quán)重。DFS的主要優(yōu)點(diǎn)是將其處理完成在時(shí)間上接近的XML節(jié)點(diǎn)放在一起。在兩種情況下,XPath查詢執(zhí)行期間缺頁(yè)情況的數(shù)量被用作性能的主要度量。
本發(fā)明的方法和Lukes的方法之間的關(guān)鍵差別在于,本發(fā)明對(duì)權(quán)重區(qū)間而不是對(duì)整個(gè)權(quán)重范圍使用動(dòng)態(tài)規(guī)劃。根據(jù)本發(fā)明,通過(guò)塊大小參數(shù)(其決定動(dòng)態(tài)規(guī)劃區(qū)間的數(shù)量)來(lái)確定權(quán)重區(qū)間。表1說(shuō)明了塊大小參數(shù)的影響。在這個(gè)試驗(yàn)中,以權(quán)重邊界W=4KB對(duì)大小為1.97MB并且包含154855個(gè)XML節(jié)點(diǎn)的XML文件mondial.xml進(jìn)行聚類。聚類樹(shù)邊被隨機(jī)指派權(quán)重。如表1所示,隨著塊大小的降低,最終解的值增加。隨著塊大小的降低,所使用(用于動(dòng)態(tài)規(guī)劃)的權(quán)重區(qū)間的數(shù)量增加,并且XC變得更加準(zhǔn)確。同時(shí),這導(dǎo)致存儲(chǔ)器使用的增加和運(yùn)行時(shí)間的增加。當(dāng)塊大小為1時(shí),XC的行為類似于確切的Lukes的方法,并且所需的運(yùn)行時(shí)間超過(guò)2小時(shí)(應(yīng)用在2小時(shí)之后終止)。
表1使用mondial.xml對(duì)權(quán)重區(qū)間的動(dòng)態(tài)規(guī)劃的效果
對(duì)于4096和256的塊大小,解值之間的差異不顯著。然而應(yīng)當(dāng)注意,運(yùn)行時(shí)間從32.5秒增加到了299.9秒。這表明對(duì)每個(gè)已處理節(jié)點(diǎn)(意味著4096個(gè))保留單個(gè)分區(qū)的策略,即保留具有最高值的分區(qū)的策略在實(shí)踐中表現(xiàn)良好。如結(jié)果所示,對(duì)于塊大小1的XC(同等地,Lukes的方法)展現(xiàn)出不切實(shí)際的存儲(chǔ)器和運(yùn)行時(shí)間需求;對(duì)于較大的塊大小,XC獲得具有合理存儲(chǔ)器和運(yùn)行時(shí)間使用的良好解。
表2使用mondial.xml評(píng)估存儲(chǔ)器受限的執(zhí)行
表2提供了在改變指定的存儲(chǔ)器使用限制的情況下,XC的特性。重用先前試驗(yàn)的實(shí)驗(yàn)設(shè)置(相同文檔,相同權(quán)重邊界),來(lái)評(píng)估XC的存儲(chǔ)器受限的特性。首先使用4096的塊大小并且沒(méi)有任何存儲(chǔ)器限制的情況下進(jìn)行該試驗(yàn)。接著以較小的存儲(chǔ)器限制(可用存儲(chǔ)器量從1MB到30KB)重復(fù)該試驗(yàn)。結(jié)果表明,即使在極端的存儲(chǔ)器限制的情況下,XC仍然表現(xiàn)良好。此外,隨著可用存儲(chǔ)器數(shù)量的降低,XC性能降級(jí)適度(2種極端情況的結(jié)果分區(qū)的值與最優(yōu)近似解僅相差6%)。對(duì)于嚴(yán)格的存儲(chǔ)器限制,執(zhí)行時(shí)間從32.5秒降低到9.049秒。這兩個(gè)試驗(yàn)表明,在使用較大的塊大小和較低的存儲(chǔ)器限制時(shí),迅速得到良好的解是可能的。
還度量識(shí)別就緒聚類對(duì)結(jié)果質(zhì)量的影響。如上所述,當(dāng)沒(méi)有識(shí)別就緒聚類時(shí),進(jìn)行聚類使用大量存儲(chǔ)器,并且需要明顯更多的執(zhí)行時(shí)間。在沒(méi)有識(shí)別就緒聚類的情況下對(duì)mondial.xml進(jìn)行聚類。由于預(yù)計(jì)的存儲(chǔ)器使用量相當(dāng)大,強(qiáng)制一200KB的存儲(chǔ)器限制。在進(jìn)行就緒聚類識(shí)別并按照相同存儲(chǔ)器限制的情況下,重新進(jìn)行該試驗(yàn)。當(dāng)沒(méi)有使用就緒聚類識(shí)別時(shí),最終聚類的值降低了20%。當(dāng)就緒聚類沒(méi)有被識(shí)別時(shí),XC的存儲(chǔ)器消耗相當(dāng)迅速地達(dá)到存儲(chǔ)器限制,并且在達(dá)到違反存儲(chǔ)器的規(guī)定之前,僅較小的子樹(shù)得到了處理。因此,只有具有較小值的聚類被傳送到頁(yè)面分配子系統(tǒng);降低了最終結(jié)果的值。
圖3示出了當(dāng)XML文件的大小增加時(shí)(在這種情況下,這意味著輸入XML節(jié)點(diǎn)的數(shù)量也增加),XC的特性。對(duì)于這個(gè)試驗(yàn),XMark XML文檔產(chǎn)生工具包[SWK+01]被用于產(chǎn)生各種大小(26KB到116MB)的XMark文檔。根據(jù)所連接的節(jié)點(diǎn)的類型來(lái)指派邊權(quán)重。元素-元素邊被指派權(quán)重3,元素-屬性邊被指派權(quán)重5,元素-文本邊被指派權(quán)重9。使用W=4KB的權(quán)重邊界和4KB與1KB的塊大小對(duì)每個(gè)XMark文檔進(jìn)行聚類。為了清楚起見(jiàn),圖3針對(duì)從1MB變化到110MB大小的XMark文檔示出了運(yùn)行時(shí)間。如圖3所示,對(duì)于該大小的文件,本發(fā)明的方法的運(yùn)行時(shí)間幾乎是線性的。
表3DFS和XC的值比較
下面將XC的效率與DFS,即另一樹(shù)分區(qū)方法的效率相比較。表3提供了使用XC和DFS對(duì)6個(gè)不同XML文檔進(jìn)行聚類的結(jié)果。以和圖3的試驗(yàn)相同的方式,根據(jù)所連接的節(jié)點(diǎn)類型指派邊權(quán)重。應(yīng)當(dāng)注意,由于沒(méi)有區(qū)分工作負(fù)荷的信息,這一配置對(duì)XC有偏差。使用4KB的權(quán)重邊界,并且在4KB的塊大小和無(wú)限的存儲(chǔ)器情形下執(zhí)行XC。如表3所示,對(duì)于所有文檔,XC產(chǎn)生更好的聚類。然而在許多情況下,XC所需的時(shí)間比DFS所使用的時(shí)間要多。即使在最有利的配置中(權(quán)重邊界等于塊大小),XC比DFS完成更多的工作并且使用更多的存儲(chǔ)器。這導(dǎo)致XC要慢于DFS。
表4具有基于工作負(fù)荷的邊權(quán)重的分區(qū)(XML文檔-mondial.xml)
前面的試驗(yàn)使用隨機(jī)權(quán)重。當(dāng)已知預(yù)計(jì)查詢工作負(fù)荷時(shí),隨機(jī)指派的均勻性不再保持。于是根據(jù)基于工作負(fù)荷的邊權(quán)重指派來(lái)獲得聚類結(jié)果。使用以下有關(guān)mondial.xml的單個(gè)XPath查詢/mondial/country/province/city。由初級(jí)XPath處理器執(zhí)行這個(gè)查詢。在此執(zhí)行期間將會(huì)被遍歷的XML樹(shù)的邊被指派權(quán)重100。接著,由使用各種塊大小的DFS和XC對(duì)該文檔進(jìn)行分區(qū)。結(jié)果如表4所示。在分區(qū)值方面可以看出XC明顯優(yōu)于DFS。實(shí)際上,希望這種″偏斜″邊權(quán)重指派是普遍情況。
本公開(kāi)現(xiàn)在討論對(duì)本發(fā)明的聚類系統(tǒng)的評(píng)估,包含對(duì)于較大工作負(fù)荷的使用。雖然前面的試驗(yàn)說(shuō)明XC可用于以合理的空間和時(shí)間產(chǎn)生高值分區(qū)的聚類算法,但是現(xiàn)在考察所得到的聚類對(duì)于各種應(yīng)用的有效性。為此,測(cè)試所得到的頁(yè)面內(nèi)容如何影響查詢處理。在上述原型聚類系統(tǒng)的情境中執(zhí)行測(cè)試。使用該系統(tǒng)的兩個(gè)實(shí)施例對(duì)XML文檔進(jìn)行分區(qū)第一個(gè)實(shí)施例,XCS,使用XC作為樹(shù)分區(qū)組件,而第二個(gè)實(shí)施例,D,使用DFS進(jìn)行樹(shù)分區(qū)。
表5評(píng)估在線裝箱方法
要評(píng)估的本發(fā)明的XML聚類系統(tǒng)的第一個(gè)部件是頁(yè)面指派部件260。表5比較了當(dāng)使用XCS和DCS進(jìn)行聚類時(shí)存儲(chǔ)6個(gè)XML文檔所需的盤頁(yè)面的數(shù)量,其中一旦完成節(jié)點(diǎn)的掃描,XCS和DCS便將XML節(jié)點(diǎn)存儲(chǔ)到頁(yè)面中。DCS在存儲(chǔ)器中保留多達(dá)2個(gè)未完成的頁(yè)面,并且使用“貪心”策略填充這些頁(yè)面(用已完成的XML節(jié)點(diǎn)填充)。這一“貪心”策略僅使用XML節(jié)點(diǎn)大小以使盤利用率最大。XCS使用如上所述的在線裝箱方法存儲(chǔ)就緒聚類。表5示出了由XCS產(chǎn)生的就緒聚類的數(shù)量和相應(yīng)的頁(yè)面數(shù)量。如表5所示,DFS(DCS中)產(chǎn)生略優(yōu)于XC的盤頁(yè)面利用率(5%左右)。其一個(gè)原因是XC趨向于比DFS存儲(chǔ)更大的數(shù)據(jù)″塊″。這引起分段,從而導(dǎo)致略微降低了頁(yè)面利用率。
現(xiàn)在考察聚類如何影響XML查詢執(zhí)行的性能。為此,考慮以下針對(duì)mondial.xml的查詢工作負(fù)荷,其包括3個(gè)XPath查詢(Q1)/mondial/country/province/city(Q2)/mondial/country/enthicgroups(Q3)/mondial/country/province/city/name每個(gè)查詢被指派相同的權(quán)重(100)。分別使用有關(guān)/mondial/country和/mondial/country/province的路徑索引執(zhí)行查詢Q2和Q3(即只有從被索引節(jié)點(diǎn)遍歷的邊才被指派非零邊權(quán)重)。使用該指定工作負(fù)荷產(chǎn)生mondial.xml的XC聚類(XC)。根據(jù)這一工作負(fù)荷,XCS的邊權(quán)重指派器在掃描文檔的同時(shí)指派適當(dāng)?shù)臋?quán)重。頁(yè)面分配子系統(tǒng)260使用裝箱試探算法將就緒聚類250映射到頁(yè)面270。3個(gè)其它聚類XCi分別基于3個(gè)工作負(fù)荷,其每個(gè)工作負(fù)荷包括單個(gè)查詢Qi,1≤i≤3。在使用XC的同時(shí),還使用4KB的權(quán)重邊界和4KB的塊大小。最后,使用以相同權(quán)重邊界產(chǎn)生聚類DFS的較簡(jiǎn)單DFS算法(DCS中),對(duì)文檔進(jìn)行分區(qū)。
在3個(gè)不同頁(yè)面調(diào)度情境下針對(duì)不同布局(XC,XCi和DFS)模擬初級(jí)XPath處理器對(duì)每個(gè)查詢的執(zhí)行,并且度量缺頁(yè)情況。針對(duì)該組合的查詢工作負(fù)荷在以下兩種模式中重復(fù)該試驗(yàn)(1)串行這一情境按順序(即Q2Q1Q3)模擬這3個(gè)查詢的執(zhí)行,和(2)并行這一情境以并行方式模擬這3個(gè)查詢的執(zhí)行。針對(duì)2個(gè)布局XC和DFS評(píng)估該組合的查詢工作負(fù)荷。
對(duì)于這些試驗(yàn),產(chǎn)生在執(zhí)行XPath查詢的同時(shí)遍歷的XML節(jié)點(diǎn)的跟蹤軌跡。這些軌跡和針對(duì)不同聚類的頁(yè)面布局一起用于評(píng)估頁(yè)面調(diào)度特性。修改2個(gè)重要參數(shù)以改變頁(yè)面調(diào)度情境。首先,緩沖區(qū)大小是存儲(chǔ)器中能夠保存的盤頁(yè)面的數(shù)量。其次,預(yù)取量是在單次盤訪問(wèn)(從所尋址的頁(yè)面開(kāi)始,包含連續(xù)頁(yè)面)中獲取的連續(xù)盤頁(yè)面的數(shù)量。第一種情境使用1個(gè)頁(yè)面、其中具有1個(gè)預(yù)取頁(yè)面的緩沖區(qū)大小(表示為1/1);第二種情境考慮無(wú)限的緩沖區(qū)大小(即在執(zhí)行期間,獲取的頁(yè)面均保留在存儲(chǔ)器中)和1個(gè)預(yù)取頁(yè)面(表示為無(wú)限/1);最后的情境模擬使用具有128個(gè)頁(yè)面、其中有8個(gè)預(yù)取頁(yè)面的緩沖區(qū)的現(xiàn)實(shí)情況(表示為128/8)。這一情境使用簡(jiǎn)單LRU模式丟棄存儲(chǔ)器內(nèi)頁(yè)面。在所有情況下,都假定4KB的頁(yè)面大小。
圖4示出了對(duì)各個(gè)查詢工作負(fù)荷的缺頁(yè)情況度量,圖5示出了對(duì)串行和并行模式的組合查詢工作負(fù)荷的缺頁(yè)情況度量。如結(jié)果所示,在所有試驗(yàn)中,XC顯然優(yōu)于DFS。這表明通過(guò)邊權(quán)重適當(dāng)模擬運(yùn)行時(shí)刻的基本原則能夠?qū)е嘛@著的性能優(yōu)點(diǎn)。幾乎在所有情況下,DFS聚類引起大量的缺頁(yè)情況。對(duì)于各個(gè)查詢工作負(fù)荷,當(dāng)單純根據(jù)工作負(fù)荷查詢對(duì)文檔進(jìn)行聚類時(shí),觀察到了工作負(fù)荷的最好頁(yè)面調(diào)度性能。使用組合查詢工作負(fù)荷進(jìn)行聚類僅對(duì)第三個(gè)查詢Q3有好處。查詢Q1和Q3均遍歷邊province/city,因此組合查詢工作負(fù)荷產(chǎn)生的聚類與通過(guò)使用具有Q3的工作負(fù)荷而產(chǎn)生的聚類一樣好。類似地,參見(jiàn)圖5,這些XPath查詢的串行和并行執(zhí)行受益于智能聚類。尤其是,組合查詢工作負(fù)荷的串行執(zhí)行從XC的工作負(fù)荷已知的聚類中大大受益。串行和并行情況的結(jié)果表明,XC利用局部親合性的能力實(shí)際上是非常有效的。值得注意,DFS分區(qū)值比XC分區(qū)值低10%。試驗(yàn)度量已經(jīng)表明,即使較小的分區(qū)值差異也會(huì)導(dǎo)致頁(yè)面調(diào)度特性的根本差異(圖4和5)。
現(xiàn)在參照?qǐng)D6,其中示出了根據(jù)本發(fā)明的實(shí)施例的方法的流程圖。在步驟1010,讀取下一個(gè)xml標(biāo)記。在判決塊1020處,確定該xml標(biāo)記是否具有空值。如果是,則不進(jìn)行進(jìn)一步的處理。如果不是,則確定該標(biāo)記是否是結(jié)束標(biāo)簽(步驟1030)。如果該標(biāo)記不是結(jié)束標(biāo)簽,則初始化該標(biāo)記(步驟1040,下面會(huì)參照?qǐng)D7詳細(xì)描述)。在初始化之后,確定該標(biāo)記是否是屬性的當(dāng)前xml子節(jié)點(diǎn),如判決塊1060所示。如果不是,則該過(guò)程返回到步驟1010。如果是,則該標(biāo)記是以已完成元素為根的子樹(shù),或具有關(guān)于其邊的權(quán)重的屬性,如數(shù)據(jù)塊1070所示。返回到步驟1030,如果該標(biāo)記是結(jié)束標(biāo)簽,則確定該樹(shù)節(jié)點(diǎn)是否包含子節(jié)點(diǎn),并且該節(jié)點(diǎn)是否完成,如判決塊1060所示。如果不是,則該過(guò)程返回到步驟1010。如果是,則該標(biāo)記是以已完成元素為根的子樹(shù),或具有關(guān)于其邊的權(quán)重的屬性,如數(shù)據(jù)塊1070所示。接著在步驟1080將數(shù)據(jù)1070劃分成一組W/C個(gè)分區(qū),其中W是分區(qū)的權(quán)重,C是塊大小,如數(shù)據(jù)塊1090所示。(下面參照?qǐng)D8詳細(xì)描述步驟1080)。在步驟2000,對(duì)數(shù)據(jù)進(jìn)行后分區(qū)處理,下面會(huì)參照?qǐng)D9詳細(xì)描述該處理。根據(jù)后分區(qū)處理的結(jié)果,讀取下一個(gè)xml標(biāo)記(步驟1010),或者繼續(xù)進(jìn)行分區(qū)(步驟1080)。
現(xiàn)在參照?qǐng)D7,其中示出了圖6的初始化步驟的流程圖。在步驟2010,針對(duì)所分析的xml節(jié)點(diǎn)創(chuàng)建樹(shù)節(jié)點(diǎn)。接著確定該樹(shù)節(jié)點(diǎn)是否是父節(jié)點(diǎn),如判決塊2020所示。如果不是,則該節(jié)點(diǎn)變成該樹(shù)的根(步驟2040);如果是,則在父節(jié)點(diǎn)和子節(jié)點(diǎn)之間建立鏈接,并且指派邊權(quán)重(步驟2030)。在步驟2050,創(chuàng)建具有權(quán)重W和值0的初始分區(qū)。這個(gè)分區(qū)接著被加入已創(chuàng)建分區(qū)的列表中(步驟2060)。
現(xiàn)在參照?qǐng)D8,其中示出了圖6的分區(qū)步驟的流程圖。在單遍分析XML文檔期間,通過(guò)過(guò)程調(diào)用對(duì)一個(gè)XML節(jié)點(diǎn)調(diào)用XC。每當(dāng)完全掃描了一個(gè)XML節(jié)點(diǎn)時(shí)(即在endElement(),character()SAX事件期間,或當(dāng)掃描屬性標(biāo)簽及其值時(shí)),調(diào)用XC。在每次調(diào)用之前,假定對(duì)XML節(jié)點(diǎn)v調(diào)用之前,邊權(quán)重指派器必須已經(jīng)為連接到其XML父節(jié)點(diǎn)的邊指派權(quán)重。XC始終對(duì)節(jié)點(diǎn)v起作用,v的子節(jié)點(diǎn)的集合代表已經(jīng)由XC處理的子樹(shù)。常數(shù)hwm和lwm分別是高和低水位標(biāo)志,滿足lwm<hwm<存儲(chǔ)器使用限制。
在判決塊2070,確定存儲(chǔ)器使用是否大于hwm。如果是,從(已處理子樹(shù)的)最高值分區(qū)列表中獲得與所關(guān)心節(jié)點(diǎn)相關(guān)的最高值分區(qū)P,并且將其從(已處理子樹(shù)的)最高值分區(qū)列表中移除(步驟2080)。接著,從聚類樹(shù)刪除相關(guān)子樹(shù)的節(jié)點(diǎn)(步驟2090),并且其聚類被標(biāo)記為就緒(步驟3000)。接著,該聚類被傳送給頁(yè)面分配(步驟3010)。只要存儲(chǔ)器使用大于hwm,這一過(guò)程就繼續(xù)執(zhí)行。一旦存儲(chǔ)器使用低于hwm,則使用其根節(jié)點(diǎn)的分區(qū)和其子節(jié)點(diǎn)的分區(qū)對(duì)子樹(shù)進(jìn)行分區(qū)(步驟3020)。創(chuàng)建W/C個(gè)分區(qū),其中在具有相同權(quán)重的所有分區(qū)中,該W/C個(gè)分區(qū)中的每個(gè)分區(qū)具有最大值(步驟3030)。這通過(guò)創(chuàng)建具有等于v的文本大小的權(quán)重wx的聚類節(jié)點(diǎn)x來(lái)實(shí)現(xiàn);接著將x連接到其父節(jié)點(diǎn)。然后,用值0和權(quán)重w形成分區(qū)Pw,該分區(qū)包括含有節(jié)點(diǎn)x的單個(gè)聚類(Pw={(x)})。在所有分區(qū)中,具有最大值的分區(qū)被選擇為最優(yōu)分區(qū)(步驟3040)。如果v是文本節(jié)點(diǎn)(葉),則Pw被標(biāo)記為節(jié)點(diǎn)x的最優(yōu)分區(qū)。對(duì)于所有其它節(jié)點(diǎn),這個(gè)分區(qū)被標(biāo)記為初始分區(qū)。接著,計(jì)算以具有中樞聚類權(quán)重w′的節(jié)點(diǎn)x為根的最佳中間分區(qū)的w′=WxC,K,WC,]]>這要調(diào)用Lukes的方法(其中連接線被任意斷開(kāi))。為具有根x的子樹(shù)識(shí)別(局部)優(yōu)化的分區(qū)Poptx,以作為在與節(jié)點(diǎn)x相關(guān)的中間分區(qū)中具有最大值的中間分區(qū)。接著,刪除該樹(shù)的當(dāng)前根的子節(jié)點(diǎn)(步驟3050),并且接著返回以節(jié)點(diǎn)x為根的該樹(shù)的W/C個(gè)分區(qū)(步驟3060)。
現(xiàn)在參照?qǐng)D9,其中示出了圖6的后分區(qū)步驟的流程圖。在判決塊3070,對(duì)已分區(qū)子樹(shù)的W/C個(gè)分區(qū)中的每個(gè)分區(qū)進(jìn)行評(píng)估,以檢查它們是否包含XML文檔的根節(jié)點(diǎn)。如果這些分區(qū)包含根節(jié)點(diǎn)(即它們是在整個(gè)文檔之上被定義的),則選擇最優(yōu)分區(qū)(步驟3080),并且其全部聚類被標(biāo)記為就緒(步驟3090)。接著,這些就緒聚類被傳送到頁(yè)面分配(步驟4000)。如果沒(méi)有根節(jié)點(diǎn)(判決塊3070),則在判決塊4010確定是否存在任何就緒聚類。如果沒(méi)有,則該過(guò)程返回到分區(qū)步驟(步驟1080)。如果有,則這些就緒聚類被傳送到頁(yè)面分配(步驟4020)。根據(jù)需要重復(fù)這個(gè)過(guò)程,如判決塊4010所示。
應(yīng)當(dāng)理解,根據(jù)至少一個(gè)當(dāng)前優(yōu)選的實(shí)施例,本發(fā)明包含用于按節(jié)點(diǎn)分析XML文檔的裝置;用于初始化至少一個(gè)所分析的節(jié)點(diǎn)的裝置;用于對(duì)至少一個(gè)所分析的節(jié)點(diǎn)進(jìn)行分區(qū)的裝置;用于確定至少一個(gè)所分析的節(jié)點(diǎn)的XPath工作遍歷的裝置;和用于處理至少一個(gè)所分析的節(jié)點(diǎn)的裝置,其可以被實(shí)現(xiàn)在運(yùn)行適當(dāng)軟件程序的至少一個(gè)通用計(jì)算機(jī)上。它也可以被實(shí)現(xiàn)在至少一個(gè)集成電路或至少一個(gè)集成電路的部分上。于是,應(yīng)當(dāng)理解,本發(fā)明可以通過(guò)硬件,軟件或二者的組合來(lái)實(shí)現(xiàn)。
如果這里沒(méi)有另外指出,則將假定這里提及和引用的所有專利、專利申請(qǐng)、專利出版物和其它出版物(包含基于Web的出版物)在這里均全文引用作為參考。
雖然這里已經(jīng)參照附圖描述了本發(fā)明的示例性實(shí)施例,但應(yīng)當(dāng)理解,本發(fā)明并不局限于這些確切的實(shí)施例,并且本領(lǐng)域的技術(shù)人員在不背離本發(fā)明的范圍和宗旨的前提下可以進(jìn)行各種其他的改變和修改。
參考文獻(xiàn)列表[W3C]World Wide Web Consortium.W3C Architecture Domain.www.w3c.org/xml.Online Document. D.Florescu and D.Kossmann.Storing and Querying XMLData using an RDBMS.IEEE Data Engineering Bulletin,22(3)27-34,1999[Fre91]G.N.Frederickson.Optimal Algorithms for Tree Partitioning.In Proceedings of the Second Annual ACM-SIAM Symposium on DiscreteAlgorithms,pages 168-177,1991[GJ79]M.S.Garey and D.S.Johnson.Computers and Intractability.W.H.Freeman and Co.,1979. C.Gerlhof,A.Kemper,C.Kilger,and G.Moerkotte.Partition-Based Clustering in Object BasesFrom Theory to Practice.InProceedings of the Foundations of Data Organization and Algorithms,F(xiàn)ODO′93 Chicago,Illinois,October 13-15,pages 301-316,1993[JN83]D.S.Johnson and K.A.Niemi.On Knapsacks,Partitions,anda New Dynamic Programming Technique for Trees.Mathematics ofOperations Research,8(1),1983. B.W.Kernighan.Optimal Sequential Partitions of Graphs.J.Assoc.Comp.Mach.,18(1)34-40,1971[KM00]C.Kanne and G.Moerkotte.Efficient Storage of XML Data.In Proceedings of the 16th International Conference on Data Engineering,San Diego,U.S.A.,March 2000.IEEE Computer Society. J.A.Lukes.Efficient Algorithm for the Partitioning of Trees.IBM Journal of Research and Development,13(2)163-178,1974[Luk751 J.A.Lukes.Combinatiorial Solution for the Partitioning ofGeneral Graphs.IBM Journal of Research and Development,19(2)170-180,1975[Sch77]M.Schkolnick.A Clustering Algorithm for HierarchicalStructures.ACM Transactions on Database Systems(TODS),2(1)27-44,1977. A.R.Schmidt,F(xiàn).Waas,M.L.Kersten,D.Florescu,M.J.Carey,I.Manolescu,and R.Busse.Why and How to Benchmark XMLDatabases.ACMSIGMOD Record,3(30),September 2001. F.Tian,D.DeWitt,J.Chen and C.Zhang.The Design andPerformance Evaluation of Alternative XML Storage Strategies.In ACMSIGMOD Record,(31)1,pages 5-10,ACM Press,2002. M.M.Tsangaris and J.F.Naughton.A Stochastic Approachfor Clustering in Object Bases.In Proceedings of the 1991 ACM SIGMODInternational Conference on Management of Data,Denver,Colorado,May29-31,pages 12-21.ACM Press,1991[TN92]M.M.Tsangaris and J.F.Naughton.On the Performance ofObject Clustering Techniques.In Proceedings of the 1992 ACM SIGMODInternational Conference on Management of Data,San Diego,California,June 2-5,pages 144-153.ACM Press,199權(quán)利要求
1.一種用于對(duì)XML文檔進(jìn)行聚類的系統(tǒng),該系統(tǒng)包括用于按節(jié)點(diǎn)分析XML文檔的裝置;用于初始化至少一個(gè)所分析的節(jié)點(diǎn)的裝置;用于對(duì)至少一個(gè)所分析的節(jié)點(diǎn)進(jìn)行分區(qū)的裝置;以及用于對(duì)至少一個(gè)所分析的節(jié)點(diǎn)進(jìn)行處理的裝置。
2.根據(jù)權(quán)利要求1所述的系統(tǒng),其中用于初始化至少一個(gè)所分析的節(jié)點(diǎn)的裝置包括用于針對(duì)至少一個(gè)所分析的節(jié)點(diǎn)創(chuàng)建至少一個(gè)樹(shù)節(jié)點(diǎn)的裝置;用于提供關(guān)于至少一個(gè)所分析的節(jié)點(diǎn)的XML工作負(fù)荷信息的裝置;用于當(dāng)所分析的節(jié)點(diǎn)是父節(jié)點(diǎn)時(shí)提供至少一個(gè)父/子鏈接并且指派邊權(quán)重的裝置;用于當(dāng)所分析的節(jié)點(diǎn)不是父節(jié)點(diǎn)時(shí)指定所分析的節(jié)點(diǎn)為樹(shù)的根的裝置;用于創(chuàng)建分區(qū)的裝置;以及用于將所創(chuàng)建的分區(qū)添加到已創(chuàng)建分區(qū)的列表的裝置。
3.根據(jù)權(quán)利要求2所述的系統(tǒng),其中用于提供XML工作負(fù)荷信息的裝置包括用于當(dāng)至少一個(gè)節(jié)點(diǎn)被分析時(shí)分析至少一個(gè)XPath查詢的裝置;用于識(shí)別被XPath查詢?cè)L問(wèn)的至少一個(gè)節(jié)點(diǎn)的裝置;以及用于確定經(jīng)由父-子節(jié)點(diǎn)邊對(duì)至少一個(gè)節(jié)點(diǎn)的訪問(wèn)的次數(shù)的裝置。
4.根據(jù)權(quán)利要求2所述的系統(tǒng),其中用于創(chuàng)建分區(qū)的裝置創(chuàng)建具有權(quán)重w′(等于節(jié)點(diǎn)權(quán)重)和值零的初始分區(qū)。
5.根據(jù)權(quán)利要求1所述的系統(tǒng),其中用于對(duì)至少一個(gè)所分析的節(jié)點(diǎn)進(jìn)行分區(qū)的裝置包括用于通過(guò)利用根節(jié)點(diǎn)的分區(qū)和至少一個(gè)子節(jié)點(diǎn)的分區(qū)對(duì)至少一個(gè)所分析的節(jié)點(diǎn)進(jìn)行分區(qū)的裝置;用于創(chuàng)建Wc=W/C(W是權(quán)重邊界,C是塊大小)個(gè)分區(qū)的裝置;用于從該Wc個(gè)分區(qū)中選擇具有最大值的分區(qū)的裝置;以及用于刪除該至少一個(gè)所分析的節(jié)點(diǎn)的任何子節(jié)點(diǎn)的裝置。
6.根據(jù)權(quán)利要求5所述的系統(tǒng),其中該Wc個(gè)分區(qū)的每個(gè)在具有該相同權(quán)重的所有分區(qū)中具有最大值。
7.根據(jù)權(quán)利要求2所述的系統(tǒng),其中由較重的邊連接的節(jié)點(diǎn)被映射到相同頁(yè)面。
8.根據(jù)權(quán)利要求2所述的系統(tǒng),其中系統(tǒng)存儲(chǔ)器是受限的。
9.根據(jù)權(quán)利要求2所述的系統(tǒng),還包括用于識(shí)別至少一個(gè)就緒聚類的裝置。
10.一種用于單遍地對(duì)XML文檔進(jìn)行聚類的系統(tǒng),該系統(tǒng)包括用于按節(jié)點(diǎn)分析XML文檔的裝置;用于確定至少一個(gè)所分析的節(jié)點(diǎn)的XPath工作遍歷的裝置;用于對(duì)至少一個(gè)所分析的節(jié)點(diǎn)進(jìn)行聚類的裝置;以及用于向頁(yè)面指派至少一個(gè)聚類的裝置。
11.根據(jù)權(quán)利要求10所述的系統(tǒng),其中用于分析至少一個(gè)所分析的節(jié)點(diǎn)的裝置包括用于為至少一個(gè)所分析的節(jié)點(diǎn)創(chuàng)建至少一個(gè)樹(shù)節(jié)點(diǎn)的裝置;用于提供關(guān)于至少一個(gè)所分析的節(jié)點(diǎn)的XML工作負(fù)荷信息的裝置;用于當(dāng)所分析的節(jié)點(diǎn)是父節(jié)點(diǎn)時(shí)提供至少一個(gè)父/子鏈接并且指派邊權(quán)重的裝置;用于當(dāng)所分析的節(jié)點(diǎn)不是父節(jié)點(diǎn)時(shí)指定所分析的節(jié)點(diǎn)為樹(shù)的根的裝置;用于創(chuàng)建分區(qū)的裝置;以及用于將所創(chuàng)建的分區(qū)添加到已創(chuàng)建分區(qū)的列表的裝置。
12.根據(jù)權(quán)利要求11所述的系統(tǒng),其中用于提取XML工作負(fù)荷信息的裝置包括用于當(dāng)至少一個(gè)節(jié)點(diǎn)被分析時(shí)分析至少一個(gè)XPath查詢的裝置;用于識(shí)別被XPath查詢?cè)L問(wèn)的至少一個(gè)節(jié)點(diǎn)的裝置;以及用于確定經(jīng)由父-子節(jié)點(diǎn)邊對(duì)至少一個(gè)節(jié)點(diǎn)的訪問(wèn)的次數(shù)的裝置。
13.根據(jù)權(quán)利要求11所述的系統(tǒng),其中用于創(chuàng)建分區(qū)的裝置創(chuàng)建具有權(quán)重w′(等于節(jié)點(diǎn)權(quán)重)和值零的初始分區(qū)。
14.根據(jù)權(quán)利要求10所述的系統(tǒng),其中用于對(duì)至少一個(gè)所分析的節(jié)點(diǎn)進(jìn)行分區(qū)的裝置包括用于通過(guò)利用根節(jié)點(diǎn)的分區(qū)和至少一個(gè)子節(jié)點(diǎn)的分區(qū)對(duì)至少一個(gè)所分析的節(jié)點(diǎn)進(jìn)行分區(qū)的裝置;用于創(chuàng)建Wc=W/C(W是權(quán)重邊界,C是塊大小)個(gè)分區(qū)的裝置;用于從該Wc個(gè)分區(qū)中選擇具有最大值的分區(qū)的裝置;以及用于刪除該至少一個(gè)所分析的節(jié)點(diǎn)的任何子節(jié)點(diǎn)的裝置。
15.根據(jù)權(quán)利要求14所述的系統(tǒng),其中該Wc個(gè)分區(qū)的每個(gè)在具有該相同權(quán)重的所有分區(qū)中具有最大值。
16.根據(jù)權(quán)利要求11所述的系統(tǒng),其中由較重的邊所連接的節(jié)點(diǎn)被映射到相同頁(yè)面。
17.根據(jù)權(quán)利要求10所述的系統(tǒng),其中系統(tǒng)存儲(chǔ)器是受限的。
18.根據(jù)權(quán)利要求10所述的系統(tǒng),還包括用于識(shí)別至少一個(gè)就緒聚類的裝置。
19.一種用于單遍地對(duì)具有至少一個(gè)節(jié)點(diǎn)的XML文檔進(jìn)行聚類的系統(tǒng),該系統(tǒng)包括用于指派邊權(quán)重的裝置;用于進(jìn)行樹(shù)分區(qū)的裝置;以及用于頁(yè)面指派的裝置。
20.根據(jù)權(quán)利要求18所述的系統(tǒng),其中系統(tǒng)存儲(chǔ)器是受限的。
21.根據(jù)權(quán)利要求19所述的系統(tǒng),還包括用于識(shí)別至少一個(gè)就緒聚類的裝置。
22.一種用于對(duì)XML文檔進(jìn)行聚類的方法,包括步驟按節(jié)點(diǎn)分析XML文檔;初始化至少一個(gè)所分析的節(jié)點(diǎn);對(duì)至少一個(gè)所分析的節(jié)點(diǎn)進(jìn)行分區(qū);以及處理至少一個(gè)所分析的節(jié)點(diǎn)。
23.根據(jù)權(quán)利要求22所述的方法,其中初始化至少一個(gè)所分析的節(jié)點(diǎn)的步驟包括針對(duì)至少一個(gè)所分析的節(jié)點(diǎn)創(chuàng)建至少一個(gè)樹(shù)節(jié)點(diǎn);提供關(guān)于至少一個(gè)所分析的節(jié)點(diǎn)的XML工作負(fù)荷信息;當(dāng)所分析的節(jié)點(diǎn)是父節(jié)點(diǎn)時(shí)提供至少一個(gè)父/子鏈接并且指派邊權(quán)重;當(dāng)所分析的節(jié)點(diǎn)不是父節(jié)點(diǎn)時(shí)指定所分析的節(jié)點(diǎn)為樹(shù)的根;創(chuàng)建分區(qū);以及將所創(chuàng)建的分區(qū)添加到已創(chuàng)建分區(qū)的列表中。
24.根據(jù)權(quán)利要求23所述的方法,其中提供XML工作負(fù)荷信息的步驟包括當(dāng)至少一個(gè)節(jié)點(diǎn)被分析時(shí)分析至少一個(gè)XPath查詢;識(shí)別被XPath查詢?cè)L問(wèn)的至少一個(gè)節(jié)點(diǎn);以及確定經(jīng)由父-子節(jié)點(diǎn)邊對(duì)至少一個(gè)節(jié)點(diǎn)的訪問(wèn)的次數(shù)。
25.根據(jù)權(quán)利要求22所述的方法,其中以權(quán)重w′(等于節(jié)點(diǎn)權(quán)重)和值零來(lái)創(chuàng)建初始分區(qū)。
26.根據(jù)權(quán)利要求22所述的方法,其中對(duì)至少一個(gè)所分析的節(jié)點(diǎn)進(jìn)行分區(qū)的步驟包括利用根節(jié)點(diǎn)的分區(qū)和至少一個(gè)子節(jié)點(diǎn)的分區(qū)對(duì)至少一個(gè)所分析的節(jié)點(diǎn)進(jìn)行分區(qū);創(chuàng)建Wc=W/C(W是權(quán)重邊界,C是塊大小)個(gè)分區(qū);選擇該Wc個(gè)分區(qū)中具有最大值的分區(qū);以及刪除該至少一個(gè)所分析的節(jié)點(diǎn)的任何子節(jié)點(diǎn)。
27.根據(jù)權(quán)利要求26所述的方法,其中該Wc個(gè)分區(qū)的每個(gè)在具有該相同權(quán)重的所有分區(qū)中具有最大值。
28.根據(jù)權(quán)利要求23所述的方法,其中由較重的邊所連接的節(jié)點(diǎn)被映射到相同頁(yè)面。
29.根據(jù)權(quán)利要求22所述的系統(tǒng),還包括識(shí)別至少一個(gè)就緒聚類。
30.一種機(jī)器可讀的程序存儲(chǔ)裝置,有形地體現(xiàn)可被機(jī)器執(zhí)行以實(shí)現(xiàn)用于對(duì)XML文檔進(jìn)行聚類的方法步驟的指令程序,所述方法包括步驟按節(jié)點(diǎn)分析XML文檔;初始化至少一個(gè)所分析的節(jié)點(diǎn);對(duì)至少一個(gè)所分析的節(jié)點(diǎn)進(jìn)行分區(qū);以及處理至少一個(gè)所分析的節(jié)點(diǎn)。
全文摘要
本發(fā)明公開(kāi)了用于XML文檔的聚類的方法和系統(tǒng)。所述方法在指定的存儲(chǔ)器使用限制下操作。該系統(tǒng)實(shí)現(xiàn)該方法,并且掃描XML文檔,根據(jù)應(yīng)用工作負(fù)荷指派邊權(quán)重,將XML節(jié)點(diǎn)的聚類映射到盤頁(yè)面,所有這些均在分析器控制的對(duì)XML數(shù)據(jù)的單遍處理中完成。應(yīng)用工作負(fù)荷信息被用于產(chǎn)生導(dǎo)致大大降低所考慮的工作負(fù)荷的缺頁(yè)情況的XML聚類方案。本發(fā)明公開(kāi)了用于表示工作負(fù)荷信息的若干方案。例如,工作負(fù)荷可以列出在應(yīng)用期間調(diào)用的XPath操作符,以及其調(diào)用頻率。通過(guò)引入例如查詢重要性或查詢編譯代價(jià)的附加特性,能夠進(jìn)一步細(xì)化應(yīng)用工作負(fù)荷。使用隨機(jī)方案也能夠模擬XML訪問(wèn)模式。
文檔編號(hào)G06F7/00GK1614594SQ20041007826
公開(kāi)日2005年5月11日 申請(qǐng)日期2004年9月21日 優(yōu)先權(quán)日2003年11月7日
發(fā)明者R·博爾達(dá)維卡爾, S·K·帕德馬納班, O·什穆埃利 申請(qǐng)人:國(guó)際商業(yè)機(jī)器公司