麻豆精品无码国产在线播放,国产亚洲精品成人AA片新蒲金,国模无码大尺度一区二区三区,神马免费午夜福利剧场

Xml的簡明索引結構的制作方法

文檔序號:6569920閱讀:284來源:國知局
專利名稱:Xml的簡明索引結構的制作方法
XML的簡明索引結構相關申請的交叉引用本申請要求已于2005年12月6日提出的澳大利亞臨時專利申請No. 2005卯6846的優先權,上述申請的公開內容被整體合并于此作為引用參考。技術領域簡明數據和索引結構旨在將存儲容量的約束設置為接近理論最優值的 同時使得對任意數據進行更新和搜索操作的效率最大化。更具體地說,本發 明涉及簡明索引結構(succinct index structure )、使用簡明索引結構的方法、 構造簡明索引結構的方法、用于執行構造簡明索引結構的方法的計算機應用 程序、以及用于構造和使用簡明索引的計算機系統。
背景技術
擴展標記語言(XML)數據與傳統關系數據的主要區別在于,關系數 據使用二維表進行組織而XML數據以具有層次結構的樹進行組織。 例如,下面給出短片斷的XML:<b><c>d</c></b〉 <b><c>e</c></b> <b><c>f</c></b></a>這可由如圖1所示的層次樹來表示。雖然存在若干用于有效處理XML查詢的樹-遍歷方法,不過基于集合的 查詢處理(傳統的關系數據庫)也是令人滿意的。例如,當處理大型XML 文檔的查詢時,使用基于遍歷的方法來執行查詢處理可能是困難的且運行時間很長。
在關系數據庫管理系統中,通過在基于集合處理中生成和利用數據庫索 引能夠提高查詢性能,其中該數據庫索引返回中間結果。然而,對不4衣賴關
系數據庫而存在的XML數據進行基于集合的查詢處理存在一些缺點。造成 這些缺點的原因是,在查詢任何節點時,都需要查詢任意兩個XML節點之 間的拓樸關系。
XML查詢可以由多個路徑表達式組成。路徑表達式可以包含其結果節 點必須滿足的拓樸關系。例如,路徑表達式/a[b]/c搜索以c作為其節點標簽 且具有帶標簽a的父節點和帶標簽b的同屬節點的所有節點。為了有效應答 任何種類的先輩/后輩查詢,需要結構連接操作。結構連接操為下列技術的 名稱給定可能的先輩節點列表和可能的后輩節點列表,則可確定列表的節 點之間的先輩-后輩關系。
索引經常可供查找滿足特定標簽的節點的集合。生成和維護包括確定拓 樸關系所需的編碼方案的索引可能很昂貴。最普通的編碼方案使用起始-結 束-深度三元組(start-end-depth triplet )、 前序-后序-深度三元組
(preorder畫postorder-depth triplet )或Dewey編碼。給定具有n個節點的XML 文檔,則至少需要logn位來表示三元組內的每個數。如果索引返回與文檔 大小成比例的節點集合,那么需要至少O(nlogn)位來恰當表示這樣的集合。 已知的是,僅需要2n+o(n)個位以簡明地表示整個拓樸。因此,這樣的索引
(依賴這些最普通的編碼方案)基本上占用比原來的文檔本身更多的空間, 從而極大地限制了索引的有用性。

發明內容
在第 一方面,本發明提供一種為以層次結構表示的數據編索引的簡明索 引結構,所述索引結構包括一符號表,該符號表以所有不同根-葉路徑作為 鍵標或以特異元素標記名作為鍵標,其中在所述符號表中,針對一鍵標的條 目具有與該鍵標相關聯的節點的經轉換的拓樸信息及對所述拓樸信息采用的轉換方法的指示,并且所采用的轉換方法取決于與該鍵標相關聯的節點之 間的拓樸關系。
所述拓樸信息可以包括針對每個節點的三元組編碼方案。所述三元組編 碼方案可以為起始-結束-深度三元組編碼方案或為前序-后序-深度三元組編 碼方案。所述三元組可以采用樹遍歷次序的形式。
所述層次結構可以為可擴展標記語言(XML)。
所述轉換方法可以包括對所述拓樸信息進行差分編碼,例如,對所述列 表中的每個三元組中的每個值進行差分編碼。所述三元組的第一差分編碼值 可以為連續三元組的起始位置的差。若給定每個節點的起始位置和結束位置 之間的差,則所述三元組的第二差分編碼值可以為連續三元組的這些值之間 的差。第三差分編碼值可以為連續三元組的深度的差。
所述轉換方法的信息可以包括一替換值,該替換值用來替換與所述鍵標 相關聯的每個節點的三元組的第一值、第二值和第三值中的每一值。
所述轉換方法的信息可以包括直方圖的形狀的指示,其中所述直方圖繪 出了所有節點的三元組的第一值、第二值和第三值中的每一值。
所述轉換方法的信息可以包括模式函數,所述模式函數輸出與所述鍵標 相關聯的所有節點的三元組的第一值、第二值或第三值。
所述轉換方法的信息可以指示所述經轉換的拓樸信息與所述拓樸信息 相同。
所述針對一鍵標的條目可以具有多種用于轉換所述拓樸信息的方法。針 對與所述鍵標相關聯的所有節點的三元組的第 一值、第二值和第三值中的每 一值可以采用一種方法。
所述經轉換的拓4卜信息以可更新的壓縮形式被存儲。
所述拓樸信息可以從簡明數據結構中得出。所述簡明數據可以包括拓樸 層(層0),所述拓樸層使用對稱括號表示來表示節點的嵌套。也就是說, 對樹的前序遍歷在遇到開始標記時輸出一位(左括號)并在遇到結束標記時 輸出相反位(右括號)。
9在第二方面,本發明提供一種使用所述簡明索引結構的方法,該方法包
括以下步驟
在所述符號表中定位所需的鍵標;并且
基于用來轉換與該鍵標相關聯的節點的拓樸信息的轉換方法,對所述經 轉換的拓樸信息進行再轉換,來檢索與所述鍵標相關聯的所有節點的拓樸信息。
所述簡明索引結構用于處理結構連接查詢。
在第三方面,本發明提供 一 種為以層次結構表示的數據構造簡明索引的 方法,所述方法包括以下步驟
1、 以樹遍歷次序解析所述數據來生成節點的拓樸編碼列表,并且針對 與不同根-葉路徑或特異元素標記名相關聯的節點,評定這些節點之間的 拓樸關系;
2、 根據所述評定,對與所述不同根-葉路徑或特異標記名相關聯的節點 的該拓樸編碼列表進行轉換;并且
3、 在一以所述不同根-葉路徑或特異標記名作為鍵標的符號表中生成一 條目,該條目由與所述鍵標相關聯的經轉換的拓樸信息及所采用的轉換 方法的指示組成。
所述解析的步驟可以包括對所述樹進行遍歷來生成拓樸編碼列表,該拓 樸編碼列表存儲于可擴展數組中。所述拓樸編碼列表可以包括針對每個節點 的三元組編碼方案。所述三元組編碼方案可以為起始-結束-深度三元組編碼方案。
一旦所述可擴展數組達到預定的塊大小,則所迷方法可以進一步包括 繼續生成所述拓樸編碼列表并將其存儲在新塊的可擴展數組中。
在生成所述拓樸編碼列表之后,對如上所述拓樸列表進行差分再編碼。 所述方法可以進一步包括執行群集算法,并且如果確定了多個群集,則所述 塊被分成每個群集的較小的塊。
所述轉換方法的信息可以包括如上所述地那樣替換值、繪出所述值或生成模式函數。
在第四方面,本發明提供一種用于執行為以層次結構表示的數據構造簡 明索引的方法的計算機軟件應用程序。
在第五方面,本發明提供一種為以層次結構表示的數據構造簡明索引的
計算機系統,所述計算機系統包括
處理裝置,其以樹遍歷次序解析所述數據來生成節點的拓樸編碼列表, 以及針對與不同根-葉路徑或特異元素標記名相關聯的節點,評定這些節點 之間的拓樸關系,并且根據所述評定,對與所述不同根-葉路徑或特異標記 名相關聯的節點的該拓樸編碼列表進行轉換;以及
存儲裝置,其用于存儲帶有一以不同根-葉路徑或特異元素標記名作為 鍵標的條目的索引,該條目由與該鍵標相關聯的經轉換的拓樸信息及所采用 的轉換方法的信息組成。
所述存儲裝置可以為還存儲一計算機軟件應用程序的計算機可讀存儲 介質,所述計算機軟件應用程序可操作地執行如上所述的為以層次結構表示 的數據構造簡明索引的方法。所述計算機系統為諸如PDA、移動電話或膝 上型電腦之類的便攜式計算機。
在第六方面,本發明提供一種使用如上所述的以層次結構表示的數據的 簡明索引的計算機系統,所述計算系統包括
存儲裝置,其用于存儲所述簡明索引;以及
處理裝置,其用于在所述符號表中定位所需的鍵標,并且基于用來轉換 與該鍵標相關聯的節點的拓樸信息的轉換方法,對所述經轉換的拓樸信息進 行再轉換,來檢索與所述鍵標相關聯所有節點的拓樸信息。
所述存儲裝置可以為還存儲一計算機軟件應用程序的計算機可讀存儲 介質,所述計算機軟件應用程序可操作地執行如上所述的使用以層次結構表 示的數據的簡明索引方法。
所述計算機系統可以進 一 步包括用于例如通過因特網從遠程設備接收
數據處理請求的通信裝置。所述計算機系統或遠程設備可以為諸如PDA、移動電話或膝上型電腦 之類的便攜式計算機。
索引是獲取數據的拓樸結構的空間有效方式,并且能夠使結構連接在
XML數據上有效實現。在處理XML數據時,在表示中間結果集合(以及最 終結果集合)時要占用大量的內存使用量。當內存空間緊張時,查詢性能由 于額外的磁盤1/0操作而明顯惡化。利用本發明的索引,中間結果集合以簡 明形式表示,并且能夠用于有效地執行結構連接操作。


現在將參考附圖描述本發明的示例,其中
圖1示出XML文檔摘錄的層次表示(現有技術);
圖2為可用于本發明的計算機系統的示意圖3提供拓樸存儲層的總體示意圖4示出另外的XML文檔摘錄的層次表示;
圖5示出圖4中摘錄的對稱括號編碼;
圖6示出存儲空間在使用基于指針的方法情況下和使用對稱括號方法情況 下的差別;
圖7為示出根根據綜合簡明系統的存儲XML文檔的方法的流程圖; 圖8為示出根據本發明的構造索引的方法的流程圖9、圖10和圖11為示出基于所有b節點的拓樸編碼列表的差分值的直
方圖12至圖25示出根據本發明的生成圖12中所示XML文檔的簡明索引的方法。
具體實施例方式
圖3為示出本發明的實施例可以賴以實現的計算機系統4的框圖。臺式計 算機6和PDA或移動設備8皆為可以用于本發明的計算機示例。兩個設備都具
12有如現有技術中通常所理解的必要的處理、存儲、通信、.輸入和輸出裝置。為了使用本發明,設備6和8均需要使用軟件應用程序IO來訪問本發明 的簡明索引。在本示例中,設備6和8可以具有在計算機6和8上本地存儲在 各自存儲裝置上的索引12。然而,諸如PDA8之類的設備可能具有更低的處理 和存儲容量并可以利用互聯網12來訪問簡明索引12。也就是說,所有的索引 12和相關聯的處理16、索引12和軟件18可以相對PDA 8遠程存儲。軟件(或遠程登錄軟件)10可以(以本地或遠程方式)控制處理器以執行 查詢引擎16所需要的處理。查詢引擎16使用簡明索引12以便解答在設備8 和10輸入的查詢。簡明索引12 (以本地或遠程方式)存儲在存儲器中,并且 按照以下所詳細描述地被生成和更新。本發明的簡明索引12由索引指示器軟件 組件18生成。該組件18直接將一定范圍內的信息,例如,XML文檔20和第 三方數據庫22,作為輸入進行編索引。或者,可以利用簡明編碼器24對XML 文檔20和第三方數據庫22進行編碼,其中簡明編碼器24將數據轉換成簡明形 式然后存儲在26。索引指示器18還能夠接受此簡明形式作為輸入來形成簡明 索引12。另外的軟件為簡明訪問器28,其能夠對簡明數據庫DBMS26進行解 釋以便為設備6或8提供查詢結果,或者供處理器在查詢處理16期間使用。查詢可以返回在簡明數據庫26中存儲的記錄。為了向計算機8或10返回 這些結果,可以通過查詢引擎16使用另外的軟件應用程序28來訪問和解釋簡 明數據庫26。或者,計算機8或10可以使用簡明訪問器軟件28來直接訪問和 解釋簡明數據庫26。現在將描述綜合簡明(ISX, Integrated Succinct)系統的簡明存儲層26。 ISX 包含三層,也就是,拓樸層、內節點層和葉節點層。圖3示出這些層的總體圖。內節點層存儲用于快速查詢的測試數據的XML元素、屬性和簽名。最后,葉 節點層存儲文檔的文本數據。文本數據可以通過各種常見壓縮技術被壓縮,并 供拓樸層引用。這里集中描述拓樸層。與先前的方法不同,拓樸層的表示不使用指針。它基于支持有效節點導航和更新的對稱括號編碼。在層0 ( Tier 0 )中使用的對稱括號編碼反映任何XML文檔內的元素節 點的嵌套,并能夠通過對樹的前序遍歷獲得。在遍歷期間,當遇到開始標記 時輸出左括號,當遇到結束標記時輸出右括號。例如,給定圖4中所示的XML文檔摘錄,則會如圖5所示地對層0的 對稱括號編碼進行存儲。括號下方的箭頭指示括號對。為了清楚起見,省略 了按位操作的實施細節,并將單個位(括號)像一個對像一樣來對待。多余量是在拓樸的給定部分出現的左括號和右括號間的數量差。例如, 在圖5中,dblp的左括號和(gmdate的右括號之間的多余量為2。文本節點 "2003"的右括號和booktitle的左括號之間的多余量為-1。在XML文檔樹 中節點x的深度可以通過查找x的左括號和文檔的起點之間的多余量計算出 來。例如,在圖5中,author的左括號的深度為3。該編碼方法有若干有益效果。首先,拓樸特性(深度、起始位置/結束 位置、前序數/后序數)、拓樸關系(先輩/后輩、文檔次序)、文檔遍歷、 DOM導航和XPath軸都可以利用上述括號表示來確定。再者,可以通過僅 使用小集合的物理運算符來簡化數據庫。之所以避免采用任何基于指針的方法來將括號連接至其標簽是因為這 將使空間的占用量從2n-O(n)增加到不太令人滿意的0(nlgn)O(nlgn)。這在 圖6中以圖的形式示出。將參見圖7的流程圖和以下的示例XML文檔摘錄描述ISX系統的另外 示例<b><c>d</c></b> <b><c>e</c></b> <b><c>f</c></b></a〉實際上,XML文檔與這里討論的摘錄相比會大很多。利用對稱括號,該文檔可以表示30為 (b (C (d)))(b (c (e))) (b (c (e)))因此,使用對稱括號的XML文檔摘錄的拓樸將如此表示 (((()))((()))((())))在存儲器中用二進制位0表示左括號且在存儲器中用二進制位1表示右 括號。此后,層次結構將如此存儲在存儲器中32:因此,每個0表示新節點的開始,每個01組合表示轉換,例如葉節點。利用該系統,任何文檔的存儲空間為2n個位(其中n為節點的數目)。當然,步驟30和步驟32可以作為一個單獨的步驟來執行。此外,毫無 疑問,位的使用是可以互換的,以便用l位表示左括號而用O位表示右括號。現在將下列摘錄(重復以上的)與節點的標簽(label)和每個位的編號 位置(number position )垂直對齊。abed---bee ---bef----0000111000 1110001111 (bp)0123456789 0123456789 (位置)這里可以看出節點〈a〉位于位置0而第三節點〈b〉位于位置13。現在可以利用拓樸的位表示來對塊(block) #1行查詢。例如,查詢可 以是"位置13的節點的父節點位于什么位置?"由于已知括號成對出現,所以如果回溯掃描塊直到存在O比1多兩個時, 那么就找到了父節點的位置,可以發現在此例中父節點的位置為位置0。該文檔的位表示最初被分成特定大小的塊34。例如,上面討論的摘錄 #皮分成兩個塊oooomooo151110001111 0123456789對各個塊進行概括36來生成包括層1的三元組。針對每個塊計算下面 的信息 塊中0的數目 塊中1的數目 向前最大差,也就是說,在從左向右掃描塊時計算當前和(running sum),,人當前和的^直為0開始,每遇到一個(H立,當前和4皮力口1,每 遇到一個1位,當前和被減1。在塊的任何位置,當前和所達到的最 高值被當作向前最大差。
向前最小差,也就是說,與上面一樣計算當前和。在塊的任何位 置,當前和所達到的最小值被當作向前最小差。
向后最大差,也就是說,與上述關于向前最大差一樣計算當前和, 但是改為從右向左對塊進行掃描。
向后最小差,也就是說,與上面關于向前最小差一樣計算當前和, 但是改為從右向左對塊進行掃描。
節點的數目,也就是說,在塊中找到01組合的次數。對于最后一 位,可以檢查后一塊的位(或者可替代地,假設選擇的方法連貫一致 的話,則可以一企查前一塊的最后一位)。因此,對于塊0000111000,概括信息表現為(7,3,4,1,4,0,2)。 而對于塊1110001111,概括信息表現為(3,7,0,-4,-1,-4,1 )。 利用該概括信息,現在可以基于以上兩個層1三元組的示例來描述DOM查詢。例如,采用如以上"位置13的節點的父節點位于什么位置?"進4亍相同的查詢。可以向后掃描直到始于位置13的位的塊的開始。從位置13到該塊的開16始存在下列位1110。
0的數目為1而1的數目為3。從1的數目中減去0的數目得到-2。現在從前一塊中得到向后最大差值為4,并將其加上-2,得到 數2。現在從這可以知道匹配的位在前一塊。當文檔很大時,重復生成層1的概括元組的過程38,此次基于層1的 數據生成層2。兩層通常足夠用于所有情況。再次將層1元組分成塊并生成 另外的元組來生成層2。這個表示XML文檔的拓樸信息的方法節省空間,具有位于常系數的理 論最小值范圍內的空間需求。對于常數e,其中l<=e<=2,以及有n個節點 文檔,需要2en+o(en)個位來表示XML文檔的拓樸(2n )連同概括信息 (o(en))。平均起來可以以固定的次數處理節點的插入,但最差情況為0(lg2n)針對數據處理所要的原操作(primitive operation ),這種表示拓樸信息的方 法還可以保持低的訪問和更新成本。它還支持以接近常數次進行導航操作。為了幫助快速檢查用來表示XML文檔的0和1,可以構造簡明索引結 構(SIS, Succinct Index Strcture) 12。該索引4是供更高效的查詢文檔的方式。SIS由具有所有不同根-葉路徑(distinct root-to-leaf path)或標記名的條 目的符號表構成。例如,對于圖1中的XML文檔摘錄,不同根-葉路徑為(/a、 /a/b、 /a/b/c},而不同標記名為(a、 b、 c}。符號表的每個條目具有一些統計信息以及實際索引(已知作為原始索引 (raw index)),其方l更對所有由它的相應路徑或標記名組成的標記的實例 進行定位。統計信息控制原始索引的轉換。它包括關于標記名的普及以及查 詢和更新的頻率的信息。原始索引的轉換針對空間使用、查詢性能以及更新成本提供有益的折 衷。轉換方法根據在任何給定時刻都最適合給定XML文檔的方法作用于多 個原始索引。在塊中,依據節點集合大小、查詢和更新的頻率,原始索引由下列數據次,而所有節點導航操作最差情況進行O、1glg"次,但平均起來為常數次。結構中的一個或多個組成 全拓引、編石馬歹'J表(Full topological encoding list):它由原始形式的 三元組列表(起始、結束和深度)組成,其中每個三元組對節點的拓 樸信息進行編碼。不使用任何壓縮格式對該列表進行存儲。該數據結 構出現在被編索引的XML文檔內發生更新的地方。它還出現在新生成 的三元組并未創建整個塊的原始索引的末端。
節點標識符列表(Node identifier list):它是全拓樸編碼列表的另 一種形式,具有通過層(例如層0、層1和層2)間接得出的三元組(起 始、結束和深度)內的三個值,并使用了永久的節點標識符。當主要 關心的是空間時或者得出所述值的性能開銷遠優于加載元組的性能開 銷時使用該表。
位數組特征位(Bit array flag):它是節點標識符列表的另 一種形 式,其中節點標識符的總數在XML文檔內的節點的總數的常數差范圍內。
部分拓樸編石馬歹寸表(Partial topological encoding list): 不具有顯 式節點標識符的數據結構,三元組內的起始值也可以作為(非永久) 標識符。這里僅存儲起始值而不是整個三元組。
差分、全拓樸編碼歹'J表(Differential, full topological encoding list):該數據結構是將全拓樸編碼列表的完整塊發送至第二管線以生成概括 的結果。該概括由三個直方圖組成,每個直方圖表示連續三元組的起 始、結束和深度間的差分值之間的關系。該概括指定用于對帶有固定 大小值到可變大小值的三元組進行編碼的編碼方法。作為編碼結果的 三元組的列表緊接著該概括進行存儲。
差分節點標識符列表(Differential node identifier list):它以與差 分、全拓樸編碼列表類似的方式存儲節點標識符的差分值的直方圖。
差分部分拓樸編碼列表(Differential partial topological encoding list):它以與差分、全拓樸編碼列表類似的方式存儲部分拓樸編碼列18頁表。 模式描述符函數(Pattern descriptor function ):當文檔的規則是嚴 格的并且三元組的差分值為常數時,可以丟棄整個全拓樸編碼列表并 且替換為基于該規則和前一個起始值、結束值和深度值分別返回下一 個起始值、結束值和深度值的函數。注意到的是,這些模式函數不受 更新(例如,當新的節點被插入列表時)的影響。 一旦通過三個管線,其中每個管線將前一管線的輸出作為輸入,就通過 解析XML文檔構造出了索引。第一管線遍歷XML文檔并生成表示為列表 的XML文檔的拓樸編碼的自然集合(naive set)。第二管線確定拓樸編碼 列表的最優差分編碼。最后,第三管線從差分編碼列表生成模式描述符。這 里假設,給定節點,則數據庫能夠以固定的次數檢索拓樸編碼。 現在參見圖8的流程圖更詳細地描述構造索引的方法。 首先,遍歷XML文檔的簡明表示并生成自然拓樸編碼列表50。 拓樸編碼列表由三元組的列表組成,其中,每個三元組表示單個節點的 拓樸信息。也就是說,對于XML文檔中的每個節點,計算三種類型的編碼 號碼來生成三元組。每個三元組的編碼號碼表示 起始該節點的0 (左括號)的位位置 結束該節點的1(左括號)的位位置深度,也就是說,節點沿樹向下的距離或節點在樹上的哪一級。這些三元組之間具有描述XML文檔的拓樸結構的隱含關系。0的位位 置與每個節點的前序號碼相同,因此可能與深度一起重新構造樹。然而,沒 有1的位位置,會太耗費時間以至不能答復兩個節點之間的先輩-后輩關系。基于圖1中示出的XML文檔,處理以下查詢〃b〃c[text()= "e"]也就是說,節點b是否具有后輩c且具有文本"e" 可以利用SIS獲 得答復。索引返回所有b、所有c以及所有"e"。然后確定返回的節點之間的結構關系以確保它們以正確的父/后輩方式相聯系。為了這樣做,需要使用為 每個節點計算的三元組。 例如abed---bee---bcf---- (^^*)00001110001110001111 (bp) 012345678卯123456789 (位置)從該信息可以確定結構關系。這里,已知節點a的第一0位具有起始位 位置0且節點a的最后1位具有位置19。同樣,已知第二節點b的第一0 位具有起始位位置7并且節點b的最后1位具有位置12。因此,如果節點b為節點a的后輩,那么a的起始位置應該小于b的起 始位置(0<7)。另外,b的結束位置應該小于a的結束位置(12<19)。以下是基于上述三元組的圖1的XML文檔摘錄的拓樸編碼列表。b (1,6, 1)(7, 12, 1)(13, 18, 1)c (2, 5, 2) (8, 11, 2) (14, 17, 2)"e" (9, 10, 3)例如,為答復與以上〃b〃c[text(一"f,]相同的查詢,需要檢索以上三個拓 樸編碼列表,先將c列表與"e"列表相匹配,并返回c列表內作為"e"內 任何三元組的父輩所有三元組。對于三元組c2:(8,ll,2)和"e,,l: (9,10,3), c2.start (8)<"e"l.start (9)且 c2.end (11)〉"e"l,end (10)以及 c2.depth (2)+l="e,,l.depth(3),因此c2:(8,11,2)在可能答復的列表內。其次將新生成的列表與b列表相匹配并過濾掉不屬于任何b三元組的子 輩的三元組。對于b2:(7, 12, 1),b2愈t(7)〈c2.start(8)且b2.end(12)〉c2.end(11) 以及b2.depth(l)+l-c2.depth。由于c2滿足該測試,所以它就是答復。僅在列表中的節點數目少或者該列表占整個n節點文檔的百分比小的 情況下保持全拓樸編碼列表,例如,索引中從O(lgn)個節點直到0(n/lg2n) 個節點的范圍。以 一種被稱為可擴展數組的特定數據結構來保存該拓樸編碼 列表。需要注意的是,必須根據其相關文檔次序,即節點集合中每個節點的20前序值,對節點集合進行分類。一旦達到闞值,可以考慮在可擴展數組的那部分包括塊。將包括塊的可 擴展數組傳送入第二管線并且繼續建立具有差分編碼的新可擴展數組52。 此方法的優勢在于能夠假設新插入的節點更可能受到隨后更新的影響。第二管線進行工作以首先檢測可擴展數組中每一節點每個編碼號碼之間的值的差,并以差分編碼方式進行再編碼。在再編碼時,可以追蹤兩個值連同差分值的大概分布一起的最小差和最大差。存儲最大差的值和最小差的 值以便隨后在對拓樸列表進行編碼前按比例對直方圖進行繪制。首先將三元組分成相同大小的塊。也就是第一塊為 (sl, el, dl) (s2, e2, d2) ... (sb, eb, db) 以及第二塊為(+1, eb+l, db+l) (sb+2, eb+2, db+2) ... (s2b, e2b, d2b) 然后針對每個與塊中特定節點類型相關的三元組,基于以下各項生成三個直方圖連續的三元組的起始位置之間的差(被稱為△ start),也就是s2-s 1, s3-s2, s4-s3,…,sb-sb-l連續的三元組的結束位置與起始位置之間的差的差(被稱為Aend), 也就是(e2-s2)-(el-sl), (e3誦s3)-(e2-s2),…,(eb-sb)-(eb-l-sb-l)連續的三元組的深度之間的差(被稱為Adepth),也就是d2-dl,d3-d2, d4-d3, db畫db-l每個直方圖由相應A內的所有不同值組成。可以追蹤每個不同值發生的 數目。也可以追蹤這些不同值發生的范圍。可以對直方圖執行群集算法(clustering algorithm)。如果存在差分值 的多個群集,可以將可擴展數組和三個直方圖劃分為多個群集,并分別執行 下一步。對于每個群集,存儲其最小差的值,并如最初一樣,將所有差分值與最 小差進行重新對齊。這意味著現在可以用更少的位對所有差分值進行編碼。而且,對于每個群集,可以檢查直方圖的形狀并將它們劃分成下面的分 周密型(Discreet):在周密型場景下,直方圖能夠跨越任何范圍, 但所有值僅位于k個不重復的不同值的小集合中。其中k較小或大約 等于lgn。可以建立k個條目的周密型表用以存儲差分值。有了lgk個 位來表示周密型表的索引,可以利用針對所有差分值的lgk〈glgn個位 而不是每個值初始的lgn個位對塊進行再編碼。
平坦型(Flat):不像周密型,這種場景具有相當長的范圍[j,k]的 平坦曲線,其中,k-j>lgn。對直方圖進行重新對齊,將j當作初始值 且將k當作k-j。與周密型情況類似,除了不需要表,可以利用每個值 的lg(k-j)個位針對所有差分值進行再編碼。可以證明的是k-j遠小于n, 即使當待編索引的節點的數目為n/c時,其中c為任一正常數。
下降型(Falling):對于下降型曲線,首先可以像在平坦場景中那 樣,對直方圖進行重新對齊,然后得出值的數組并以RLE (Run-Length Encoding,運轉周期編碼)方式利用它們的差分值對它們進行再編碼。 這里提出簡單而有效的被稱為ja編碼的方法。其中每個重新對齊的差 分值v被編碼為兩個部分首先以一元形式對l + Llogv」進行編碼,接下 來是二元形式的v-2L一」的值。在這種情況下,用最少量的位對最常出 現的差分值進行編碼。
上升型(Rising):如果直方圖曲線的斜率朝較大值的方向向上傾 斜,還可以用M編碼對其進行編碼,但將直方圖從左至右翻轉,并對 上升型場景使用相同的方法。
正態型(Normal):也就是說,在正態分布情況下形成曲線。首 先將曲線的峰值與初始值重新對齊。首先用第一個位表示差分值的符 號,然后對差分值取絕對值,并使用RLE對其余的位進行再編碼。
緊湊型(Dense):與周密型分類類似,但是更大。也就是說直方圖落入k個不重復的不同值的小集合中,而k是比lgn大的較大常數, ^旦它相對n仍然4交小。因此,對于下面與節點類型b相關的拓樸編碼列表 b (1,6,1) (7,12,1) (13,18,1)對直方圖進行如下計算。對于起始的差,值(Astart)為6(7-1)和6(13-7)。 然后如圖9所示繪制這些值的直方圖。對于結束的差,值(Aend)為0((6-1)-(12-7))和0((12陽7)-(18-13))。然后如 圖10所示繪制這些值的直方圖。對于深度的差(厶depth),值為O(-l-l)和0(1-1)。然后如圖11所示繪制 這些值的直方圖。然后分析各個直方圖的分布。例如,分布為上升型、下降型、正態型或 緊湊型?依據分布, 一種選擇是用同一值替換所有的值并存儲所使用的替換 值。或者,可以對不同的形狀使用不同的可變位編碼,例如,RLE,或者將 緊湊型分布供給ZL壓縮。針對每個直方圖,存儲直方圖類型(周密型、平坦型、下降型、上升型、 正態型)。在查詢期間對列表的壓縮形式進行解碼,通過檢查直方圖類型, 可以確定用以對壓縮形式進行解碼的方式。作為帶有直方圖的群集的結果被傳遞給第三管線54。針對遵循特定規 則的XML文檔,樹模式經常被重復。這可以被用來在第三管線獲得進一步 的空間效率。第三管線試圖發現在群集的差分值內是否存在特定的模式。如 果存在這樣的模式,則整個群集將被用以輸出遵循該模式的值的函數所替 代。這些方法之一為用以定位重復的模式的ZLW壓縮方案。在第三管線的過程之后,原來的拓樸編碼列表變成了拓樸編碼列表的模 式函數、差分編碼列表和可擴展數組的混合列表。該結果被連接至符號表。在以上示例中,當對b進行索引編碼時,如果 符號表中的條目存儲了根-葉路徑,則將連接回至條目{/a/b},或者如果符號 表中的條目僅由標記名組成,就連接回至條目{1)}。可以在包含模式函數、差分編碼列表和擴展數組的索引的任何部分進行 更新。當更新發生時,每個塊的三元組的數目不需要為常數。對于嚴格的規則,根本不需要對模式函數進行任何處理。然而,如果在 兩個節點之間插入了不規則結構,可能需要將模式函數劃分成兩個單獨的函 數并在它們之間插入擴展數組以存儲新更新的節點。當可擴展數組達到闞值 時,然后它將通過其它的管線,就像以上所述的一樣。為了在更新后最小化 空間占用量,當新的模式函數與其鄰居相同時,將進行合并。下面為基于圖12所示的XML文檔生成SIS的具體示例。如圖13所示生成符號表,其由圖12的XML文檔的所有的特異標記名第一管線50為符號表中的每個條目生成全拓樸編碼列表,也就是說, 對于每種節點類型,為相應節點中的每一個生成三元組。在圖13中示意性 地示出為實際索引生成的占位符,然后如圖14所示生成該拓樸編碼列表。 這些三元組存儲在可擴展數組中。然后將圖14的拓樸編碼列表傳送入第二管線52來生成圖15的差分全 拓樸編碼列表。如上所說明的計算差分值。也就是說,如上所描述的計算差 分值Astart、 Aend、 Adepth。在該示例中,針對每個特異標記名為每個差分值類型計算直方圖。也就 是說,如圖16所示繪制差分值出現的數目。圖15中用灰色標出的值沒有被 合并入直方圖是因為它們沒有前一個條目。然后將各個直方圖的形狀分類為 圖17中列出的直方圖類型之一。圖18示出圖16中示出的各個直方圖的分 類。圖17還為每個直方圖分類示出固定的位編碼值。這些被用于在符號表 中存儲直方圖類型,作為所用轉換方法的指示。作為示例,圖19、圖20和圖21示出如何利用最優差分編碼存儲節點 類型A的差分值。圖19 (a)示出針對A start記錄的值。直方圖的分類記錄 為100 (下降型)。已知最小的Astart值為14,因此可以用14替換直方圖 的所有值并且數14被記錄為替換值。由于第一個值沒有包括在直方圖(圖15中用灰色標出的)中,該值9同樣作為第一個值存儲。然后為其余12個三元組(即除第一個之外的所有三元組)列出△ start值。圖19 (b)示出其 余值被對齊后的圖19(a),也就是說,使其余值中的每一個值均減去替換 值14。圖19 (c)示出圖19 (b)的可變位編碼形式。對于A, Aend值和Adepth值的差分值都是相同的值,因此在這種情況 下,模式函數比直方圖編碼更合適。圖21示出對于A的Aend,分類為001 (模式函數),可變位編碼時的增量值為1 (其等于0)。圖22示出A的 △ depth,也就是說分類又為001并且可變位編碼時的增量值為0。然后將此信息插入到圖13最初示出的符號表中來給出21中示出的表。 startA的條目從"100"開始,其指示使用形狀為下降型的直方圖轉換函數。 結束A和深度A的條目從"001"開始,其指示使用模式函數轉換。作為另外的示例,圖23示出如何利用最優差分編碼存儲節點類型b的 厶end值。圖23(a)示出為Aend記錄的值。直方圖的分類被記錄為IIO(正 態型)。已知最小的Astart值為0,因此替換值也為0。由于第一個值沒有 包括在直方圖(在圖15中用灰色標出的)中,該值15也被作為第一個值存 儲。然后對于其余的12個三元組(即除第一個之外的所有三元組),對A start值進行列表。圖23 (b)示出其余值被對齊之后的圖23 (a),然而這 里替換值為0,因此,圖23 (a)和圖23 (b)中的其余值保持不變。圖23 (c)示出圖23 (b)的可變位編碼方式。同樣在圖24中示出針對節點類型B的Astart值,并且以所命名的標記 開始。類似地,針對其它值在圖25中示出符號表。這表示圖12示出的文檔的 索引。用方括號指定的值被作為普通整數進行存儲。本領域技術人員應該理解,可以在不脫離所廣泛描述地本發明寬泛的精 神和范圍的情況下,對如具體實施例所示的本發明進行不同的改變和/或修 改。因此,這些實施例從各方面考慮都為解釋性的,而不是限制性的。2權利要求
1、一種為以層次結構表示的數據編索引的簡明索引結構,所述索引結構包括一符號表,該符號表以所有不同根-葉路徑作為鍵標或以特異元素標記名作為鍵標,其中在所述符號表中,針對一鍵標的條目具有與該鍵標相關聯的節點的經轉換的拓撲信息及對該拓撲信息采用的轉換方法的指示,并且所采用的轉換方法取決于與該鍵標相關聯的節點之間的拓撲關系。
2、 根據權利要求1所述的簡明索引結構,其中所述拓樸信息包括針對每個節點的三元組編碼方案。
3、 根據權利要求2所述的簡明索引結構,其中所述三元組編碼方案為 起始-結束-深度三元組編碼方案或者為前序-后序-深度三元組編碼方案。
4、 根據權利要求l、 2或3所述的簡明索引結構,其中所述層次結構為 可擴展標記語言(XML)。
5、 根據權利要求1-4中任一項所述的簡明索引結構,其中所述轉換方 法包括對所述拓樸信息進行差分編碼。
6、 根據權利要求2所述的簡明索引結構,其中所述三元組編碼方案為 起始-結束-深度三元組編碼方案,并且所述轉換方法包括對每個三元組中的 每個值進行差分編碼。
7、 根據權利要求6所述的簡明索引結構,其中所述三元組的第一差分 編碼值為連續三元組的起始位置的差。
8、 根據權利要求6或7所述的簡明索引結構,其中若給定每個節點的 起始位置和結束位置之間的差,則所述三元組的第二差分編碼值為連續三元 組之間這些值的差。
9、 根據權利要求6、 7或8所述的簡明索引結構,其中第三差分編碼值 為連續三元組的深度的差。
10、 根據權利要求2-9中任一項所述的簡明索引結構,其中所述轉換方 法的信息包括一替換值,該替換值用來替換與所述鍵標相關聯的每個節點的三元組的第一值、第二值和第三值中的每一值。
11、 根據權利要求2-10中任一項所述的簡明索引結構,其中所述轉換 方法的信息包括直方圖的形狀的指示,所述直方圖繪出所有節點的三元組的 第一值、第二值和第三值中的每一值。
12、 根據權利要求2-11中任一項所述的簡明索引結構,其中所述轉換方法的信息包括模式函數,所述模式函數輸出與所述鍵標相關聯的所有節點 的三元組的第一值、第二值或第三值。
13、 根據權利要求1-12中任一項所述的簡明索引結構,其中所述針對 一鍵標的條目具有多種用于轉換所述拓樸信息的方法。
14、 根據權利要求1-13中任一項所述的簡明索引結構,其中所述拓樸 信息從筒明數據結構中得出。
15、 根據權利要求14所述的簡明索引結構,其中所述數據包括拓樸層, 所述拓樸層使用通過對所述層次數據前序遍歷而生成的對稱括號表示來表 示節點的嵌套。
16、 一種使用根據權利要求1-15中任一項所述的簡明索引結構的方法, 包括以下步驟在所述符號表中定位所需的鍵標;以及基于用來轉換與該鍵標相關聯的節點的拓樸信息的轉換方法,對所述經 轉換的拓樸信息進行再轉換,來檢索與該鍵標相關聯的所有節點的拓樸信息。
17、 根據權利要求16所述的使用簡明索引結構的方法,其中所述方法 被執行來處理結構連接查詢。
18、 一種為以層次結構表示的數據構造簡明索引的方法,包括以下步驟 以樹遍歷次序解析所述數據來生成節點的拓樸編碼列表,并且針對與不同根-葉路徑或特異元素標記名相關聯的節點,評定這些節點之間的拓樸關系;根據所述評定,對與所述不同根-葉路徑或特異標記名相關聯的節點的該拓樸編碼列表進4亍轉換;并且在一以所述不同根-葉路徑或特異元素標記名作為鍵標的符號表中生成 一條目,該條目由與該鍵標相關聯的經轉換的拓樸信息及所采用的轉換方法 的指示組成。
19、 根據權利要求18所述的構造筒明索引的方法,其中所述解析的步 驟包括對所述樹進行遍歷來生成拓樸編碼列表,該拓樸編碼列表存儲于可擴 展數組中。
20、 根據權利要求18或19所述的構造簡明索引的方法,其中所述拓樸 編碼列表由針對每個節點的三元組編碼方案組成。
21、 根據權利要求20所述的構造簡明索引的方法,其中所述三元組編 碼方案為起始-結束-深度三元組編碼方案或者為前序-后序-深度三元組編碼方案。
22、 根據權利要求18-21中任一項所述的構造簡明索引的方法,其中一 旦所述可擴展數組已達到預定的塊大小,則所述方法進一步包括繼續生成 所述拓樸編碼列表并將其存儲在新塊的可擴展數組中。
23、 根據權利要求20所述的構造簡明索引的方法,其中所述方法進一 步包括在生成所述拓樸編碼列表之后,對所述拓樸列表進行差分再編碼。
24、 根據權利要求23所述的構造簡明索引的方法,其中所述三元組編 碼方案為所述起始-結束-深度三元組編碼方案,并且所述轉換方法包括對每 個三元組中的每個值進行差分再編碼。
25、 根據權利要求24所述的構造簡明索引的方法,其中對第一值進行 差分編碼包括以第一差分編碼值對三元組的第一值進行再編碼,所述第一 差分編碼值為連續三元組的起始位置的差。
26、 根據權利要求24或25所述的構造簡明索引的方法,其中若給定每 個節點的起始位置和結束位置之間的差,則對第二值進行差分編碼包括以 第二差分編碼值對三元組的第二值進行再編碼,所述第二差分編碼值為連續 三元《且之間這些ii的差。
27、 根據權利要求24、 25或26所述的構造簡明索引的方法,其中對第 三值進行差分編碼包括以第三差分編碼值對三元組的第三值進行再編碼, 所述第三差分編碼值為連續三元組的深度的差。
28、 根據權利要求20-27中任一項所述的構造簡明索引的方法,其中所 述轉換的步驟包括以同 一值替換與所述鍵標相關聯的每個節點的三元組的 第一值、第二值和第三值中的每一值。
29、 根據權利要求20-27中任一項所述的構造簡明索引的方法,其中所 述轉換的步驟包括確定直方圖的形狀,所述直方圖繪出所有節點的三元組 的第一值、第二值和第三值中的每一值。
30、 根據權利要求20-29中任一項所述的構造簡明索引的方法,其中所 述轉換的步驟包括確定模式函數,所述模式函數輸出與所述鍵標相關聯的 所有節點的三元組的第一值、第二值或第三值。
31、 根據權利要求30所述的構造筒明索引的方法,其中所述方法進一 步包括執行群集算法,并且如果確定了多個群集,則所述塊被分成每個群集 的較小的塊。
32、 一種用于執行根據權利要求18至31中任一項所述的為以層次結構 表示的數據構造簡明索引的方法的計算機軟件程序應用。
33、 一種為以層次結構表示的數據構造簡明索引的計算機系統,包括 處理裝置,其以樹遍歷次序解析所述數據來生成節點的拓樸編碼列表,以及針對與不同根-葉路徑或特異元素標記名相關聯的節點,評定這些節點 之間的拓樸關系,并且根據所述評定,對與所述不同根-葉路徑或特異標記 名相關聯的節點的該拓樸編碼列表進行轉換;以及存儲裝置,其用于存儲帶有一以所述不同根-葉路徑或特異元素標記名 作為鍵標的條目的索引,該條目由與該鍵標相關聯的經轉換的拓樸信息及所 采用的轉換方法的信息組成。
34、 根據權利要求33所述的構造簡明索引的計算機系統,其中所述存 儲裝置為還存儲一計算機軟件應用程序的計算機可讀存儲介質,所述計算機軟件應用程序可操作地執行根據權利要求18至31中任一項所述的為以層次結構表示的數據構造簡明索引的方法。
35、 根據權利要求33和34所述的構造簡明索引的計算機系統,其中所 述計算機系統為諸如PDA、移動電話或膝上型電腦之類的便攜式計算機。
36、 一種使用根據權利要求1-15中任一項所述的以層次結構表示的數 據的簡明索引的計算機系統,包括存儲裝置,其用于存儲所述簡明索引;以及處理裝置,其用于在所述符號表中定位所需的鍵標,并且基于用來轉換 與該鍵標相關聯的節點的拓樸信息的轉換方法,對所述經轉換的拓樸信息進 行再轉換,來檢索與該鍵標相關聯的所有節點的拓樸信息。
37、 根據權利要求36所述的使用簡明索引的計算機系統,其中所述存 儲裝置為還存儲一計算機軟件應用程序的計算機可讀存儲介質,所述計算機 軟件應用程序可操作地執行根據權利要求16和17中任何一項所述的使用以 層次結構表示的數據的簡明索引的方法。
38、 根據權利要求36或37所述的使用簡明索引的計算機系統,其中所述計算機系統進一步包括用于從遠程設備接收數據處理請求的通信裝置。
39、 根據權利要求36或37所述的使用簡明索引的計算機系統,其中所 述計算機系統為諸如PDA、移動電話或膝上型電腦之類的便攜式計算機。
全文摘要
簡明數據和索引結構旨在將存儲容量的約束設置為接近理論最優值的同時使得對任意數據進行更新和搜索操作的效率最大化。本發明的簡明索引結構對利用層次結構表示的數據編索引。索引包括以所有不同根-葉路徑作為鍵標或以特異元素標記名作為鍵標的符號表,其中在符號表中,鍵標的條目具有與該鍵標相關聯的節點的經轉換的拓撲信息(圖22)及對該拓撲信息采用的轉換方法的指示(圖17),并且所采用的轉換方法取決于與該鍵標相關聯的節點之間的拓撲關系。本發明還涉及用于構造、使用和更新簡明索引結構的方法、計算機系統和計算機軟件。
文檔編號G06F17/30GK101326522SQ200680046147
公開日2008年12月17日 申請日期2006年12月5日 優先權日2005年12月6日
發明者弗蘭基·蘭姆, 雷蒙德·K·翁 申請人:澳大利亞國家Ict有限公司
網友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
主站蜘蛛池模板: 神木县| 彭泽县| 信阳市| 万载县| 绵竹市| 南陵县| 盐亭县| 苏尼特右旗| 友谊县| 乌海市| 长沙县| 龙岩市| 房产| 延边| 探索| 竹山县| 宝应县| 乐都县| 南充市| 塔河县| 治多县| 湖南省| 彩票| 凭祥市| 西乌珠穆沁旗| 迁西县| 龙井市| 柞水县| 夏津县| 青海省| 万州区| 五家渠市| 双柏县| 贵溪市| 玉屏| 韩城市| 南康市| 云梦县| 贡嘎县| 蛟河市| 遵义县|