專利名稱:數(shù)據(jù)結構管理裝置、數(shù)據(jù)結構管理系統(tǒng)、數(shù)據(jù)結構管理方法以及用于記錄數(shù)據(jù)結構管理程 ...的制作方法
技術領域:
本發(fā)明涉及數(shù)據(jù)結構管理裝置、數(shù)據(jù)結構管理系統(tǒng)、數(shù)據(jù)結構管理方法以及用于記錄數(shù)據(jù)結構管理程序的計算機可讀介質。特別地,在多個數(shù)據(jù)結構被設置在一個或多個計算機存儲單元中的情況下,本發(fā)明涉及一種技術,通過把用于保持特定數(shù)據(jù)結構和另一種數(shù)據(jù)結構之間相等所需的被更改數(shù)據(jù)傳送到另一種數(shù)據(jù)結構,反映到其它數(shù)據(jù)結構上,從而減少數(shù)據(jù)通信量和并且容易并且有效地維護和管理多個數(shù)據(jù)結構。
背景技術:
通常,各種數(shù)據(jù)結構是通過用特定的技術在作為計算機的一般主存儲器的具有一個或多個地址的隨機存取存儲器(在下文中稱為“RAM”)中存儲指針而構成的,以提高信息表示的效率和增加操作速度。
例如,存在各種技術,用于通過在對應于第一節(jié)點的RAM的一部分中存儲用于另一個節(jié)點的特定指針而把多個數(shù)據(jù)中的結構表達為線性表、二元樹、樹或者各種圖形。這些數(shù)據(jù)結構提供特定的固定操作和功能。
但是,現(xiàn)在沒有一種已知的有效維護/管理技術,用于提供設置在一個或多個RAM中的多個數(shù)據(jù)結構的功能之間的等價對應。
下面描述用于維護多個數(shù)據(jù)結構之間的等價性的常規(guī)技術。
首先,存在有一種技術用于通過用完全相同的內容和次序,不但對單個數(shù)據(jù)結構而且對多個數(shù)據(jù)結構中的每一個數(shù)據(jù)結構執(zhí)行所有更改數(shù)據(jù)結構功能的更新操作以及該更新操作所需的搜索操作,而保證多個數(shù)據(jù)結構之間的功能等價性。
但是,利用第一技術,維護和管理被反映為一個更新(更改)(在下文中稱為“復制方數(shù)據(jù)結構(copy side data structure)”)的其它數(shù)據(jù)結構所需的麻煩或計算時間與維護和管理在更改源方的數(shù)據(jù)結構(在下文中稱為“原版方數(shù)據(jù)結構(master side data structure)”)所需的麻煩相同。
更加具體來說,為了更改數(shù)據(jù)結構,在許多情況中,在該更改之前根據(jù)搜索更改變化的細節(jié)的結果,執(zhí)行復雜的搜索操作。相應地,利用第一技術,除非對復制方數(shù)據(jù)結構也執(zhí)行包括對原版方數(shù)據(jù)結構執(zhí)行所需搜索的相同更改處理,否則不能夠提供兩種數(shù)據(jù)結構之間的等價性。但是,對于第一技術,用于原版方數(shù)據(jù)結構的更改處理與用于復制方數(shù)據(jù)結構的更改反映處理需要相同的計算時間量(資源)。結果,只要存在允許執(zhí)行其它處理的冗余空間,例如僅僅需要執(zhí)行搜索,則在雙方之間沒有什么差別。相應地,需要相當?shù)亩嗟臅r間來實現(xiàn)數(shù)據(jù)結構之間的等價,并且不能在離散環(huán)境中執(zhí)行該處理的有效劃分,例如在該環(huán)境中,在復制方執(zhí)行與原版方不同的許多搜索請求,而原版方集中在更改請求的處理上。簡而言之,不可能用第一技術來有效地反映僅僅對一種數(shù)據(jù)結構到其它數(shù)據(jù)結構所作的這些更改,并且減少管理其它數(shù)據(jù)結構的成本。
其次,存在一種技術,為了保持包含指針值的數(shù)據(jù)結構與RAM的內容完全相同,在更改操作過程中更改的所有指針被一個接一個地發(fā)送,并且反映到更改目標方。利用該第二技術,各個數(shù)據(jù)結構(更加準確來說,每個節(jié)點構成各個數(shù)據(jù)結構)被存儲在RAM中的被認為具有相同地址的部分中,并且對一種數(shù)據(jù)結構的更新(即,指針更改信息)被復制到表示其它數(shù)據(jù)結構的RAM中,作為在每個地址的存儲器內容中的更改。只要采用用于執(zhí)行適當?shù)牡刂忿D換的方法,可以通過在單個存儲單元(或計算機)中或者在多個存儲單元(或計算機)之間在相同的地址存儲相同表達方式的指針而構造多個等價的數(shù)據(jù)結構。通過按照這種方式構造多個數(shù)據(jù)結構并且簡單地用其它數(shù)據(jù)(代碼)復制該指針而把在數(shù)據(jù)結構中的更改反映到其它數(shù)據(jù)結構。
但是,該第二技術不能夠應用于功能相同的一些數(shù)據(jù)結構,而且使該指針結構采用不同的形式。例如,存在一種數(shù)據(jù)結構,其被稱為自調節(jié)的數(shù)據(jù)結構,其適當?shù)卣{節(jié)指針結構,從而使得被經常訪問的節(jié)點變?yōu)橐粋€根節(jié)點。該自調節(jié)數(shù)據(jù)結構甚至用不伴隨功能更改的搜索操作來把該數(shù)據(jù)結構格式變?yōu)槠渌δ艿葍r的格式。利用該自調節(jié)數(shù)據(jù)結構,為了使所存儲的指針值相匹配并且保持等價,必須復制作為包括搜索操作的所有操作的結構而出現(xiàn)的對指針值(每個地址的內容)的所有更改。該復制需要把極大量的數(shù)據(jù)更改信息傳送到其它數(shù)據(jù)結構(或者用于管理數(shù)據(jù)結構的其它裝置),因此除了管理的麻煩之外,該通信量變得相當大。
否則,在例如高平衡樹(high-balanced tree)這樣的數(shù)據(jù)結構的情況中,可以用一個更改操作而更改大量指針,結果必須傳送的更改數(shù)據(jù)量增加。并且,在第二技術中,存在一種限制,從而必須完全地匹配在原版方與復制方的數(shù)據(jù)結構的構造(形式)。更加具體來說,在二元樹數(shù)據(jù)結構的情況中,不但必須使它們與二元搜索樹等價而且使在相同對應節(jié)點中的所有父/子關系相一致。(但是,如果適當?shù)貓?zhí)行上述地址轉換,則不一定要使每個節(jié)點的地址和指針值相等)。換句話說,對于第二技術,不能夠使用一種數(shù)據(jù)結構,其與原版方和復制方之間的二元搜索樹相等價,但是與特定二元樹結構的情況不同。
由于該原因,例如當用完全不同的技術管理在原版方和復制方上的樹型結構時,換句話說,例如在原版方利用上述高平衡樹來管理樹型結構而復制方利用分裂樹來執(zhí)行搜索操作的情況下,即使當該樹型結構要被更改時,在作出更改之前的樹型結構(即,樹的形狀)與在必須反映所更改數(shù)據(jù)之前在復制方的數(shù)據(jù)結構完全不同。相應地,當僅僅原版方的樹型結構被更改時,被更改的指針不能夠被反映在復制方樹型結構中。
特別地,如果嘗試使用上述第一或第二技術實現(xiàn)分別在實體上不同的計算機的主存儲器中設置的多個數(shù)據(jù)結構中實現(xiàn)等價,則會對連接這些計算機的數(shù)據(jù)傳輸通道(網絡)增加相當大的負擔,并且對包含數(shù)據(jù)傳輸通道的作為一個整體的系統(tǒng)具有顯著的影響。
另外,即使對于各種平衡樹,其是僅僅在更新操作的情況中更改數(shù)據(jù)結構形式的數(shù)據(jù)結構,大量指針與該形式更改一同被更改。結果,為了傳送所有這些指針的更改信息,盡管沒有達到上述自調節(jié)數(shù)據(jù)結構那樣的程度,但是最終會對連接存儲有數(shù)據(jù)結構的每個RAM的數(shù)據(jù)傳輸路徑施加相當大的負擔。
本發(fā)明要解決如上文所述的常規(guī)數(shù)據(jù)結構管理技術的問題,即為了實現(xiàn)在一個或多個RAM中設置的多個數(shù)據(jù)結構的功能之間的等價性的維護和管理需要大量的計算時間,存在大量的通信,因此效率低。
另外,本發(fā)明的目的是提供一種數(shù)據(jù)結構管理裝置、數(shù)據(jù)結構管理系統(tǒng)、數(shù)據(jù)結構管理方法、以及用于存儲數(shù)據(jù)結構管理程序的存儲介質,其通過用最少量的通信量和計算時間來反映對設置在一個或多個RAM(存儲區(qū)域)上的一種數(shù)據(jù)結構到另一種數(shù)據(jù)結構的更改,而能夠有效地維護和管理多個數(shù)據(jù)結構之間的等價。
本發(fā)明的另一個目的是容易地維護和管理在設置于相互唯一地址上的部分或整個數(shù)據(jù)結構之間的等價性。
發(fā)明內容
本發(fā)明根據(jù)預定標準配置(standard configuration)在多個數(shù)據(jù)結構中從用于特定數(shù)據(jù)結構的指針更改數(shù)據(jù)提取保持功能相同所需的被更改數(shù)據(jù),并且僅僅把所提取的被更改數(shù)據(jù)發(fā)送到應當反映該更改的數(shù)據(jù)結構。
為了實現(xiàn)這種功能,根據(jù)本發(fā)明,一種數(shù)據(jù)結構管理系統(tǒng)集中在任意數(shù)據(jù)結構的標準配置中的指針信息的更改,如果采用標準配置,通過從所更改的指針信息中省略可能被采用或者恢復的指針數(shù)值而產生被更改數(shù)據(jù),并且把它發(fā)送到必須保持與原版方數(shù)據(jù)結構的等價性的復制方數(shù)據(jù)結構。由此,可以減少更改數(shù)據(jù)通信量,并且用于更改反映處理的處理時間減少,而不改變數(shù)據(jù)結構更改程序。
另外,取代指針信息,可以把相關位置信息發(fā)送到復制格式的數(shù)據(jù)結構。
附圖簡述
圖1為示出根據(jù)本發(fā)明第一實施例的數(shù)據(jù)結構管理系統(tǒng)的功能結構的方框圖。
圖2為示出根據(jù)本發(fā)明第一實施例的數(shù)據(jù)結構管理方法的處理程序的概況的流程圖。
圖3為用兩個指針表示的二元樹中的指針結構的示意圖。
圖4為示出在圖3的二元樹中的樹型結構的示意圖。
圖5為示出存儲在二元樹的節(jié)點中的指針(地址)的示意圖。
圖6為示出在空白樹的情況中用于一個保留區(qū)(pot)的節(jié)點的指針的示意圖。
圖7為示出一個保留區(qū)與根節(jié)點(root)之間的節(jié)點指針關系的示意圖。
圖8為示出沒有子節(jié)點(child)的節(jié)點指針的示意圖。
圖9為示出僅僅具有右子節(jié)點的節(jié)點指針的示意圖。
圖10為示出僅僅具有左子節(jié)點的節(jié)點指針的示意圖。
圖11為示出具有左和右子節(jié)點的節(jié)點指針的示意圖。
圖12為示出數(shù)據(jù)結構的一個例子的示意圖,其中在圖3中的二元樹被寫入以包含一個保留區(qū)。
圖13為示出與圖12中所示的數(shù)據(jù)結構相等價的標準配置的一個例子的示意圖。
圖14為示出在已經執(zhí)行更改操作之后在圖12中的數(shù)據(jù)結構的一個例子的示意圖。
圖15為示出在已經執(zhí)行類似于圖14中的更改操作之后在圖13中的標準配置的一個例子的示意圖。
圖16為示出在已經執(zhí)行添加到圖14中的數(shù)據(jù)結構的更改操作之后的數(shù)據(jù)結構的例子的示意圖。
圖17為示出與原版方數(shù)據(jù)結構不同的復制方數(shù)據(jù)結構的一個例子的示意圖。
圖18為示出通過對圖17中的數(shù)據(jù)結構執(zhí)行節(jié)點添加操作所獲得的與圖16中的數(shù)據(jù)結構相等價的數(shù)據(jù)結構的一個例子的示意圖。
圖19為示出根據(jù)第一實施例的變型例子具有一個保留區(qū)以及引用該保留區(qū)的變量的指針結構的例子的示意圖。
圖20為示出根據(jù)第一實施例的一個變型例子在一個保留區(qū)與構成該數(shù)據(jù)結構的每個節(jié)點之間的指針結構的一個例子的示意圖。
圖21為示出根據(jù)本發(fā)明第二實施例的數(shù)據(jù)結構管理系統(tǒng)的功能配置的方框圖。
圖22為示出根據(jù)第二實施例的數(shù)據(jù)結構的一個例子的示意圖。
圖23為通過把節(jié)點f添加到圖22中的數(shù)據(jù)結構而獲得的一種數(shù)據(jù)結構的例子的示意圖。
圖24為示出根據(jù)本發(fā)明第三實施例的數(shù)據(jù)結構管理系統(tǒng)的功能配置的方框圖。
圖25為示出圖12的數(shù)據(jù)結構中,在緊接著位于節(jié)點f的右側的節(jié)點g被偏移(splaying)并且節(jié)點g移動到根節(jié)點的位置之后的一種數(shù)據(jù)結構的示意圖。
圖26為示出圖25的數(shù)據(jù)結構中,在緊接著位于節(jié)點f的左側的節(jié)點e被偏移并且節(jié)點e移動到根節(jié)點的位置之后的一種數(shù)據(jù)結構的示意圖。
圖27為示出根據(jù)本發(fā)明的每個裝置的硬件配置的一個例子的示意圖。
具體實施例方式
在下文中,參照圖1至圖27詳細描述根據(jù)本發(fā)明的數(shù)據(jù)結構管理裝置、數(shù)據(jù)結構管理系統(tǒng)、數(shù)據(jù)結構管理方法以及存儲有數(shù)據(jù)結構管理程序的記錄介質的優(yōu)選實施例。
第一實施例下面參照圖1至圖20描述根據(jù)本發(fā)明的數(shù)據(jù)結構管理裝置、數(shù)據(jù)結構管理系統(tǒng)、數(shù)據(jù)結構管理方法以及存儲有數(shù)據(jù)結構管理程序的記錄介質的第一實施例。第一實施例構成在多個RAM上的二元搜索樹的數(shù)據(jù)結構,并且提供有效地保持數(shù)據(jù)結構之間的功能等價性的功能。
圖1為示出根據(jù)第一實施例的數(shù)據(jù)結構管理系統(tǒng)的一般功能配置的方框圖。如圖1中所示,根據(jù)第一實施例的原版方數(shù)據(jù)結構管理裝置10包括數(shù)據(jù)結構存儲單元20、數(shù)據(jù)搜索單元103、數(shù)據(jù)結構更改單元105、輸出數(shù)據(jù)提取單元107、標準配置存儲單元109、以及更改發(fā)送單元111。根據(jù)第一實施例的復制方數(shù)據(jù)結構管理裝置30包括數(shù)據(jù)結構存儲單元20、數(shù)據(jù)搜索單元303、更改反映單元301以及更改接收單元311。另外,在圖1中的結構是主-從型組合的一個例子,其中數(shù)據(jù)結構管理裝置10的數(shù)據(jù)結構存儲單元20是原版,并且原版數(shù)據(jù)結構的更改被反映到復制方數(shù)據(jù)結構管理裝置30的數(shù)據(jù)結構存儲單元20。第一實施例可以由任意其它結構構成,例如對等型結構,其中具有數(shù)據(jù)結構管理裝置10和數(shù)據(jù)結構管理裝置30的多個數(shù)據(jù)結構裝置相互連接,使得數(shù)據(jù)結構更改數(shù)據(jù)能夠相互交換。另外,在圖1中的結構被描述為在復制方上具有應當反映更改的單個數(shù)據(jù)結構;但是,只要通信功能能夠把相同的更改數(shù)據(jù)傳送到多個目標,則在復制方上可以具有多種數(shù)據(jù)結構。
在第一實施例中,利用由更改發(fā)送單元111和更改接收單元311所提供的通信功能,更改反映單元301把所發(fā)送的更改數(shù)據(jù)反映在復制方數(shù)據(jù)結構存儲單元20的數(shù)據(jù)結構上。在該更改數(shù)據(jù)被反映在復制方數(shù)據(jù)結構存儲單元20上之后,原版方的數(shù)據(jù)結構存儲單元20的數(shù)據(jù)搜索單元103和復制方的數(shù)據(jù)結構存儲單元20的數(shù)據(jù)搜索單元303的功能完全相同。換語話說,兩個數(shù)據(jù)結構存儲單元20可以對相同的搜索請求返回相同的結果。因此,通過兩個數(shù)據(jù)結構的等價性,可以在數(shù)據(jù)原版方和復制方之間共享數(shù)據(jù)。
原版方和復制方數(shù)據(jù)結構存儲單元20的數(shù)據(jù)結構是任意的數(shù)據(jù)結構,其功能互為等價。在此,功能等價意味著具有在相同邏輯序列(在本實施例的情況中為分類序列)中的每個節(jié)點,即功能等價性;但是,該指針結構本身互不相同。
數(shù)據(jù)搜索單元103和303在分別存儲在數(shù)據(jù)結構存儲單元20中的數(shù)據(jù)結構中,根據(jù)來自應用程序的請求搜索數(shù)據(jù)。
在原版方數(shù)據(jù)結構管理裝置10中的數(shù)據(jù)結構更改單元105適當?shù)馗拇鎯υ跀?shù)據(jù)結構存儲單元20中的原版方數(shù)據(jù)結構,并且把更改的指針信息或更改的數(shù)據(jù)傳送到輸出數(shù)據(jù)提取單元107。
輸出數(shù)據(jù)提取單元107通過參照存儲在標準配制存儲單元109中的標準數(shù)據(jù)結構,僅僅從更改的數(shù)據(jù)中提取改變數(shù)據(jù)結構中的每個節(jié)點的邏輯序列的指針信息,把所提取的指針信息發(fā)送到更改發(fā)送單元111。
更改發(fā)送單元111把所提取的指針信息發(fā)送到在與原版方數(shù)據(jù)結構管理裝置10相同的RAM或相同的計算機中或在本地或遠程連接的另一個計算機中的更改接收單元311。
同時,在復制方數(shù)據(jù)結構管理裝置30中的更改接收單元311把從原版方數(shù)據(jù)結構管理裝置10的更改發(fā)送單元111接收的指針信息(更改的數(shù)據(jù))發(fā)送到更改反映單元301。
該更改反映單元301把從更改接收單元311接收的指針信息(更改的數(shù)據(jù))反映到存儲在數(shù)據(jù)結構存儲單元20中的復制方數(shù)據(jù)結構。
接著,描述根據(jù)第一實施例的數(shù)據(jù)結構管理裝置的硬件結構。根據(jù)本發(fā)明,在數(shù)據(jù)結構管理系統(tǒng)中的數(shù)據(jù)結構管理裝置10和數(shù)據(jù)結構管理裝置30被集成在任何各種獨立計算機中,其中例如包括所謂的通用機器、工作站、PC、網絡終端以及各種移動終端,或者在與每個計算機相互連接的系統(tǒng)中。
圖27為示出根據(jù)本發(fā)明每個實施例構成數(shù)據(jù)結構管理系統(tǒng)的每個裝置的硬件結構的方框圖。
根據(jù)本發(fā)明每個實施例的數(shù)據(jù)結構管理系統(tǒng)10和30例如具有在圖27中所示的整個或部分的計算機結構。
如圖27中所示,該計算機包括例如微處理器這樣的中央處理單元270以及通過系統(tǒng)總線272相互連接的許多其它單元。該計算機例如具有隨機存取存儲器274;只讀存儲器276;把例如硬盤驅動器280這樣的外圍設備連接到系統(tǒng)總線272的I/O適配器278;把例如鍵盤284、鼠標286、擴音器288、話筒292或者觸摸屏(未示出)這樣的用戶接口設備連接到系統(tǒng)總線272的用戶接口適配器282;用戶接口設備284、286、288和292;把計算機系統(tǒng)連接到通信網絡的通信適配器294;把顯示裝置298連接到系統(tǒng)總線272的顯示適配器296;分別驅動軟盤、光盤、各種存儲卡等等的外部盤驅動器;以及外部存儲單元。
通過在包括軟盤、光盤和各種存儲卡這樣的各種計算機可讀記錄介質中存儲用于執(zhí)行用于本發(fā)明的數(shù)據(jù)結構管理處理的每個功能的程序,并且從使用外部盤驅動器的這些存儲介質執(zhí)行預定的讀出操作,存儲在記錄介質中的用于執(zhí)行本發(fā)明的數(shù)據(jù)結構管理處理的每個功能的這些程序可以安裝在計算機系統(tǒng)中。本發(fā)明的數(shù)據(jù)結構管理處理被通過這些程序的安裝而提供到隨機存取存儲單元274,并且由中央處理單元270所執(zhí)行。另外,通過把所有或部分程序提供到數(shù)據(jù)結構管理裝置10和30并且由中央處理單元101所執(zhí)行,而提供本發(fā)明的數(shù)據(jù)結構管理處理。應當注意,[存儲]介質包括通用的單元,其能夠[存儲]程序,例如存儲器、磁盤和光盤。
接著,利用在RAM中構造的作為二元搜索樹的要共享的多個數(shù)據(jù)結構的一個例子描述根據(jù)第一實施例的數(shù)據(jù)結構管理系統(tǒng)的處理。
圖2為示出由根據(jù)本發(fā)明第一實施例的數(shù)據(jù)管理系統(tǒng)所執(zhí)行的數(shù)據(jù)結構更改的處理并且把更改反映到其它數(shù)據(jù)結構的概況的流程圖。首先,數(shù)據(jù)結構更改單元105更改存儲在原版方數(shù)據(jù)結構存儲單元20中的數(shù)據(jù)結構(步驟S10)。輸出數(shù)據(jù)提取單元107從該數(shù)據(jù)結構中的更改指針信息提取指針信息,其起到改變存儲在標準配置存儲單元109中存儲的標準配置上的結構的作用(步驟S20)。更改傳輸單元111把所提取的指針信息傳送到復制方數(shù)據(jù)結構管理裝置30的更改接收單元311(步驟S30)。復制方數(shù)據(jù)結構管理裝置30把由更改接收單元311所接收的更改數(shù)據(jù)(指針信息)發(fā)送到更改反映單元301。該更改反映單元301通過訪問存儲在數(shù)據(jù)結構存儲單元20中的數(shù)據(jù)結構,用所接收的更改數(shù)據(jù)(指針信息)更新復制方數(shù)據(jù)結構。
首先,作為用于第一實施例中的數(shù)據(jù)結構的一個例子,描述每個節(jié)點存儲兩個指針的表示方法。在此,指針表示其它節(jié)點的地址。
二元樹可以通過僅僅在每個節(jié)點使用兩個指針而提供從父節(jié)點指向子節(jié)點以及從子節(jié)點指向父節(jié)點的一個雙向鏈接。
圖3示出采用這些雙向鏈接的稱為最左子節(jié)點-右節(jié)點表示(leftmost-child-right-sibling representation)的雙節(jié)點表示方法。
圖4示出把圖3的雙指針表示方法用二元樹表示,其中每個節(jié)點連接成一個樹形。
在圖3中,每個節(jié)點的兩個指針根據(jù)情況指向一個節(jié)點,表示如下(1)一個指針(右)如果有左子節(jié)點,則該指針指向左子節(jié)點;如果沒有左子節(jié)點并且有右子節(jié)點,則該指針指向右子節(jié)點。
如果沒有子節(jié)點,則該指針為空(零指針)。
(2)其它指針(左)如果它本身是一個左子節(jié)點并且具有右同胞(sibling)節(jié)點(同一個父節(jié)點的右子節(jié)點),則該指針指向右同胞節(jié)點;在其它情況中,如果存在父節(jié)點,即,它不是根節(jié)點,則該指針指向父節(jié)點。
在沒有父節(jié)點的情況中,即,這是根節(jié)點,則該指針為空(零指針)。
請注意,當查看如圖3所示的適當設置圖時容易忽略的是,在特定指針僅僅具有左或右子節(jié)點中的一個,不能僅僅通過察看指向子節(jié)點的指針(右)而判斷該指針指向左還是右子節(jié)點。為了區(qū)別該子節(jié)點是左還是右,對于每個節(jié)點需要一位額外的信息。該一位信息的內容可以表示每個節(jié)點是左還是右。另外,對于每個節(jié)點的子節(jié)點的指針可以表示左或右子節(jié)點。二元搜索樹的情況中,可以通過比較關鍵字而確定它是左還是右子節(jié)點。但是當由多個節(jié)點具有相同的關鍵字的情況下,不能使用該方法。通常,需要該一位信息來構成二元樹結構。
另一方面,對于指向同胞節(jié)點或父節(jié)點的其它(左)指針,可以通過最多兩次跟蹤該指針而確定它是指向同胞節(jié)點還是指向父節(jié)點。換句話說,一個節(jié)點的左指針指向右同胞節(jié)點僅限于該節(jié)點與由其左指針所指向的節(jié)點的左指針指向的節(jié)點的右指針所指向的節(jié)點相一致。但是,需要獲得關于該節(jié)點是否源于該指針的信息。在上述例子中,這可以通過判斷它是否為零指針而確定。
如上文所述,通過在每個節(jié)點存儲兩個指針和一個信息位可以實現(xiàn)一個二元樹。與使用三個指針的公知結構相類似,通過這種結構,可以在預定的時幀中執(zhí)行由父節(jié)點確定左子節(jié)點的操作、由父節(jié)點確定右子節(jié)點的操作、以及由子節(jié)點確定父節(jié)點的操作。但是,用于執(zhí)行這些操作的時間比使用三個指針的情況更長,因為需要對每個操作參照兩個或多個指針以及一個數(shù)位。相反,其優(yōu)點在于用于更改或設置每個節(jié)點的內容的操作,由于指針數(shù)較少,可以減少該操作的時間。
接著,具體描述在第一實施例中所用的兩個指針型的節(jié)點結構,以及其在樹型結構中的實現(xiàn)方式。
首先,描述在存儲單元(RAM)中實現(xiàn)根據(jù)第一實施例的數(shù)據(jù)結構的技術以及節(jié)點指針的格式。
要被使用的存儲單元由附加有地址的存儲單元所構成,使得任意地址可以存儲在每個存儲單元中。換句話說,地址被用作為指針。在下文中,當引用一個地址m的單元時,該單元由[m]所表示。
如圖5中所示,偶數(shù)地址單元[2n]和其隨后的單元[2n+1]被分配給單個節(jié)點的指針部分。在分配一個節(jié)點的情況中,使用該指針部分的偶數(shù)地址。換句話說,被分配有[2n]和[2n+1]的節(jié)點變?yōu)閇節(jié)點2n]。
用于由這些節(jié)點所構成的二元樹的根節(jié)點的指針被存儲在另一個單元中,并且包含該其它單元的整體被作為單個數(shù)據(jù)結構而處理。存儲用于根節(jié)點的指針被稱為該樹的保留區(qū)。指向該保留區(qū)的指針被存儲在根節(jié)點中,取代指向父節(jié)點或右同胞節(jié)點的指針。如圖5中所示,當保留區(qū)地址為m并且根節(jié)點為2n,2n被設置為[m],并且m被設置為[2m]。另一方面,當對應于保留區(qū)m的樹為空時,把0(零)設置到[m]。第一實施例的特征是提供唯一對應于作為節(jié)點的集合的一個二元樹的保留區(qū),并且按照這種方式把它作為一個單元而處理。
應當指出,由于地址0被用作為零指針,
不被用作為一個節(jié)點。但是,它可以被用作為一個保留區(qū)。對于零指針,任何地址可以用于該零指針,只要它可以被確定為不對應于存儲單元的地址或者不用作為節(jié)點的地址即可。
如圖5中所示,在不作為根節(jié)點的節(jié)點2n是左子節(jié)點并且具有右同胞節(jié)點2r,則2r+1被設置給[2n]。在其它情況中,即當2n是左子節(jié)點并且沒有右同胞節(jié)點或者當2n是右子節(jié)點時,父節(jié)點2p的地址2p被設置給[2n]。在前者中,由于[2n]的數(shù)值為奇數(shù)(換句話說,其LSB為1),則可以僅僅通過一個最低有效位(LSB)區(qū)分該數(shù)值為偶數(shù)(即,LSB為0)的后一種情況。由于這種區(qū)別不是本質上的改變,但是有效地簡化處理過程并且提高性能。
另一方面,如圖5中所示,當該節(jié)點沒有子節(jié)點時,對每個節(jié)點2n的其它指針[2n+1]設置0(零)。在2n具有左子節(jié)點2q的情況中,2q被設置給[2n+1],而無論是否存在右子節(jié)點。在2n沒有左子節(jié)點但是僅僅具有一個右子節(jié)點2r,則把2r+1設置給[2n+1]。在前者中,由于[2n+1]的數(shù)值為偶數(shù)(LSB為0),因此可以僅僅通過一個LSB而區(qū)分該數(shù)值為奇數(shù)(LSB為1)的后一種情況。
對于上述保留區(qū)、根節(jié)點、父節(jié)點和子節(jié)點的關系有如下6種情況。
a.如果僅僅有保留區(qū),則該樹為空(參見圖6)b.如果保留區(qū)具有相應的樹(參見圖7)c.如果節(jié)點沒有子節(jié)點(參見圖8)d.如果節(jié)點僅僅具有右子節(jié)點(參見圖9)e.如果節(jié)點僅僅具有左子節(jié)點(參見圖10)f.如果節(jié)點具有左和右子節(jié)點(參見圖11)
根據(jù)上述六種情況,關于父節(jié)點/同胞節(jié)點的連接信息例如可以用如下節(jié)點2x所確定。應當指出,關于每個確定條件的說明在注釋中表示,其中上述a至f的情況對應于2x。
(1)確定節(jié)點2x的父節(jié)點/同胞節(jié)點如果([[2x]]=2x),則2x為根節(jié)點,并且保留區(qū)為[2x]/*b.節(jié)點2n*/否則如果(([2x]&1)=1),則2x為左子節(jié)點,并且父節(jié)點為[[2x]-1],右同胞節(jié)點為[2x]-1/*f.節(jié)點2q*/否則如果(([[2x]+1]&1)=1),則2x為右子節(jié)點,父節(jié)點為[2x],并且沒有左同胞節(jié)點 /*d.節(jié)點2r*/否則2x為右子節(jié)點,父節(jié)點為[2x],并且左同胞節(jié)點為[2x]+1/*f.節(jié)點2r*/(2)確定節(jié)點2x的子節(jié)點如果([2x+1]=0),則2x沒有子節(jié)點 /*c.節(jié)點2p*/否則如果(([2x+1]&1)=1),則2x沒有左子節(jié)點,右同胞節(jié)點為[2x]+1/*d.節(jié)點2p*/否則如果(([[2x+1]]&1)=1),則2x的左子節(jié)點為[x+1],并且右子節(jié)點為[[2x+1]]-1 /*f.節(jié)點2p*/否則2x的左子節(jié)點為[2x+1],并且沒有右子節(jié)點/*e.節(jié)點2p*/
另外,如下處理可以用作為更改如上文所述構成的二元樹的處理。
(1)保留區(qū)域m與根節(jié)點為節(jié)點2n的空白二元樹相關。換句話說,以節(jié)點2n作用為根節(jié)點的二元樹被相關聯(lián)。在該情況中,該結構被通過上述a.至b.而更改。指針m被設置為[2n],并且指針2n被設置為[m]。
(2)節(jié)點2r被作為右子節(jié)點附加到節(jié)點2p,其沒有右子節(jié)點。換句話說,附加以節(jié)點2r作為根節(jié)點的二元樹。上述c或e是可以通過上述判斷處理識別處沒有右子節(jié)點的狀態(tài)。
在該結構從c更改為d的情況中,指針2p被設置給[2r],并且指針2r+1被設置給[2p+1]。另一方面,在該結構從e更改為f的情況中,指針2p被設置給[2r],指針2r+1被設置給[[2p+1]]。
(3)節(jié)點2q作為左子節(jié)點附加到節(jié)點2p上,其沒有左子節(jié)點。換句話說,附加以節(jié)點2q作為根節(jié)點的二元樹。上述c或e是可以用上述判斷處理識別沒有左子節(jié)點的條件。
在該結構從c更改為e的情況中,指針2p被設置給[2q],并且指針2q被設置給[2p+1]。
另一方面,在該結構從d更改為f的情況中,[2p+1]被設置給[2q],并且指針2q被設置給[2p+1]。
(4)節(jié)點2x或以節(jié)點2x作為根節(jié)點的子樹被從父節(jié)點分離??梢酝ㄟ^上述判斷處理確定d、e和f中的2q或2r對應于節(jié)點2x。
如果是d的2r,則把0(零)設置給[[2x]+1]。
如果是e的2q,則把0(零)設置給[[2x]+1]。
如果是f的2r,則把[2x]設置給[[2x]+1]。
如果是f的2q,則把[2x]設置給[[[2x]-1]+1]。
圖12為精確地示出包含保留區(qū)的數(shù)據(jù)結構的示意圖,其中在圖3和圖4中的二元樹由第一實施例的方法所處理。請注意,每個節(jié)點的開始地址是偶數(shù)地址。
圖13為與用作為二元搜索樹的圖12中的數(shù)據(jù)結構相等價的結構。在該數(shù)據(jù)結構中,沒有一個節(jié)點具有左子節(jié)點。換句話說,每個節(jié)點僅僅具有一個右子節(jié)點或者沒有子節(jié)點。在該數(shù)據(jù)結構中,從根節(jié)點到末端節(jié)點j用一個關鍵字進行降序或升序的排序。請注意,該保留區(qū)和節(jié)點的地址與圖12中的數(shù)據(jù)結構相同。在圖13中的配置中的數(shù)據(jù)結構被稱為標準配置。該標準配置被存儲在標準配置存儲單元109中,并且由輸出數(shù)據(jù)提取單元107所引用。
接著,根據(jù)圖12中的數(shù)據(jù)結構,更加詳細地描述根據(jù)第一實施例的數(shù)據(jù)結構管理處理的過程。
根據(jù)第一實施例的數(shù)據(jù)結構管理裝置管理在上述二元搜索樹的雙指針表示中的多個數(shù)據(jù)結構,作為數(shù)據(jù)的多個等價表示,并且通過順序地在另一個數(shù)據(jù)結構中反映對其中一個數(shù)據(jù)的更改,使其作為一個相同(等價)的二元搜索樹。
下面描述根據(jù)第一實施例的數(shù)據(jù)結構管理系統(tǒng)管理兩個數(shù)據(jù)結構的情況,其中各個節(jié)點和保留區(qū)域分別被設置在兩個計算機的各自RAM的相同地址中。
(1)節(jié)點刪除首先,在兩個計算機中的兩個數(shù)據(jù)結構假設與圖12完全相同。在此,執(zhí)行刪除具有關鍵字50的根節(jié)點這樣的更改操作,從而產生以具有關鍵字60的節(jié)點作為一個新的根節(jié)點的結構。圖14示出在該更改操作之后的數(shù)據(jù)結構。與圖12不同的更改指針由圖14中的虛線箭頭所表示。在刪除之前的二元搜索樹中,除了用于被刪除節(jié)點f的兩個指針之外,可以理解包含保留區(qū)的四個指針已經被更改。
在此,根據(jù)第一實施例的數(shù)據(jù)結構管理單元10更改發(fā)送單元111不把所有這些更改的指針和他們的存儲地址發(fā)送到一個接一個地管理其它數(shù)據(jù)結構的數(shù)據(jù)結構管理裝置的更改[發(fā)送]單元311;而是在當執(zhí)行與圖13中的標準結構相同的更改操作時要更改的指針中,僅僅把存儲在偶數(shù)地址或者節(jié)點的開始地址的指針信息與地址一同發(fā)送。
圖15示出對應于圖14的標準結構。在該圖[15]的標準結構中,一組或兩組的兩個地址和來自與圖13不同的四個指針數(shù)值的<地址g的數(shù)值e>以及<地址f的數(shù)值0>的數(shù)值組合,即,地址g的數(shù)值e、地址e+1的數(shù)值g+1、地址f的數(shù)值0以及地址f+1的數(shù)值0,被作為更改的數(shù)據(jù)發(fā)送到其它計算機的復制方數(shù)據(jù)結構管理裝置30。
已經通過更改接收單元311接收更改的數(shù)據(jù)的復制方數(shù)據(jù)結構管理裝置的更改反映單元301執(zhí)行該操作以從二元樹刪除f地址節(jié)點,假如當僅僅發(fā)送<地址f的數(shù)值0>時,假設該地址f用于如圖12中所示的二元樹節(jié)點。利用與在執(zhí)行以前的更改時所使用的原版方數(shù)據(jù)結構管理裝置10相同的處理,執(zhí)行節(jié)點刪除操作。結果,通過用更改反映單元301創(chuàng)建與圖14中相同的結構。
另一方面,即使當僅僅發(fā)送<地址g的數(shù)值e>時,當采用圖13的標準配置時,地址g應當包含的指針數(shù)值f可以通過計算在圖12中的二元樹的中間級別的[節(jié)點]g的左側的節(jié)點地址而獲得。利用該更改的數(shù)據(jù),更改反映單元301檢測該地址g的指針數(shù)值已經被更改的情況,并且對于上述地址g的情況,在響應更改數(shù)據(jù)對圖15中的g+1改變之前,查找在圖13中的標準配置中的e+1的地址值為f+1。分別確認在更改之前的地址g的數(shù)值為f,并且地址e的數(shù)值為f+1,并且確定對原版方數(shù)據(jù)結構管理裝置10側執(zhí)行刪除節(jié)點f的操作。根據(jù)該確定結果,復制方數(shù)據(jù)結構管理裝置30利用與原版方相同的處理刪除f地址節(jié)點。
基本上,足以精確地確定已經通過參照標準配置執(zhí)行何種更改操作的地址和數(shù)值的組合可以從更改發(fā)送單元111發(fā)送到更改接收單元311。例如,即使沒有實際使f地址的內容為0,這是刪除操作所特有的操作,通過發(fā)送<地址f的數(shù)值0>,可以向復制方通知f地址節(jié)點已經被刪除的情況。
請注意,為了使復制方數(shù)據(jù)結構管理裝置確定這些地址a至f被用作為節(jié)點,這些地址可以作為存儲內容的一部分保留在存儲設備中并且被引用。另外,由于該操作是在已經得知上述情況而執(zhí)行的,因此更改發(fā)送單元111可以把地址和數(shù)值的組合發(fā)送到復制方更改接收單元311,所述地址是這些節(jié)點的(偶數(shù))地址。
并且,作為把原版方數(shù)據(jù)結構作為一個整體復制到沒有保存任何目標數(shù)據(jù)結構的(復制方)數(shù)據(jù)結構存儲單元20的方法,更改記錄的全部輸出內容可以存儲在原版方數(shù)據(jù)結構管理裝置10中,從而更改記錄被順序地輸入到復制方數(shù)據(jù)結構管理裝置30,從而重構該數(shù)據(jù)結構。
如上文所述,通過僅僅發(fā)送對于比實際更改指針更少的指針的更改數(shù)據(jù),對一個數(shù)據(jù)結構的更改可以更加有效地反映在另一個數(shù)據(jù)結構上。
(2)節(jié)點添加接著,描述把節(jié)點添加到數(shù)據(jù)結構的更改反映處理。
例如,在圖14的數(shù)據(jù)結構中,考慮把地址f的節(jié)點重新添加到二元搜索樹,這使得該地址p為保留區(qū)。
圖16示出在添加該地址f節(jié)點之后的二元搜索樹的數(shù)據(jù)結構。首先,以50作為關鍵字搜索該樹,以添加地址f節(jié)點,作為沒有右子節(jié)點的節(jié)點e的右子節(jié)點,如圖16中所示。由于與圖12相同,對應于圖16的標準配置與圖13相等價,在圖13中的標準配置與圖15中的配置之間的差別是4個指針地址g的數(shù)值f、地址e+1的數(shù)值f+1、地址f的數(shù)值e以及地址f+1的數(shù)值g+1。
原版方更改發(fā)送單元111把4個指針中的<地址f的數(shù)值e>或<地址g的數(shù)值f>之一發(fā)送到復制方更改接收單元311。
當接收到<地址f的數(shù)值e>時,復制方更改反映單元301檢查在圖14的狀態(tài)下的地址f的數(shù)值為0。該更改反映單元301確定所發(fā)送的指針值表示執(zhí)行把圖14的結構更改為對應于圖13的標準配置的任何一種可能結構的指令,其中與圖14相對應的圖15中的標準配置中的不包含在樹中的節(jié)點f被作為子節(jié)點添加到節(jié)點e的右側,例如圖16的節(jié)點所示,從而執(zhí)行添加節(jié)點f的操作,把它置于緊接著在中間級別的節(jié)點f(之后)的右側。用于添加操作的處理如下。
a.使x作為指定的節(jié)點,要添加的y節(jié)點被添加,使其緊接著在中間級別的節(jié)點x之前(或之后)。也就是說,b.如果x沒有左(或右)子節(jié)點,則把y作為x的左(或右)子節(jié)點,并且結束該處理。如果x具有左(或右)子節(jié)點,則使該左(或右)子節(jié)點作為一個新的x。
c.如果x沒有右(或左)子節(jié)點,則把y作為x的右(或左)子節(jié)點,并且結束該處理。如果x具有右(或左)子節(jié)點,則使該右(或左)子節(jié)點作為一個新的x,重新執(zhí)行[功能]c.。
d.當指定一個空樹時,把要被添加的節(jié)點x作為根節(jié)點。
同時,當接收<地址g的數(shù)值f>時,更改反映單元301執(zhí)行添加操作,從而在確定節(jié)點g包含在該樹中,并且在標準配置中的地址g的數(shù)值不是f而是e之后,節(jié)點f被定位在中間級別的(按照排序次序緊接著在前的)節(jié)點g的左側。該添加操作還可以用上述的功能a.至d.來執(zhí)行。
在任何一種情況中,獲得與上述圖16相同的結構。
如上文所述,并非所有更改的指針被順序地發(fā)送,而是僅僅發(fā)送在標準配置中對指針所作的更改部分,可以在另一個結構上精確地反映對一個結構所執(zhí)行的更改,并且保持它們之間的一致性(功能等價性)。應當指出,在上述具體例子中,描述了兩個數(shù)據(jù)結構;但是,即使在三個或更多數(shù)據(jù)結構的情況中,可以通過把相同的指針數(shù)值更改數(shù)據(jù)從直接被更改的數(shù)據(jù)結構發(fā)送到其它數(shù)據(jù)結構,而保持在多個數(shù)據(jù)結構之間的一致性。
另外,不總是需要使要發(fā)送的指針更改數(shù)據(jù)為在標準配置中的實際指針數(shù)值和指針存儲的地址。對應于更改操作,通過輸出數(shù)據(jù)提取單元107可以有效地創(chuàng)建操作內容,并且由復制方更改反映單元301有效地重構,從而如果被更改的數(shù)據(jù)與指針更改數(shù)據(jù)相同,則格式是不重要的。
應當指出,在第一實施例中,存儲指向二元樹根節(jié)點的指針的存儲單元不被作為該保留區(qū),并且指向該保留區(qū)的指針被存儲在該樹的根節(jié)點中。通過這種配置,即使在復制方和/或原版方上要被更改的節(jié)點為根節(jié)點,與對除了根節(jié)點之外的其它節(jié)點做出更改的情況相同,通過僅僅發(fā)送對于存儲在該節(jié)點中的指針的更改信息,在原版方數(shù)據(jù)結構中的更改內容可以被精確地反映到復制方數(shù)據(jù)結構上。
下面將描述如圖12中所示已經接收<地址f的數(shù)值0>的復制方數(shù)據(jù)結構以節(jié)點f作為根節(jié)點的情況作為一個例子。識別存儲在[f]中的用于保留區(qū)的指針p能夠通過把p設置給作為刪除f之后的新的根節(jié)點的節(jié)點g的單元[g]而創(chuàng)建例如在圖14中的正常的刪除后的數(shù)據(jù)結構,并且把g設置給保留區(qū)p的單元[p]。
該二元搜索樹可以采用許多不同的結構,即使它們功能等價,并且可以采用以任意節(jié)點作為根節(jié)點的結構。當在原版方和復制方的樹型結構不同時,即使一個節(jié)點不是原版方上的根節(jié)點,也可以使該節(jié)點成為復制方上的根節(jié)點。在用于保留區(qū)的指針沒存儲在如圖3中所示的根節(jié)點中的結構中,更改根節(jié)點需要指定其所引用的變量(等價于保留區(qū)),并且更改使得新的根節(jié)點被引用。原版方不可能得知用于更改的目標節(jié)點是否為在復制方上的根節(jié)點。因此,當任何節(jié)點被更改時,如果該更改有極小的可能導致引用在復制方的根節(jié)點的變量被更改,則必須發(fā)送附加有這些變量的地址的更改信息。
與第一實施例相同,如果存儲把保留區(qū)指定給根節(jié)點的指針,如果需要的話,該保留區(qū)地址可以通過根節(jié)點從該樹的各個節(jié)點獲得,因此即使沒有指定保留區(qū)地址,也可以對根節(jié)點執(zhí)行更改操作。相應地,不需要把保留區(qū)地址從原版方發(fā)送到復制方。但是,當一個節(jié)點被添加到一個空的保留區(qū)或者當在標準配置中的根節(jié)點被更改時,發(fā)送該保留區(qū)地址。無論如何,即使在這些情況中,該保留區(qū)地址不被作為與用于節(jié)點單元的新指針值相同的節(jié)點地址,并且不被作為特定的附加數(shù)據(jù)而發(fā)送。
應當指出,在第一實施例中,使用單個保留區(qū)描述引用樹的變量(樹的根節(jié)點),但是,在有多個變量引用一個樹的情況中,如果所采用的配置與圖19中相同,其中通過單個保留區(qū)訪問該樹,則可以在原版方的復制方之間保持在數(shù)據(jù)結構中的一致性,而不對上述方法作任何改變。另外,如圖19中所示,如果用于每個引用該保留區(qū)的變量的指針被存儲在保留區(qū)方,則對條件的更改,例如由每個變量引用哪個保留區(qū),可以通過把它們作為保留區(qū)方指針更改而發(fā)送來進行處理。
對于第一實施例,由于對于保留區(qū)的指針被存儲在一個存儲單元中,其中存儲用于父節(jié)點或根節(jié)點的右同胞節(jié)點的指針,不需要額外的存儲資源來配置包含保留區(qū)的數(shù)據(jù)結構。另外,除了如圖20中所示這些實現(xiàn)方法之外,可以采用每個節(jié)點存儲用于保留區(qū)的指針的配置。在這種情況中,不需要在存儲用于父節(jié)點或根節(jié)點的右同胞節(jié)點的指針的單元中存儲用于保留區(qū)的指針。
在第一實施例中,通過在至少一個節(jié)點中包含存儲有用于二元樹的根節(jié)點的指針以及存儲用于保留區(qū)的指針的單元,即使保留區(qū)地址不被指定,也可以對根節(jié)點執(zhí)行更改操作。相應地,當更改的信息被從原版方發(fā)送到復制方時,僅僅存儲在該節(jié)點中的指針更改信息需要被發(fā)送,并且不需要附加引用該樹(的根節(jié)點)的變量的地址。另外在這種配置中,保留區(qū)的數(shù)目不限于一個,并且可以有多個。
不但在第一實施例的二元樹中,而且在配置有指針的公共動態(tài)數(shù)據(jù)結構中,一旦提供對于存儲單元的部分的已知地址,則可以從該單元開始例如檢索這樣的訪問。在二元樹中,根節(jié)點是這樣一個單元,并且從該單元進行二元搜索。在動態(tài)更改的數(shù)據(jù)結構中,這種單元(例如根節(jié)點)可以被更改;但是,引用這種單元的單元(變量)還可以隨著該更改而改變。為了改變這些變量,這些變量的地址或者用于確定地址的信息必須從原版方發(fā)送到復制方。
第一實施例提供具有一個地址的存儲單元(保留區(qū)),其不作為數(shù)據(jù)結構的一部分而動態(tài)改變,并且作為在數(shù)據(jù)結構中的功能存儲可以動態(tài)改變(根節(jié)點或各個節(jié)點)的地址的單元與具有不改變的地址的單元之間的對應關系,以及該單元具有不被改變的地址;換句話說,在根節(jié)點或在每個節(jié)點中存儲對于保留區(qū)的指針。因此,可以省略在每次改變操作時發(fā)送保持對數(shù)據(jù)結構的引用的變量的地址這樣的麻煩。
另外,不但減少了從原版方發(fā)送到復制方的麻煩,而且即使當在各個數(shù)據(jù)結構中執(zhí)行更改操作(例如僅僅在原版方)時,保留區(qū)地址(用于保持對數(shù)據(jù)結構的引用的變量的地址)不需要被指定為對數(shù)據(jù)結構更改單元的輸入。這消除了作為更改操作的先決條件而必須已知保持對數(shù)據(jù)結構的引用的變量的地址這樣的限制,并且相當程度上增加對數(shù)據(jù)結構的更改操作的自由度。
另外,例如當執(zhí)行從數(shù)據(jù)結構刪除一個節(jié)點的操作時,在要被刪除的節(jié)點是數(shù)據(jù)結構中的唯一節(jié)點的情況下,需要進行更改,使得引用該節(jié)點的數(shù)據(jù)結構或變量保留區(qū)不引用無效節(jié)點。相應地,需要提供用于該保留區(qū)的已知地址;但是,表示除了要被刪除的節(jié)點之外的保留區(qū)的信息需要被指定,除非存在有從該節(jié)點得知該節(jié)點所屬二元樹的保留區(qū)的方法。在所有上述刪除操作中不總是需要該指定;但是,需要額外的時間和存儲資源,應當采取如下措施(1)在確定是否需要之后指定,(2)無論是否需要都指定,以及(3)限制該數(shù)據(jù)結構的使用,從而不會進入需要指定的狀態(tài);例如,總是使用至少一個節(jié)點(即使它是一個偽節(jié)點)。
特別地,當在不可能得知要被指定的保留區(qū)的情況下,存在可能執(zhí)行刪除操作的危險,用于避免該狀態(tài)的唯一可能的措施如上述(3)中所述。
由于在根節(jié)點被刪除(以及要被刪除的節(jié)點剛好是根節(jié)點)的情況下出現(xiàn)相同的狀態(tài),或者當該根節(jié)點被通過一個偏移操作所取代,有許多情況對于例如上文的(1)、(2)和(3)的措施需要額外的資源。
如果數(shù)據(jù)結構與第一實施例相同包括用于從該節(jié)點得知該保留區(qū)的方法,則不需要指定該保留區(qū),除非確實必要,可以通過僅僅指定要被操作的節(jié)點而執(zhí)行更改操作,另外,如上文(3)中所述,對數(shù)據(jù)結構的使用沒有限制或者不需要額外的資源。
對于第一實施例,可以獲得如下效果。
根據(jù)本發(fā)明的數(shù)據(jù)結構管理系統(tǒng)針對于在任意數(shù)據(jù)結構的標準配置中的指針信息的更改,如果采用標準配置,則通過從更改的指針信息中省略可以采用或恢復的指針數(shù)值,并且發(fā)送該數(shù)值。由此,可以減少更改數(shù)據(jù)的通信業(yè)務量,并且減少用于更改反映處理的處理時間,而不改變數(shù)據(jù)結構更改程序。
應當指出,上述的附加例子作為第一實施例的一種變型例子,即使當如圖17中所示的復制方數(shù)據(jù)結構與圖14中的原版方數(shù)據(jù)結構不同,也可以應用上述更改反映處理。
通過使用上述功能接收<地址f的數(shù)值e>或者<地址g的數(shù)值f>以及添加節(jié)點f,可以把更改應用于如圖18中所示配置的二元搜索樹,其與圖16中所示的二元樹等價。
按照這種方式,即使原版方和復制方之間的配置不同,或者多個副本具有各自不同的配置,可以僅僅通過在該標準配置中發(fā)送指針更改的部分而保持等價性。
第二實施例在下文中參照圖21至圖23僅僅對于與第一實施例不同的方面詳細描述根據(jù)本發(fā)明第二實施例的數(shù)據(jù)結構管理裝置、數(shù)據(jù)結構管理系統(tǒng)、數(shù)據(jù)結構管理方法以及數(shù)據(jù)結構管理程序。
不是如第一實施例中所提供的把作為指針信息的地址發(fā)送到復制方數(shù)據(jù)結構,第二實施例提供一種用于發(fā)送相關位置信息的功能。更加具體來說,第二實施例在數(shù)據(jù)結構的每個節(jié)點中除了存儲關鍵字之外還存儲在“片段管理方法”專利(日本專利No.2768921)中公開的部分片段長度,并且用對應于該節(jié)點的片段位置和片段的計算執(zhí)行節(jié)點的搜索。
圖21為示出根據(jù)本發(fā)明第二實施例的數(shù)據(jù)管理裝置的功能結構的方框圖。當與第一實施例相比較時,如圖21中所示的第二實施例是第一實施例的一種變型,其中進一步提供在原版方數(shù)據(jù)結構管理裝置10中的一個位置搜索單元113以及在復制方數(shù)據(jù)結構管理裝置30中的位置搜索單元313。
位置搜索單元113和位置搜索單元313使用對應于該節(jié)點的片段位置和片段的計算,執(zhí)行節(jié)點的搜索。
其余結構與圖1中的實施例相類似,省略對它們的描述。
圖22(a)和(b)示出根據(jù)第二實施例的數(shù)據(jù)結構的一個例子。在圖22(a)和(b)中,對應于每個節(jié)點的片段長度都為1并且每個片段表示從按照LCR次序從節(jié)點的左側的排序。
在原版方數(shù)據(jù)結構管理裝置10中的輸出數(shù)據(jù)提取單元107b通過本地搜索單元113獲得一個指針數(shù)值,其是在標準配置存儲單元109中的標準配置,并且已經被作為更改操作的結果而更改,并且存儲指針的地址被作為該位置信息。該位置信息由從包括在以前更改條件中的地址的節(jié)點開始到在該節(jié)點所在的二元樹中的節(jié)點片段(排序)的數(shù)值的地址的偏移量;以及該二元樹的保留區(qū)的地址的組合來表示。該位置信息被傳送到在復制方數(shù)據(jù)結構管理裝置30中的更改接收單元311。
復制方數(shù)據(jù)結構管理裝置30的更改反映單元301根據(jù)由更改接收單元311所接收的更改數(shù)據(jù)或相對位置信息,由該保留區(qū)地址確定對應于保留區(qū)的樹根節(jié)點,指定該片段(排序),并且把其表示給位置搜索單元313。位置搜索單元313計算通過確定在復制方數(shù)據(jù)結構中的節(jié)點的地址(開始地址)并且把偏移量添加給所確定的開始地址而計算具有該位置(排序)的片段的地址。
在圖22(a)和(b)中,例如地址f被表示為<在地址q的保留區(qū)的排序為1的節(jié)點的偏移量0的地址>。另外,地址e被表達為<在地址p的保留區(qū)的排序為5的節(jié)點的偏移量0的地址>。相應地,不是采用<地址f的數(shù)值e>,而是由更改發(fā)送單元111所發(fā)送的更改數(shù)據(jù)的內容變?yōu)橛衫?amp;lt;在地址p的保留區(qū)的排序為5的節(jié)點的偏移量0的地址被存儲在地址q的保留區(qū)的排序為1的節(jié)點的偏移量0的地址中>這樣的信息所表示的位置信息。
應當指出,關于數(shù)據(jù)結構的狀態(tài)和更改操作與第一實施例不同之處在于除了該保留區(qū)之外的地址由相對于該節(jié)點的各自偏移量所指定。因此,即使在被添加到保留區(qū)p樹之前,節(jié)點f屬于保留區(qū)q樹。如圖23(a)和(b)所示,該更改操作涉及一旦節(jié)點f被刪除則添加該節(jié)點,使其在LCR次序中處于節(jié)點e的右側。
根據(jù)第二實施例,可以獲得如下效果。
簡而言之,由于相對位置信息被發(fā)送用于該更改的信息,不總是需要相應的節(jié)點在原版方數(shù)據(jù)結構和復制方數(shù)據(jù)結構中占據(jù)相同的地址。相應地,即使存儲區(qū)(地址空間)的尺寸和使用率在原版方的復制方互不相同,可以實現(xiàn)在上述數(shù)據(jù)結構之間的等價性,并且可以顯著地擴大本發(fā)明的應用。
應當指出,除了上述片段管理方法之外的其它方法可以用作為識別在二元樹(二元搜索樹)中的節(jié)點的方法。
例如,如圖23(a)和(b)中所示,如對于每個節(jié)點的所有關鍵字不同的情況下,如果無論在更改之前或之后沒有節(jié)點與存在于該樹上的節(jié)點相同的關鍵字,則關鍵字可以被用于識別要被更改的節(jié)點。
另外,在多個數(shù)據(jù)結構中的保留區(qū)的地址相匹配的情況下,上文描述使得節(jié)點的地址不同,但是也存在相反的情況盡管存在有公共節(jié)點地址,但是保留區(qū)地址可以不同。但是,對于對標準配置的更改,僅僅當在作為根節(jié)點的左端的節(jié)點改變時,保留區(qū)地址被作為更改數(shù)據(jù)而發(fā)送。
另外請注意,可以對上述方法進行擴展,例如在包含對于每個數(shù)據(jù)結構具有各自不同的地址的保留區(qū)和節(jié)點的部分的情況中,在原版方更改發(fā)送單元111b和復制方更改接收單元311之間發(fā)送和接收的技術,使用指定一個節(jié)點或保留區(qū)的數(shù)據(jù)和偏移量的組合允許在數(shù)據(jù)結構中進行與公共地址相關的相應地址的計算的充分數(shù)據(jù)。
第三實施例在下文中參照圖24至圖26僅僅對于與第一和第二實施例不同的方面詳細描述根據(jù)本發(fā)明第三實施例的數(shù)據(jù)結構管理裝置、數(shù)據(jù)結構管理系統(tǒng)、數(shù)據(jù)結構管理方法以及存儲數(shù)據(jù)結構管理程序的記錄介質。
圖24為示出根據(jù)本發(fā)明第三實施例的數(shù)據(jù)管理裝置的功能結構的方框圖。如圖24中所示,第三實施例與第一和第二實施例不同,從而它是第一實施例的一種變型,其中它用具有圖1中的數(shù)據(jù)結構更改單元105和輸出數(shù)據(jù)提取單元107的組合功能的數(shù)據(jù)結構更改/提取單元106取代原版方標準配置存儲單元109。
在第一和第二實施例中,輸出數(shù)據(jù)提取單元107、107b從由數(shù)據(jù)結構更改單元105輸出的指針更改信息提取存儲在標準配置存儲單元109中的標準配置,或者如果需要的話僅僅把該更改轉換為標準配置,并且輸出到更改發(fā)送單元111、111b。另一方面,在第三實施例中,當數(shù)據(jù)結構更改/提取單元106更改數(shù)據(jù)結構存儲單元20的數(shù)據(jù)結構時,計算要被更改的數(shù)據(jù)結構上的標準配置中的要被更改的指針數(shù)值,僅僅把所需的更改數(shù)據(jù)輸出到更改發(fā)送單元111。
相應地,當作出用于在標準配置存儲單元109中保持標準配置所需的資源和數(shù)據(jù)結構的更改時,可以避免更改標準配置的麻煩。同時,通過參照標準配置,可以減少輸出數(shù)據(jù)提取單元107提取從數(shù)據(jù)結構更改單元105輸出的更改數(shù)據(jù)的麻煩。
該第三實施例實現(xiàn)與第一實施例中的數(shù)據(jù)結構相同的二元樹。數(shù)據(jù)結構更改/提取單元106根據(jù)該更改操作使用要被更改的存儲在數(shù)據(jù)結構存儲單元20中的實際數(shù)據(jù)結構,提取所需的更改數(shù)據(jù)。
下面描述在第三實施例中與數(shù)據(jù)結構更改同時進行的更改反映處理的處理程序。
(1)節(jié)點刪除例如,當刪除在圖12中的數(shù)據(jù)結構的節(jié)點f時,需要獲得<地址g的數(shù)值e>或者<地址f的數(shù)值0>作為更改數(shù)據(jù)??梢援a生<地址f的數(shù)值0>而不需要特別參照標準配置,但是,<地址g的數(shù)值e>不能夠容易地圖12的數(shù)據(jù)結構獲得。根據(jù)第三實施例的數(shù)據(jù)結構更改/提取單元106更改圖12的數(shù)據(jù)結構,換句話說通過利用處理自調節(jié)的二元樹的偏移操作,刪除節(jié)點f,并且確定在刪除后的標準配置中的<地址g的數(shù)值e>如下。
(i)首先,對要被刪除的節(jié)點f進行偏移,使f為根節(jié)點。由于f已經是在圖12中的根節(jié)點,因此這可以認為是該操作的完成狀態(tài)。
(ii)接著,按照LCR次序搜索緊接著在節(jié)點f右側的節(jié)點g和在左側的節(jié)點e,并且對g進行偏移操作,從而把g移到如圖25中所示的根節(jié)點位置。
(iii)最后,通過對f的左側節(jié)點e進行偏移操作,把e移動到根節(jié)點的位置,側節(jié)點e、f和g之間的結構如圖26中所示。
(iv)如果在圖26的狀態(tài)下刪除節(jié)點f,則節(jié)點g變?yōu)樵贚CR次序中的左節(jié)點e的右子節(jié)點,并且節(jié)點g本身沒有左子節(jié)點。該結構與圖15中的e和g之間的關系相一致,圖15是在刪除節(jié)點f之后的標準配置的示意圖,其中<地址g的數(shù)值e>也相同。
如此,在刪除節(jié)點的情況中,如果在按照節(jié)點被刪除的次序執(zhí)行偏移操作之后進行刪除,則其左側節(jié)點和其右側節(jié)點將與該標準配置相一致,其中“其右側節(jié)點沒有左子節(jié)點,以及它是其左節(jié)點的右子節(jié)點”。由此,更改發(fā)送單元121可以直接從數(shù)據(jù)結構存儲單元20的數(shù)據(jù)中直接提取應當被發(fā)送的更改數(shù)據(jù)(在上述例子中為<地址g的數(shù)值e>)。
(2)節(jié)點添加當在圖17的數(shù)據(jù)結構中添加節(jié)點f時,執(zhí)行如下處理程序。
(i)首先,把節(jié)點f添加到適當?shù)奈恢?,把其更改為更?8中所示的數(shù)據(jù)結構。
(ii)接首,對節(jié)點f執(zhí)行偏移操作,并且移動到根節(jié)點的位置;另外,搜索緊接著在節(jié)點f左側的節(jié)點e,并且對其進行偏移操作。
(iii)結果,節(jié)點f沒有左子節(jié)點,并且變?yōu)?根節(jié)點)e的右子節(jié)點,從而節(jié)點e和節(jié)點f之間的關系與圖13中所示的標準配置相一致。從這種所獲得的結構中,更改發(fā)送單元111可以提取應當被發(fā)送的<地址f的數(shù)值e>。
(iv)按照這種方式,根據(jù)LCR的次序搜索節(jié)點f的緊接著右側的節(jié)點,并且在首先對節(jié)點g進行偏移操作之后,繼續(xù)對節(jié)點f進行偏移操作。
(v)結果,節(jié)點g沒有左子節(jié)點,并且變?yōu)?根節(jié)點)f的右子節(jié)點,從而節(jié)點f和節(jié)點g之間的關系與圖13中所示的標準配置相一致。從這種所獲得的結構中,更改發(fā)送單元111可以提取應當被發(fā)送的<地址g的數(shù)值f>。
根據(jù)上述處理,沒有特別參照所存儲的標準配置,該數(shù)據(jù)結構更改/提取單元106可以被構成為使得在標準配置中的指針數(shù)據(jù)被計算并且通過利用數(shù)據(jù)結構存儲單元20的數(shù)據(jù)結構而輸出到更改發(fā)送單元111。
應當指出,在第三實施例中,在執(zhí)行偏移操作并且實際變換該數(shù)據(jù)結構之后,通過讀出預定節(jié)點的地址內容,執(zhí)行所更改數(shù)據(jù)的提取。但是,根據(jù)要被操作的節(jié)點和LCR次序,不需要實際執(zhí)行整個處理程序,如果對于每種操作(節(jié)點刪除、添加)需要緊接著在左側或右側的節(jié)點,可以產生要被最終提取的更改數(shù)據(jù)。在這種情況中,甚至不需要使標準配置部分地保留在數(shù)據(jù)結構存儲單元20的數(shù)據(jù)結構中。在此,由于要被提供的更改數(shù)據(jù)是在指定的標準配置中的指針數(shù)值,因此可以理解該數(shù)據(jù)結構更改/提取單元106執(zhí)行與參照標準配置等效的計算。
本發(fā)明的一個特征在于從更改發(fā)送單元111發(fā)送到更改接收單元311的要被更改的數(shù)據(jù)是在標準配置中的指針數(shù)值(變量數(shù)值)。即使用任何方式提取或計算該更改的數(shù)據(jù),則在功能和結果上沒有任何不同。
相應地,即使對提取和計算的技術采用各種方法也不會偏離本發(fā)明的目地。
應當指出,在上述實施例中,處理被作為數(shù)據(jù)結構(二元搜索樹)而排序的數(shù)據(jù)。該標準配置被設置為對應于數(shù)據(jù)的排序次序和節(jié)點的鏈接次序,并且被配置為使得僅僅對排序次序產生影響的更改操作改變節(jié)點的鏈接次序。如果表現(xiàn)數(shù)據(jù)的相同排序次序,則即使對于不同的數(shù)據(jù)結構也沒有功能上的差別。相應地,具有處理排序數(shù)據(jù)的數(shù)據(jù)結構的上述實施例是僅僅在標準配置中提取由于指針的更改而產生的改動的一個例子。
應當指出,本發(fā)明不限于上述實施例,從而不必說,可以作出各種變型和變化而不脫離本發(fā)明的目的。
工業(yè)應用型根據(jù)本發(fā)明的一種數(shù)據(jù)結構管理裝置、數(shù)據(jù)結構管理系統(tǒng)、數(shù)據(jù)結構管理方法和記錄有數(shù)據(jù)結構管理程序的計算機可讀記錄介質能夠通過發(fā)送和接收具有較少通信業(yè)務量的更改數(shù)據(jù)而容易和有效的保持在一個或多個計算機的一個或多個存儲區(qū)域中的多個數(shù)據(jù)結構之間的一致性。另外,即使數(shù)據(jù)結構存儲在各種不同的地址中,也可以保持它們的一致性。另外,可以有效地再現(xiàn)在網絡上的多個計算機之間的指針結構,并且可以適用于各種系統(tǒng),例如高度可靠的系統(tǒng)等等。
由此,通過利用本發(fā)明,可以使網絡上的多個計算機之間保持公共的數(shù)據(jù)結構,從而可以分別獨立和有效地執(zhí)行共享這些數(shù)據(jù)結構的每個計算機中的存儲區(qū)域的管理。
權利要求
1.一種數(shù)據(jù)結構管理裝置,其管理存儲在一個或多個存儲單元中的多個相等的數(shù)據(jù)結構,其中包括數(shù)據(jù)結構存儲單元(20),其中存儲任意的第一數(shù)據(jù)結構;數(shù)據(jù)結構更改單元(105),其更改所述第一數(shù)據(jù)結構;更改數(shù)據(jù)提取單元(107),其從由所述數(shù)據(jù)結構更改單元獲得的所述第一數(shù)據(jù)結構中的更改數(shù)據(jù)中,僅僅提取使在更改源方上的所述第一數(shù)據(jù)結構與在更改目標方上的第二數(shù)據(jù)結構相等所需的數(shù)據(jù);以及更改數(shù)據(jù)發(fā)送單元(111),其輸出所述提取、更改的數(shù)據(jù),從而反映到所述第二數(shù)據(jù)結構上。
2.根據(jù)權利要求1所述的數(shù)據(jù)結構管理裝置,其中所述更改數(shù)據(jù)提取單元(107)提取在所述第一數(shù)據(jù)結構中的各個節(jié)點包含的部分指針更改信息作為所述更改數(shù)據(jù)。
3.根據(jù)權利要求2所述的數(shù)據(jù)結構管理裝置,其中所述更改數(shù)據(jù)提取單元(107)在一個節(jié)點被刪除時提取表示把被刪除節(jié)點的指針更改為不引用狀態(tài)的數(shù)據(jù)作為所述更改數(shù)據(jù)。
4.根據(jù)權利要求2所述的數(shù)據(jù)結構管理裝置,其中進一步包括標準配置存儲單元(109),其中存儲按照與所述第一數(shù)據(jù)結構相同的排序次序來排列節(jié)點的標準配置;其中所述更改數(shù)據(jù)提取單元(107)提取與由所述數(shù)據(jù)結構更改單元(105)對存儲于所述標準配置存儲單元(109)中的所述標準配置所執(zhí)行的更改相同的更改操作所更改的指針更改信息作為更改數(shù)據(jù)。
5.根據(jù)權利要求1所述的數(shù)據(jù)結構管理裝置,其中所述第一數(shù)據(jù)結構包括存儲用于根節(jié)點的指針的存儲單元。
6.根據(jù)權利要求1所述的數(shù)據(jù)結構管理裝置,其中所述更改數(shù)據(jù)提取單元(107b)產生所述更改數(shù)據(jù),作為相對于包含所提取指針的地址的節(jié)點開始的偏移量、在所述節(jié)點的所述第一數(shù)據(jù)結構中的部分數(shù)值、以及指定所述第一數(shù)據(jù)結構的數(shù)值的組合。
7.根據(jù)權利要求6所述的數(shù)據(jù)結構管理裝置,其中進一步包括位置檢索單元(113),其在所述第二數(shù)據(jù)結構中檢索一個節(jié)點位置;其中所述更改數(shù)據(jù)提取單元(107b)根據(jù)所述更改數(shù)據(jù)在有所述位置檢索單元所檢索的在所述數(shù)據(jù)結構中的節(jié)點位置執(zhí)行更改。
8.一種數(shù)據(jù)結構管理裝置,其管理存儲在一個或多個存儲單元中的數(shù)據(jù)結構,其中包括數(shù)據(jù)結構存儲單元(20),其中存儲包含存儲用于根節(jié)點的指針的存儲單元的任意數(shù)據(jù)結構;數(shù)據(jù)結構更改單元(105),其更改所述數(shù)據(jù)結構;其中所述存儲單元存儲用于引用所述存儲單元的變量的指針。
9.一種數(shù)據(jù)結構管理裝置,其管理存儲在一個或多個存儲單元中的數(shù)據(jù)結構,其中包括數(shù)據(jù)結構存儲單元(20),其中存儲一個數(shù)據(jù)結構,其中在包含存儲用于根節(jié)點的指針的存儲單元的任意數(shù)據(jù)結構中的至少一個節(jié)點存儲有用于所述存儲單元的指針;以及數(shù)據(jù)結構更改單元(105),其更改所述數(shù)據(jù)結構。
10.一種數(shù)據(jù)結構管理裝置,其管理存儲在一個或多個存儲單元中的多個互為相等的數(shù)據(jù)結構,其中包括數(shù)據(jù)結構存儲單元(20),其中存儲任意的第一數(shù)據(jù)結構;更改數(shù)據(jù)提取單元(107),其在更改所述第一數(shù)據(jù)結構的同時,從所述第一數(shù)據(jù)結構中的更改數(shù)據(jù)中,僅僅提取使在更改源方上的所述第一數(shù)據(jù)結構與在更改目標方上的第二數(shù)據(jù)結構相等所需的數(shù)據(jù)作為更改數(shù)據(jù);以及更改數(shù)據(jù)發(fā)送單元(111),其輸出所述提取、更改的數(shù)據(jù),從而反映到所述第二數(shù)據(jù)結構上;其中所述更改數(shù)據(jù)提取單元(107)把對所述第一數(shù)據(jù)結構的更改轉換為對預定標準配置的更改,從而計算所述更改的數(shù)據(jù)。
11.根據(jù)權利要求10所述的數(shù)據(jù)結構管理裝置,其中所述更改數(shù)據(jù)提取單元把所述第一數(shù)據(jù)結構的一部分轉換為所述標準配置的一部分,從而計算所述更改的數(shù)據(jù)。
12.根據(jù)權利要求10所述的數(shù)據(jù)結構管理裝置,其中所述更改數(shù)據(jù)提取單元(107)順序地把要被更改的節(jié)點和要被更改的所述節(jié)點的緊接著的左側節(jié)點和/或緊接著的右側節(jié)點移動到在所述第一數(shù)據(jù)結構中的根節(jié)點,從而所述第一數(shù)據(jù)結構被變換,由此計算所述更改的數(shù)據(jù)。
13.一種數(shù)據(jù)結構管理裝置,其管理存儲在一個或多個存儲單元中的多個互為相等的數(shù)據(jù)結構,其中包括數(shù)據(jù)結構存儲單元(20),其中存儲與任意的第一數(shù)據(jù)結構相等的第二數(shù)據(jù)結構;更改數(shù)據(jù)輸入單元(311),其輸入被更改的數(shù)據(jù)或者第一數(shù)據(jù)結構中的被更改的數(shù)據(jù)塊的用于使在更改源方上的所述第一數(shù)據(jù)結構與更改目標方上的第二數(shù)據(jù)結構相等所需的數(shù)據(jù);以及更改數(shù)據(jù)反映單元(301),其用于把所述更改的數(shù)據(jù)反映在所述第二數(shù)據(jù)結構上。
14.一種數(shù)據(jù)結構管理系統(tǒng),其管理存儲在一個或多個存儲單元中的多個相等的數(shù)據(jù)結構,其中包括第一數(shù)據(jù)結構管理裝置(10),其中包括數(shù)據(jù)結構存儲單元(20),其中存儲任意的第一數(shù)據(jù)結構;數(shù)據(jù)結構更改單元(105),其更改所述第一數(shù)據(jù)結構;更改數(shù)據(jù)提取單元(107),其從由所述數(shù)據(jù)結構更改單元(105)獲得的所述第一數(shù)據(jù)結構中的更改數(shù)據(jù)中,僅僅提取使在更改源方上的所述第一數(shù)據(jù)結構與在更改目標方上的第二數(shù)據(jù)結構相等所需的數(shù)據(jù);以及更改數(shù)據(jù)發(fā)送單元(111),其輸出所述提取、更改的數(shù)據(jù),從而反映到所述第二數(shù)據(jù)結構上;以及第二數(shù)據(jù)結構管理裝置(30),其中包括第二數(shù)據(jù)結構存儲單元(20),其中存儲與所述第一數(shù)據(jù)結構相等的第二數(shù)據(jù)結構;更改數(shù)據(jù)輸入單元(311),其輸入要從所述第一數(shù)據(jù)結構管理裝置的所述更改的數(shù)據(jù)傳輸單元輸出的所述更改的數(shù)據(jù);以及更改數(shù)據(jù)反映單元(301),其用于把所述更改的數(shù)據(jù)反映在所述第二數(shù)據(jù)結構上。
15.一種數(shù)據(jù)結構管理方法,其管理存儲在一個或多個存儲單元中的多個相等的數(shù)據(jù)結構,其中包括數(shù)據(jù)結構更改步驟(S10),其更改任意第一數(shù)據(jù)結構;更改數(shù)據(jù)提取步驟(S20),其從在所述數(shù)據(jù)結構更改步驟中獲得的所述第一數(shù)據(jù)結構中的更改數(shù)據(jù)中,僅僅提取使在更改源方上的所述第一數(shù)據(jù)結構與在更改目標方上的第二數(shù)據(jù)結構相等所需的數(shù)據(jù);以及更改數(shù)據(jù)發(fā)送步驟(S30),其輸出所述提取、更改的數(shù)據(jù),從而反映到所述第二數(shù)據(jù)結構上。
16.根據(jù)權利要求15所述的數(shù)據(jù)結構管理方法,其中所述更改數(shù)據(jù)提取步驟提取在所述第一數(shù)據(jù)結構中的各個節(jié)點包含的部分指針更改信息作為所述更改數(shù)據(jù)。
17.根據(jù)權利要求16所述的數(shù)據(jù)結構管理方法,其中進一步包括標準配置存儲步驟,用于存儲按照與所述第一數(shù)據(jù)結構相同的排序次序來排列節(jié)點的標準配置;其中所述更改數(shù)據(jù)提取步驟(S20)提取在所述數(shù)據(jù)結構更改步驟中對在所述標準配置存儲步驟中存儲的所述標準配置執(zhí)行的更改相同的更改操作所更改的指針更改信息作為更改數(shù)據(jù)。
18.一種計算機可讀記錄介質,其中記錄一種程序使得計算機執(zhí)行數(shù)據(jù)結構管理處理,其管理存儲在一個或多個存儲單元中的多個相等的數(shù)據(jù)結構,其中包括數(shù)據(jù)結構更改處理(105),其更改任意第一數(shù)據(jù)結構;更改數(shù)據(jù)提取處理(107),其從由所述數(shù)據(jù)結構更改處理(105)獲得的所述第一數(shù)據(jù)結構中的更改數(shù)據(jù)塊中,僅僅提取使在更改源方上的所述第一數(shù)據(jù)結構與在更改目標方上的第二數(shù)據(jù)結構相等所需的數(shù)據(jù);以及更改數(shù)據(jù)發(fā)送處理(111),其輸出所述提取、更改的數(shù)據(jù),從而反映到所述第二數(shù)據(jù)結構上。
19.根據(jù)權利要求18所述的計算可讀記錄介質,其中所述更改數(shù)據(jù)提取處理提取在所述第一數(shù)據(jù)結構中的各個節(jié)點包含的部分指針更改信息作為所述更改數(shù)據(jù)。
20.根據(jù)權利要求19所述的計算機可讀記錄介質,其中進一步包括標準配置存儲處理,用于存儲按照與所述第一數(shù)據(jù)結構相同的排序次序來排列節(jié)點的標準配置;其中所述更改數(shù)據(jù)提取處理(107)提取在所述數(shù)據(jù)結構更改處理中對在所述標準配置存儲步驟中存儲的所述標準配置執(zhí)行的更改相同的更改操作所更改的指針更改信息作為更改數(shù)據(jù)。
21.一種程序使得計算機執(zhí)行數(shù)據(jù)結構管理處理,用于管理存儲在一個或多個存儲單元中的多個相等的數(shù)據(jù)結構;所述數(shù)據(jù)結構管理處理包括數(shù)據(jù)結構更改處理(105),其更改任意第一數(shù)據(jù)結構;更改數(shù)據(jù)提取處理(107),其從由所述數(shù)據(jù)結構更改步驟獲得的所述第一數(shù)據(jù)結構中的更改數(shù)據(jù)塊中,僅僅提取使在更改源方上的所述第一數(shù)據(jù)結構與在更改目標方上的第二數(shù)據(jù)結構相等所需的數(shù)據(jù);以及更改數(shù)據(jù)發(fā)送處理(111),其輸出所述提取、更改的數(shù)據(jù),從而反映到所述第二數(shù)據(jù)結構上。
22.根據(jù)權利要求21所述的計算機程序,其中所述更改數(shù)據(jù)提取數(shù)據(jù)(107)提取在所述第一數(shù)據(jù)結構中的各個節(jié)點包含的部分指針更改信息作為所述更改數(shù)據(jù)。
23.根據(jù)權利要求22所述的計算機程序,其中進一步包括標準配置存儲處理,用于存儲按照與所述第一數(shù)據(jù)結構相同的排序次序來排列節(jié)點的標準配置;其中所述更改數(shù)據(jù)提取處理(107)提取在所述數(shù)據(jù)結構更改處理中對在所述標準配置存儲處理中存儲的所述標準配置執(zhí)行的更改相同的更改操作所更改的指針更改信息作為更改數(shù)據(jù)。
全文摘要
在有多個數(shù)據(jù)結構分布于一個或多個存儲單元中的情況下,在減少通信業(yè)務量的同時,實現(xiàn)容易并且有效地保持和管理多個數(shù)據(jù)結構。根據(jù)本發(fā)明的一種數(shù)據(jù)結構管理裝置是數(shù)據(jù)結構管理裝置(10),其管理存儲在一個或多個存儲單元中的多個相等的數(shù)據(jù)結構,其中包括數(shù)據(jù)結構存儲單元(20),其中存儲任意的第一數(shù)據(jù)結構;數(shù)據(jù)結構更改單元(105),其更改所述第一數(shù)據(jù)結構;更改數(shù)據(jù)提取單元(107),其從由所述數(shù)據(jù)結構更改單元獲得的所述第一數(shù)據(jù)結構中的更改數(shù)據(jù)中,僅僅提取使在更改源方上的所述第一數(shù)據(jù)結構與在更改目標方上的第二數(shù)據(jù)結構相等所需的數(shù)據(jù);以及更改數(shù)據(jù)發(fā)送單元(111),其輸出所述提取、更改的數(shù)據(jù),從而反映到所述第二數(shù)據(jù)結構上。
文檔編號G06F12/00GK1415091SQ00818136
公開日2003年4月30日 申請日期2000年12月13日 優(yōu)先權日1999年12月13日
發(fā)明者藤原睦 申請人:株式會社東芝