JP3866466B2 - データ構造管理装置、データ構造管理システム、データ構造管理方法およびデータ構造管理プログラムを格納する記録媒体 - Google Patents
データ構造管理装置、データ構造管理システム、データ構造管理方法およびデータ構造管理プログラムを格納する記録媒体 Download PDFInfo
- Publication number
- JP3866466B2 JP3866466B2 JP35363099A JP35363099A JP3866466B2 JP 3866466 B2 JP3866466 B2 JP 3866466B2 JP 35363099 A JP35363099 A JP 35363099A JP 35363099 A JP35363099 A JP 35363099A JP 3866466 B2 JP3866466 B2 JP 3866466B2
- Authority
- JP
- Japan
- Prior art keywords
- data structure
- data
- change
- node
- pointer
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
- G06F16/9027—Trees
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99941—Database schema or data structure
- Y10S707/99942—Manipulating data structure, e.g. compression, compaction, compilation
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Description
【発明の属する技術分野】
本発明は、データ構造管理装置、データ構造管理システム、データ構造管理方法およびデータ構造管理プログラムを格納する記録媒体に関する。特に、1つまたは複数の計算機の記憶装置に配置された複数のデータ構造において、あるデータ構造に対する変更を、当該データ構造と他のデータ構造との間の等価性維持に必要となる変更データのみを他のデータ構造に伝達して他のデータ構造に反映することにより、通信量を削減するとともに複数のデータ構造の容易かつ効率よい維持管理を実現するための技術に関する。
【0002】
【従来の技術】
従来より、計算機の主記憶を典型とする1つまたは複数の番地付けされたランダムアクセス記憶装置(以下、「RAM」と称する)の上に、ポインタを一定の手法で格納することによって種々のデータ構造が構築され、情報表現の効率化及び操作の高速化が図られてきた。
【0003】
これらデータ構造として、例えば、線形リスト、二分木、木、種々のグラフ等を、あるノードに対応づけられたRAMの一部に、他のノードへのポインタを格納することによってデータ間の構造を表現する手法がある。これらのデータ構造は一定の操作および機能を提供するものである。
【0004】
しかしながら、1つまたは複数のRAM上に配置された複数のデータ構造が等価である機能を果たすように維持および管理する手法に関しては、これまで効率的な手法が知られていなかった。
【0005】
従来における複数のデータ構造の等価性維持の手法を、以下に説明する。
【0006】
第1に、データ構造の機能を変更する全ての更新操作およびこの更新操作に必要な探索操作を、1つのデータ構造に対してだけでなく、複数のデータ構造のどれに対しても全く同様の内容・順序で行うことにより、これら複数のデータ構造の機能的等価性を保証する手法がある。
【0007】
しかし、この第1の手法においては、更新(変更)を反映すべき他のデータ構造(以下、「コピー側データ構造」と称する)を維持および管理するのに必要な手間すなわち計算時間は、変更元のデータ構造(以下、「マスター側データ構造」と称する)を維持および管理するのに必要な手間と同一である。
【0008】
具体的には、データ構造を変更するためには、多くの場合、この変更に先だって複雑な探索が実行され、この探索結果に依存して変更の内容が異なる。従って、第1の手法では、コピー側のデータ構造でもマスター側のデータ構造と同様に、必要な探索を含む変更手続きを実行しなければ双方のデータ構造の等価性を実現することができなかった。しかし、この第1の手法では、マスター側のデータ構造への変更処理とコピー側のデータ構造への変更反映処理とは、同等の計算時間(リソース)を必要とする。このため、他の処理、例えば探索のみの要求等を処理できる余地は、双方での大差がないことになる。従って、データ構造の等価性の実現に多大な計算時間を要し、例えばコピー側ではマスター側と異なった多くの探索要求を処理し、一方マスター側は変更要求の処理に専念する、等の分散環境における効率的な処理の分担が実現できなかった。すなわち、この第1の手法では、1つのデータ構造に加えられた変更のみを効率的に他のデータ構造に反映させて、他のデータ構造の管理コストを下げることは望めなかった。
【0009】
第2に、ポインタの値も含めてデータ構造をRAMの内容として全く同一に保つために、変更操作において変更されたポインタをすべて伝送して変更先に逐一反映するという手法がある。この第2の手法は、それぞれのデータ構造(より正確にはそれぞれのデータ構造を構成する各ノード)を、RAM上の同一の番地とみなせる部分に格納し、1つのデータ構造への更新(すなわち、ポインタの変更情報)を各番地の記憶内容の変更として他のデータ構造を表わすRAMにコピーする。1つの記憶装置(あるいは計算機)上でも複数の記憶装置(あるいは計算機)間でも、適切なアドレス変換を行なう手段を併用すれば、複数の等価なデータ構造を同一の番地に同一表現のポインタを格納することで構築することができる。複数のデータ構造をこのように構築し、ポインタも他のデータ(コード)と同様に単純にコピーすることによって、データ構造の変更を他のデータ構造に反映することができる。
【0010】
しかし、この第2の手法は、機能的には等価であるが、ポインタ構造としては異なる形態をとることを許す複数のデータ構造に対しては適用することができない。例えば、アクセス頻度の高いノードをルートのノードとすべく、ポインタ構造を適宜調整する自己調整型データ構造(self-adjusting data structure)と呼ばれるデータ構造がある。この自己調整型データ構造は、機能の変更を伴わない探索操作においても、データ構造の形状を、機能的に等価な他の形状に変えてしまう。この自己調整型データ構造において、格納されるポインタの値を同一にして等価性を維持するためには、探索も含めた全ての操作によって発生するポインタ(各番地の内容)の変更を全てコピーしなければならない。このコピーのためには、膨大な量のポインタ変更情報を他のデータ構造(あるいは他のデータ構造の管理手段)に伝達しなければならず、管理の手間だけでなく通信量も非常に多くなる。
【0011】
あるいは、ハイ・バランスト・ツリー(hight-balanced-tree)のようなデータ構造の場合には、1回の変更操作で多数のポインタが変更されることがあり、このため、伝送すべき変更データの量が多くなってしまう。また、第2の手法においては、マスター側とコピー側とでデータ構造の構成(形態)が全く一致していなければならないという制約があった。すなわち、例えば二分木のデータ構造の場合、二分探索木(バイナリー・サーチ・ツリー:binary search tree)として等価というだけでなく、対応する同じノード間の親子関係が全て一致していなければならない。(もっとも、上記のアドレス変換が適切に行なわれれば、各ノードのアドレスおよびポインタ値まで同一である必要はない。)換言すれば、この第2の手法では、マスター側とコピー側で、バイナリー・サーチ・ツリーとしては等価であるが具体的なバイナリー・ツリーの構成が異なるデータ構造を使用することができない。
【0012】
このため、例えば、マスター側とコピー側とでツリーの構成を全く別の手法で管理する場合、すなわち、例えばマスター側は上記のハイ・バランスト・ツリー(hight-balanced-tree)を採用してツリーの構成を管理し、一方コピー側はスプレー・ツリー(splay tree)を採用して、探索操作が行なわれた場合にもツリーの構成を変更するような場合には、マスター側で変更を加える前のデータ構造の構成(すなわち、ツリーの形状)とコピー側でその変更データを反映する前のデータ構造の構成がそもそも異なる。したがって単純にマスター側のデータ構造を変更した際、変更されたポインタをコピー側のデータ構造に反映することはできない。
【0013】
特に、物理的に異なる計算機の主記憶上にそれぞれ配置された複数のデータ構造の等価性を、上記の第1あるいは第2の手法により実現しようとすれば、これら計算機間を接続する通信路(ネットワーク)に多大な負荷をかけることになり、通信路を含むシステム全体に重大な影響を及ぼす。
【0014】
さらに、例えば、更新操作の場合にのみデータ構造の形状を変更するデータ構造である各種の平衡木等においても、形状の変更に伴って多数のポインタが変更される。このため、これらのポインタの変更情報を全て伝達するためには、データ構造を格納したRAMの間を接続する通信路には、上記の自己調整型データ構造ほどではないにしろ、多大な負荷がかかることになる。
【0015】
【発明が解決しようとする課題】
以上説明したように、従来のデータ構造管理手法には、1つまたは複数のRAM上に配置された複数のデータ構造が等価である機能を果たすように維持および管理することは、多くの計算時間を要するとともに通信量が多く、非効率的であったという問題点を解決するためになされたものである。
【0016】
そして、その目的とするところは、1つまたは複数のRAM(記憶領域)上に配置されたデータ構造への変更を、少ない通信量および計算時間で、他のデータ構造に反映することによって、効率よく複数のデータ構造の等価性を維持、管理することのできるデータ構造管理装置、データ構造管理システム、データ構造管理方法およびデータ構造管理プログラムを格納する記録媒体を提供する点にある。
【0017】
また、本発明の他の目的は、相互に異なるアドレスに配置されるデータ構造の一部分または全体の間での等価性を容易に維持、管理することにある。
【0018】
【課題を解決するための手段】
上記の課題を解決するための本発明の特徴は、あるデータ構造に対するポインタの変更データのうち、所定の標準構造に基づいて、複数のデータ構造の間の機能的な等価性を維持するために必要となる変更データを抽出し、この抽出された変更データのみを変更を反映すべきデータ構造に送出する点にある。
【0019】
かかる機能を実現するための、本発明の第1の特徴は、1つまたは複数の記憶装置に格納され、相互に等価である複数のデータ構造を管理するデータ構造管理装置であって、任意の第1のデータ構造を格納するデータ構造記憶部と、前記第1のデータ構造を変更するデータ構造変更部と、前記データ構造変更部による前記第1のデータ構造上の変更データのうち、変更元の前記第1のデータ構造と、変更先の第2のデータ構造とを等価にするために必要なデータのみを抽出する変更データ抽出部と、前記抽出された変更データを、前記第2のデータ構造に反映させるべく出力する変更データ送信部とを具備することを特徴とするデータ構造管理装置を提供する点にある。
【0020】
本発明の第2の特徴は、前記変更データ抽出部は、前記第1のデータ構造上のそれぞれのノードが有するポインタの変更情報の一部を、前記変更データとして抽出する点にある。
【0021】
本発明の第3の特徴は、前記変更データ抽出部は、ノードが削除された際に、削除されたノードのポインタの非参照状態への変更を示すデータを前記変更データとして抽出する点にある。
【0022】
本発明の第4の特徴は、上記データ構造管理装置は、さらに、前記第1のデータ構造と同一のソート順序でノードを配列する標準構造を格納する標準構造記憶部を具備し、前記変更データ抽出部は、前記標準構造記憶部に格納される前記標準構造において、前記データ構造変更部により行われた変更と同一の変更操作により変更されるポインタの変更情報を変更データとして抽出する点にある。
【0023】
本発明の第5の特徴は、前記第1のデータ構造は、ルートノードへのポインタを格納する記憶要素を含んで構成される点にある。
【0024】
本発明の第6の特徴は、前記変更データ抽出部は、前記変更データを、抽出されたポインタのアドレスを含むノードの先頭からのオフセットと、前記ノードの前記第1のデータ構造上の区間の値と、前記第1のデータ構造を指示する値との組として生成する点にある。
【0025】
本発明の第7の特徴は、上記データ構造管理装置は、さらに、前記第2のデータ構造上でのノードの位置を探索する位置探索部を具備し、前記変更データ反映部は、前記変更データに基づいて、前記位置探索部により探索された前記第2のデータ構造上のノードの位置における変更を行う点にある。
【0026】
本発明の第8の特徴は、1つまたは複数の記憶装置に格納されるデータ構造を管理するデータ構造管理装置であって、ルートノードへのポインタを格納する記憶要素を含んで構成される任意のデータ構造を格納するデータ構造記憶部と、前記データ構造を変更するデータ構造変更部とを具備し、前記記憶要素は、前記記憶要素を参照する変数へのポインタを格納することを特徴とするデータ構造管理装置を提供する点にある。
【0027】
本発明の第9の特徴は、1つまたは複数の記憶装置に格納されるデータ構造を管理するデータ構造管理装置であって、ルートノードへのポインタを格納する記憶要素を含んで構成される任意のデータ構造であって、前記データ構造上のノードの少なくとも1つは、前記記憶要素へのポインタを格納するデータ構造を格納するデータ構造記憶部と、前記データ構造を変更するデータ構造変更部とを具備することを特徴とするデータ構造管理装置を提供する点にある。
【0028】
本発明の第10の特徴は、1つまたは複数の記憶装置に格納され、相互に等価である複数のデータ構造を管理するデータ構造管理装置であって、任意の第1のデータ構造を格納するデータ構造記憶部と、前記第1のデータ構造を変更するとともに、前記第1のデータ構造上の変更データのうち、変更元の前記第1のデータ構造と、変更先の第2のデータ構造とを等価にするために必要なデータのみを変更データとして抽出する変更データ抽出部と、前記抽出された変更データを、前記第2のデータ構造に反映させるべく出力する変更データ送信部とを具備し、前記変更データ抽出部は、前記第1のデータ構造上での変更を、予め定められた標準構造上での変更に変換することにより、前記変更データを算出することを特徴とするデータ構造管理装置を提供する点にある。
【0029】
本発明の第11の特徴は、前記変更データ抽出部は、前記第1のデータ構造の一部を、前記標準構造の一部に変形することにより、前記変更データを算出する点にある。
【0030】
本発明の第12の特徴は、前記変更データ抽出部は、前記第1のデータ構造上で、変更対象ノードおよび前記変更対象ノードの左隣および/または右隣のノードを順次ルートノードに移動して前記第1のデータ構造を変形することにより、前記変更データを算出する点にある。
【0031】
本発明の第13の特徴は、1つまたは複数の記憶装置に格納され、相互に等価である複数のデータ構造を管理するデータ構造管理装置であって、任意の第1のデータ構造と等価である第2のデータ構造を格納するデータ構造記憶部と、前記第1のデータ構造の変更データのうち、変更元の前記第1のデータ構造と、変更先の前記第2のデータ構造とを等価にするために必要なデータである変更データを入力する変更データ入力部と、前記変更データを前記第2のデータ構造に反映する変更データ反映部とを具備することを特徴とするデータ構造管理装置を提供する点にある。
【0032】
本発明の第14の特徴は、1つまたは複数の記憶装置に格納され、相互に等価である複数のデータ構造を管理するデータ構造管理システムであって、任意の第1のデータ構造を格納する第1のデータ構造記憶部と、前記第1のデータ構造を変更するデータ構造変更部と、前記データ構造変更部による前記第1のデータ構造上の変更データのうち、変更元の前記第1のデータ構造と、変更先の第2のデータ構造とを等価にするために必要なデータのみを抽出する変更データ抽出部と、前記抽出された変更データを、前記第2のデータ構造に反映させるべく出力する変更データ送信部とを具備する第1のデータ構造管理装置と、前記第1のデータ構造と等価である前記第2のデータ構造を格納する第2のデータ構造記憶部と、前記第1のデータ構造管理装置の前記変更データ送信部から出力される前記変更データを入力する変更データ入力部と、前記変更データを前記第2のデータ構造に反映する変更データ反映部とを具備する第2のデータ構造管理装置とを具備することを特徴とするデータ構造管理システムを提供する点にある。
【0033】
本発明の第15の特徴は、1つまたは複数の記憶装置に格納され、相互に等価である複数のデータ構造を管理するデータ構造管理方法であって、任意の第1のデータ構造を変更するデータ構造変更ステップと、前記データ構造変更ステップによる前記第1のデータ構造上の変更データのうち、変更元の前記第1のデータ構造と、変更先の第2のデータ構造とを等価にするために必要なデータのみを抽出する変更データ抽出ステップと、前記抽出された変更データを、前記第2のデータ構造に反映させるべく出力する変更データ送信ステップとを含むことを特徴とするデータ構造管理方法を提供する点にある。
【0034】
本発明の第16の特徴は、前記変更データ抽出ステップは、前記第1のデータ構造上のそれぞれのノードが有するポインタの変更情報の一部を、前記変更データとして抽出する点にある。
【0035】
本発明の第17の特徴は、上記データ構造管理方法は、さらに、前記第1のデータ構造と同一のソート順序でノードを配列する標準構造を格納する標準構造格納ステップを含み、前記変更データ抽出ステップは、前記標準構造格納ステップにより格納される前記標準構造において、前記データ構造変更部により行われた変更と同一の変更操作により変更されるポインタの変更情報を変更データとして抽出する点にある。
【0036】
本発明の第18の特徴は、1つまたは複数の記憶装置に格納され、相互に等価である複数のデータ構造を管理するデータ構造管理処理をコンピュータに実行せしめるプログラムを格納するコンピュータ読み取り可能な記録媒体であって、任意の第1のデータ構造を変更するデータ構造変更処理と、前記データ構造変更処理による前記第1のデータ構造上の変更データのうち、変更元の前記第1のデータ構造と、変更先の第2のデータ構造とを等価にするために必要なデータのみを抽出する変更データ抽出処理と、前記抽出された変更データを、前記第2のデータ構造に反映させるべく出力する変更データ送信処理とを含むことを特徴とするコンピュータ読み取り可能な記録媒体を提供する点にある。
【0037】
本発明の第19の特徴は、前記変更データ抽出処理は、前記第1のデータ構造上のそれぞれのノードが有するポインタの変更情報の一部を、前記変更データとして抽出する点にある。
【0038】
本発明の第20の特徴は、上記コンピュータ読み取り可能な記録媒体は、さらに、前記第1のデータ構造と同一のソート順序でノードを配列する標準構造を格納する標準構造格納処理を含み、前記変更データ抽出処理は、前記標準構造格納処理により格納される前記標準構造において、前記データ構造変更部により行われた変更と同一の変更操作により変更されるポインタの変更情報を変更データとして抽出する点にある。
【0039】
【発明の実施の形態】
以下、図面を参照して、本発明に係るデータ構造管理装置、データ構造管理システム、データ構造管理方法およびデータ構造管理プログラムを格納する記録媒体の実施の形態を、詳細に説明する。
【0040】
第1の実施形態
以下、図1から図20を参照して、本発明に係るデータ構造管理装置、データ構造管理システム、データ構造管理方法およびデータ構造管理プログラムを格納する記録媒体の第1の実施形態を詳細に説明する。第1の実施形態は、バイナリー・サーチ・ツリー(binary search tree)のデータ構造を複数のRAM上に構築し、これらデータ構造の間で効率よく機能的な等価性を維持する機能を提供する。
【0041】
図1は、第1の実施形態に係るデータ構造管理システムの一般的な機能構成を示すブロック図である。図1に示すように、第1の実施形態に係るマスター側のデータ構造管理装置10は、データ構造記憶部20と、データ探索部103と、データ構造変更部105と、送出データ抽出部107と、標準構造記憶部109と、変更送信部111とにより構成される。第1の実施形態に係るコピー側のデータ構造管理装置30は、データ構造記憶部20と、データ探索部303と、変更反映部301と、変更受信部311とにより構成される。尚、図1の構成は、データ構造管理装置10のデータ構造記憶部20をマスターとし、このマスターにおけるデータ構造の変更を、コピー側のデータ構造管理装置30のデータ構造記憶部20に反映させるマスター・スレーブ型の構成の一例である。第1の実施形態は、この他、例えばデータ構造管理装置10およびデータ構造管理装置30の構成を併せ持つ複数のデータ構造管理装置を相互に接続して、相互にデータ構造変更データを交換するピア・ツー・ピア型の構成とするなど、任意に構成することができる。また、図1の構成は、変更を反映すべきコピー側のデータ構造を1つとして説明しているが、通信機能が複数の相手に同一の変更データを送信できればコピー側のデータ構造を複数としてもよい。
【0042】
第1の実施形態においては、変更送信部111および変更受信部311により提供される通信機能により、伝送された変更データを変更反映部301がコピー側のデータ構造記憶部20のデータ構造に反映する。この変更データがコピー側データ構造20に反映された後には、マスター側データ構造20のデータ探索部103とコピーデータ構造のデータ探索部303とは全く同等に機能する。すなわち、双方のデータ構造20は、同じ探索要求に対して同じ結果を返すことができる。従って、双方のデータ構造の等価性が実現されることによって、マスター・コピー間でデータが共有できる。
【0043】
マスター側およびコピー側のデータ構造記憶部20のデータ構造は、相互に機能的に等価な任意のデータ構造である。ここで、機能的に等価とは、各ノードの論理的な順序(本実施形態の場合はソート順)を同じくすること、すなわち機能的に同値であることをいい、相互のポインタ構造自体は異なっていてもよい。
【0044】
データ探索部103、303は、アプリケーションからの要求に従い、データ構造記憶部20にそれぞれ格納されるデータ構造中のデータを探索する。
【0045】
マスター側データ構造管理装置10中のデータ構造変更部105は、データ構造記憶部20a中に格納されるマスター側データ構造を適宜変更し、変更されたポインタ情報である変更データを、送出データ抽出部107に通知する。
【0046】
送出データ抽出部107は、変更された変更データのうち、標準構造記憶部109に格納される標準となるデータ構造に照らして、データ構造の各ノードの論理的順番を変化させるポインタの情報のみを抽出し、この抽出されたポインタ情報を変更送信部111に送出する。
【0047】
変更送信部111は、抽出されたポインタ情報を、マスター側データ構造管理装置10と同一RAM内、同一計算機内あるいはローカルまたはリモートに接続される他の計算機にある変更受信部311に送信する。
【0048】
一方、コピー側のデータ構造管理装置30中の変更受信部311は、マスター側データ構造管理装置10の変更送信部111から受信したポインタ情報(変更データ)を、変更反映部301に送出する。
【0049】
変更反映部301は、変更受信部311から受信したポインタ情報(変更データ)を、データ構造記憶部20に格納されるコピー側データ構造に反映する。
【0050】
次に、第1の実施形態に係るデータ構造管理装置のハードウエア構成を説明する。本発明に係るデータ構造管理システムにおけるデータ構造管理装置10およびデータ構造管理装置30は、いわゆる汎用機、ワークステーション、PC、ネットワーク端末等の各種コンピュータ単体あるいは各コンピュータを相互接続したシステムに実装される。本発明の実施形態で用いる各コンピュータシステムのハードウエアは、各種処理を行うためのCPUと、プログラムメモリ・データメモリ等のメモリと、FD・CD等の外部記憶装置と、キーボード・マウス等の入力装置と、ディスプレー・プリンタ等の出力装置とを備える。
【0051】
尚、本発明に係るデータ管理の各種処理を実現するためのプログラムは、各種記録媒体に保存することができる。かかる記録媒体を、上記ハードウエアを具備するコンピュータにより読み出し、当該プログラムを、主記憶等の記憶装置に格納されるデータ構造にアクセスして実行することにより、本発明が実施される。ここで、記録媒体とは、例えば、メモリ・磁気ディスク・光ディスク等、プログラムを記録することができる装置全般を含む。
【0052】
次に、共用すべき複数のデータ構造を、RAM上にバイナリー・サーチ・ツリーで構成する場合を例として、第1の実施形態に係るデータ構造管理システムの処理を説明する。
【0053】
図2は、本発明の第1の実施形態に係るデータ構造管理システムの行う、データ構造の変更および他のデータ構造への変更の反映の処理の概略を示すフローチャートである。まず、データ構造変更部105は、マスター側のデータ構造記憶部20中に格納されるデータ構造を変更する(ステップS10)。送出データ抽出部107は、このデータ構造における変更されたポインタ情報のうち、標準構造記憶部109に格納される標準構造上での構造を変化させるポインタ情報を抽出する(ステップS20)。変更送信部111は、この抽出されたポインタ情報を、コピー側データ構造管理装置30の変更受信部311に送信する(ステップS30)。コピー側データ構造管理装置30では、変更受信部311により受信された変更データ(ポインタ情報)を変更反映部301に送出する。変更反映部301は、データ構造記憶部20に格納されるデータ構造にアクセスし、受信された変更データ(ポインタ情報)によりコピー側データ構造を更新する。
【0054】
まず、第1の実施形態が用いるデータ構造の一例として、1つのノードにつき2つのポインタを格納する表現手法を説明する。ここで、ポインタとは、他のノードの番地を意味する。
【0055】
バイナリー・ツリーは、1つのノードにつき2つのポインタを使用するだけで、親から子および子から親への双方向のリンクを実現することができる。
【0056】
図3は、この双方向のリンクを実現する、leftmost-child-right-sibling representationと呼ばれる2ポインタ表現手法を説明する。
【0057】
図4は、図3の2ポインタ表現手法を各ノードをツリー状に接続した二分木(バイナリー・ツリー)で表現した様子を示す。
【0058】
図3において、各ノードの2つのポインタは、状況に応じて次のようなノードをポイントする。
【0059】
(1)一方(右)のポインタ
左の子があれば左の子を、左の子がなくかつ右の子があれば右の子を指す。
【0060】
子が全くなければnil(空ポインタ)である。
【0061】
(2)他方(左)のポインタ
自分が左の子でかつ右の兄弟(自分の親の右の子)があれば右の兄弟を、それ以外で親がある、すなわちルートノードでない場合は親を指す。
【0062】
親がない、すなわちルートノードである場合はnil(空ポインタ)である。
【0063】
尚、図3のように適切に配置された図上で一覧すると見過ごしがちであるが、あるノードが左右の子のどちらか一方しかない場合には、子を指す(右の)ポインタが左右どちらの子を指しているのかはポインタを見ただけでは判断できない。この子の左右を区別するためには、各ノードについて1ビットの余分な情報が必要である。この1ビットの情報の内容は、各ノード自身が左右どちらの子かを示してもよく、一方、各ノードの子へのポインタが左右でどちらの子かを示してもよい。バイナリー・サーチ・ツリー(二分探索木)の場合、キーの比較を行って左右どちらの子かを決定するということも可能である。但し、同一のキーを複数のノードが持ちうるような場合にはこの方法は使えない。一般的に、バイナリー・ツリーの構造を作るためには、この1ビットの情報が必要である。
【0064】
一方、兄弟または親を指すもう1つの(左の)ポインタに関しては、それが右の兄弟を指しているのか親を指しているのかは、最高でも2回ポインタをたどれば判定できる。すなわち、右のポインタが右の兄弟を指すのは、右のポインタが指すノードの右のポインタが指すノードの左のポインタが当該ノードに一致する場合に限られるのである。但し、このポインタから、そのノードがルートか否かの情報も得る必要がある。上記の例ではこれを空ポインタか否かで判定可能である。
【0065】
上記のように、バイナリー・ツリーは、1ノードにつき2つのポインタと1ビットの情報を格納することによって実現できる。この構造によって、3つのポインタを使用する一般に知られる構造と同じく、親から左の子を決定する操作、親から右の子を決定する操作、及び子から親を決定する操作が、それぞれ所定時間以内で実行できる。但し、1つの操作につき2つ以上のポインタ及びビットを参照するので、これらの操作の実行時間は3つのポインタを使用する場合より長い。逆に、各ノードの内容を設定したり変更したりする操作においては、ポインタの数が少ない分実行時間が短縮される効果がある。
【0066】
次に、第1の実施形態で使用される2ポインタ表現のノード構成およびツリーへの実装を具体的に説明する。
【0067】
まず、第1の実施形態に係るデータ構造の、記憶装置(RAM)への実装手法およびノードのポインタのフォーマットを説明する。
【0068】
使用される記憶装置は、番地付けされた記憶要素で構成されており、各記憶要素には任意の番地を格納できるものとする。すなわち、番地がポインタとして使用される。以下において、番地mの要素に言及する場合は、[m]で表す。
【0069】
図5に示すように、1つのノードのポインタ部分には、偶数番地の要素[2n]とそれに続く要素[2n+1]が充てられる。ノードを指示する場合には、そのポインタ部分の偶数番地を用いる。すなわち、[2n]および[2n+1]が充てられたノードは、「ノード 2n」ということになる。
【0070】
これらのノードを使用して構成されるバイナリー・ツリーのルートへのポインタを別の要素に格納し、この別の要素も含めた全体を一つのデータ構造として扱う。このルートへのポインタを格納する別の記憶要素を、当該ツリーのポット(鉢)と呼ぶ。ルートノードには、親または右の兄弟へのポインタの代わりにポットへのポインタを格納する。図5に示すように、ポットの番地をm、ルートノードを2nとすると、[m]には2nが、[2n]にはmが設定される。一方、ポット mに対応するツリーが空のときは[m]には0(nil)が設定される。このように、ノードの集まりであるバイナリー・ツリーに一意に対応するポットを導入し、これらを一体として扱う点は、第1の実施形態の特徴の1つである。
【0071】
なお、番地0はnilポインタとして用いられるので、[0]はノードとしては使用しない。但し、ポットとして使用することはできる。nilポインタには記憶要素が対応づけられていない番地、またはノードとして使用しない番地と判定できる番地ならいずれの番地を用いてもよい。
【0072】
図5に示すように、ルート以外のノード 2nが左の子でかつ右の兄弟2rがある場合、[2n]には2r+1が設定される。それ以外の場合、すなわち2nが左の子でかつ右の兄弟がないか、または2nが右の子である場合には、[2n]には親ノード2pの番地2pが設定される。前者の場合、[2n]の値は奇数(すなわち、LSBが1)なので、偶数(すなわち、LSBが0)である後者の場合とLSB(Least Significand Bit)の1ビットのみで区別することができる。この区別は必須ではないが、手続の簡素化と性能の向上には有効である。
【0073】
一方、図5に示すように、各ノード 2nのもう1つのポインタ[2n+1]には、そのノードに子がない場合は0(nil)が設定される。2nに左の子2qがある場合には、右の子の有無に関係なく[2n+1]には2qが設定される。2nに左の子がなく、右の子2rのみがある場合は、[2n+1]には2r+1が設定される。前者の場合、[2n+1]の値は偶数(LSBが0)なので、奇数(LSBが1)である後者の場合とLSBの1ビットのみで区別することができる。
【0074】
上記のポット、ルート、親ノード、子ノードの関係は、以下の6つの場合がある。
【0075】
a.ツリーが空の場合のポットのみ(図6参照)
b.対応するツリーを有するポットの場合(図7参照)
c.子がないノードの場合(図8参照)
d.右の子のみを持つノードの場合(図9参照)
e.左の子のみを持つノードの場合(図10参照)
f.左右両方の子を持つノードの場合(図11参照)
上記の6つの場合に基づいて、ノード 2xからその親子兄弟のノードに関する接続情報は、例えば以下のようにして判定できる。尚、コメント中に、各判定条件について、2xが上記a.からf.のどの場合のどのノードに対応するかを示す。
【0076】
さらに、上記のように構成されたバイナリー・ツリーを変更する手続きには、次のような手続きが可能である。
【0077】
(1)空のバイナリー・ツリーに対応するポット mに、ノード 2nをルートとして対応付ける。すなわち、ノード 2nをルートとするバイナリー・ツリーを対応づける。この場合、上記のa.からb.へ構成が変更される。[2n]にポインタmを設定し、[m]にポインタ2nを設定する。
【0078】
(2)右の子がないノード 2pに、ノード 2rを右の子として付加する。すなわち、ノード 2rをルートとするバイナリー・ツリーを付加する。右の子がない状態が、上記のc.およびe.のいずれであるかは、上記の判定手続きで識別できる。
【0079】
c.からd.への構成の変更の場合、[2r]にポインタ2pを設定し、[2p+1]にポインタ2r+1を設定する。
【0080】
一方、e.からf.への構成の変更の場合、[2r]にポインタ2pを設定し、[[2p+1]]にポインタ2r+1を設定する。
【0081】
(3)左の子がないノード 2pに、ノード 2qを左の子として付加する。すなわち、ノード 2qをルートとするバイナリー・ツリーを付加する。左の子がない状態が上記のc.およびe.のいずれであるかは上記の判定手続きで識別できる。
【0082】
c.からe.への構成の変更の場合、[2q]にポインタ2pを設定し、[2p+1]にポインタ2qを設定する。
【0083】
一方、d.からf.への構成の変更の場合、[2q]に[2p+1]を設定し、[2p+1]にポインタ2qを設定する。
【0084】
(4)ノード 2xあるいはノード2xをルートとするサブツリーを、その親ノードから分離する。ノード2xがd.e.f.の2q、2rのいずれに該当するかは上記の判定手続きで識別できる。
【0085】
d.の2rの場合、[[2x]+1]に0(nil)を設定する。
【0086】
e.の2qの場合、[[2x]+1]に0(nil)を設定する。
【0087】
f.の2rの場合、[[[2x]+1]]に[2x]を設定する。
【0088】
f.の2qの場合、[[[2x]-1]+1]に[2x]を設定する。
【0089】
図12は、図3および図4のバイナリーツリーを第1の実施形態の手法で扱ったデータ構造を、ポットも含めて正確に図示した図である。尚、各ノードの先頭番地は偶数番地である。
【0090】
図13は、図12のデータ構造と、バイナリー・サーチ・ツリーとして等価な構成である。このデータ構造は、どのノードも左の子を持たない。すなわち、どのノードも右の子のみを持つかあるいは子を持たないノードである。このデータ構造は、ルートノードaから末端のノードjまで昇順または降順のキーでソートされている。尚、ポットおよびノードの番地は、図12のデータ構造と同一である。この図13の構成のデータ構造を標準構造と称する。この標準構造は、標準構造記憶部109に格納され、送出データ抽出部107により参照される。
【0091】
次に、図12のデータ構造に基づいて、第1の実施形態に係るデータ構造管理の処理における手順を具体的に説明する。
【0092】
第1の実施形態に係るデータ構造管理装置は、上記のバイナリー・サーチ・ツリーの2ポインタ表現による複数のデータ構造を、等価であるデータの複数の表現として管理し、これらの1つに加えられた変更を、他のデータ構造に逐次反映することによって、これらを相互に同一(あるいは等価)のバイナリー・サーチ・ツリーとして機能させる。
【0093】
以下では、第1の実施形態に係るデータ構造管理システムが、例えば2台の計算機のRAM上の同一の番地(アドレス)に、各ノードおよびポットを配置した2つのデータ構造を管理する場合について説明する。
【0094】
(1)ノードの削除の場合
まず、2つの計算機上のデータ構造が、いずれも図12と全く同じであるとする。ここで、変更操作として一方において50をキーとするルートノードを削除し、60をキーとするノードを新たなルートノードとする構成を作るものとする。図14は、この変更操作後のデータ構造を示す。図14中において、図12と異なる、すなわち変更されたポインタは破線矢印で示す。削除されたノードfの2つのポインタは別として、削除後のバイナリー・サーチ・ツリーにおいて、ポットも含めて4つのポインタが変更されていることがわかる。
【0095】
ここで、第1の実施形態に係るデータ構造管理装置10の変更送信部111は、これら変更されたポインタ及びその格納番地のすべてを、逐一他方のデータ構造を管理するデータ構造管理装置の変更伝達部311に送信するのではなく、図13の標準構成に対して同一の変更操作を行なった場合に変更されるポインタのうち、ノードの先頭アドレスである偶数番地に格納されたポインタ情報だけを番地とともに送信する。
【0096】
図15は、図14に対応する標準構造を示す。この図1の標準構造において、図13と異なっている4つのポインタ値、すなわち、g番地の値e、e+1番地の値g+1、f番地の値0、f+1番地の値0のうち、<g番地の値e>および<f番地の値0>という2つの番地および値の組、あるいはこのどちらか一方の組が、変更データとして他方の計算機のコピー側データ構造管理装置30に送信される。
【0097】
この変更データを、変更受信部311を介して受信したコピー側のデータ構造管理装置の変更反映部301は、例えば<f番地の値0>のみが送られた場合、f番地が図12に示すように、バイナリー・ツリーのノードに使用されていることを前提にして、このf番地のノードをバイナリー・ツリーから削除する操作を行なう。このノードの削除の操作は、先に変更を行なったマスター側のデータ構造管理装置10と同じ手続で行なわれる。結果として、図14と同一である構成が変更反映部301によって作り出される。
【0098】
一方、<g番地の値e>のみが送られた場合でも、図12において、図13の標準構造をとったときにg番地が持つべきポインタの値fは、バイナリー・ツリー中の中間順序でgの左隣のノードの番地を計算することで求めうる。この変更データにより変更反映部301は、このg番地のポインタ値がeに変更されたことを検知し、この変更データにに対応して図15においてg+1に変更される前の図13の標準構造中のe+1番地の値がf+1であることを、上記のg番地の場合と同様にして求める。これにより、変更前のg番地の値がf、e番地の値がf+1であることがそれぞれ確認され、ノードfを削除する操作がマスター側のデータ構造管理装置10側で行なわれたことが判定できる。この判定に基づいて、コピー側のデータ構造管理装置30は、マスター側と同じ手続でf番地のノードを削除する。
【0099】
要するに、標準構造に照らしてどのような変更操作が行なわれたかを正確に判定するに足る番地および値の組が、変更送信部111から変更受信部311に送信されればよい。例えば、f番地の内容を実際には0にしなくても、削除の操作に限っては、<f番地の値0>を送信することで、f番地のノードを削除したことをコピー側に伝えることができる。
【0100】
尚、これらのaからjの番地がノードとして使用されていることをコピー側のデータ構造管理装置が判断するためには、記憶装置上に記憶内容の一部としてこれらの番地を保持しておいてこれを参照してもよい。あるいは、操作を行なう場合にはそれと知って操作しているのだから、変更送信部111において送出する番地および値の組に、当該番地がノードの(偶数)番地である旨を付加して、コピー側の変更受信部311に送信してもよい。
【0101】
また、対象データ構造を全く保持していなかった(コピー側)データ構造記憶部20にマスター側データ構造全体をコピーする1つの方法として、マスター側データ構造管理装置10上に、変更履歴の出力を全て保存しておき、この変更履歴をコピー側データ構造管理装置30に逐次入力してデータ構造を復元してもよい。
【0102】
上記のように、実際に変更されたポインタよりも少ないポインタの変更データを送るだけで、一方のデータ構造での変更を、他方のデータ構造に効率よく反映させることができる。
【0103】
(2)ノードの追加の場合
次に、データ構造にノードを追加する場合の変更反映手続を説明する。
【0104】
例えば、図14のデータ構造において、f番地のノードを再びp番地をポットとするバイナリー・サーチ・ツリーに追加することを考える。
【0105】
図16は、このf番地のノードを追加した後のバイナリー・サーチ・ツリーのデータ構造を示す。まず50をキーとしてツリーを探索し、f番地のノードを図16に示すように右の子がないノード eの右の子として追加することができる。図16に対応する標準構造は、図12と同様に図13であるから、図13の標準構造と図15の構造との違いは、g番地の値f、e+1番地の値f+1、f番地の値e、f+1番地の値g+1の4つのポインタである。
【0106】
マスター側の変更送信部111は、これらの4つのポインタのうち、<f番地の値e>および<g番地の値f>のいずれか一方をコピー側の変更受信部311に送信する。
【0107】
<f番地の値e>を受信した場合、コピー側の変更反映部301は、図14の状態においてf番地の値が0であることを調べる。変更反映部301は、送信されてきたポインタ値が、図14に対応する図15の標準構造において、ツリーにに属していなかったノード fをノード eの右の子として追加した図13の標準構造に対応するいずれかの構成、例えば図16の構成に対して図14の構成を変更する操作を指示するものと判定し、中間順序でノード eの右隣(直後)になるようにノード fを追加する操作を実行する。この追加操作の手順は、例えば以下の手順で行うことができる。
【0108】
a.指定されたノードをxとし、中間順序でその直前(または直後)になるように、追加されるノードyを追加する。すなわち、
b.xに左(または右)の子がなければ、yをxの左(または右)の子として処理を終了する。xに左(または右)の子があれば、その左(または右)の子を新たにxとする。
【0109】
c.xに右(または左)の子がなければ、yをxの右(または左)の子にして処理を終了する。xに右(または左)の子があれば、その右(または左)の子を新たにxとして再びc.を実行する。
【0110】
d.空のツリーを指定した場合は、追加されるノードxをルートとする。
【0111】
一方、<g番地の値f>を受信した場合は、変更反映部301は、ノード gがツリーに属しており、かつその標準構造におけるg番地の値がfでなくeであることを判定した上で、ノード fを中間順序でノード gの左隣(ソート順で直前)になるように追加する操作を実行する。この追加操作も、上記のa.からd.の機能により行うことができる。
【0112】
いずれの場合も、図16に示す同一の構成を得ることができる。
【0113】
上記のようにして、変更されたポインタのすべてを逐一送るのではなく、標準構造におけるポインタの変更の一部を送るだけで、一方に加えられた変更を他方に正確に反映してそれらの同一性(機能的な等価性)を維持することができる。尚、上記の具体例では、2つのデータ構造について説明したが、3つ以上の場合にも、直接変更を加えたデータ構造からそれ以外のデータ構造に同一のポインタ値変更データを送ることにより、複数のデータ構造間で同一性を保つことができる。
【0114】
また、伝達されるポインタの変更データは、標準構造におけるポインタ値及びポインタ格納番地そのものでなくてもよい。変更操作に対応して、送出データ抽出部107で効率的に作成でき、かつ、コピー側の変更反映部301でも効率的に操作内容が復元できる、ポインタ変更データと等価な変更データであればどのような形式でも構わない。
【0115】
尚、第1の実施形態においては、バイナリー・ツリーのルートへのポインタを格納した記憶要素をポットとし、ポットへのポインタをツリーのルートノードに格納している。この構成により、コピー側および/またはマスター側での変更対象ノードがルートであっても、ルート以外のノードの変更の場合と同様に、ノードに格納されたポインタの変更情報を伝達するだけで、コピー側の変更反映部301にマスター側データ構造における変更内容を正確にコピー側データ構造に反映させることができる。
【0116】
一例として、<f番地の値0>を受信したコピー側のデータ構造が図12に示すようにノードfをルートとする場合を説明する。[f]に格納されたポットへのポインタpを知ることによって、fを削除した後の新たなルートノード、例えばノードgの要素[g]にpを設定し、かつポットpの要素[p]にgを設定して、削除後の正しいデータ構造、例えば図14を作成することができる。
【0117】
バイナリー・サーチ・ツリーに関しては、機能的に等価であっても、異なる多数の構造をとることができ、任意のノードをルートとする構造があり得る。マスター側とコピー側とでツリーの構造が異なる場合には、変更対象のノードが、マスター側ではルートでなくともコピー側ではルートになっているという状況があり得る。ルートノードにポットへのポインタを格納しない図3のような構成の場合には、ルートノードの変更に伴って、これを参照している(ポットに相当する)変数を指定して、新たなルートを参照するように変更する必要がある。マスター側では変更対象ノードがコピー側でルートになっているか否かを知ることはできない。このため、どのノードを変更した場合でも、変更に伴ってコピー側でルートを参照する変数の変更の可能性が少しでもあれば、これらの変数のアドレスを変更情報に付加して送出しなければならない。
【0118】
第1の実施形態のように、ルートにポットを指示するポインタを格納すれば、必要に応じてツリーの各ノードからルートを経由してポットのアドレスを得ることができるので、ポットのアドレスを指示されなくてもルートノードの変更操作を行うことができる。従って、マスター側からコピー側にポットのアドレスを伝達する必要はない。但し、空のポットにノードを追加する場合や、標準構造におけるルートノードを変更する場合には、ポットのアドレスが送信される。しかし、これらの場合でも、ポットのアドレスはノードの要素の新たなポインタ値としてノードのアドレスと同様に扱われ、特別な付加データとして送信されるのではない。
【0119】
尚、第1の実施形態ではツリー(のルート)を参照する変数をポット1つとして説明したが、ツリーを参照する変数が複数ある場合にも、1つのポットを経由してツリーにアクセスする図19のような構成を採れば、上述の方法を何ら変更することなくマスター側とコピー側とでデータ構造の等価性を維持することができる。さらに、図19に示すように、ポット側に当該ポットを参照する各変数へのポインタを格納すれば、各変数がどのポットを参照しているかという状態の変更を、これらポット側のポインタの変更として伝達することによって処理できる。
【0120】
第1の実施形態では、ポットへのポインタを、ルートノードの、親または右の兄弟へのポインタを格納する記憶要素に格納していたので、ポットを含めたデータ構造を構成するのに、何ら余分な記憶リソースを要することがない。この他、こうしたコンパクトな実現方法の他に、図20に示すように、各ノードにポットへのポインタを格納する構成を採ることもできる。この場合には、ルートノードの親または右の兄弟へのポインタを格納する要素には、ポットへのポインタを格納する必要がない。
【0121】
第1の実施形態は、バイナリー・ツリーのルートへのポインタを格納した要素をデータ構造に含め、少なくとも1つのノードにポットへのポインタを格納することによって、ポットの番地を指定しなくてもルートの変更操作を行うことができる。このため、マスター側からコピー側へ変更情報を伝達する際に、ノードに格納されたポインタの変更情報のみを送信するだけでよく、ツリー(のルート)を参照する変数の番地を付加する必要がない。また、このような構成においては、ポットは1つとは限らず、複数設けることもできる。
【0122】
また、第1の実施形態で扱うバイナリー・ツリーに限らず、一般にポインタによって構成される動的なデータ構造は、その一部の記憶要素のアドレスを知って、その要素から探索等のアクセスが開始される。バイナリー・ツリーではルートノードがこのような要素であり、そこからバイナリー・サーチが適用される。動的に変更されるデータ構造では、このような要素(例えばルートノード)は変更されうるが、それに伴って、このような要素を参照している要素(変数)も変更する必要がある。これらの変数を変更するためには、これらの変数の番地あるいは番地を決定するための情報をマスター側からコピー側に伝達しなければならない。
【0123】
第1の実施形態は、データ構造の一部として動的に番地が変わらない記憶要素(ポット)を設け、動的に番地が変更されうる要素(ルートノードあるいは各ノード)からこの番地が変わらない要素への対応をデータ構造の機能として記憶する、即ち、ルートノードあるいは各ノードにポットへのポインタを格納する。このため、変更操作のたびにデータ構造への参照を保持する変数の番地をマスター側からコピー側へ伝達する手間を省くことができる。
【0124】
さらに、マスター側からコピー側への伝達の手間が減少するだけでなく、単独のデータ構造(例えば、マスター側のみ)の変更操作を行う際にも、データ構造変更部への入力としてポットの番地(データ構造への参照を保持する変数の番地)を指定する必要がない。これにより、変更操作の前提としてデータ構造への参照を保持する変数の番地を知らなければならないという制約が除去され、データ構造への変更操作の適用の自由度が著しく向上する。
【0125】
また、例えば、データ構造からノードを削除する操作を行う際に、削除対象ノードがそのデータ構造の唯一のノードである場合には、そのデータ構造すなわちそのノードを参照している変数ポットを、無効なノードを参照させないように変更する必要がある。このためには、ポットの番地を知る必要があるが、ノードから当該ノードが属するバイナリー・ツリーのポットを知る手段がなければ、削除対象ノードとはべつにポットを示す情報を指定しなければならない。この指定は、上記のように全ての削除操作において必要なわけではないが、
(1)必要か否かの判定を行ったうえで指定する。
【0126】
(2)必要か否かに拘わらず指定する。
【0127】
(3)必要な状況に陥らないようにデータ構造の使用を制限する。例えば、常に一つは(ダミーであっても)ノードを有するように使用する。
【0128】
等のいずれの方法をとっても、余計な時間や記憶リソースを要する。特に指定すべきポットを知り得ない状況で削除操作が行われるおそれがある場合は、このための回避策は上記の(3)しかない。
【0129】
同様の状況は、ルートノードが削除される(削除すべきノードがたまたまルートノードであった)場合や、スプレイング操作等でルートノードが交替する場合にも生ずるため、上記の(1)、(2)または(3)のような対策に余計なリソースを要する機会は少なくない。
【0130】
第1の実施形態のように、ノードからポットを知る手段がデータ構造に備わっていれば、真に必要な場合以外はポットを指定する必要がなく、操作対象ノードのみを指定して変更操作を行うことができるだけでなく、上記(3)のようにデータ構造の使用を制限したり、余分なリソースを要することもない。
【0131】
第1の実施形態によれば、以下の効果が得られる。
【0132】
第1の実施形態に係るデータ構造管理システムは、任意のデータ構造の標準構造におけるポインタ値の変更に着目して、変更されたポインタ値のうち、標準構成を前提にすれば変更反映部301側で推定および復元可能なポインタ値を省略して、変更データを生成し、伝達する。これにより、データ構造を変更するプログラムに意識させることなく、変更データの通信量を減少させるとともに、変更反映処理の処理時間を削減することができる。
【0133】
尚、第1の実施形態の変形例として、上記の追加の例において、コピー側のデータ構造が図17に示すように、図14のマスター側データ構造と異なる構成である場合にも、上記の変更反映処理を適用することができる。
【0134】
<f番地の値e>または<g番地の値f>を受信して、上記の機能を使用してノードfの追加を行なうことによって、図16とバイナリー・サーチ・ツリーとしては等価な図18の構成に変更することができる。
【0135】
このように、マスター側とコピー側が異なる構成であっても、あるいは複数のコピーがそれぞれ異なる構成であっても、標準構造におけるポインタの変更の一部を伝送するだけで、それらの間の等価性を維持することができる。
【0136】
第2の実施形態
以下、図21から図23を参照して、本発明に係るデータ構造管理装置、データ構造管理システム、データ構造管理方法およびデータ構造管理プログラムの第2の実施形態を、第1の実施形態と異なる点についてのみ、詳細に説明する。
【0137】
第2の実施形態は、第1の実施形態が行うコピー側データ構造へのポインタ情報であるアドレスの送出に替えて、相対的位置情報を送出する機能を提供する。具体的には、第2の実施形態は、データ構造の各ノードに、キーの他に「区間管理方法」(特許第2768921号)に開示されている部分区間長を格納し、区間の位置によるノードの探索およびノードに対応づけられた区間の算出を行なう。
【0138】
図21は、本発明の第2の実施形態に係るデータ構造管理装置の機能構成を示すブロック図である。図21に示すように、第2の実施形態は、図1の第1の実施形態と比較して、マスター側データ構造管理装置10中に位置探索部113と、コピー側データ構造管理装置30中に位置探索部313とをさらに具備する点において、第1の実施形態の変形である。
【0139】
位置探索部113および位置探索部313は、区間の位置によるノードの探索およびノードに対応づけられた区間の算出を行なう。
【0140】
その他の構成は、図1の第1の実施形態と同様であるため、説明は省略する。
【0141】
図22(a),(b)は、第2の実施形態におけるデータ構造の一例を示す。図22(a),(b)において、各ノードに対応づけられた区間の長さは全て1であり、各区間の端はそのノードのLCRオーダーにおける左からの順位を表わしている。
【0142】
マスター側のデータ構造管理装置10の送出データ抽出部107bは、標準構造記憶部109中の標準構造において変更操作の結果変更されたポインタ値及びポインタの格納番地を、位置探索部113を介して位置情報として得る。この位置情報は、変更以前の状態におけるその番地を含むノードの先頭からその番地までのオフセットと、そのノードが所属するバイナリー・ツリー中でのそのノードの区間(順位)の値と、そのバイナリー・ツリーのポットの番地との組で表わされる。この位置情報は、コピー側のデータ構造管理装置30の変更受信部311に送出される。
【0143】
コピー側のデータ構造管理装置30の変更反映部301は、変更受信部311により受信された相対位置情報である変更データに基づいて、ポットの番地からそのポットに対応するツリーのルートを決定し、区間(順位)を指定して位置探索部313に指示する。位置探索部313は、その位置を含む区間(その順位)の、コピー側データ構造におけるノードの番地(先頭番地)を決定し、決定された先頭番地にオフセットを加えることにより、コピー側のデータ構造における対応する番地を算出する。
【0144】
図22(a),(b)においては、例えば番地fは「q番地のポットの順位1のノードのオフセット0の番地」と表わされる。また番地eは「p番地のポットの順位5のノードのオフセット0の番地」と表わされる。従って、変更送信部111が送出する変更データの内容としては、例えば<f番地の値e>の替わりに、<q番地のポットの順位1のノードのオフセット0の番地に、p番地のポットの順位5のノードのオフセット0の番地が格納された>という情報を示す位置情報となる。
【0145】
尚、データ構造の状態および変更操作に関して、第1の実施形態と異なる点は、ポット以外の番地はノードからのオフセットにより指定される点である。このために、ノードfはポットpのツリーに追加される前にも、ポットqのツリーに属していることとなる。変更操作としては、図23(a),(b)に示すように、いったんノードfを削除してから、これをLCRオーダーでノードeの右隣の位置になるように追加する。
【0146】
第2の実施形態によれば、以下の効果が得られる。
【0147】
すなわち、相対的位置情報を変更データとして送出するので、マスター側のデータ構造とコピー側のデータ構造とで、対応するノードが必ずしも同一の番地を占める必要がない。このため、マスター側とコピー側とで記憶領域(アドレス空間)の大きさや使い方が異なっていても、上記のデータ構造の等価性を実現でき、本発明の適用対象を著しく拡大することができる。
【0148】
尚、バイナリー・ツリー(バイナリー・サーチ・ツリー)において、ツリー中のノードを特定する手法として、上記の区間管理方法による以外の手法を用いることができる。例えば、図23(a),(b)に示すように、各ノードのキーが全て異なる場合のように、変更の対象となるノードと同じキーを持つノードが変更前後のツリー中に存在しなければ、当該ノードの特定のために、キーを用いてもよい。
【0149】
また、上記の説明は、複数のデータ構造間でポットの番地が一致している場合に、ノードの番地が異なることを許すものであるが、逆にノードの番地が共通で、ポットの番地が異なることを許すようにもできる。但し、標準構造における変更に関しては、ポットの番地が変更データとして送られるのはルートである左端のノードが変わる場合だけである。
【0150】
尚、上記の方法の拡張として、データ構造ごとに番地が異なってもよいノードおよびポットから成る部分に関しては、そのノードまたはポットを特定するデータ及びオフセットの組で共通の番地からそのデータ構造における対応する番地を算出するに足るデータを、マスター側の変更送信部111bとコピー側の変更受信部311との間で送受するという手法が可能である。
【0151】
第3の実施形態
以下、図24から図26を参照して、本発明に係るデータ構造管理装置、データ構造管理システム、データ構造管理方法およびデータ構造管理プログラムの第3の実施形態を、第1および第2の実施形態と異なる点についてのみ、詳細に説明する。
【0152】
図24は、第3の実施形態に係るデータ構造管理装置の機能構成を示すブロック図である。図24に示すように、第3の実施形態は、第1および第2の実施形態と異なり、マスター側に標準構造記憶部109を持たず、図1のデータ構造変更部105と送出データ抽出部107の機能を併せ持つデータ構造変更・抽出部106を具備する点において、第1の実施形態の変形である。
【0153】
第1および第2の実施形態においては、データ構造変更部105から出力されるポインタ変更情報のうち、標準構造記憶部109に記憶されている標準構造における変更のみを送出データ抽出部107、107bが抽出あるいはさらに適宜変換して変更送信部111、111bに出力する。一方、第3の実施形態においては、データ構造記憶部20のデータ構造をデータ構造変更・抽出部106が変更する際に、変更対象のデータ構造上で変更対象ポインタの標準構造における値を算出し、必要な変更データのみを変更送信部111に出力する。
【0154】
これにより、標準構造記憶部109に標準構造を保持するのに要する資源およびデータ構造の変更に伴ってこの標準構造を変更するための手間を省くことができる。同時に、データ構造変更部105から一旦出力された変更データを、標準構造に照らして抽出するという送出データ抽出部107の手間を軽減することができる。
【0155】
第3の実施形態は、データ構造として、第1の実施形態と同じバイナリー・ツリーを使用する。データ構造変更・抽出部106は、変更操作に応じて、必要な変更データを抽出するためにデータ構造記憶部20に記憶されている変更対象のデータ構造そのものを使用する。
【0156】
以下、第3の実施形態におけるデータ構造変更に伴う変更反映処理の処理手順を説明する。
【0157】
(1)ノードの削除の場合
例えば、図12のデータ構造においてノードfを削除する際に、変更データとして<g番地の値e>または<f番地の値0>を得る必要がある。<f番地の値0>は特に標準構造に照らさなくても作成できるが、<g番地の値e>は図12のデータ構造からは容易には得られない。第3の実施形態におけるデータ構造変更・抽出部106は、self-adjusting binary treeの操作であるスプレイング(splaying)を使用して、図12のデータ構造を変更、すなわちノードfを削除するとともに、削除後の標準構造における<g番地の値e>を以下のように決定する。
【0158】
(i)まず、削除対象のノードfにスプレイングを適用してfをルートノードとする。図12では既にfがルートノードになっているので、この操作が終わった状態と考えればよい。
【0159】
(ii)次に、LCRオーダーでノードfの右隣のノードgおよび左隣のノードeを求め、gにスプレイングを適用して、図25に示すように、gをルートノードに移動する。
【0160】
(iii)最後にfの左隣のノードeにスプレイングを適用してeをルートに移動すると、ノードe,fおよびgの間の構造は、図26に示すようになる。
【0161】
(iv)この図26の状態でノードfを削除すれば、ノードgはLCRオーダーで左隣のノードeの右の子となり、ノードg自身は左の子を持たない構造となる。この構造はノードf削除後の標準構造図である図15におけるeとg との関係と一致しており、<g番地の値e>も同一である。
【0162】
このように、ノードを削除する場合、削除対象ノード、右隣のノード、左隣のノードの順にスプレイングを行った後に削除を行えば、左隣のノードと右隣のノードとの間の構造は必ず、「右隣のノードは左の子を持たず、かつ左隣のノードの右の子になっている」という標準構造に一致する。これを利用して、変更送信部111は、データ構造記憶部20のデータから直接送信すべき変更データ(上記の例では<g番地の値e>)を抽出することができる。
【0163】
(2)ノードの追加の場合
図17のデータ構造において、ノードfを追加する場合は、以下の手順を実行する。
【0164】
(i)まず、ノードfを適切な位置に追加して、例えば図18のようなデータ構造に変更する。
【0165】
(ii)次に、ノードfにスプレイングを適用してルートに移動し、さらにノードfの左隣のノードeを求めてノードeにスプレイングを適用する。
【0166】
(iii)その結果、ノードfは左の子を持たず、かつ(ルートノード)eの右の子となって、ノードeとノードfとの関係は図13の標準構造に一致する。得られたこの構造から、変更送信部111が送信すべき<f番地の値e>を抽出することができる。
【0167】
(iv)同様に、LCRオーダーでノードfの右隣のノードを求め、まずノードgにスプレイングを適用した後に、続けてノードfにスプレイングを適用する。
【0168】
(v)その結果、ノードgは左の子を持たず、かつ(ルートノード)fの右の子となって、ノードfとノードgとの関係は、図13に示す標準構造に一致する。この構造から、変更送信部111が送信すべき<g番地の値f>を抽出することができる。
【0169】
以上の手順により、特に記憶された標準構造を参照しなくても、データ構造記憶部20のデータ構造を使用して標準構造におけるポインタ値を計算して変更送信部111に出力するようにデータ構造変更・抽出部106を構成することができる。
【0170】
尚、第3の実施形態においては、スプレイングを適用して実際にデータ構造を変形した後に、所定のノードの番地内容を読みとることによって変更データの抽出が行われた。しかし、実際にこの手続きを全て行わなくても、操作の種類(ノードの削除、追加)ごとに、操作対象ノードとLCRオーダーとによりその左隣または右隣のノードが求められれば、最終的に抽出される変更データを作成することができる。この場合には、標準構造はデータ構造記憶部20のデータ構造に部分的にも保持されている必要はない。ここで抽出される変更データは、指定された標準構造におけるポインタの値であるため、データ構造変更・抽出部106は、標準構造を参照するのと等価な計算を行っていると言いうる。
【0171】
本発明の1つの特徴は、変更送信部111から変更受信部311に伝達される変更データが標準構造におけるポインタ(変数の)値であることである。この変更データがいかなる方法によって抽出、計算されていてもその機能および効果に差異はない。従って、抽出、計算の手法に種々の方法を適用しても本発明の本旨を逸脱することはない。
【0172】
尚、上記の実施形態では、データ構造(二分探索木)としてソートされたデータを扱う。この標準構造は、データのソート順とノードの結合順が対応するように設定されており、ソート順に影響を及ぼす変更操作のみがノードの結合順を変えるように構成されている。同一のソート順のデータを表していれば、データ構造が異なっていても機能的な差異はない。従って、上記の実施形態は、ソートされたデータを扱うデータ構造に関して、機能的な差異を生ずる変更のみを標準構造におけるポインタの変更として抽出するものの一例である。
【0173】
尚、本発明は上述した実施形態に限定されるものではなく、本発明の本旨を逸脱することなく、種々変更・変形を成し得ることが可能であることは言うまでもない。また、これらの変更・変形はすべて本発明の範囲内に含まれるものである。
【0174】
【発明の効果】
以上説明したように、本発明によれば、以下の効果を奏する。
【0175】
すなわち、本発明に係るデータ構造管理装置、データ構造管理システム、データ構造管理方法およびデータ構造管理プログラムを格納する記録媒体は、1つまたは複数の計算機上の、1つまたは複数の記憶領域上の複数のデータ構造の等価性を、わずかな通信量の変更データを送受することによって容易に効率よく維持することを可能とする。また、それぞれ異なる番地に格納されるデータ構造であっても、これらの等価性維持を可能とする。また、ネットワーク上の複数の計算機間でポインタ構造を効率よく複製することができ、例えば高信頼性システムなど多様なシステムに適用できる。
【0176】
このように、本発明を用いれば、データ構造をネットワーク上の複数の計算機に共有させ、これらデータ構造を共有する各計算機上で記憶領域の管理をそれぞれ独自に効率よく行うことができる。
【図面の簡単な説明】
【図1】本発明の第1の実施形態に係るデータ構造管理システムの機能構成を示すブロック図である。
【図2】本発明の第1の実施形態に係るデータ構造管理方法の概略の処理手順を示すフローチャートである。
【図3】2ポインタ表現のバイナリー・ツリーのポインタ構造を説明する図である。
【図4】図3のバイナリー・ツリーのツリー構造を説明する図である。
【図5】バイナリー・ツリーのノードに格納されるポインタ(番地)を説明する図である。
【図6】ツリーが空の場合のポットのノードのポインタを説明する図である。
【図7】ポットとルートとのノードのポインタ関係を説明する図である。
【図8】子がないノードのポインタを説明する図である。
【図9】右の子のみを持つノードのポインタを説明する図である。
【図10】左の子のみを持つノードのポインタを説明する図である。
【図11】左右両方の子を持つノードのポインタを説明する図である。
【図12】図3のバイナリー・ツリーを、ポットを含めて記述したデータ構造の一例を示す図である。
【図13】図12のデータ構造と等価である標準構造の一例を示す図である。
【図14】変更操作を行った後の図12のデータ構造の一例を示す図である。
【図15】図14と同様の変更操作を行った後の図13の標準構造の一例を示す図である。
【図16】図14のデータ構造に追加の変更操作を行った後のデータ構造の一例を示す図である。
【図17】マスター側のデータ構造と異なるコピー側のデータ構造の一例を示す図である。
【図18】図17のデータ構造に対するノードの追加操作で得られる、図16のデータ構造と等価であるデータ構造の一例を示す図である。
【図19】第1の実施形態の変形例に係るポットとこのポットを参照する変数とのポインタ構造の一例を説明する図である。
【図20】第1の実施形態の変形例に係るポットとデータ構造を構成する各ノードとのポインタ構造の一例を説明する図である。
【図21】本発明の第2の実施形態に係るデータ構造管理システムの機能構成を示すブロック図である。
【図22】第2の実施形態に係るデータ構造の一例を示す図である。
【図23】図22のデータ構造に対してノードfを追加して得られるデータ構造の一例を示す図である。
【図24】本発明の第3の実施形態に係るデータ構造管理システムの機能構成を示すブロック図である。
【図25】図12のデータ構造に対して、ルートノードfの右隣のノードgにスプレイングを適用してノードgをルートに移動した後のデータ構造を示す図である。
【図26】図25のデータ構造に対して、ノードfの左隣のノードeにスプレイングを適用してノードeをルートに移動した後のデータ構造を示す図である。
【符号の説明】
10 データ構造管理装置
20 データ構造記憶部
30 データ構造管理装置
103 データ探索部
105 データ構造変更部
106 データ構造変更・抽出部
107、107b 送出データ抽出部
109 標準構成記憶部
111、111b 変更送信部
301 変更反映部
303 データ探索部
311 変更受信部
313 位置探索部
Claims (7)
- 1つまたは複数の記憶装置に格納され、相互に等価である複数のデータ構造を管理するデータ構造管理装置であって、
二分探索木により、他のノードへの複数のポインタを格納するノードで構成される第1のデータ構造を格納するデータ構造記憶部と、
前記第1のデータ構造を変更するデータ構造変更部と、
前記第1のデータ構造が有するすべてのノードを、昇順或いは降順にソートされた順序で配列し、かつすべてのノードのそれぞれは、同じ片側の子ノードのみへのポインタを格納する或いは子ノードへのポインタを格納しないのいずれかである標準構造を格納する標準構造記憶部と、
前記データ構造変更部により変更されたノードと同一のノードに対する同種の変更操作により、前記標準構造上で、そのソート順序が変化するノードが格納するポインタの一部のみを、前記第1のデータ構造上の変更データとして抽出する変更データ抽出部と、
前記抽出された変更データを、第2のデータ構造に反映させるべく出力する変更データ送信部とを具備する
ことを特徴とするデータ構造管理装置。 - 前記変更データ抽出部は、
ノードが削除された際に、削除されたノードのポインタの非参照状態への変更を示すデータを前記変更データとして抽出する
ことを特徴とする請求項1に記載のデータ構造管理装置。 - 前記第1のデータ構造は、ルートノードへのポインタを格納する記憶要素を含んで構成される
ことを特徴とする請求項1または2に記載のデータ構造管理装置。 - 1つまたは複数の記憶装置に格納され、相互に等価である複数のデータ構造を管理するデータ構造管理装置であって、
二分探索木により、他のノードへの複数のポインタを格納するノードで構成される第1のデータ構造と等価である第2のデータ構造を格納するデータ構造記憶部と、
前記第1のデータ構造上の変更データを入力する変更データ入力部と、
前記変更データを前記第2のデータ構造に反映する変更データ反映部とを具備するデータ構造管理装置であって、
前記変更データは、前記第1のデータ構造で変更されたノードと同一のノードに対する同種の変更操作により、標準構造上で、そのソート順序が変化するノードが格納するポインタの一部のみを抽出することにより得られ、
前記標準構造は、前記第1のデータ構造が有するすべてのノードを、昇順或いは降順にソートされた順序で配列し、かつすべてのノードのそれぞれは、同じ片側の子ノードのみへのポインタを格納する或いは子ノードへのポインタを格納しないのいずれかである
ことを特徴とするデータ構造管理装置。 - 1つまたは複数の記憶装置に格納され、相互に等価である複数のデータ構造を管理するデータ構造管理装置であって、
二分探索木により、他のノードへの複数のポインタを格納するノードで構成される第1のデータ構造を格納するデータ構造記憶部と、
前記第1のデータ構造を変更するデータ構造変更部と、
前記第1のデータ構造が有するすべてのノードを、昇順或いは降順にソートされた順序で配列し、かつすべてのノードのそれぞれは、同じ片側の子ノードのみへのポインタを格納する或いは子ノードへのポインタを格納しないのいずれかである標準構造を格納する標準構造記憶部と、
前記データ構造変更部により変更されたノードと同一のノードに対する同種の変更操作により、前記標準構造上で、そのソート順序が変化するノードが格納するポインタの一部のみを、前記第1のデータ構造上の変更データとして抽出する変更データ抽出部と、
前記抽出された変更データを、第2のデータ構造に反映させるべく出力する変更データ送信部とを具備する第1のデータ構造管理装置と、
前記第1のデータ構造と等価である前記第2のデータ構造を格納する第2のデータ構造記憶部と、
前記第1のデータ構造管理装置の前記変更データ送信部から出力される前記変更データを入力する変更データ入力部と、
前記変更データを前記第2のデータ構造に反映する変更データ反映部とを具備する第2のデータ構造管理装置とを具備する
ことを特徴とするデータ構造管理システム。 - 1つまたは複数の記憶装置に格納され、相互に等価である複数のデータ構造を管理するデータ構造管理方法であって、
二分探索木により、他のノードへの複数のポインタを格納するノードで構成される第1のデータ構造を変更するデータ構造変更ステップと、
前記第1のデータ構造が有するすべてのノードを、昇順或いは降順にソートされた順序で配列し、かつすべてのノードのそれぞれは、同じ片側の子ノードのみへのポインタを格納する或いは子ノードへのポインタを格納しないのいずれかである標準構造を格納する標準構造格納ステップと、
前記データ構造変更ステップにおいて変更されたノードと同一のノードに対する同種の変更操作により、前記標準構造上で、そのソート順序が変化するノードが格納するポインタの一部のみを、前記第1のデータ構造上の変更データとして抽出する変更データ抽出ステップと、
前記抽出された変更データを、第2のデータ構造に反映させるべく出力する変更データ送信ステップとを含む
ことを特徴とするデータ構造管理方法。 - 1つまたは複数の記憶装置に格納され、相互に等価である複数のデータ構造を管理するデータ構造管理処理をコンピュータに実行せしめるプログラムを格納するコンピュータ読み取り可能な記録媒体であって、前記プログラムは、
二分探索木により、他のノードへの複数のポインタを格納するノードで構成される第1のデータ構造を変更するデータ構造変更処理と、
前記第1のデータ構造が有するすべてのノードを、昇順或いは降順にソートされた順序で配列し、かつすべてのノードのそれぞれは、同じ片側の子ノードのみへのポインタを格納する或いは子ノードへのポインタを格納しないのいずれかである標準構造を格納する標準構造格納処理と、
前記データ構造変更処理により変更されたノードと同一のノードに対する同種の変更操作により、前記標準構造上で、そのソート順序が変化するノードが格納するポインタの一部のみを、前記第1のデータ構造上の変更データとして抽出する変更データ抽出処理と、
前記抽出された変更データを、第2のデータ構造に反映させるべく出力する変更データ送信処理とを含む
ことを特徴とするコンピュータ読み取り可能な記録媒体。
Priority Applications (6)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP35363099A JP3866466B2 (ja) | 1999-12-13 | 1999-12-13 | データ構造管理装置、データ構造管理システム、データ構造管理方法およびデータ構造管理プログラムを格納する記録媒体 |
US10/149,822 US7222125B2 (en) | 1999-12-13 | 2000-12-13 | Data structure managing device, data structure managing system, data structure managing method, and recorded medium where data structure managing program is stored |
CNB008181365A CN1174319C (zh) | 1999-12-13 | 2000-12-13 | 数据结构管理装置、数据结构管理系统和方法 |
EP00981685A EP1244017A4 (en) | 1999-12-13 | 2000-12-13 | DEVICE, SYSTEM AND METHOD FOR DATA STRUCTURE MANAGEMENT, AND RECORDING MEDIUM FOR STORING A DATA STRUCTURE MANAGEMENT PROGRAM |
KR10-2002-7007527A KR100515910B1 (ko) | 1999-12-13 | 2000-12-13 | 데이터구조 관리장치, 데이터구조 관리시스템, 데이터구조관리방법 및 데이터구조 관리프로그램을 격납하는 기록매체 |
PCT/JP2000/008815 WO2001042924A1 (fr) | 1999-12-13 | 2000-12-13 | Systeme, procede et dispositif de gestion de structures de donnees et support d'enregistrement sur lequel un programme de gestion de structures de donnees est stocke |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP35363099A JP3866466B2 (ja) | 1999-12-13 | 1999-12-13 | データ構造管理装置、データ構造管理システム、データ構造管理方法およびデータ構造管理プログラムを格納する記録媒体 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2001166977A JP2001166977A (ja) | 2001-06-22 |
JP3866466B2 true JP3866466B2 (ja) | 2007-01-10 |
Family
ID=18432155
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP35363099A Expired - Fee Related JP3866466B2 (ja) | 1999-12-13 | 1999-12-13 | データ構造管理装置、データ構造管理システム、データ構造管理方法およびデータ構造管理プログラムを格納する記録媒体 |
Country Status (6)
Country | Link |
---|---|
US (1) | US7222125B2 (ja) |
EP (1) | EP1244017A4 (ja) |
JP (1) | JP3866466B2 (ja) |
KR (1) | KR100515910B1 (ja) |
CN (1) | CN1174319C (ja) |
WO (1) | WO2001042924A1 (ja) |
Families Citing this family (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
AUPO808897A0 (en) * | 1997-07-17 | 1997-08-14 | Commonwealth Scientific And Industrial Research Organisation | Toxin genes from the bacteria xenorhabdus nematophilus and photohabdus luminescens |
US7822757B2 (en) * | 2003-02-18 | 2010-10-26 | Dun & Bradstreet, Inc. | System and method for providing enhanced information |
US6961733B2 (en) * | 2003-03-10 | 2005-11-01 | Unisys Corporation | System and method for storing and accessing data in an interlocking trees datastore |
US7502812B2 (en) * | 2003-08-21 | 2009-03-10 | Microsoft Corporation | Electronic ink processing |
CA2470118C (en) * | 2003-08-21 | 2012-01-03 | Microsoft Corporation | Electronic ink processing |
CN100414559C (zh) * | 2003-08-21 | 2008-08-27 | 微软公司 | 电子墨水处理方法和系统 |
WO2005029393A1 (en) * | 2003-08-21 | 2005-03-31 | Microsoft Corporation | Electronic ink processing |
US7616333B2 (en) * | 2003-08-21 | 2009-11-10 | Microsoft Corporation | Electronic ink processing and application programming interfaces |
CN100559364C (zh) * | 2003-08-21 | 2009-11-11 | 微软公司 | 用于将第一数据结构与第二数据结构相协调的方法 |
US7958132B2 (en) * | 2004-02-10 | 2011-06-07 | Microsoft Corporation | Voting based scheme for electronic document node reuse |
US20070162508A1 (en) * | 2004-11-08 | 2007-07-12 | Mazzagatti Jane C | Updating information in an interlocking trees datastore |
US8214754B2 (en) | 2005-04-15 | 2012-07-03 | Microsoft Corporation | Registration of applications and complimentary features for interactive user interfaces |
US8909676B1 (en) * | 2006-10-06 | 2014-12-09 | Uei Cayman Inc. | Star cluster codeset database for universal remote control devices |
JP2009069941A (ja) * | 2007-09-11 | 2009-04-02 | Honda Motor Co Ltd | データ生成システムおよびデータ生成方法 |
JP4789021B2 (ja) | 2009-02-06 | 2011-10-05 | 日本電気株式会社 | データ処理装置及びデータ処理方法 |
US8886681B2 (en) * | 2010-08-20 | 2014-11-11 | Andrea Keating | Data analytics system |
US8788538B2 (en) * | 2011-12-07 | 2014-07-22 | Microsoft Corporation | Navigation of hierarchical data using climb/dive and spin inputs |
GB2517477A (en) * | 2013-08-22 | 2015-02-25 | Deep Secure Ltd | A method of transmitting data structures from one computer to another computer |
EP3213205A1 (en) * | 2014-10-31 | 2017-09-06 | Convida Wireless, LLC | Managing application relationships in machine-to-machine systems |
CN106202121B (zh) * | 2015-05-07 | 2019-06-28 | 阿里巴巴集团控股有限公司 | 数据存储及导出的方法和设备 |
US11054994B2 (en) * | 2017-12-14 | 2021-07-06 | International Business Machines Corporation | Copy source to target management in a data storage system |
US10521139B2 (en) | 2017-12-14 | 2019-12-31 | International Business Machines Corporation | Copy source to target management in a data storage system |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0833861B2 (ja) | 1986-10-24 | 1996-03-29 | 株式会社日立製作所 | 共通情報比較方法 |
US5379422A (en) * | 1992-01-16 | 1995-01-03 | Digital Equipment Corporation | Simple random sampling on pseudo-ranked hierarchical data structures in a data processing system |
US5657437A (en) * | 1993-12-10 | 1997-08-12 | Lucent Technologies Inc. | Data processing apparatus and method including proportional updating of data |
JP2768921B2 (ja) * | 1994-09-13 | 1998-06-25 | 株式会社東芝 | データ検索装置、データ処理装置、データ検索方法及びデータ処理方法 |
JP3441807B2 (ja) * | 1994-09-19 | 2003-09-02 | 株式会社日立製作所 | B木インデクスの管理方法およびシステム |
JP3748936B2 (ja) * | 1996-03-18 | 2006-02-22 | パイオニア株式会社 | 情報記録装置及び方法並びに情報再生装置及び方法 |
JPH11167510A (ja) * | 1997-12-04 | 1999-06-22 | Hitachi Ltd | レプリケーション方法、レプリケーションツール、および、レプリケーションサーバ |
US6115721A (en) * | 1998-06-23 | 2000-09-05 | International Business Machines Corporation | System and method for database save and restore using self-pointers |
US6141731A (en) * | 1998-08-19 | 2000-10-31 | International Business Machines Corporation | Method and system for managing data in cache using multiple data structures |
-
1999
- 1999-12-13 JP JP35363099A patent/JP3866466B2/ja not_active Expired - Fee Related
-
2000
- 2000-12-13 US US10/149,822 patent/US7222125B2/en not_active Expired - Fee Related
- 2000-12-13 EP EP00981685A patent/EP1244017A4/en not_active Withdrawn
- 2000-12-13 WO PCT/JP2000/008815 patent/WO2001042924A1/ja not_active Application Discontinuation
- 2000-12-13 CN CNB008181365A patent/CN1174319C/zh not_active Expired - Fee Related
- 2000-12-13 KR KR10-2002-7007527A patent/KR100515910B1/ko not_active IP Right Cessation
Also Published As
Publication number | Publication date |
---|---|
EP1244017A1 (en) | 2002-09-25 |
KR100515910B1 (ko) | 2005-09-21 |
JP2001166977A (ja) | 2001-06-22 |
CN1415091A (zh) | 2003-04-30 |
US7222125B2 (en) | 2007-05-22 |
US20020191452A1 (en) | 2002-12-19 |
CN1174319C (zh) | 2004-11-03 |
WO2001042924A1 (fr) | 2001-06-14 |
EP1244017A4 (en) | 2005-02-02 |
KR20020061639A (ko) | 2002-07-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3866466B2 (ja) | データ構造管理装置、データ構造管理システム、データ構造管理方法およびデータ構造管理プログラムを格納する記録媒体 | |
CN109254733B (zh) | 用于存储数据的方法、装置和系统 | |
JP4406609B2 (ja) | 単一のインターフェイスからのデータの多重階層を管理するための手法 | |
EP3916536A1 (en) | Data processing method and nvme storage device | |
CN111386522B (zh) | 用于数据存储的系统和方法 | |
US20020087596A1 (en) | Compact tree representation of markup languages | |
JP5092234B2 (ja) | 情報処理装置、分散同期型情報システム、情報同期方法、及び、プログラム | |
US10936559B1 (en) | Strongly-consistent secondary index for a distributed data set | |
US8386526B2 (en) | Coupled node tree backup/restore apparatus, backup/restore method, and program | |
JP4713257B2 (ja) | データ記憶装置及びバージョン管理プログラム | |
US9292549B2 (en) | Method and system for index serialization | |
US7003773B2 (en) | Dynamic interface aggregation on demand | |
JP2001101042A (ja) | データ管理システム及びデータ管理方法 | |
JP4971717B2 (ja) | ディレクトリ分散型記憶装置及びデータ処理要求移譲プログラム | |
CN104580428A (zh) | 一种数据路由方法、数据管理装置和分布式存储系统 | |
JP2007287180A (ja) | 分散ファイルシステム、分散ファイルシステムサーバ及び分散ファイルシステムへのアクセス方法 | |
CN113051244B (zh) | 数据访问方法和装置、数据获取方法和装置 | |
JP5949561B2 (ja) | 情報処理装置、情報処理システム、情報処理方法および情報処理プログラム | |
JP4914117B2 (ja) | データ処理システム | |
CN114547034A (zh) | 一种数据查询的方法、装置、设备及存储介质 | |
KR20170125665A (ko) | M2M/IoT 플랫폼에서의 시맨틱 정보 관리 방법 | |
US7487405B1 (en) | Method and mechanism for dynamically configuring logical paths of state machines | |
CN112084141A (zh) | 一种全文检索系统扩容方法、装置、设备及介质 | |
Schneider | DSCL: a Data Specification and Conversion Language for networks | |
CN113742050B (zh) | 操作数据对象的方法、装置、计算设备和存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20060328 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20060529 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20060704 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20060831 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20060926 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20061005 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20101013 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20111013 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20111013 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20121013 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20131013 Year of fee payment: 7 |
|
LAPS | Cancellation because of no payment of annual fees |