CN1174319C - 数据结构管理装置、数据结构管理系统和方法 - Google Patents
数据结构管理装置、数据结构管理系统和方法 Download PDFInfo
- Publication number
- CN1174319C CN1174319C CNB008181365A CN00818136A CN1174319C CN 1174319 C CN1174319 C CN 1174319C CN B008181365 A CNB008181365 A CN B008181365A CN 00818136 A CN00818136 A CN 00818136A CN 1174319 C CN1174319 C CN 1174319C
- Authority
- CN
- China
- Prior art keywords
- data structure
- data
- change
- node
- unit
- 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)
Abstract
在有多个数据结构分布于一个或多个存储单元中的情况下,在减少通信业务量的同时,实现容易并且有效地保持和管理多个数据结构。根据本发明的一种数据结构管理装置是数据结构管理装置(10),其管理存储在一个或多个存储单元中的多个相等的数据结构,其中包括:数据结构存储单元(20),其中存储任意的第一数据结构;数据结构更改单元(105),其更改所述第一数据结构;更改数据提取单元(107),其从由所述数据结构更改单元获得的所述第一数据结构中的更改数据中,仅仅提取使在更改源方上的所述第一数据结构与在更改目标方上的第二数据结构相等所需的数据;以及更改数据发送单元(111),其输出所述提取、更改的数据,从而反映到所述第二数据结构上。
Description
技术领域
本发明涉及数据结构管理装置、数据结构管理系统、数据结构管理方法以及用于记录数据结构管理程序的计算机可读介质。特别地,在多个数据结构被设置在一个或多个计算机存储单元中的情况下,本发明涉及一种技术,通过把用于保持特定数据结构和另一种数据结构之间相等所需的被更改数据传送到另一种数据结构,反映到其它数据结构上,从而减少数据通信量和并且容易并且有效地维护和管理多个数据结构。
背景技术
通常,各种数据结构是通过用特定的技术在作为计算机的一般主存储器的具有一个或多个地址的随机存取存储器(在下文中称为“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被用作为零指针,[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的左子节点为f2x+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中的标准结构相同的更改操作时要更改的指针中,仅仅把存储在偶数地址或者节点的开始地址的指针信息与地址一同发送。
图1 5示出对应于图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可以通过计算在图1 2中的二元树的中间级别的[节点]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的要被更改的数据是在标准配置中的指针数值(变量数值)。即使用任何方式提取或计算该更改的数据,则在功能和结果上没有任何不同。
相应地,即使对提取和计算的技术采用各种方法也不会偏离本发明的目地。
应当指出,在上述实施例中,处理被作为数据结构(二元搜索树)而排序的数据。该标准配置被设置为对应于数据的排序次序和节点的链接次序,并且被配置为使得仅仅对排序次序产生影响的更改操作改变节点的链接次序。如果表现数据的相同排序次序,则即使对于不同的数据结构也没有功能上的差别。相应地,具有处理排序数据的数据结构的上述实施例是仅仅在标准配置中提取由于指针的更改而产生的改动的一个例子。
应当指出,本发明不限于上述实施例,从而不必说,可以作出各种变型和变化而不脱离本发明的目的。
工业应用型
根据本发明的一种数据结构管理装置、数据结构管理系统、数据结构管理方法和记录有数据结构管理程序的计算机可读记录介质能够通过发送和接收具有较少通信业务量的更改数据而容易和有效的保持在一个或多个计算机的一个或多个存储区域中的多个数据结构之间的一致性。另外,即使数据结构存储在各种不同的地址中,也可以保持它们的一致性。另外,可以有效地再现在网络上的多个计算机之间的指针结构,并且可以适用于各种系统,例如高度可靠的系统等等。
由此,通过利用本发明,可以使网络上的多个计算机之间保持公共的数据结构,从而可以分别独立和有效地执行共享这些数据结构的每个计算机中的存储区域的管理。
Claims (17)
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)提取在所述数据结构更改步骤中对在所述标准配置存储步骤中存储的所述标准配置执行的更改相同的更改操作所更改的指针更改信息作为更改数据。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP353630/1999 | 1999-12-13 | ||
JP35363099A JP3866466B2 (ja) | 1999-12-13 | 1999-12-13 | データ構造管理装置、データ構造管理システム、データ構造管理方法およびデータ構造管理プログラムを格納する記録媒体 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1415091A CN1415091A (zh) | 2003-04-30 |
CN1174319C true CN1174319C (zh) | 2004-11-03 |
Family
ID=18432155
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB008181365A Expired - Fee Related CN1174319C (zh) | 1999-12-13 | 2000-12-13 | 数据结构管理装置、数据结构管理系统和方法 |
Country Status (6)
Country | Link |
---|---|
US (1) | US7222125B2 (zh) |
EP (1) | EP1244017A4 (zh) |
JP (1) | JP3866466B2 (zh) |
KR (1) | KR100515910B1 (zh) |
CN (1) | CN1174319C (zh) |
WO (1) | WO2001042924A1 (zh) |
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 |
US7631001B2 (en) * | 2003-08-21 | 2009-12-08 | Microsoft Corporation | Electronic ink processing |
EP1665128A4 (en) * | 2003-08-21 | 2007-10-17 | Microsoft Corp | ELECTRONIC INK PROCESSING |
US7283670B2 (en) * | 2003-08-21 | 2007-10-16 | Microsoft Corporation | Electronic ink processing |
BR0306695A (pt) * | 2003-08-21 | 2005-05-24 | Microsoft Corp | Processamento de tinta eletrônica |
EP1656612B1 (en) * | 2003-08-21 | 2011-10-26 | Microsoft Corporation | Electronic ink processing |
US7616333B2 (en) * | 2003-08-21 | 2009-11-10 | Microsoft Corporation | Electronic ink processing and application programming interfaces |
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 |
WO2016070064A1 (en) * | 2014-10-31 | 2016-05-06 | Convida Wireless, Llc | Managing application relationships in machine-to-machine systems |
CN106202121B (zh) * | 2015-05-07 | 2019-06-28 | 阿里巴巴集团控股有限公司 | 数据存储及导出的方法和设备 |
US10521139B2 (en) | 2017-12-14 | 2019-12-31 | International Business Machines Corporation | Copy source to target management in a data storage system |
US11054994B2 (en) * | 2017-12-14 | 2021-07-06 | 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 EP EP00981685A patent/EP1244017A4/en not_active Withdrawn
- 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
- 2000-12-13 US US10/149,822 patent/US7222125B2/en not_active Expired - Fee Related
- 2000-12-13 WO PCT/JP2000/008815 patent/WO2001042924A1/ja not_active Application Discontinuation
Also Published As
Publication number | Publication date |
---|---|
US20020191452A1 (en) | 2002-12-19 |
EP1244017A4 (en) | 2005-02-02 |
EP1244017A1 (en) | 2002-09-25 |
JP2001166977A (ja) | 2001-06-22 |
CN1415091A (zh) | 2003-04-30 |
WO2001042924A1 (fr) | 2001-06-14 |
US7222125B2 (en) | 2007-05-22 |
JP3866466B2 (ja) | 2007-01-10 |
KR20020061639A (ko) | 2002-07-24 |
KR100515910B1 (ko) | 2005-09-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1174319C (zh) | 数据结构管理装置、数据结构管理系统和方法 | |
CN1114859C (zh) | 数据共享方法和计算机体系结构 | |
CN1308851C (zh) | 数据处理系统中执行远程复制的方法和存储数据的方法 | |
CN1290041C (zh) | 用于改进文件管理的方法和装置 | |
CN1100295C (zh) | 计算机系统及其输入输出指令的发送方法 | |
CN1310152C (zh) | 交换方法和交换设备 | |
CN1133937C (zh) | 打印控制装置及方法 | |
CN1280716C (zh) | 计算机处理方法、分布式计算方法和网络计算方法 | |
CN1724980A (zh) | 存储系统 | |
CN1534514A (zh) | 适用于位置感知的架构和系统 | |
CN1315017A (zh) | 包含内部引用的两种版本数据表格之间的差别提取 | |
CN1869914A (zh) | 存储系统及存储系统的运用方法 | |
CN1407454A (zh) | 使多个移动装置同步的方法和系统 | |
CN101061688A (zh) | 基于简单网络管理协议的网络管理设备和方法 | |
CN101042676A (zh) | 存储系统以及存储区域释放方法以及存储装置 | |
CN1276575A (zh) | 数据库存取系统 | |
CN1190741C (zh) | 用于支持数据事务的设备和方法 | |
CN101069181A (zh) | 存储设备和记录介质 | |
CN1846207A (zh) | 类型路径索引 | |
CN1841328A (zh) | 脚本语言的自动机方法 | |
CN1211364A (zh) | 一种管理互配单元及生产该单元的方法 | |
CN1299467C (zh) | 管理网络设备的装置及其方法 | |
CN1203430C (zh) | 数据管理系统和数据管理方法 | |
CN1191026A (zh) | 用于sql关系数据库的仿真器 | |
CN1829160A (zh) | 一种混合策略加载系统及实现策略管理的方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20041103 Termination date: 20151213 |
|
EXPY | Termination of patent right or utility model |