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