日韩成人黄色,透逼一级毛片,狠狠躁天天躁中文字幕,久久久久久亚洲精品不卡,在线看国产美女毛片2019,黄片www.www,一级黄色毛a视频直播

保存和恢復互鎖樹數(shù)據(jù)庫的制作方法

文檔序號:6553010閱讀:271來源:國知局
專利名稱:保存和恢復互鎖樹數(shù)據(jù)庫的制作方法
技術領域
本發(fā)明涉及互鎖樹數(shù)據(jù)庫的操作領域,具體地說,允許保存和恢復互鎖樹數(shù)據(jù)庫,更具體地說,涉及用于提供保存和恢復互鎖樹數(shù)據(jù)庫的改進方案。
背景技術
保存和恢復作為互鎖樹數(shù)據(jù)庫的知識存儲體(或KStore)是該類數(shù)據(jù)庫的商品化的重要特性。在實驗過程中,通過應用本文中說明的基本理論,已經(jīng)將保存和恢復知識存儲體所需要的時間減小了幾個數(shù)量級,并且減小了所需要的存儲器尺寸。
已經(jīng)開發(fā)了用于創(chuàng)建和使用互鎖樹數(shù)據(jù)庫的一種系統(tǒng)和各種方法。具體地說,這些結構和方法在Mazzagatti發(fā)明的共同待決的美國專利申請?zhí)朜o.10/385,421和10/666,382中得到具體描述。另外,我們描述了一個系統(tǒng),其中這樣的互鎖樹數(shù)據(jù)庫在美國專利申請系列號No.10/879,329中被更有效地使用。雖然在本專利中描述的系統(tǒng)和方法具體地涉及到由發(fā)明人Mazzagatti在上述專利(申請)中描述的特定的互鎖樹數(shù)據(jù)庫,但本文描述的系統(tǒng)和方法也可以應用于類似的結構。
保存的互鎖樹數(shù)據(jù)庫當然具有其它的用途。通過部分保存或整個互鎖樹數(shù)據(jù)庫的“部分”,甚至有更多的用途。所以,可以使用保存和恢復過程來進行工作,例如把已在一個機器上構建的互鎖樹數(shù)據(jù)庫保存到多個計算機(或保存部分互鎖樹數(shù)據(jù)庫),用于類似的但分布的或獨立的同期(對等的)用途,這僅僅是一個示例。從實際的觀點來看,可以得到在中央處理器上存儲裝有內(nèi)容的互鎖樹數(shù)據(jù)庫,并被恢復到遍布全國的公司的現(xiàn)金出納機,用于在銷售點進行庫存的查詢,而無需求助于中央數(shù)據(jù)庫。人們可以在其各自的計算機上看到保存過程資料或樣本知識庫用于教學用途或修改。對于任何這類類用途,對此需求做出響應,于這些需要的保存和恢復過程可被使用來移動互鎖樹數(shù)據(jù)庫和部分保存,從任何存儲器到任何其它的存儲器。
盡管在共同待決的美國專利申請系列號No.10/385,421中最初描述的系統(tǒng)創(chuàng)建的互鎖樹數(shù)據(jù)庫結構提供了許多有用的特性,用于各種不同方式的數(shù)據(jù)聯(lián)系,以及用于生成對于各種查詢的結果而不需要生成特定結構來獲得結果,但迄今為止,它的用途仍舊有根本上的局限性。一個局限性是計算機的存儲器的數(shù)據(jù)結構在原位工作,但不能(amenable)修改移動、保存和以后的恢復。以前,每當我們需要移動它或需要關閉它所位于的計算機系統(tǒng)時,都必須重新教導,即重新創(chuàng)建(或更精確地,允許我們的庫存系統(tǒng)重新創(chuàng)建)互鎖樹數(shù)據(jù)庫的整個新的拷貝或安裝。因此,對于以前的互鎖樹數(shù)據(jù)庫開發(fā),除了計算機系統(tǒng)故障之外,不能獲得可用的互鎖樹數(shù)據(jù)庫的便攜性和耐久性。
假定我們創(chuàng)建的數(shù)據(jù)結構不存在于在我們的開發(fā)之前的計算機系統(tǒng)中,就很難用這類系統(tǒng)的原有設計方式來適應我們的需求。因此,迫使我們設計一種特定的方式來保存我們的結構,由此該結構可被恢復而不會損失使其成為此結構的連接;即需要正確地恢復指針結構,除了新系統(tǒng)內(nèi)的改變后的地址空間.基本根節(jié)點需要它們的數(shù)據(jù)被保持,訪問指向所恢復結構的指針。所有的節(jié)點需要具有相同的訪問指針的途徑,雖然它們以后可被全部恢復到不同的地址,需要用不依賴于操作系統(tǒng)(OS)和機器的方式來實現(xiàn),這樣,互鎖樹數(shù)據(jù)庫可被使用于任何計算機環(huán)境。
通常,互鎖樹數(shù)據(jù)庫的樹林以前述專利文件中描述的方式被生成和/或訪問。基于樹的數(shù)據(jù)庫包括依賴于第一根節(jié)點的第一樹,其可包括多個分支。第一樹的每個分支在一個葉節(jié)點結束。每個葉節(jié)點可以表示一個最終產(chǎn)品或子部件節(jié)點。同一個基于樹的數(shù)據(jù)庫的第二根被鏈接到表示最終產(chǎn)品的各個葉節(jié)點。最后,基于樹的數(shù)據(jù)庫包括多個樹,其中每個樹的根節(jié)點可被描述為基本節(jié)點。每個樹的根節(jié)點可被鏈接到在第一樹的一個或多個分支上的一個或多個節(jié)點?;跇涞臄?shù)據(jù)庫的節(jié)點只包含指向在基于樹的數(shù)據(jù)庫內(nèi)其它節(jié)點的指針,還可能包含附加字段,其中一個這樣的字段可以是計數(shù)字段。另外,描述了獲取與特定節(jié)點有關的變量一致性的概率的裝置,例如在一個或多個確定的聚焦點內(nèi)用所需文字表示。此外,示出了關于這類變量的排序邏輯算子的應用。
使用共同待決的申請序列號No.10/759,466中描述的保存和恢復系統(tǒng)工作后,我們發(fā)現(xiàn)可以非常更加有效地實現(xiàn)保存和恢復。因此,我們在這里描述這些發(fā)現(xiàn)內(nèi)容,以及來自該申請的某些原始公開內(nèi)容。

發(fā)明內(nèi)容
為了保存和能夠恢復包括一個或多個級別的互聯(lián)樹的樹林的基于樹的數(shù)據(jù)庫,即優(yōu)選與美國專利申請序列號No.10/385,421中所述類似或相同的固有學習過程生成和/或訪問,需要保存支持結構、節(jié)點組織、以及特定的基本數(shù)據(jù)。
如前所述的SAVE/RESTORE(保存/恢復)過程對于很大的K數(shù)據(jù)庫是非常慢的。在許多情況下,從原始數(shù)據(jù)來重新創(chuàng)建K是更快速的。
新方法不保存asCase和asResult列表。這些列表可以通過恢復各個單獨的節(jié)點而重建。即當節(jié)點被恢復時,新的節(jié)點地址被存儲在Case指針的asCase表和Result指針的asResult表中。
新方法的另一個重要的方面在于,在恢復階段,它只需要passthrough一次數(shù)據(jù),而不是系列號10/759,466中的原始方法的兩個來回。正如在之前的專利中對于優(yōu)選的互鎖樹數(shù)據(jù)庫所述,基于樹的數(shù)據(jù)庫的每一級包括取決于第一根節(jié)點的第一樹,其可以包括多個分支。第一根節(jié)點可以表示一個概念,例如但不限于級別開始指示符。第一樹的每個分支結束于一個葉節(jié)點或一個最終產(chǎn)品節(jié)點。基于樹的數(shù)據(jù)庫的同一級別的第二根節(jié)點被鏈接到第一樹中表示最終產(chǎn)品的每個葉節(jié)點。因此,第二根節(jié)點實際上是第一樹的反序節(jié)點,或第一樹的子組,但第一樹沒有被復制。第二根節(jié)點表示一個概念,例如但不限于級別結束指示符。最后,基于樹的數(shù)據(jù)庫包括多個樹,其中每個樹的根節(jié)點可包括例如數(shù)據(jù)組單元或表示數(shù)據(jù)組單元的數(shù)據(jù)。這種類型的根節(jié)點在這里被簡稱為基本根節(jié)點。每個樹的基本根節(jié)點可被鏈接到在未被復制的第一樹的一個或多個分支中的一個或多個節(jié)點?;跇涞臄?shù)據(jù)庫的非根節(jié)點實際上只包含指向基于樹的數(shù)據(jù)庫內(nèi)其它節(jié)點的指針,并可能包含附加字段,其中一個這樣的附加字段可以是計數(shù)字段。在包括基于樹的數(shù)據(jù)庫的每個級別的樹的樹林中的樹的根節(jié)點也由指針組成,然而,基本根節(jié)點可以額外包含表示信息的數(shù)據(jù)(即,包含作為或表示例如數(shù)據(jù)組單元的數(shù)據(jù)或例如級別開始或級別結束指示符概念的數(shù)據(jù));基于樹的數(shù)據(jù)庫的所有其它節(jié)點只指向其它節(jié)點,并基本上不包含數(shù)據(jù)。在一個實施例中,數(shù)據(jù)是與字符、像素表示、條件例如開始指示符、結束指示符、字段指示符的開始或者類似等等有關的整數(shù),雖然互鎖樹數(shù)據(jù)庫不限于此。上述基于樹的數(shù)據(jù)庫的多個級別可以被生成和訪問;較低級別的最終產(chǎn)品變?yōu)橄乱粋€級別的基本根節(jié)點。在本發(fā)明的保存和恢復中,使用級別來引導過程,如本文具體描述。
節(jié)點本身的結構通常用每個節(jié)點內(nèi)有限的數(shù)據(jù)字段組來保持??偣灿袑τ贑ase(情形)、Result(結果)、asCase列表指針、asResult列表指針的字段和附加字段,后者對于每個基本根節(jié)點,大多數(shù)結構形式內(nèi)包括至少一個計數(shù)字段,以及一個數(shù)值字段。
為了保存上述結構,并且如上述列出的待決專利申請所描述,這些專利申請整體地被引用以供參考,應當保存支持結構,但取決于計劃采用哪種恢復形式,其中某些結構可能無損失的丟失。支持結構根據(jù)正在保存的互鎖樹數(shù)據(jù)庫的形式以及如何保存數(shù)據(jù)庫的過程而變化。
整個互鎖樹數(shù)據(jù)庫結構本身必須訪問各個節(jié)點的保存機器所遍歷,并從每個節(jié)點中的信息生成用于保存的節(jié)點包。在一個優(yōu)選實施例中,節(jié)點包將包含由保存機器創(chuàng)建的元數(shù)據(jù),該元數(shù)據(jù)優(yōu)選地包括節(jié)點包的長度。該保存機器然后將把節(jié)點包保存到永久存儲器或任何一種希望用于保存互鎖樹數(shù)據(jù)庫的存儲器,不管是在形成該保存機器或者形成其他機器或者存儲器系統(tǒng)中。這樣的存儲器可以是相對較永久的,對于安放所述一個存儲器的機器的本地存儲器,通過網(wǎng)絡可訪問的系統(tǒng)中的遠端存儲器,在分區(qū)機器中的部分存儲器,所述一個存儲器的另一個部分。最后,在大多數(shù)情形下,我們預期將互鎖樹數(shù)據(jù)庫恢復到一個有效存儲器,不管其在原先的機器中,或在其他能夠提供功能的機器中。稍后討論元數(shù)據(jù)也可以被存儲在包本身中。還要討論如何以優(yōu)選方式組織包的存儲,作為在較大的包內(nèi)的節(jié)點包。
在用于確定哪些支持結構需要被保存的原始概念中,一些選擇包括一個文件頭,其包含創(chuàng)建日期(用于保存)、文件ID、簡稱為“傳感器”但通常描述為基本根節(jié)點的數(shù)值列表,或指向數(shù)值的地址、表示結構的最終產(chǎn)品的字符串列表(因為它們表示在互鎖樹數(shù)據(jù)庫樹林內(nèi)的所有“設想”和節(jié)點字符串)、可以描述它所處的基本操作系統(tǒng)或計算機系統(tǒng)的數(shù)據(jù)結構的任何所需元數(shù)據(jù),如果需要的話,還有密碼保護,指針列表在節(jié)點中如何排序,以及恢復結構或確定待保存結構中信息的地址的任何所需信息。另外,文件頭可以保存K個狀態(tài)變量(例如一個節(jié)點中支持多少個附加字段,將進行哪種查詢,asCase表和asResult表如何構建,數(shù)據(jù)源,轉換開關,以及數(shù)據(jù)流)和/或數(shù)據(jù)源描述符,例如表示哪些源接受查詢和/或從哪些源得到信息等等的鉤。所有這些項目的數(shù)據(jù)可以在單個文件頭中,或其中的全部或一些數(shù)據(jù)可以在每個包的小文件頭中,或者在使用特定項目的包中,或者在某些不需要保存這種信息的情況下。編程領域技術人員能夠明白,假定系統(tǒng)是基于已知環(huán)境或類似環(huán)境,會使得這類數(shù)據(jù)在特定環(huán)境下保持非相關。換句話說,如果保存K和恢復K的環(huán)境相同或相當類似,很多元數(shù)據(jù)可能是冗余的。(“數(shù)據(jù)流”是表示數(shù)據(jù)組以及其相關輸入源的術語,不管它是靜態(tài)還是動態(tài)的。)
在嘗試使處理過程更有效時,我們發(fā)現(xiàn)不必保存用于asCase和asResult列表的指針(雖然保存多個表的指針可能有助于使得恢復更有效)。然而,這種改進方案通常只在我們以正確的序列保存節(jié)點時才能通過使用當前的技術而順利運行,即具有asCase和asResult表的節(jié)點在它們指向的節(jié)點之前被處理。我們簡單地從互鎖樹數(shù)據(jù)庫的最低級別開始,然后在保存所有最低級別的節(jié)點后移到隨后的(較高的)級別,從具有asCase指針(BOT和子器件節(jié)點)和asResult指針的節(jié)點(根節(jié)點)開始,然后移動到較高的級別,在該級別上從相同類型的節(jié)點開始。
接下來描述如何使用三種新的節(jié)點包用于這種改進的保存和恢復系統(tǒng),在本專利中我們稱為包類型1,2和3。在優(yōu)選實施例中,我們表示和互鎖樹數(shù)據(jù)庫結構一起保存的支持結構內(nèi)的節(jié)點包類型。作為替代,用于節(jié)點包類型的標志符可被存儲在節(jié)點的附加字段。在關于類型的術語方面可能存在一些混淆,在具體說明中提供一個密鑰用于區(qū)分所討論的節(jié)點和包的類型,以及分類取決于節(jié)點“字段”的內(nèi)容或包組織的內(nèi)容。
類型1節(jié)點包包括當前的或舊節(jié)點地址、Case和Result指針、“任何附加字段”、asCase表指針的計數(shù)值和asResult表指針的計數(shù)值。類型1包還可以具有包尺寸的信息和節(jié)點包類型的指示。需要列表計數(shù)值的原因是,當保存的K被恢復時,需要在用來保存所恢復K的目標機器的存儲器中為這些表分配足夠的空間,指針的數(shù)目(每個指針需要一定的地址)對尺寸需求影響很大。節(jié)點的絕對數(shù)目是尺寸分配需求的另一個主要因素,但如果我們需要分配為每個節(jié)點分配存儲器區(qū)域,則該需求主要是指針表的尺寸。
類型2包包含Case和Result指針、任何附加字段、當前的或舊節(jié)點地址,還可以具有包尺寸和包類型的信息,因此省略了asCase表指針的計數(shù)值和asResult表指針的計數(shù)值。節(jié)點包類型1和類型2可以用于如下所述的各種環(huán)境,但應當明白,它們可以根據(jù)用戶的需要或喜愛被選擇。
第三種類型,類型3識別出節(jié)點在互鎖樹數(shù)據(jù)庫中只具有asCase或asResult表,并且不同時具有二者。因此,它包含當前的或舊節(jié)點地址、Case和Result指針、“任何附加字段”、和一個指針表計數(shù)字段,因此節(jié)省了同時具有asCase和asResult指針表區(qū)域所需要的存儲器空間。類型3包還可包含有包尺寸和包類型的信息。包類型信息包括包內(nèi)包括了哪種指針表,asCase或asResult的指示。如果包不包含包內(nèi)包括哪種類型的指針表的信息,則指針表將被認為是asReference型,Restore(恢復)和/或其它Kstore處理過程將確定其類型。
節(jié)點包類型1,類型2和類型3可以用于各種環(huán)境,事實上,它們可以一起被使用于單個保存/恢復操作,只要類型1被使用于一種節(jié)點以及類型2被使用于另一種節(jié)點。不太可能在單個保存的K中一起使用三種類型,因為這需要在算法中附加編程步驟,這將創(chuàng)建節(jié)點包并確定給定節(jié)點是兩種類型的哪種類型,而這將降低處理速度,此時幾乎或很少獲得利益。然而,應當指出,恢復子程序會占用包含不同節(jié)點包類型的已保存的K,例如用于包類型1的已保存的K1和用于包類型2的已保存的K2,并且把它們恢復成單個新的K。
對于以前的保存和恢復專利申請,優(yōu)選地僅在每次新的包準備好用于貯存或已存儲時確定包的尺寸,優(yōu)選通過任何建立包的機制。其總存儲器長度、給定的通常的編程約束條件和習慣被放置在文件頭中,或者被保存用于整個互鎖樹數(shù)據(jù)庫存儲器區(qū)域。在一些實施例中,所有的包都給定相同的長度,以避免這個步驟,在該實施例的保存中舍棄了任何剩余的空間。我們還公開了使用包內(nèi)的包來更好的組織本發(fā)明中的保存。
為了訪問所有的節(jié)點,可以用不同的方式遍歷結構??梢詮某跫壐?jié)點開始,沿asCase路徑遍歷,或從最終產(chǎn)品節(jié)點出發(fā),沿著向后的Case鏈路,直至所有的初級根節(jié)點被定位為止,或從每個根節(jié)點出發(fā),沿著各自的asResult鏈路。如上所述,如果在保存操作期間使用類型1或類型3的包來存儲節(jié)點信息,則優(yōu)選最好是從具有asCase表的節(jié)點開始,本文中是BOT節(jié)點。
也可以通過從最低級別的每個根節(jié)點開始,然后沿著所有的asResult指針遍歷K的結構。對類型1和類型3包應用相同的設計。
通過適當?shù)乇4妫覀円材軌蚧謴筒糠只ユi樹數(shù)據(jù)庫,它可保持全部結構內(nèi)容的有用性,而沒有具體應用的笨重性。通常,如果希望限制一個完全開發(fā)的互鎖樹數(shù)據(jù)庫,通過僅用感興趣的約束條件遍歷數(shù)據(jù)庫部分來保存它,并且恢復被保存的全部內(nèi)容。因此,例如,我們可以通過這個處理過程消除具有我們不繼續(xù)感興趣的最終產(chǎn)品節(jié)點的所有數(shù)據(jù)。目前不建議其它種類的部分保存。然而,我們相信在將來將開發(fā)出勝于當前的部分保存技術。另外,如果不保存具有零、小的或甚至負值的計數(shù)器的節(jié)點,可以減小保存節(jié)點的數(shù)目。
恢復結構需要對于恢復和讀出已被保存的支持結構分配所需要的存儲器。每個節(jié)點包應當被讀出和進行存儲器分配,同時構建一個地址轉換表。地址轉換表被用來將各個節(jié)點的舊存儲器地址轉換成新的存儲器地址。每個節(jié)點隨后用其已確定的Case和Result指針,以及其它相關數(shù)據(jù)被重建,而Case和Result節(jié)點的asCase和asResult指針表用當前的節(jié)點的新的存儲器地址被繁殖。K結構隨后將被恢復。作為替代,人們可以存儲相對地址,并且僅僅用基礎相對地址來恢復。
KStore結構的一個級別的最終產(chǎn)品節(jié)點是根節(jié)點,其被組合生成下一個級別的子器件節(jié)點。此處理過程可以重復任何次數(shù),創(chuàng)建任意數(shù)量的級別的asCase樹。另外,一個級別的節(jié)點可以通過Result指針被遍歷,以查看它們的相關的低級別節(jié)點和根。一個級別的最終產(chǎn)品節(jié)點成為通過它的asResult樹的下一個較高級別的根節(jié)點,即較低級別的sResult樹具有代表較低級別結束指示符(EOT)的根節(jié)點。
在某些情況下,來自每個級別的最終產(chǎn)品節(jié)點在它們被創(chuàng)建時被表示。所創(chuàng)建的元數(shù)據(jù)是互鎖樹數(shù)據(jù)庫結構的元數(shù)據(jù)的一部分,該結構可以被保存在僅需要對較高的級別進行部分保存的地方。


前述摘要和本發(fā)明的實施例的下述詳細說明在結合附圖時將更容易了解。為了說明本發(fā)明,示出了本發(fā)明的優(yōu)選結構的附圖;但是本發(fā)明不限于所公開的具體的方法和實施方案。圖中圖1和2示出了實施本發(fā)明中優(yōu)選計算環(huán)境的兩個階段的框圖;圖3-5是本發(fā)明的各種優(yōu)選實施例的節(jié)點包的框圖;圖6是本發(fā)明的保存過程的優(yōu)選形式的流程圖;圖7是本發(fā)明的恢復過程的優(yōu)選形式的流程圖;圖8是本發(fā)明使用的地址轉換表的優(yōu)選形式的框圖;圖9是本發(fā)明的實施例中來自互鎖樹數(shù)據(jù)庫的節(jié)點的典型結構的框圖;圖10是本發(fā)明的實施例中稱為Kstore的互鎖樹數(shù)據(jù)庫的最小結構的框圖;以及圖11是本發(fā)明的實施例中小的KStore互鎖樹數(shù)據(jù)庫的框圖。
圖12是支持說明多個級別情況的KStore互鎖樹數(shù)據(jù)庫的框圖。
圖13是用于說明包概念內(nèi)的包的框圖。
具體實施例方式
綜述雖然我們在前面提到的專利申請中描述了一種創(chuàng)建互鎖樹數(shù)據(jù)庫的系統(tǒng)和方法,簡稱為Kstore,我們?nèi)愿杏X必須重復其中一些描述,以便讀者熟悉本發(fā)明所采用的現(xiàn)有技術的概念,但我們相信這些概念不能在計算機數(shù)據(jù)領域中找到。KStore通常包括互聯(lián)樹的樹林的至少一個級別?;ユi樹數(shù)據(jù)庫的樹林的每個級別的結構通過從基本數(shù)據(jù)組創(chuàng)建代表數(shù)據(jù)序列的新節(jié)點而獲取有關數(shù)據(jù)流的信息。由于每個單元是在數(shù)據(jù)流中遇到的,新的子部件節(jié)點部件通過使用對于以前的子部件節(jié)點的基準和對于基本根節(jié)點的基準被構建。如果新的序列被構建,則基準將是意圖指示符(被包括在基本節(jié)點組中)和基本根節(jié)點的級別開始。如果遇到了序列結束,則基準將是子器件節(jié)點和表示意圖指示符的級別結束的節(jié)點。這個重疊過程導致由asCase樹分支和多個asResult樹鏈接的節(jié)點組成的單個asCase樹。asCase分支的節(jié)點取決于第一根節(jié)點。例如,參照圖11,節(jié)點1050,1002,1004,1024,1026,1027和1030是取決于第一開始指示根節(jié)點1050的優(yōu)選asCase樹。從節(jié)點1005開始的其它分支也被看作為部分asCase樹,包括但不限于1028,1029,1040,1031和1060。AsResult樹的示例包括以下的樹節(jié)點1051和1002(一個asResult樹),節(jié)點1053,及1003和1005(第二個示例性asResult樹),及節(jié)點1057,1033,1031和1027(第三示例性asResult樹),在這個圖上還可以找到許多其它節(jié)點。右側asResult樹是asResult樹的特殊情況,因為根節(jié)點(節(jié)點1061)代表結束指示符。
為了明白最基本形式的結構,請參考圖10,圖上顯示互鎖樹數(shù)據(jù)庫結構的最小單元,具有由鏈路96-99連接的節(jié)點91-95。基本結構具有通過鏈路96連接到子部件節(jié)點94的一個初級根節(jié)點(第一根節(jié)點91)。第三根節(jié)點(基本根節(jié)點)92也通過鏈路97連接到子部件節(jié)點94。(因此,節(jié)點94是數(shù)據(jù)中的內(nèi)容表示,即,節(jié)點94代表之后是節(jié)點92的基本節(jié)點91的數(shù)據(jù)中的情況)。節(jié)點95通過鏈路99連接到節(jié)點94,而路徑91-96-94-99-95可以被稱為從初級根節(jié)點開始朝向最終產(chǎn)品節(jié)點95的路徑。(路徑可以是鏈路和節(jié)點的任何連接線)。最終產(chǎn)品節(jié)點也是第二根節(jié)點(目標節(jié)點的結尾)93的情況,并通過鏈路98被連接到路徑。
給定級別的asCase樹的每個分支從一個子部件節(jié)點開始,該節(jié)點由表示級別開始指示符的節(jié)點和表示根節(jié)點的節(jié)點組合而成。子部件節(jié)點可以迭代地與根節(jié)點組合成另一個子部件節(jié)點。子部件可以與表示級別結束指示符的節(jié)點相組合來創(chuàng)建最終產(chǎn)品節(jié)點。這個過程可以重復,并可導致取決于第一根節(jié)點的多個asCase樹的形成。
例如,如果特定的互鎖樹數(shù)據(jù)庫的不可分割的基本根節(jié)點或傳感器是數(shù)字字母,則子部件節(jié)點可以表示不是單詞的字母組合,而最終產(chǎn)品節(jié)點可以表示單詞。作為替代,子部件節(jié)點可以代表數(shù)字字母的組合,包括部分庫存號或定單號,以及最終產(chǎn)品節(jié)點可代表完整庫存號或定單號,作為應用于本發(fā)明的輸入的數(shù)字字母整體的許多使用中的兩個可能的用途。
一個級別的最終產(chǎn)品節(jié)點可以是下一個級別的根節(jié)點。最終產(chǎn)品節(jié)點可被用來生成下一個級別的子部件,較低級別的數(shù)據(jù)單元以相同的方式被用來創(chuàng)建較低級別的子部件節(jié)點和最終產(chǎn)品節(jié)點。例如,上述的具體互鎖樹結構中,一個級別的最終產(chǎn)品節(jié)點(表示單詞)可以是根節(jié)點,從該節(jié)點可以創(chuàng)建較高級別的最終產(chǎn)品節(jié)點(表示句子)。這個過程可以重復任意次數(shù),在數(shù)據(jù)庫中創(chuàng)建任何數(shù)量的互聯(lián)樹級別。
例如圖10的91,92,和93與圖11的1050-1059和1061的該類節(jié)點在本文中稱為基本根節(jié)點,因為這些節(jié)點代表數(shù)據(jù)組單元,并包括不可分割的單元,而可分割的單元(子部件節(jié)點與最終產(chǎn)品節(jié)點)由這些不可分割的單元組成。例如94,1004,1024,1033等該類節(jié)點在本文中被稱為子部件節(jié)點,因為這些節(jié)點表示例如開始指示符那樣的概念指示符的根節(jié)點與表示數(shù)據(jù)組單元的根節(jié)點的組合,或子部件節(jié)點與表示不包括最終產(chǎn)品的數(shù)據(jù)組單元的組合,或子部件節(jié)點與表示包括最終產(chǎn)品節(jié)點的結束指示符的節(jié)點的組合。節(jié)點例如1030或95表示最終產(chǎn)品節(jié)點。在所引用例子中,基本根節(jié)點是字母,子部件節(jié)點表示不包括單詞的字母組合,而最終產(chǎn)品節(jié)點表示單詞。應當指出,基本根節(jié)點組包括“BOT”,在本例中表示單詞、目標、或字符串的開始,以及“EOT”,表示單詞、目標、或字符串的結束。將會看到,“BOT”和“EOT”表示開始和結束指示符,但本發(fā)明不限于此。當不存在一個或兩個這樣的指示符時,可以設想使用其它指示符。在本發(fā)明的一個實施例中,最終產(chǎn)品節(jié)點是與子部件節(jié)點可區(qū)分的,因為從特定的節(jié)點到根節(jié)點的鏈路代表EOT概念。
如果基本節(jié)點在KStore結構的第一級別中代表字母,在第二級別中使用單詞,字母序列,而KStore結構中的級別根節(jié)點可包括句子。同樣地,作為一個級別的基本根節(jié)點是像素,可包括下一個較高的級別中的圖像區(qū)域,以及在再一個更高級別的整個圖像。句子可以被組合而創(chuàng)建段落(比單詞更高的級別)等等。另外,較高級別的根節(jié)點可以遍歷到互鎖樹數(shù)據(jù)庫的較低級別。在本發(fā)明的一個實施例中,從級別結束指示符開始的asResult樹被用于規(guī)定下一個級別的根節(jié)點。結束指示符是第二根節(jié)點,其次序與本發(fā)明的一個實施例中由asCase樹規(guī)定的互鎖樹數(shù)據(jù)庫相反。
創(chuàng)建節(jié)點時,在新節(jié)點與新節(jié)點表示的2個節(jié)點之間創(chuàng)建雙向鏈路。Case鏈路表示連接到創(chuàng)建的新的兩個節(jié)點中的第一節(jié)點的鏈路。到新節(jié)點的另一個指針被存儲在Case節(jié)點的asCase表中??梢钥吹?,asCase樹的asCase分支可以通過在處理輸入時生成asCase鏈路而被創(chuàng)建。每個級別的asCase分支提供如何創(chuàng)建該級別的每個子部件節(jié)點與最終產(chǎn)品節(jié)點的直接記錄。因此,asCase分支可被使用于任何目的,為此知道子部件節(jié)點和最終產(chǎn)品節(jié)點如何被創(chuàng)建是有用的。如果例如加到互鎖樹生成器的輸入包括正確拼寫單詞的整體,則生成的互鎖樹的最終得到的asCase鏈路可被用作拼寫檢驗器,以便只列出在數(shù)據(jù)庫的許多可能的用途的一個例子。
Result鏈路表示連接到創(chuàng)建的新的兩個節(jié)點的第二節(jié)點的鏈路。AsResult鏈路的生成創(chuàng)建了一系列互鎖樹,其中每個asResult樹取決于包括根節(jié)點的根。其結果是記錄了數(shù)據(jù)庫內(nèi)根節(jié)點與asCase樹之間的關系。即,asCase樹與asResult樹的組合獲取互鎖樹的節(jié)點的所有可能的內(nèi)容。asCase樹與asResult樹的組合可被使用于任何目的,為此知道在根節(jié)點之間的內(nèi)容或關系是有用的。如果例如加到互鎖樹數(shù)據(jù)庫生成器的輸入包括銷售數(shù)據(jù)的整體,其包括銷售員姓名、星期幾、物品數(shù)量和狀態(tài),生成的互鎖樹數(shù)據(jù)庫的最終得到的asCase和asResult鏈路可被用來提取信息,例如“在特定的州中銷售員銷售如何?”“在星期一銷售了多少物品?”“銷售員Bob在星期一和星期二銷售了多少物品?”等等--全部來自同一個互鎖樹數(shù)據(jù)庫,而不用創(chuàng)建數(shù)據(jù)庫的多個拷貝。
可以看到,上述的關系信息實際上被存儲在被構建的互鎖樹數(shù)據(jù)庫的結構內(nèi),而不是明顯地存儲在樹的子部件和最終產(chǎn)品節(jié)點中。因為只有互鎖樹數(shù)據(jù)庫的基本根節(jié)點可包括數(shù)據(jù),所以可以跟隨Case和Result鏈路回到根節(jié)點,以便從數(shù)據(jù)流確定或重建原始數(shù)據(jù)。
優(yōu)選計算環(huán)境圖1是示出了實施本發(fā)明的優(yōu)選計算機系統(tǒng)100的框圖。計算機系統(tǒng)100可以是任何適當?shù)南到y(tǒng),例如但不限于主計算機、迷你計算機、IBM兼容的個人計算機、Unix工作站或網(wǎng)絡計算機。本領域技術人員將會看到,本發(fā)明的設備可以應用于任何計算機系統(tǒng),包括但不限于多用戶計算機系統(tǒng)或單用戶計算機。如圖1所示,計算機系統(tǒng)100包括連接到主存儲器104的中央處理單元(CPU)102,輔助存儲接口106,終端接口108、以及網(wǎng)絡接口110。這些系統(tǒng)部件經(jīng)由系統(tǒng)總線160互相連接。輔助存儲接口106被用于連接存儲設備,例如但不限于,DASD設備190,存儲設備把盤上的數(shù)據(jù),例如但不限于盤195,存儲在計算機系統(tǒng)100中。
主存儲器104,包括計算機系統(tǒng)100的整個虛擬存儲器,包括操作系統(tǒng)122和應用124,還可包括互鎖樹數(shù)據(jù)庫126?;ユi樹數(shù)據(jù)庫126提供一種數(shù)據(jù)結構,其可以在多上下文模式下快速搜索數(shù)據(jù),而不需要數(shù)據(jù)復制。計算機系統(tǒng)100可以使用常用的虛擬尋址機制,允許計算機系統(tǒng)100的程序起作用,就好像它們訪問到大的單個存儲實體,而不是訪問到多個較小的存儲實體,例如主存儲器104和DASD設備190。因此,雖然操作系統(tǒng)122、應用124、和互鎖樹數(shù)據(jù)庫126被示為處在主存儲器104中,但本領域技術人員能夠理解,這些單元不一定同時全部位于主存儲器104內(nèi)。
雖然計算機系統(tǒng)100被示為只包括單個CPU和系統(tǒng)總線,但本領域技術人員可以看出本發(fā)明可以通過包括多個CPU和/或總線的系統(tǒng)來實施。終端接口108可被用來把一個或多個終端連接到計算機系統(tǒng)100。所述終端可以是從屬終端或完全可編程工作站,它們可被用來使得系統(tǒng)管理員和用戶與計算機系統(tǒng)100通信。
網(wǎng)絡接口110可被使用來把其它計算機系統(tǒng)和/或工作站連接到計算機系統(tǒng)100。網(wǎng)絡接口110所接口連接的網(wǎng)絡可以是局域網(wǎng)(LAN)、廣域網(wǎng)(WAN)、互聯(lián)網(wǎng)、外部網(wǎng)絡或內(nèi)部網(wǎng)絡、或任何其它適當?shù)木W(wǎng)絡。操作系統(tǒng)122可以是例如OS2、WINDOWS、AIX、UNIX、LINUX或任何其它適當?shù)牟僮飨到y(tǒng)。
應用程序124可以是訪問存儲在互鎖樹數(shù)據(jù)庫126的數(shù)據(jù)的任何類型的應用程序。因此,舉例來說,應用可包括數(shù)據(jù)分析應用、數(shù)據(jù)倉儲應用、盜用檢測系統(tǒng),雖然本發(fā)明不限于這些例子。
互鎖樹數(shù)據(jù)庫126提供一個數(shù)據(jù)存儲結構,使得用戶能夠訪問相同的數(shù)據(jù)庫以得到與任何上下文有關的信息。術語數(shù)據(jù),正如這里使用的,可包括任何類型的計算機存儲信息,例如但不限于文本、圖形、公式、表格、視頻、多媒體或它們的組合?;ユi樹數(shù)據(jù)庫126可被實施為應用124的一部分、操作系統(tǒng)122的一部分、或者作為一個獨立的數(shù)據(jù)庫產(chǎn)品,適用于為各種應用提供數(shù)據(jù)存儲。
雖然本發(fā)明是結合全功能性計算機系統(tǒng)描述的,但本領域技術人員將會看到,本發(fā)明能夠以各種各樣的形式作為程序產(chǎn)品被分發(fā),以及本發(fā)明同樣地應用,與實行分發(fā)的信號承載媒體的具體類型無關。承載此信號的媒體的例子包括但不限于軟盤、硬盤驅動、CD ROM、通過電、光、無線或其它適當媒體的數(shù)字和模擬通信鏈路。如果需要的話,也可能分發(fā)在計算機系統(tǒng)上工作的這種互鎖樹數(shù)據(jù)庫。
圖2與圖1類似,除了其包含表示被保存的KStore的塊。另外,圖2上的重復單元僅僅在它們表示的數(shù)字上附著一個“a”。KStore(數(shù)據(jù)庫126a)由計算機系統(tǒng)內(nèi)有效存儲器104a中的保存子程序128操作。為了在保存過程完成后恢復它,還有恢復子程序129,為了方便起見,它們也被顯示為在有效的主存儲器104a內(nèi),雖然它們可以在需要時或按希望地被交換。在處理過程中,處理過程將開發(fā)一個頭空間127r,和代表KStore結構的節(jié)點,優(yōu)選在存儲在有效存儲器區(qū)域127的結構上操作,作為區(qū)域127。為了方便起見,我們把存儲器中的這個工作空間簡稱為區(qū)域127。作為替代,空間127可以是非常小的,只具有當前在處理的節(jié)點包,該包是由保存子程序128創(chuàng)建的,或替換地是由恢復子程序恢復的,如果該KStore被恢復的話。如果KStore被恢復,則不需要空間127,但在KStore被遍歷時,可能想要有該空間127作為測試或工作空間,而節(jié)點在恢復過程中被添加。如果節(jié)點被轉變成包,并且在它們被形成時作為文件流到存儲器,則它們可以以流文件立即流動到永久存儲裝置的速度被創(chuàng)建。至少在這樣的情形下,在存儲裝置中分配用于包的存儲器不是一個必需步驟,因為流文件建立會使得OS和數(shù)據(jù)貯存系統(tǒng)自動做到這一點。
將會看到,雖然在以上給出的文本例子(“BOT-C-A-T-EOT”和“BOT-T-A-B-EOT”)中輸入的整體是數(shù)字字母符號組,從這些符號可以得出單詞,但不限于這種Kstore數(shù)據(jù)庫結構。例如,輸入的整體可以是文本,例如字母(從這些字母可以得出單詞)或單詞(從這些單詞可以得出詞組或句子)。另外,KStore的實體可以替換地由氨基酸組成,從該氨基酸可以得到染色體組,在過程中使用的有限資源,概念,像素組,圖像,聲音,數(shù)字,模擬測量值,或數(shù)值或由任何其它可被數(shù)字化的基本單元組成的適當整體(或者變?yōu)樾畔⒋鎯Ω袷剑缌炕癄顟B(tài)表示或類似),隨后被組合而生成最終產(chǎn)品。
除了上述的節(jié)點以外,互鎖樹數(shù)據(jù)庫(例如,使用圖10的說明)還可包括在節(jié)點之間的多個連接或鏈路,例如鏈路96,97,99和98。在本發(fā)明的一個實施例中的鏈路是雙向的。鏈路96和99在這里被稱為asCase鏈路。鏈路97和98在這里被稱為asResult鏈路??梢钥吹剑诒景l(fā)明的優(yōu)選實施例中,表示開始指示符概念或條件的根節(jié)點將具有空的asResult表,因為開始指示符決不是子部件的第二部分,表示數(shù)據(jù)組單元的根節(jié)點將具有空的asCase表,因為數(shù)據(jù)組單元決不是子部件的第一部分。最后,最終產(chǎn)品根節(jié)點將具有空的asCase表,因為最終產(chǎn)品作為用于下一個級別的數(shù)據(jù)組單元。
互鎖樹數(shù)據(jù)庫的所有節(jié)點也可以包括代表與所述節(jié)點有關的信息的附加字段。這可以通過圖9示出。然而,應當指出,在幾乎所有的優(yōu)選實施例中,數(shù)據(jù)僅僅被存儲在根節(jié)點。在大多數(shù)實施例中的大多數(shù)節(jié)點沒有字符串數(shù)據(jù),即使它們具有附加字段。通常,附加字段(如果有的話)可被用來存儲計數(shù)值,或者可能是節(jié)點類型的指示符,如果需要的話。
圖9示出了一個優(yōu)選的節(jié)點30。這個節(jié)點30可包括字符串字段作為附加字段,其包含一個由此節(jié)點表示的所有基本根節(jié)點的序列。附加一個包括此基本序列的字符串字段在診斷故障時是有幫助的。這類附加字段可以有許多用途,節(jié)點例如節(jié)點30不一定限于一個附加字段。然而,通常來說,附加字段將包含計數(shù)值,而不是字符串,可以有不止一個附加字段。這些字段的數(shù)目和特性將根據(jù)Kstore在構建時的特性而變化。
優(yōu)選節(jié)點30還可包括計數(shù)字段作為字段31。計數(shù)字段被初始化,并增加一個強度變量,其數(shù)值根據(jù)計數(shù)字段被引用的次數(shù)條件而變化。(強度變量被定義為保持至少一個不能改變的數(shù)值的數(shù)學實體)。通過使得這個項目變得廣義,計數(shù)字段的增加強度變量可被用于本發(fā)明的互鎖樹結構,以處理忘記錯誤的記錄數(shù)據(jù),記錄哪個實體正在查詢,記錄被使用的查詢類型,以及在使用數(shù)據(jù)時可以派生出的其它感興趣的處理過程。強度變量的一個簡單示例形式是單個序數(shù)字段值,例如“1”被用來增加或減少計數(shù)字段,以記錄節(jié)點被訪問或被遍歷的次數(shù)。
而且,認識到指向asCase表字段33的指針對于最終產(chǎn)品節(jié)點是零,以及指向asResult表字段34的指針對于所有的子部件節(jié)點都是零,以及二者之一(指向asCase表或指向asResult表的指針)對于基本節(jié)點是零。認識到這點允許在所描述的保存操作期間創(chuàng)建類型3節(jié)點包,因為我們在節(jié)點包中只需要一個字段,兩個字段之一在所有的情形下將是零。這個表計數(shù)值是要與計數(shù)器字段區(qū)分開來,后者保持節(jié)點的遍歷頻率和強度的記錄。
而且,對于不同的功能,強度變量可以以不同的速率和不同的方向改變。不同強度的簡單示例可以是每次查詢遍歷一個節(jié)點時,數(shù)值加上+1,以及如果包含特定節(jié)點(或該特定節(jié)點序列)的路徑被認為是個錯誤(由于某些上面的原因,此說明是不重要的),數(shù)值加上-100,例如當序列在使用后被發(fā)現(xiàn)是拼寫錯誤時,或者傳感器發(fā)現(xiàn)一個包含危險化學區(qū)域的情況,或如果一個成人兒童仿真器在仿真時在熱火爐上“觸摸”和“自身燃燒”。強度變量的一個替換例是使用一個獨立節(jié)點來保持對于每種節(jié)點遍歷的新數(shù)值,因此在類型1、類型2、實驗1、實驗2等等和無窮盡的查詢情況下創(chuàng)建一個情況群。在目前考慮本結構的實際應用時,計數(shù)字段中的強度變量為解決這個問題提供了最簡單的、從而也是當前最好的方法,但是當信息處理系統(tǒng)成熟時,這個或其它的替換例也應當被考慮和再考慮。如果考慮這個替換例,則使用一個獨立節(jié)點,甚至可能是基本或根節(jié)點來記錄對于與節(jié)點有關的、每種類型的遍歷數(shù)目的計數(shù)值的方法是實施這個方法的一種方式。
因此,在一種用途中,當新的數(shù)據(jù)被合并到互鎖樹數(shù)據(jù)庫時,計數(shù)字段可以被增加,但當被查詢的互鎖樹數(shù)據(jù)庫為新的數(shù)據(jù)產(chǎn)生更大的數(shù)值并且沒有出現(xiàn)查詢變化時,省略了計數(shù)字段的增加。因此,這個強度變量可以被動態(tài)地選擇,以使得它適用于由KStore解決的問題。
增加計數(shù)字段以便易于使用由互鎖樹數(shù)據(jù)庫結構的內(nèi)容,這在尋求統(tǒng)計資料,例如頻率和概率時是特別有用的。
另外,應當意識到,如果在節(jié)點中存在計數(shù)字段以及該計數(shù)字段相應于所希望的節(jié)點的實驗頻率和強度,則可以從保存的節(jié)點中消除任意節(jié)點,如果它們在計數(shù)字段中具有零值。消除零值節(jié)點甚至可被用于具有零值的計數(shù)字段的基本根節(jié)點,如果在檢驗過程中,這些基本根節(jié)點不必使用于任何被恢復的KStore。(因此,如果需要,即使低數(shù)值的計數(shù)值也可被消除;其不是必須等價于零值)。這可能發(fā)生在,如果KStore開發(fā)器保留多個數(shù)據(jù)粒子,但發(fā)現(xiàn)一旦收集到大多數(shù)數(shù)據(jù)時,它們就是無用的;其然后可以有把握地消除這些基本根節(jié)點。另外,在可以對計數(shù)字段的數(shù)值進行減法的情況下,也可以從保存的節(jié)點中消除這類節(jié)點,因為它們可能代表錯誤或誤拼寫等等。當然,在某些情形下,人們想要永不消除所創(chuàng)建的節(jié)點,在這種情形下,人們可以甚至保存在計數(shù)字段中具有零值的這些節(jié)點,以保存歷史。
應當指出,圖9上的節(jié)點30可以是具有數(shù)值字段32的基本節(jié)點30A,或子部件節(jié)點或最終產(chǎn)品節(jié)點30B(缺少數(shù)值字段32),但在任一種情形下,它可以具有一個附加字段或多個字段31。
圖9示出了附加字段的具體示例,其中節(jié)點例如節(jié)點30(或者是基本節(jié)點30A(具有數(shù)值字段32)或者子部件或最終產(chǎn)品節(jié)點30B)都具有附加字段31。此附加字段(或如果優(yōu)選地,多個附加字段)可包含想要的任何信息。例如,人們可能想要知道節(jié)點的特定種類(節(jié)點類型,如傳感器,最終產(chǎn)品或其它種類的節(jié)點),或在特定的日期或距離由節(jié)點計數(shù)值從EOT或BOT創(chuàng)建的,或者人們希望對它做的任何事情。
如果需要,保存包組內(nèi)的包來幫助保存組織也是有用的。圖13中,在較大的包140內(nèi)具有一組節(jié)點包0,,,n,141,142,143...144。優(yōu)選地,包0...n的第一個,包141是信息頭包,其包含的信息對于較大的包140中所有的之后的包來說是共同的內(nèi)容。這個信息頭包在大多數(shù)優(yōu)選實施例中不被重建為節(jié)點,但包含對于恢復過程的有用信息。使用包設計內(nèi)易于實現(xiàn)存儲各個包內(nèi)的基本根節(jié)點、BOT節(jié)點、以及EOT和最終產(chǎn)品節(jié)點,每個節(jié)點與其它的節(jié)點分隔開,因為它們在每種類型中具有不同的字段。例如,根節(jié)點可以具有一個裝有全部asResult指針的asReult表,但子部件節(jié)點沒有這樣的表。另外,節(jié)點的層可被存儲在一起,同樣易于實現(xiàn)恢復過程,容易組織恢復較低的層,然后恢復隨后的較高層。
應當闡明類型的分類。具有上述三種新的包類型。這些包類型可藉助于具有或不具有一個或兩個附加計數(shù)字段而被區(qū)分,該附加計數(shù)字段記錄原始節(jié)點具有的asResult或asCase鏈路數(shù)目。如果需要的話,這些類型可被方便地存儲不具有asResult鏈路也不具有asCase鏈路的節(jié)點,而是不具有這些鏈路的節(jié)點。這樣的節(jié)點一般是子部件節(jié)點,它具有Case指針、Result指針和計數(shù)字段,以及指向具有作為它的成員的asResult表和作為它的成員的asCase表的節(jié)點的指針。所以,這可被稱為一種不同類型的節(jié)點。然而,對于本專利,我們使用1,2,3的類型表示法,以表示在保存期間根據(jù)Kstore的(某些或所有的)節(jié)點被保存在包內(nèi)的信息種類。類型1,2,3節(jié)點的完整定義如上所述。如果我們把子部件節(jié)點保存為節(jié)點的包(作為包內(nèi)的包),則我們不需要表示節(jié)點類型,因為它既沒有asCase表,也沒有asResult表。
本文詳細討論Kstore中的層的概念,并且詳細討論恢復過程如何利用這種分層是很有用的?,F(xiàn)有專利申請No.10/879,329中已經(jīng)描述層的使用,并且增加了一幅類似于本申請中圖12的圖。應當指出,最低層根據(jù)粒子級別構建單詞,粒子級別具有作為字母的基本根節(jié)點902。BOT 901和EOT 903也是基本根節(jié)點,但是在這里是專用。向上的下一層中的單詞都是最終產(chǎn)品節(jié)點908,906,904。最高層的最終產(chǎn)品節(jié)點902是句子節(jié)點,CAT ARE FURRY。BOS 904和EOS 905與單詞節(jié)點904,906和908一起也是這層的根節(jié)點。因此,根節(jié)點將把asResult指針放置在它們上面的層。
因此,如果我們按次序保存和恢復,則我們從曲線圖的底部向上移動,從BOT節(jié)點901開始。這指向情況節(jié)點BOT C,BOT A(951),和BOT F,對于Kstore在這個級別的每個單詞,分別在節(jié)點904,906和908結束。為了做到這一點,我們使用包尋找第一BOT,簡單的把BOT的舊地址放置在地址轉換表中,連同在被恢復的存儲器中分配給這個節(jié)點的新地址一起,移動到基本根節(jié)點,并對于它們的舊和新地址進行同樣的工作?;靖?jié)點包的列表是C,A,T,S,R,E,F(xiàn),U和Y(902)和專用基本根節(jié)點EOT 903。正如剛才闡述的,將它們的舊和新的存儲器位置放置到地址轉換表。當恢復作為這些基本節(jié)點的結果的節(jié)點時,已在地址轉換表中建立了這些根節(jié)點的地址,所以知道對于指向節(jié)點的指針的新存儲地址。子部件節(jié)點包也具有它們的asCase指針,因為在Case分支中它們的之前節(jié)點(這里是BOT,然后是C,然后是A等等)首先被恢復,并且其新地址已在地址轉換表中。然后移動到下一個級別,恢復用于句子的節(jié)點BOS 904。我們發(fā)現(xiàn)子部件節(jié)點具有根節(jié)點904,906和908,其作為Kstore的級別1部分上的最終產(chǎn)品節(jié)點。這個級別的最終產(chǎn)品節(jié)點是節(jié)點902,且它也具有EOS節(jié)點905,優(yōu)選地在BOS節(jié)點904之后從包中被恢復。對于這個第二級別,從包恢復的每個節(jié)點具有其自己的新存儲器地址,它們的指針都指向在剛才所述的一次通過過程中被恢復較低級別的節(jié)點或BOS節(jié)點和EOS節(jié)點。可以不使用一次通過就恢復Kstore,但隨后在一次通過后必須使用在第一次通過中的某種位置保持器,返回將指針的已丟失的舊地址填充到新地址變換。這樣的迭代過程不可避免地是較慢的,并且會不必要地復雜。
在實施方案中有很大的靈活性。例如,在KStore中,可以實施asCase表和asResult表作為被鏈接的表。另一個實施例中,asCase表和asResult表可被分配為具有可配置大小的連續(xù)存儲器單元的塊,例如但不限于數(shù)組。了解這個信息對開始進行恢復是非常重要的。這種組織類型的表示,例如列表可以缺省處理,或作為某種元數(shù)據(jù)指示符放置在包的信息頭,或包節(jié)點被組織成的大包的信息頭或導引包。在任何情形下,一般有設置在asCase表的開始位置的指向任何asCase表的指針,和指向任何asResult表的指針。優(yōu)選實施例中,用于處理這種元數(shù)據(jù)的適當算法過程由元數(shù)據(jù)本身觸發(fā)。KStore可被組織來保持節(jié)點的asCase鏈路和asResult表,或優(yōu)選地,這樣的表(然而是組織的)只具有指向被存儲在KStore結構中的這些表的指針。存儲在節(jié)點包中的指針表的計數(shù)值使得能夠以分配適當大小的存儲器來恢復這些包,作為具有適當大小的指針表的節(jié)點。因為恢復器可被用于順序地恢復K,只要考慮恢復次序,就完全不必要存儲asCase或asResult表,因為恢復器在恢復期間將創(chuàng)建這些明細表。我們確實希望具有適當尺寸的存儲器,這是為什么在指針表上保存指針的計數(shù)值的原因。
在本發(fā)明之前一個保存和恢復版本的一個實施例中(如美國專利申請No.10/759,466所述),除了創(chuàng)建從新的節(jié)點到從其得出新節(jié)點的節(jié)點的鏈路之外,指向新節(jié)點位置的指針被添加到從其得出新節(jié)點的節(jié)點的鏈接表、asCase和asResult表。指針可被加到列表的末端,列表的始端,或可被插入在列表內(nèi)的某個地方。另外,可以保持多個排序的列表。例如,節(jié)點的asCase表可包括順序表,其中除了排序的列表以外,指針還被加到鏈接表的末端,在排序的表中,指針以訪問頻率的順序被保持??梢岳斫猓m然給出實例闡述一個排序的列表和一個順序表,但本發(fā)明并不限于此,任何數(shù)目的列表和其任何組合都在本發(fā)明的范圍內(nèi)。排序的列表可以按最后的更新、最后的訪問、或更新或訪問的頻率、或通過任何其它適當?shù)呐判蚍椒ū慌判颉jP于此結構的信息也可能需要和元數(shù)據(jù)一起被保存,并且它也被認為是KStore狀態(tài)變量信息。在本文所描述的新發(fā)明中,完全不需要保持這樣的列表,正如在本說明書的其余部分所述,但如果需要的話,可以在給定的情形下這樣做。但是如果不保持排序表的順序,失去了順序,所以可能出現(xiàn)想要保持順序和使用舊方法而不是本發(fā)明的環(huán)境。作為替代,可以基于一定的基礎恢復列表順序,例如基于頻率的列表。
在KStore數(shù)據(jù)結構的最優(yōu)選實施例中,代表較高級別的根節(jié)點的節(jié)點不包含數(shù)據(jù)或者數(shù)據(jù)或概念的表示;即較高級別的根節(jié)點只包含指向較低級別的節(jié)點的指針。不同級別的根節(jié)點的信息是另一種可被保存的元數(shù)據(jù)。
可以生成任何適當數(shù)量的級別。例如,在文本世界中,級別可以代表字母、單詞、句子、段落、章節(jié)、書、圖書館等等??梢岳斫?,雖然在示意圖上顯示兩個級別的互鎖樹數(shù)據(jù)庫,但本發(fā)明的KStore不局限于此??梢詷嫿ㄈ魏螖?shù)量的級別的互鎖樹數(shù)據(jù)庫。因為本例的整體是文本,即來自單詞的字母組合(一種級別的最終產(chǎn)品),本發(fā)明的該實施例中單詞組合的結果是詞組或句子(另一種級別的最終產(chǎn)品)。句子可被組合形成段落,段落可被組合形成章或節(jié)等等。
基本根節(jié)點(傳感器)和與基本根節(jié)點有關的特定數(shù)值需要被存儲,以便正確地恢復KStore。如果在創(chuàng)建KStore結構的通常過程中,傳感器數(shù)值與節(jié)點無關地被保存,則返回到基本根節(jié)點的數(shù)值和指針的這些文件可以簡單地被保存(對于所述指針地址,適合于指針的地址變化)。在傳感器數(shù)值實際上被存儲在節(jié)點的Kstore中,當在保存操作期間保存節(jié)點時,數(shù)值與其它基本根節(jié)點信息一起被保存。因此,很明顯,保存過程適合于被保存的KStore。
此外可以看到,根據(jù)輸入整體,最終產(chǎn)品節(jié)點可以代表除了單詞、詞組、句子等等以外的其它實體。舉例來說,如果輸入是包括染色體的氨基酸的序列,一個最終產(chǎn)品可以代表基因或對偶基因。在另一個例子中,像素序列可以具有直線、圓或其它形狀物體的最終產(chǎn)品。
搜索KStore結構是相對直接的,正如前述專利申請所述,對于了解如何保存和恢復簡稱為KStore的互鎖樹數(shù)據(jù)庫,并不需要完全了解如何搜索KStore結構。無論如何,為了便于參考,還是包括了概略說明。
現(xiàn)在考慮圖11的輸入包括例如以下內(nèi)容的數(shù)據(jù)記錄Bill星期二40銷售PABill星期一103 銷售NJBill星期一100 試算PATom 星期一80試算PATom 星期一13試算NJ在本發(fā)明的一個實施例中,數(shù)據(jù)組單元由通過分界符,例如但不限于空白字符而分開的信息字段組成。在一個實施例中,數(shù)據(jù)組單元從輸入獲得,盡管可以理解,本發(fā)明并不限于如上所述。在輸入數(shù)據(jù)中至今遇到的變量是銷售員姓名(Bill和Tom)、星期幾(星期一,星期二)、物品數(shù)量(40,103,100,80,13)、狀態(tài)(銷售,試算)和州(PA,NJ)。在本發(fā)明的一個實施例中,圖11的互鎖樹數(shù)據(jù)庫1000是從此輸入得出的。圖11中,由于空間的原因,節(jié)點的第一部分未示出。例如,雖然節(jié)點1002被標記為“Bill”,但節(jié)點1002實際上代表“BOT-Bill”。雖然節(jié)點1002被標記為“Tuesday(星期二)”,但節(jié)點1004實際上代表“BOT-Bill-Tuesday”,等等。
例如,在本發(fā)明的一個實施例中,包括所需序列的路徑的子部件節(jié)點和最終產(chǎn)品節(jié)點可以通過跟隨表示所需序列的特定根節(jié)點的asResult列表中的指針而確定。根節(jié)點的asResult表被訪問,以及在列表中的每個指針被引導到與該根節(jié)點有關的子部件節(jié)點。如果最終產(chǎn)品是所需的,則asCase分支樹被引導到分支的葉節(jié)點。
在本發(fā)明的一個實施例中,信息請求具有規(guī)定的約束形式(它可被看作為“上下文”或“焦點”,這取決于透視圖)。例如,信息請求可以具有約束條件的列表形式。約束條件的列表可以是網(wǎng)狀的或獨立的。在本發(fā)明的一個實施例中,找到每個列出的約束條件的最終產(chǎn)品節(jié)點的asResult表,找到對于每個約束條件的每個asResult表內(nèi)的每個節(jié)點路徑,這些路徑跟隨到它們的最終產(chǎn)品,以及選擇對于每個約束條件的每個asResult表內(nèi)的每個路徑的最終產(chǎn)品的交叉點。通過首先約束數(shù)據(jù)庫,獲取一組數(shù)據(jù),然后該數(shù)據(jù)組被用作為進一步被約束的數(shù)據(jù)組等等而找到網(wǎng)狀約束條件。
邏輯運算符可被用于規(guī)定約束條件??梢哉f,人們正在查找表示個人、地點與(AND)事物的節(jié)點,其中AND是表示所有的個人、地點和事物的組的聯(lián)合體的邏輯運算符,即所有的節(jié)點是通過稱為“個人”、“地點”和“事物”的基本節(jié)點或根節(jié)點來標識的?;ヂ?lián)樹結構給出查詢,由所有的“個人”AND“地點”是作為(ARE)(另一個邏輯算子)被約束為如何識別項目“事物”而進行回答的“事物”。如果在構建結構時,事物決不指向地點,則查詢中不會發(fā)現(xiàn)所有其它的“事物”,但可以在互鎖樹結構中知道所有的地點。如果人們考慮當被合并到結構中的事物,則也會在查詢中發(fā)現(xiàn)它們。
邏輯運算符可以采用許多形式,例如AND,OR,NOT,大于,XNOR,等于,等等,而且它們可以被組合。所有的這樣的邏輯運算符和其組合在本發(fā)明中是有用的。比較數(shù)學表達式也是可使用的,當然這取決于上下文。例如找到已銷售大于100輛汽車的所有銷售員,可以是一個基于比較數(shù)學表達式的查詢,其中該表達式可以是銷售員銷售的汽車數(shù)>100。
本發(fā)明的一個實施例中,聚焦點可被使用來確定被保存的信息。例如,在其中傳感器是字母的二級數(shù)據(jù)庫的情況下(可能必須參考我們的CATS-ARE-Furry圖,圖12),級別1的最終產(chǎn)品包括單詞,以及級別2的最終產(chǎn)品包括句子。如果我們只想要保存其中具有字母A的句子,則我們把K約束限制到與“A”的根節(jié)點有連接的那些節(jié)點。然后必須從A通過其Case鏈路遍歷這些單詞,找出最終產(chǎn)品單詞節(jié)點,并為此需要檢驗每個單詞的asResult表。然后,我們遍歷從句子指向的Case鏈路,找出它們可能處在的句子的最終產(chǎn)品,以便找出其中具有字母A的句子。圖12中,對于A,我們進到節(jié)點951和952,分別跟隨Case鏈路連接到這些單詞節(jié)點953和916的末端。這些節(jié)點906和908分別具有指向節(jié)點953和916的asResult指針。從這些節(jié)點的任一項跟隨Case鏈路導致EOS節(jié)點902。因此,對于本例,我們保存圖12上的所有節(jié)點,但明顯地,如果我們具有其它的字母和沒有其中有A的單詞,則這些單詞在這類局部保存中將被丟失。
在一個實施例中,通過跟隨具有級別開始指示符作為其根節(jié)點的樹,可以找到從約束條件開始的所有最終產(chǎn)品(例如,可以找到從特定字母開始的所有單詞)。同樣地,可以找到具有規(guī)定的約束條件,或在特定位置處的特定約束條件的所有最終產(chǎn)品,(例如,在其中具有特定字母的所有單詞,或在特定的列中具有特定字母的所有單詞)。同樣地,通過跟隨具有級別結束指示符作為其根節(jié)點的樹,可以找到以特定的約束條件結束的所有最終產(chǎn)品(例如,在以特定字母結束的所有單詞)。可以規(guī)定多個約束條件和/或聚焦點。
對于局部保存,可能需要保存任何約束條件來表示局部保存的限制。因此,參看圖10的KStore,把“來自星期一的所有的信息”放置在信息頭中表示所保存的KStore只包含來自星期一的信息。
現(xiàn)在參照圖11,假設需要對于“在星期二銷售物品的總數(shù)是多少”的問題的答案。本領域技術人員將會看到,在本發(fā)明的一個實施例中,不用遍歷在整個數(shù)據(jù)庫中的所有節(jié)點,恢復此信息只需要恢復根節(jié)點1054和1055的asResult表。連接到最終產(chǎn)品節(jié)點1030的路徑5被遍歷,因為由代表星期二的根節(jié)點1054指向節(jié)點1004。連接到最終產(chǎn)品節(jié)點1040的路徑4被遍歷,因為由代表銷售的根節(jié)點1055指向節(jié)點1028。路徑5也被遍歷,因為由根節(jié)點1055銷售還指向節(jié)點1026。路徑1 1080,2 1070和3 1060不必被遍歷。沿著根節(jié)點1054和1055指向的路徑返回的最終產(chǎn)品組的交叉點包括表示“Bill 星期二 40 銷售 PA”的節(jié)點1030。
通過首先約束數(shù)據(jù)庫恢復一個數(shù)據(jù)組,然后該數(shù)據(jù)組被用作為進一步被約束的數(shù)據(jù)組等等,來找到網(wǎng)狀的約束條件。為了進行網(wǎng)狀搜索,從來自根節(jié)點1065的一個約束條件,例如SOLD開始。從兩個標識的最終產(chǎn)品節(jié)點1030和1040往回追蹤,從節(jié)點1030的Case路徑僅僅到達具有節(jié)點星期二,1004的一個最終產(chǎn)品。因此,我們通過這個替換過程得到相同的結果。
現(xiàn)在參考圖3,其中按照本發(fā)明的實施例所述,包含需要存儲來自節(jié)點信息的字段的節(jié)點包。類型2節(jié)點包220的第一字段是包長度字段211。這個字段不是絕對需要的,但對于在把包恢復到節(jié)點時必須進行的過程是有用的,其給出下一個包將從哪里開始的指示。我們將顯示在所有類型的包中的該字段,雖然在大多數(shù)情況下,對于包的每個字段,包尺寸將被固定到一個存儲器地址。下一個字段是Case指針字段212,它當然涉及到指向Case節(jié)點,如圖9中節(jié)點30的指針。下一個字段是包含從圖9的節(jié)點指向Result節(jié)點的指針的Result指針213。附加字段214在這里為了簡化起見被縮略,其可包括任何附加字段以及圖9中節(jié)點30的數(shù)值字段。字段215包含舊節(jié)點地址。
類型1節(jié)點包200如圖4所示。其具有相應的字段,用于包長度201、Case指針202、Result指針203、附加字段204和舊節(jié)點地址207。其還具有用于asCase和asResult指針表計數(shù)值205和206的字段。這些計數(shù)值可被用于幫助確定在進行恢復時需要分配的存儲器的總尺寸。如前所述,BOT和子部件節(jié)點具有asCase指針表,只有根節(jié)點具有asResult表,這樣實際上只需要字段205和206的一個計數(shù)值,但是如果使用類型1節(jié)點,則具有把節(jié)點處理成包的更簡單算法。為了清晰起見,規(guī)定根節(jié)點為基本根節(jié)點(但不是作為一種基本根節(jié)點類型的BOT)或最終產(chǎn)品節(jié)點。
然而,在可以使用類型1節(jié)點包的任何情況下,也可以用類型3節(jié)點包來替代它們,類型3節(jié)點包具有單個字段“指針表計數(shù)值”表計數(shù)值,來保持asResult或asCase表指針的計數(shù)值。因此,圖5中,由任何節(jié)點組成的包可以類似于包230,其具有包長度字段231、Case指針字段232、Result指針字段233、附加字段234、指針表計數(shù)字段235和節(jié)點地址字段237。
正如專利申請No.10/385,421和No.10/666,382的互鎖樹數(shù)據(jù)庫的優(yōu)選實施例中所述,asCase指針表以及asResult指針表本身沒有直接存儲在節(jié)點,在節(jié)點中的指針表示節(jié)點中存儲列表的區(qū)域。然而,在美國專利申請No.10/759,466中描述的第一個保存和恢復的發(fā)明中,優(yōu)選保存具有其地址的節(jié)點的asCase指針表。在使用優(yōu)選實施例來保存每個節(jié)點以便能夠恢復互鎖樹數(shù)據(jù)庫結構時,本發(fā)明中沒有保存asCase和asResul表。反過來,恢復過程的優(yōu)選實施例不必依賴于保存的asCase和asResult指針表而進行恢復。
當前發(fā)明也可以利用三種不同類型的節(jié)點包。第一種類型,類型1節(jié)點包,包含asCase指針表計數(shù)值和asResult指針表計數(shù)值。類型1的變量,被稱為類型3,包含一個指針表計數(shù)值,而不是兩個指針表計數(shù)值(因為其中一個是零值)。最后一種類型,類型2,根本沒有任何指針表計數(shù)值。因此,形成類型1和3的包的節(jié)點將具有asCase和/或asResul表,而形成類型2的節(jié)點則沒有。為了得到這些計數(shù)值,必須進到存儲指針表的任何地方,如果在鏈接的明細表中,通過跟隨鏈路,或通過在鏈接表中某些頭信息獲得該表中的指針計數(shù)值。因此,由于它減少了一個或更多的處理步驟,通常優(yōu)選使用不需要使用任何指針表的類型2包。另外,如果類型1節(jié)點包被構建,則將獲得具有asCase或asResult指針表的計數(shù)值,或者兩個都沒有。因此,我們也允許使用類型3節(jié)點包,它把無論哪種類型的非零計數(shù)值放置在被稱為指針表計數(shù)值的字段中。另外,雖然可以看到,任一個節(jié)點包類型可被交換地利用,但asCase和asResul表的類型和尺寸會出現(xiàn)一種情況,其中一種節(jié)點包類型方案比起其它包類型是更有效的。如果asCase和asResult指針表通過數(shù)組實施,由實驗確定是相對較大,或由靜態(tài)數(shù)據(jù)庫構建,則應當使用包含包長度、任何附加字段、Case指針、Result指針,和指針表計數(shù)值或asCase和asResult指針表計數(shù)值以及舊節(jié)點地址的類型1或類型3節(jié)點包。如果asCase和asResult指針表使用短的鏈接表,由實驗確定是相對較小,或由動態(tài)數(shù)據(jù)庫構建,則可以使用包含包長度、任何附加字段、Case指針、Result指針、和舊節(jié)點地址的類型2節(jié)點包。
應當指出,節(jié)點的類型(因此,即指針表計數(shù)值是asCase還是asResult)當然可以通過它被鏈接到的內(nèi)容和鏈接到它的內(nèi)容而確定。
當為恢復的K分配所需存儲器時,使用與初始創(chuàng)建K時所進行的過程相同的過程。當我們需要時,為鏈接表分配用于新鏈路的存儲器。對于數(shù)組,從初始大小開始,然后如有必要,重新增加尺寸。
也可能具有保存子程序,其創(chuàng)建兩種類型的包,類型1和類型2或類型3和類型2,其中對于子部件節(jié)點使用類型2,對于具有asCase或asResult表指針的節(jié)點使用類型1或3。可以僅僅具有算法,建立包檢驗,以便根據(jù)節(jié)點的讀出查明哪種類型的包是最佳的。為了清楚起見,在任何需要有組合的情形下最好不組合使用類型1與類型3包,但我們應當指出,由于前述原因,最好不在單個保存的K中組合兩種類型的節(jié)點包。子部件節(jié)點具有asCase表,然而,這些表更可能比基本節(jié)點或最終產(chǎn)品節(jié)點的表更小。所以,類型2可能更適用于大多數(shù)情況下的節(jié)點。
在熟悉待保存單元的基本結構后,現(xiàn)在說明進行保存的過程。
現(xiàn)在參考圖6,其中流程圖70示出了本發(fā)明的保存部分的優(yōu)選實施例。當用戶或系統(tǒng)決定初始化保存時,從步驟71開始。作出決定或表示在查詢73中期望局部保存還是全部保存。在構建KStore時,可以創(chuàng)建一組元數(shù)據(jù)72,描述所考慮的特定KStore事例。假設選擇局部保存,根據(jù)所需尺寸、根節(jié)點的具體部分和保存所需的KStore部分的其它方面的用戶輸入74(如果它來自自動系統(tǒng),則也可以被認為是用戶輸入)可以用于該過程。
在步驟75中,選擇至少三種方法中的一種方法,從而能夠保存KStore數(shù)據(jù)結構。如果不是局部保存,則而不用關于KStore數(shù)據(jù)結構的約束條件的任何用戶輸入就可選擇方法。用戶可以根據(jù)KStore的已知參數(shù)進行選擇或者為用戶選擇。例如,如果知道K具有非常大的asCase表,則優(yōu)選的保存方法是允許在恢復過程中重建這些表,因此使得對于所有的節(jié)點選擇類型2節(jié)點包,而不需要跟蹤這些表。用戶可以選擇更復雜的保存算法,它檢驗每個節(jié)點,查看該節(jié)點是否asCase表指針或對于asResult指針具有非零值,并選擇在數(shù)值是非零值的節(jié)點構建類型1或類型3節(jié)點包,但在數(shù)值是零值的地方對于這些節(jié)點構建類型2節(jié)點包?;蛘咴摲椒梢赃x擇只使用類型1或類型3節(jié)點包,并在所檢查的節(jié)點中沒有asCase或asResul表指針的地方存儲零值。方法選擇的另一個主要方面是確定遍歷K的次序,找出待形成包的每個節(jié)點。
雖然在本發(fā)明的優(yōu)選形式中可能在稍后這樣做(例如在步驟84,或這個步驟附近),但包括元數(shù)據(jù)的各種方面的支持結構首先應當在步驟76被保存。在這個步驟中,可以把包格式的信息保存在如圖13所述的包內(nèi),或者可以用本領域技術人員認為比較便利的另一種方式保存該信息。如果確實使用包技術內(nèi)的包,或如果保存在上述層中,或如果做到上述兩項,則對于每層進行以下的步驟,然后返回到步驟76開始保存下一層。在保存下一層時,我們再次保存有關該下一層中所有節(jié)點的任何信息,之后再次移動到步驟77,進行保存這個層中的所有節(jié)點的迭代過程(或至少屬于包的種類的所有節(jié)點,然后是可以從這個層構建的其它包中的節(jié)點)。在步驟77,保存KStore數(shù)據(jù)結構的節(jié)點和塊。如果選擇當前非優(yōu)選的方法來保存KStore結構,則有可能在一個步驟內(nèi)完成步驟77;如果存儲器圖像可以用所有的存儲器地址不受損傷地保存,并被恢復到相同的位置,則步驟77可以作為單個步驟完成。但是,這在部分保存的情形下多半是不可能的,而且在KStore結構從一個計算機移動到另一個計算機或其中對于所保存的結構可被恢復到主存儲器內(nèi)精確的位置缺乏控制的情形下也是不可能的。在步驟77,第一步驟從由所選擇的方法建議的第一節(jié)點開始,并在步驟78從該節(jié)點的主存儲器找出舊地址,然后在步驟79,連同節(jié)點的特定字段一起保存該舊地址,這取決于所利用的節(jié)點包類型。如果使用類型1節(jié)點,則可以把Case指針、Result指針、附加字段、asCase指針表計數(shù)值、asResult指針表計數(shù)值和舊地址保存到類型1包。如果使用類型2節(jié)點包,則可以保存Case指針、Result指針、附加字段和舊地址。在優(yōu)選實施例中,asCase和asResult表不被保存,但在下述優(yōu)選恢復過程中被重建。如果使用類型3節(jié)點,則可以保存Case指針、Result指針、附加字段、Pointer List Count指針表計數(shù)值和舊地址。在此時確定對于該節(jié)點保存的包的優(yōu)選尺寸,以使得所存儲的數(shù)據(jù)結構的最終尺寸將包含信息頭,其元數(shù)據(jù)資源,及以串行方式或其它類似的結構跟隨在后面的數(shù)據(jù)包。因此,對于每個包完成步驟81,當它們準備好時,通過簡單地相加每個包的尺寸,可以立即找到包的所有尺寸的總和。
如果KStore是使用計算機系統(tǒng)的唯一應用程序的情況下,可以了解沒有任何中間I/O功能,和以原子方式完成保存。然而,這通常不是當今的計算機系統(tǒng)環(huán)境。因此,圖3-5顯示KStore包的中間數(shù)據(jù)結構,且類型1-3的信息頭顯示類型2的KStore包的中間數(shù)據(jù)結構,以及準備好以原子方式(一次一個包)保存到盤驅動或其它永久數(shù)據(jù)存儲裝置的信息頭。
在步驟79和81中準備好節(jié)點包和確定節(jié)點包的尺寸后,必須回答是否還有另外的節(jié)點按照所選擇的方法和/或在步驟74選擇的約束條件內(nèi)保存到KStore內(nèi)的問題。假設回答是“yes(是)”,步驟82按照保存算法的方法,移動到下一個節(jié)點。稍后描述這個方法。
如果沒有節(jié)點要保存,則需要被恢復的KStore結構的總尺寸可以在步驟84被確定,接著KStore結構準備好被保存,并可以被保存。如果使用計數(shù)器的話,這個步驟可以在每次創(chuàng)建節(jié)點包時以局部的方式進行,在這種情況下,此步驟可以僅讀出計數(shù)器中的總和。為了編程容易,可以給所有的根節(jié)點和EOT與BOT節(jié)點加索引號或標簽,由此可以在恢復過程中首先找到這些節(jié)點,能夠首先恢復具有asCase和asResult表的節(jié)點,因此簡化了恢復過程。
正如以上參照步驟75的概述,可以有幾種方式進行保存過程。所選擇的方法可以被適當?shù)剡x擇。假設我們不使用整個存儲器交換過程,而是常規(guī)保存,處理過程在把一個節(jié)點包或在一組包寫入到永久存儲裝置之前將具有至少三個步驟。將保存支持結構,這可以是自動的或用戶輔助的過程。將必須有遍歷步驟,其中處理過程訪問每個相關的節(jié)點(某些節(jié)點可被排除在部分保存之外,否則基本上所有節(jié)點將被訪問)。然后來自每個節(jié)點的信息必須被變換成包用于保存。然后,可以進行保存過程,利用由硬件和軟件在這個結構運行要求時可能需要利用的任何內(nèi)務整理系統(tǒng)。
應當指出,如果通過從一個級別開始,然后移到下一個較高的級別而進行保存,則恢復過程可以在一次通過中執(zhí)行,而如果使用不保存指向asCase和asResult節(jié)點(這是在本專利中描述的所有的節(jié)點)的實際指針的任何節(jié)點包類型,不保存會使得不用迭代過程而很難重新組裝指針。
支持結構的保存首先需要確定哪些信息結構用互鎖樹數(shù)據(jù)庫保存。這可包括結構,例如但不限于;一個文件頭包含創(chuàng)建日期、KStore文件ID等、基本根節(jié)點的列表,(或傳感器),表示BOT-EOT單一體的字符串表,或者或許僅僅被包含在互聯(lián)樹數(shù)據(jù)結構中的目標節(jié)點(單一體)的結尾表,例如可能描述其所處的基礎OS或計算機系統(tǒng)的數(shù)據(jù)結構的元數(shù)據(jù),如果有的話,密碼保護,指針表在節(jié)點中如何排序、以及如果需要恢復結構或確定待保存結構中的信息地址的任何特性信息。另外,信息頭可保存K狀態(tài)變量(例如在節(jié)點中支持多少附加字段,正在進行哪種查詢,如何構建asCase和asResult表,數(shù)據(jù)源,交換開關和數(shù)據(jù)流)和/或數(shù)據(jù)源描述符,例如表示哪些源接受查詢和/或從哪些源得到信息等等的鉤。當然,所有的這種數(shù)據(jù)應當被格式化,用于OS所需的寫入和獲取,以及當前使用的計算機系統(tǒng)的其它特性。另外,如果KStore具有XML格式或訪問,則該類型信息也應當被存儲,因為KStore本身(可能)不知道該信息本身。
因此,為了列出可能在信息頭中發(fā)現(xiàn)的項目,信息頭記錄可能包含創(chuàng)建日期創(chuàng)建保存文件的保存程序的版本/周期硬件配置(CPU類型,等等)OS--操作系統(tǒng)基礎結構信息(字段的尺寸)
簽名結構信息,如果沒有保存“其他”結構信息傳感器級別和相關的界定符元數(shù)據(jù)-字段類型(包括用戶規(guī)定的類型)、列描述、許可證等等KState變量-交換開關、數(shù)據(jù)流、簽名結構信息(例如對于asCase表的特殊順序)數(shù)據(jù)源(類型、位置、附屬數(shù)據(jù)流)--用于學習新知識安全(管理員&用戶密碼、許可證、保存的查詢位置、觸發(fā)器)現(xiàn)在將描述用于保存KStore互鎖樹數(shù)據(jù)庫結構的遍歷的替換方法。
遍歷互鎖樹數(shù)據(jù)庫訪問每個節(jié)點從初始節(jié)點開始,使用一個沿著每個初級根節(jié)點的asCase路徑的順序樹。例如,如果從圖11的初級根節(jié)點BOT 1050開始,則首先進到Bill,得到他的所有到達EOT節(jié)點1030,1040和1060的路徑,然后進到Tom和他的EOT節(jié)點,直至到達EOT節(jié)點1061的所有鏈路為止。這時,除了基本根節(jié)點以外的所有節(jié)點都已被訪問??紤]具有基本根節(jié)點數(shù)值和指針的文件,可以用該方式訪問。圖12中可以看到一個更好的例子。在該圖的優(yōu)選實施例中,從第一級別901開始,首先保存?zhèn)鞲衅?基本根節(jié)點),然后第一級別(單詞),然后下一個級別(句子),等等。保存?zhèn)鞲衅鰿,A,T,S,R,E,F(xiàn),U,Y以及BOT 901和EOT 903。這些具有所有的asCase和asResult指針,因此如果它在保存期間被構建的話,KStore的所有舊地址將被輸入到舊地址列表。接著,我們保存對于單詞CATS,ARE和FURRY的節(jié)點,其包括所有的子部件節(jié)點。接下來我們保存來自第二級別912的BOS和EOS根節(jié)點。本文中,我們保存904與905之間的新節(jié)點,最后是句子層912的最終產(chǎn)品節(jié)點,節(jié)點902。
遍歷互鎖樹數(shù)據(jù)庫以便從最終產(chǎn)品節(jié)點訪問每個節(jié)點是第二個方法。它們都是通過EOT節(jié)點1061可訪問的。因此,通過最終產(chǎn)品節(jié)點的所需約束條件表,通過遍歷KStore進行部分保存。
遍歷互鎖樹數(shù)據(jù)庫以便從根節(jié)點訪問每個節(jié)點是遍歷互鎖樹數(shù)據(jù)庫結構的第三個方法。因此,可以通過根節(jié)點的所需約束條件表,遍歷KStore,接著通過來自所需約束條件中的每個根節(jié)點的所有asCase鏈路,而進行部分保存。
恢復過程流程圖7顯示恢復過程320的優(yōu)選實施例,直至過程完成為止。如果需要,其可被嚴密地嵌入到某些其它處理過程。在恢復過程的優(yōu)選實施例中,在恢復互鎖樹數(shù)據(jù)庫(這里縮寫為K)之前首先讀出所需要的支持結構321。這可包括例如哪些粒子對于這個K是已知的(有時稱為基本根節(jié)點或傳感器或傳感器列表),對于K,需要在存儲器中分配什么尺寸,是否有可為K定址的Kengine可處理的內(nèi)部觸發(fā)器和其它功能等等之類信息。如果用戶總是將相同的支持結構恢復到相同種類的KStore,則這個步驟可能是多余的,假設每次用相同的支持結構被恢復。假定KStore當前沒有廣泛的使用,優(yōu)選使用處理過程321作為標準,除非和直至這時間或對于該類環(huán)境不再是有用的。為了恢復互鎖樹數(shù)據(jù)庫,必須恢復所有的節(jié)點包,因為它們被順序地存儲,最容易的恢復方式是以與它們在保存時被創(chuàng)建次序相同的次序的串行恢復。優(yōu)選從具有早已恢復的asCase或asResult表參考節(jié)點的這些節(jié)點開始,通過避免在恢復期間用于從在指向舊存儲器位置的指針中的以前的地址改變到新的存儲器位置的迭代搜索而加速恢復過程。編程領域技術人員能夠理解所述幾種恢復操作的方式,而不依靠不適當?shù)膶嶒瀬韯?chuàng)建執(zhí)行這些方式所需要的代碼,特別是一起閱讀以下的幾個段落時。
因此,首先讀取第一包節(jié)點322,并使用所工作的計算機的操作系統(tǒng),在步驟323為此新節(jié)點分配存儲器。當為節(jié)點323分配存儲器之后,創(chuàng)建或開始創(chuàng)建324轉換表,該節(jié)點的轉換表入口通過節(jié)點包存儲的舊存儲器地址和由操作系統(tǒng)或計算機系統(tǒng)剛分配給這個節(jié)點的新存儲器地址(見圖7)。
另一方面,應當看到,對于可以透明地和可靠地移動整塊存儲器的機器和操作系統(tǒng),數(shù)據(jù)庫的尺寸作為分配給相同存儲器地址的一個單元,在該類系統(tǒng)中,不需要具體保存和恢復過程,盡管其對于部分保存和減小整塊保存所需的存儲裝置的尺寸是很有用的。但是,目前有一些已經(jīng)被討論但沒有完全實施的存儲器文件類型,因此,需要求助于更復雜的保存和恢復機制,例如本發(fā)明所述。
一旦包含節(jié)點的舊地址和新地址的節(jié)點表入目被創(chuàng)建和輸入到轉換表324,就進到步驟325,其中轉換Case和Result指針,并把轉換后的Case和Result指針連同任何附加字段一起存儲在新節(jié)點。對于這個恢復版本,立即查找Case和Result指針的舊地址。傾向以這樣的次序保存它們,由此在需要它們之前出現(xiàn)在轉換地址表中。
如上所述,本發(fā)明的優(yōu)選實施例不保存asCase表和asResult表,而是或者不保存與它們有關的任何東西,或者作為替代,把指針計數(shù)值保存在列表中。為了重建asCase表和asResult表,及其各個指針,恢復過程進到步驟326。步驟326中,恢復過程把新節(jié)點地址存儲在Case節(jié)點的asCase表,并把新節(jié)點地址存儲在被恢復的節(jié)點的Result節(jié)點的asResult表中。待恢復的第一節(jié)點的新地址,即EOT節(jié)點和其它類型的基本根節(jié)點,優(yōu)選地在步驟321的一部分被建立,由此當從節(jié)點包建立新的節(jié)點時,可以直接指向這些EOT節(jié)點和基本根節(jié)點的新地址,而不需要第二迭代過程,雖然這樣的處理過程并不超出本發(fā)明的范圍,只是不是優(yōu)選過程。
一旦新節(jié)點地址被存儲在asCase和asResult表中,恢復過程的優(yōu)選方法就進到步驟327,由此確定所討論的節(jié)點包是否為待恢復的最后的節(jié)點包。如果節(jié)點包不是待恢復的最后節(jié)點包,則過程在步驟322繼續(xù)進行,并且處理新的節(jié)點包。如果最后的節(jié)點包已被處理,則可以在步驟327移動到問題之外。這是一個迭代過程,其連續(xù)進行直至問題327達到最后的節(jié)點包為止。這時,互聯(lián)樹數(shù)據(jù)結構應當被恢復到新的存儲器。
圖8示出了地址轉換表40。圖中示出了相應于新存儲器地址表42的舊存儲器地址表41,由此例如舊存儲器地址1(41a)將對應于新的存儲器地址1(42a)等等。因此,每次使用舊的存儲器地址時,即被恢復,被恢復的節(jié)點/包被裝載到的新地址被保持在存儲器地址轉換表40中,并鏈接到舊存儲器地址。優(yōu)選地在步驟328中完成這個表之后,建立了可能需要參考這個地址轉換表的任何附加支持結構。此時,已具有恢復的K,并且可以退出過程329。
另外,在重建KStore,即恢復它時,可以首先恢復來自基本根節(jié)點的數(shù)據(jù),因此使得恢復過程更快速地執(zhí)行,因為基本根節(jié)點的建立將快速地建立大的鏈接網(wǎng)絡。
上述方法和系統(tǒng)可以以存儲在計算機可讀媒體上的程序代碼(即,指令)被實施,例如軟盤、CD-ROM、DVD-ROM、DVD-RAM、硬盤驅動、或任何其它機器可讀的貯存媒體,包括還可得到的光學和納米技術貯存裝置等等,因為媒體既不能改變結構的操作,也不能改變本文描述的方法。在所有的數(shù)據(jù)貯存裝置中,當程序代碼被裝載在例如計算機的機器并被執(zhí)行時,此機器變?yōu)橛糜趯嵺`本發(fā)明的方法的設備,并提供如這里描述的本發(fā)明的系統(tǒng)的形式。本發(fā)明也可以以程序代碼的形式被實施,該程序代碼通過RF或某些傳輸媒體,例如通過電線或電纜,通過光纖或透明光學裝置,通過包括因特網(wǎng)或內(nèi)聯(lián)網(wǎng)的網(wǎng)絡,或經(jīng)由任何其它傳輸形式被傳送,其中當程序代碼被接收和被裝載在例如計算機的機器,并且被執(zhí)行時,機器變?yōu)橛糜趯嵺`本發(fā)明的方法的設備,并且提供如這里描述的本發(fā)明的系統(tǒng)的形式。當在通用處理器上實施時,程序代碼與處理器相組合,提供類似于特定邏輯電路操作的專用設備,這些邏輯電路本身可被用于本發(fā)明。程序代碼可以用高級別編程語言,例如C,C++,或Java實施。作為替代,程序代碼可以用匯編或機器語言實施。在任何情況下,語言可以是匯編的或釋譯的語言。
應當指出,上述的例子僅僅起到說明的作用,而決不能看作為本發(fā)明的限制。例如,KStore互鎖樹數(shù)據(jù)庫可以通過使用面向對象技術、程序過程技術,其混合技術,或任何其它適當?shù)姆椒▉韺嵤?。而且,盡管所示例子顯示出被存儲在計算機系統(tǒng)的存儲器的數(shù)據(jù)組單元,但本領域技術人員可以理解,此功能可以用許多不同的方式實施,以及可被用于專用設備和通用計算機系統(tǒng)。對于設想的許多不同的實施例,本發(fā)明打算使用被存儲在多個遠程機器上的許多不同整體的許多不同數(shù)據(jù)單元組。
權利要求
1.一種用存儲器保存互鎖樹數(shù)據(jù)庫的方法,其中所述互鎖樹數(shù)據(jù)庫具有至少一個BOT節(jié)點、至少一個子部件節(jié)點和至少多個根節(jié)點,其中所述BOT節(jié)點具有指向子部件節(jié)點的asCase指針表,其中所述子部件節(jié)點具有指向其它子部件節(jié)點的asCase指針表,以及其中所述根節(jié)點具有指向依賴于所述BOT節(jié)點的子部件節(jié)點的asResult指針表,其中所述方法包括遍歷互鎖樹數(shù)據(jù)庫以訪問每個節(jié)點,創(chuàng)建對于每個節(jié)點的節(jié)點包,其中所述節(jié)點包創(chuàng)建過程包括至少獲取每個節(jié)點的Case指針和Result指針,但不從所述asCase表獲取指針,并且不從所述asResult表獲取指針,以及把節(jié)點包寫入到另一個存儲器。
2.如權利要求1所述的方法,其中所述從一個存儲器寫入到另一個存儲器是通過使用主存儲器作為所述一個存儲器完成的。
3.如權利要求1所述的方法,其中所述寫入是寫入到至少一個下列類型存儲器,包括相對永久的并可由計算機獲得的一種類型,安放所述一個存儲器的機器的本地存儲器、通過網(wǎng)絡可訪問的一個系統(tǒng)中的遠端存儲器、在可分區(qū)的機器中的分區(qū)存儲器、所述一個存儲器的另一個部分。
4.如權利要求1所述的方法,還包括把所述節(jié)點包恢復到一個有效存儲器的步驟。
5.如權利要求1所述的方法,其中至少某些所述節(jié)點包被保存在更大的包內(nèi),以及當所述更大的包被寫入到另一個存儲器時,所述更大的包被寫入有關所述節(jié)點的元數(shù)據(jù)。
6.如權利要求1所述的方法,其中所述創(chuàng)建節(jié)點包的過程還包括從具有asCase指針表和asResult指針表的任何節(jié)點獲取所述指針表中的指針計數(shù)值。
7.如權利要求6所述的方法,其中所述獲取包括對列表上的指針進行計數(shù),以確定計數(shù)值。
8.如權利要求1所述的方法,還包括選擇節(jié)點包類型,在所述創(chuàng)建節(jié)點包過程中來自所述節(jié)點的信息將被存儲為該類型。
9.如權利要求8所述的方法,其中所述選擇過程提供多達三種類型的節(jié)點包以供選擇,所述三種類型包括第二類型,其不具有關于asCase指針表的信息,也不具有關于asResult指針表的信息;第一類型,具有保持在asCase指針表中的指針計數(shù)值字段和具有保持在asResult指針表中的指針計數(shù)值字段;以及第三類型,具有保持在asCase指針表中的指針或在asResult指針表中的指針計數(shù)值字段,但不同時保持二者。
10.如權利要求9所述的方法,其中所述第三種類型的節(jié)點包把所述保持的指針表計數(shù)值存儲在被稱為Point List Count(指針表計數(shù)值)的字段。
11.如權利要求9所述的方法,其中供選擇的至少一個類型是不具有關于asCase指針表的信息,也不具有關于asResult指針表的信息的節(jié)點包。
12.如權利要求9所述的方法,其中供選擇的至少一個類型是具有保持在asCase指針表中的指針計數(shù)值字段和具有保持在asResult指針表中的指針計數(shù)值字段的包。
13.如權利要求9所述的方法,其中供選擇的至少一個類型是具有保持在asCase指針表中的指針計數(shù)值字段或具有保持在asResult指針表中的指針計數(shù)值字段,但不同時具有二者數(shù)值的包。
14.如權利要求1所述的方法,還包括保存支持結構。
15.如權利要求14所述的方法,其中所述保存支持結構是在兩個步驟中完成的,第一步驟是在恢復過程期間構建地址轉換表之前保存可被恢復的任何支持結構,以及第二步驟是在所有的其余節(jié)點包被恢復和地址轉換表完成之后保存可使用的任何支持結構。
16.如權利要求14所述的方法,其中也被保存的所述支持結構包括至少一個下列支持結構文件頭,包含文件類型和創(chuàng)建日期,文件ID,對于基本根節(jié)點的數(shù)值和指向其數(shù)值的地址表,代表互鎖樹數(shù)據(jù)庫的最終產(chǎn)品節(jié)點的字符串表,描述它所處的基本OS或計算機系統(tǒng)的數(shù)據(jù)結構的元數(shù)據(jù),用于文件本身的密碼保護,表示指針表在節(jié)點中如何排序的代碼,對于在特定的環(huán)境下恢復結構所需要的特性信息,創(chuàng)建保存文件的保存程序的版本和周期,OS基本結構信息,至少包括所使用字段的尺寸信息,基本根節(jié)點數(shù)值或指向其數(shù)值的指針和任何相關的界定符,元數(shù)據(jù),包括字段類型,例如用戶規(guī)定的類型,列描述和許可證,KState變量,包括交換開關、數(shù)據(jù)流、節(jié)點結構,數(shù)據(jù)源,包括類型位置和附屬數(shù)據(jù)流的ID信息,安全性,包括管理密碼、許可證、保存的查詢位置和觸發(fā)器,以及與元數(shù)據(jù)有關的XML。
17.如權利要求1所述的方法,其中在所述創(chuàng)建節(jié)點包過程中對于每個節(jié)點包保存至少下列信息,Result指針,Case指針,任何附加字段數(shù)據(jù),舊存儲器地址,以及任何計數(shù)字段數(shù)據(jù)。
18.如權利要求17所述的方法,其中在所述創(chuàng)建節(jié)點包過程中與包尺寸有關的數(shù)值也保存在所述節(jié)點包中。
19.如權利要求14所述的方法,其中所述寫入支持結構過程把所述支持結構保存到文件頭,用于由所述方法創(chuàng)建的、保存的互鎖樹數(shù)據(jù)庫數(shù)據(jù)文件。
20.如權利要求17所述的方法,其中所述節(jié)點包被保存在包含一組所述節(jié)點包的大包中。
21.如權利要求20所述的方法,其中被保存在所述大包中的,在所述一組節(jié)點中的每個節(jié)點包共享至少一個特性,以及其中所述特性的指示被存儲在所述大包的頭區(qū)域。
22.如權利要求21所述的方法,還包括保存多個大包,每個具有一組節(jié)點包,至少一個特性方面與其它的大包的節(jié)點包不同。
23.如權利要求1所述的方法,其中所述保存互鎖樹數(shù)據(jù)庫從一個存儲器到另一個存儲器還包括以下步驟保存支持結構到所述另一個存儲器。
24.一種機器可讀的信號媒體,包含具有在權利要求1的處理過程中創(chuàng)建的一組節(jié)點包的數(shù)據(jù)文件。
25.如權利要求24所述的機器可讀的信號媒體,其中所述媒體是磁盤。
26.一種機器可讀的數(shù)據(jù)媒體,在其中包括一組指令,該組指令在被裝載到計算機和允許執(zhí)行時,使得所述計算機執(zhí)行權利要求1的方法。
27.一種從保存的互鎖樹數(shù)據(jù)庫數(shù)據(jù)文件恢復互鎖樹數(shù)據(jù)庫的方法,其中所述互鎖樹數(shù)據(jù)庫在按照所述方法被恢復后將具有至少一個BOT節(jié)點、至少一個子部件節(jié)點和至少多個根節(jié)點,其中所述BOT節(jié)點具有指向子部件節(jié)點的asCase指針表,其中所述子部件節(jié)點具有指向其它子部件節(jié)點的asCase指針表,以及其中所述根節(jié)點將具有指向依賴于所述BOT節(jié)點的子部件節(jié)點的asResult指針表,其中所述恢復的方法包括從所述保存的互鎖樹數(shù)據(jù)庫數(shù)據(jù)文件,獲得支持信息,根據(jù)至少一部分所述支持信息確定存儲器中的區(qū)域,對于讀取的每個節(jié)點包,從所述數(shù)據(jù)文件迭代地讀節(jié)點包直至所有的節(jié)點包被讀過為止分配存儲器,并把對于從在主存儲器上所述讀出的節(jié)點包所創(chuàng)建的新節(jié)點分配的新存儲器地址存儲在計算機系統(tǒng),創(chuàng)建用于每個讀過的節(jié)點包的地址轉換表,并把包括所述讀過的節(jié)點包的至少舊地址的信息增加到所述轉換表,所述轉換表具有來自分配步驟的、對于每個節(jié)點包的所述新存儲器地址與對于所述讀過的節(jié)點包的所述舊存儲器地址之間的對應關系。
28.如權利要求27所述的方法,還包括使用所述地址轉換表從舊存儲器地址找出對于從以前已讀出的、任何所述讀過的節(jié)點包創(chuàng)建的節(jié)點的新存儲器地址。
29.如權利要求27所述的方法,其中所述迭代讀取節(jié)點包的步驟是在執(zhí)行子部件節(jié)點和最終產(chǎn)品節(jié)點之前,首先執(zhí)行BOT和基本根節(jié)點。
30.如權利要求27所述的方法,還包括當從所述數(shù)據(jù)文件讀出最后的節(jié)點包之后,從所述數(shù)據(jù)文件讀出最后的支持結構信息,其中所述最后的支持結構信息具有依賴于以前確定的節(jié)點地址的特性。
31.如權利要求27所述的方法,其中在所述數(shù)據(jù)文件中的所述節(jié)點包在所述方法之前的保存操作期間被設置成包含頭信息,所述頭信息包括關于所述數(shù)據(jù)文件的元數(shù)據(jù),所述元數(shù)據(jù)提供識別信息,以易于實行所述讀出步驟,由此,所述讀出步驟首先讀出所述識別信息,以便決定數(shù)據(jù)文件中的所有包的節(jié)點包的讀出次序。
32.如權利要求27所述的方法,其中在所述數(shù)據(jù)文件中的所述節(jié)點包在所述方法之前的保存操作期間被安排在大包中,所述大包包含頭信息,所述頭信息包括所述大包中的所有節(jié)點包的元數(shù)據(jù)。
33.如權利要求32所述的方法,其中數(shù)據(jù)文件中的幾個大的包按次序被讀出,由此,首先讀出包含最低級別BOT節(jié)點包的大包,以及首先讀出在每個所述大的包內(nèi)的BOT節(jié)點包和基本根節(jié)點包,然后在讀出下一個大包的節(jié)點包之前讀出包含其它節(jié)點包的大包,以及在讀出具有在所述一個級別以上的級別上的節(jié)點包的任何大的包之前,讀出一個級別上的所有的大包。
34.如權利要求32所述的方法,其中在所述讀出步驟之前,確定正在讀出哪種類型的節(jié)點包,以及所述確定是根據(jù)讀出關于節(jié)點包的支持信息作出的。
35.如權利要求27所述的方法,其中在所述讀出步驟之前,確定正在讀出哪種類型的節(jié)點包,以及所述確定是根據(jù)檢查大包的第一包作出的,所述包包含所述大包中的所有節(jié)點包的元數(shù)據(jù)。
36.一組編碼的計算機指令,該組指令在被裝載到計算機和在所述計算機中執(zhí)行時,使得所述計算機執(zhí)行權利要求27的方法。
37.一種計算機可讀的媒體,用于計算機指令和包含權利要求36的一組編碼計算機指令的數(shù)據(jù)。
38.一種計算機系統(tǒng),運行編碼的指令組,以執(zhí)行權利要求27的方法。
39.一種用存儲器保存互鎖樹數(shù)據(jù)庫的方法,其中所述互鎖樹數(shù)據(jù)庫具有至少一個BOT節(jié)點、至少一個子部件節(jié)點和至少多個根節(jié)點,其中所述BOT節(jié)點具有指向子部件節(jié)點的asCase指針表,其中所述子部件節(jié)點具有指向其它子部件節(jié)點的asCase指針表,以及其中所述根節(jié)點具有指向依賴于所述BOT節(jié)點的子部件節(jié)點的asResult指針表,其中所述方法包括遍歷互鎖樹數(shù)據(jù)庫以訪問每個節(jié)點,創(chuàng)建對于每個節(jié)點的節(jié)點包,其中所述節(jié)點包創(chuàng)建過程包括至少獲取每個節(jié)點的case指針和result指針,但不從所述asCase表獲取指針,以及不從所述asResult表獲取指針,以及把節(jié)點包寫入到所述存儲器。
40.如權利要求13的方法,其中把附加字段加到節(jié)點包,以區(qū)分由在指針表計數(shù)值中的計數(shù)值表示的指針表類型。
全文摘要
一種基于樹的數(shù)據(jù)庫,其包括可以被生成和/或訪問的互鎖樹的樹林,可能需要專用的保存和恢復過程,以保證所有的鏈路被適當?shù)乇3郑还苁侨窟€是局部被恢復。以前的過程對基于樹的數(shù)據(jù)庫的已知特性起作用,生成一個元數(shù)據(jù)文件,并且把結構的每個節(jié)點包化,用所考慮的舊存儲器地址精確的保存鏈路和鏈路表。這顯示不是通過保存所有的鏈路來構建一個保存文件,而是使用新的恢復過程來恢復鏈路。
文檔編號G06F17/30GK101091181SQ200580038950
公開日2007年12月19日 申請日期2005年9月29日 優(yōu)先權日2004年10月5日
發(fā)明者簡·卡馬貝爾·瑪澤加特, 簡·萬-庫侖·克萊爾 申請人:尤尼西斯公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1