专利名称:数据库的索引关键字更新方法以及程序的制作方法
技术领域:
本发明涉及数据库的索引关键字更新方法以及与其关联的差分数据制作方法和 装置、索引关键字的差分数据更新方法和装置、以及程序。
背景技术:
近年,社会的信息化不断发展,大规模的数据库在各处被利用起来。为了从这种大 规模的数据库中检索记录,通常是将与存储有各记录的地址相对应的记录内的项目作为索 引关键字进行检索,检索出期望的记录。并且,全文检索中的字符串也可视为文档的索引关 键字。而且,由于这些索引关键字利用比特序列来表达,因而数据库的检索可归结于比 特序列的检索。作为本发明的背景技术之一,首先对上述比特序列的检索处理进行说明。对于比特序列的检索处理方法公知有各种方法。在这些之中,为了高速进行比特 序列的检索,一直以来对存储比特序列的数据结构进行了各种研究。作为这样的结构之一, 公知有Patricia树这样的树结构。图1示出用于上述现有检索处理的Patricia树的一例。Patricia树的节点构成 为包含索引关键字、检索关键字的检查比特位置、左右链接指针。虽未明示,但显然在节点 中包含用于访问与索引关键字对应的记录的信息。在图1的例子中,保持索引关键字“100010”的节点1750a是根节点,其检查比特 位置是0。节点1750a的左链接1740a与节点1750b连接,右链接1741a与节点1750f连接。节点1750b保持的索引关键字是“010011”,检查比特位置2030b是1。节点1750b 的左链接1740b与节点1750c连接,右链接1741b与节点1750d连接。节点1750c保持的 索引关键字是“000111”,检查比特位置是3。节点1750d保持的索引关键字是“011010”,检 查比特位置是2。从节点1750c开始用实线连接的部分表示节点1750c的左右链接指针,未进行虚 线连接的左指针1740c表示该栏是空栏。进行了虚线连接的右指针1741c的虚线的链接目 的地表示指针所指向的地址,在这里表示右指针指向节点1750c。节点1750d的右指针1741d指向节点1750d自身,左链接1740d与节点1750e连 接。节点1750e保持的索引关键字是“010010”,检查比特位置是5。节点1750e的左指针 1740e指向节点1750b,右指针1741e指向节点1750e。并且,节点1750f保持的索引关键字是“101011”,检查比特位置1730f是2。节点 1750f的左链接1740f与节点1750g连接,右链接174If与节点1750h连接。节点1750g保持的索引关键字是“100011”,检查比特位置1730g是5。节点1750g 的左指针1740g指向节点1750a,右指针1741g指向节点1750g。节点1750h保持的索引关键字是“101100”,检查比特位置1730h是3。节点1750h的左指针1740h指向节点1750f,右指针1741h指向节点1750h。在图1的例子中,形成这样的结构随着从根节点1750a开始对树进行向下遍历, 各节点的检查比特位置增大。当使用某检索关键字进行检索时,从根节点开始依次检查由各节点所保持的检索 关键字的检查比特位置,判定检查比特位置的比特值是1还是0,是1时搜索右链接,是0时 搜索左链接。然后,当链接目的地节点的检查比特位置不大于链接源节点的检查比特位置 时,即,链接目的地不是下方而是回到上方时(将图1中虚线所示的该后退的链接称为反向 链接),对链接目的地节点的索引关键字与检索关键字进行比较。能够保证在比较结果是相 同时检索成功,在比较结果是不相同时检索失败。如上所述,在使用Patricia树的检索处理中,有以下等优点只通过必要比特的 检查即可进行检索,以及关键字全体的比较只需一次,然而具有以下等缺点由于必定有从 各节点起的2个链接而使存储容量增大,由于反向链接的存在而使判定处理复杂化,由于 通过反向链接返回后才与索引关键字进行比较而造成的检索处理延迟以及追加删除等数 据维护困难。作为解决Patricia树的这些缺点的技术,例如有下述专利文献1所公开的技术。 在下述专利文献1所记载的Patricia树中,通过在连续的区域中存储下位的左右节点来削 减指针的存储容量,并通过在各节点中设置表示下一链接是否是反向链接的比特来减轻反 向链接的判定处理。然而,在下述专利文献1所公开的技术中,由于1个节点必定占据索引关键字区域 和指针区域,将下位的左右节点存储在连续的区域中而采用1个指针,因而对于例如图1所 示的Patricia树的最下段部分即左指针1740c、右指针1741h等部分,也必须分配与节点相 同容量的存储区域,存储容量的削减效果不怎么好。并且,也没有改善反向链接引起的检索 处理的延迟问题,并且很难进行追加删除等处理。接着,作为本发明的另一背景技术,对数据库的更新处理进行说明。作为数据库系统的功能,数据的更新功能是必需的。随着数据库中保管的数据量 增大,例如当通过批处理对现有数据库进行大量数据的追加或删除时,产生其作业所需的 时间延长这样的不便。作为数据库的批量更新的方式,具有对现有数据库的追加、变更或利用删除数据 来更新数据库的方式、以及利用新的数据库来全部置换现有数据库的方式。后者的数据库更新方式例如应用于下述情况数据库的数据提供者在需要更新数 据库时不提供数据库的更新数据,而是改为提供更新数据后的新版数据库。但是,在这样的 数据库更新方式下,在更新作业中不能利用数据库,所以如果该更新作业需要很长时间,则 会带来不便。另外,通常数据库由数据库主体的数据部分和用于从数据库主体中检索数据的索 引构成。因此,在数据库的更新方式中,具有更新索引部分的方式,即使在该部分的更新中, 有时提供更新后的全部索引,完全替换更新前的索引。例如,在更新汽车导航系统的地图数据的索引时,从汽车导航系统的销售方或者 汽车经销中心向安装有汽车导航系统的各个车发布从地图数据的销售方购入的新地图数 据的索引数据,针对每个安装的汽车导航系统更新索引数据。这样,由于要发布所有的新索引数据,所以发布的数据量较多,各汽车导航系统中的地图数据的更新时间也较长。专利文献1 日本特开2001-357070号公报
发明内容
因此,本发明的课题是提供一种数据库更新处理方法,其在针对现有数据库的索 引关键字提供与其置换的用于新数据库的索引关键字时,能够高效地进行数据库索引关键 字的更新。本申请人在日本专利申请特愿2006-187827中提出了采用配对节点树的比特序 列检索,该配对节点树是用于比特序列检索的树,由根节点、以及配置在相邻存储区域中的 分支节点和叶节点、或者分支节点之间或叶节点之间的节点对构成,根节点是表示树的起 点的节点,当该树的节点为一个时该根节点是叶节点,当树的节点为两个以上时该根节点 是所述分支节点,所述分支节点包含进行比特序列检索的检索关键字的鉴别比特位置、和 表示链接目的地节点对中的一个节点的位置的位置信息,所述叶节点包含由检索对象比特 序列构成的索引关键字。在上述申请中,示出根据所提供的索引关键字的集合来生成配对节点树的方法、 和从配对节点树中检索单一索引关键字的方法等采用了配对节点树的基本检索方法。另外,在比特序列的检索中存在求出最小值、最大值、求出某范围的值等的各种检 索要求。因此,本申请人在日本专利申请特愿2006-293619中提出了求出配对节点树的任 意部分树所包含的索引关键字的最大值/最小值的方法等。本发明的目的是实现应用了该配对节点树的高速的数据库索引关键字更新方法。根据本发明,制作索引关键字的旧数据和新数据的差分数据,利用差分数据来更 新旧数据而制作新数据。此时,取得作为存储旧数据或新数据的索引关键字作为叶节点的索引关键字的配 对节点树的差分树,将新数据或旧数据的索引关键字作为检索关键字对差分树进行检索, 从差分树中删除与检索关键字一致的索引关键字,将与旧数据中的索引关键字不一致的检 索关键字作为差分数据的插入关键字或删除关键字,将基于新数据或旧数据的所有索引关 键字的检索结束后残留在差分树中的旧数据的索引关键字作为差分数据的删除关键字或 插入关键字,制作差分数据。在利用差分数据将旧数据更新成新数据的过程中,取得存储旧数据的索引关键字 作为叶节点的索引关键字的配对节点树的更新树,从更新树中删除从差分数据中取出的删 除关键字,向更新树插入从差分数据中取出的插入关键字,由此制作新数据。根据本发明,可以通过使用配对节点树来高速地制作差分数据。并且,发布到更新 索引关键字的站点的不是所有新数据而是差分数据,所以能够削减发布的数据量。另外,可 以通过还在索引关键字的更新中使用配对节点树,来进行高速的数据更新。
图1是示出在现有检索中采用的Patricia树一例的图。图2A是说明存储在数组中的配对节点树的结构例的图。图2B是概念性示出配对节点树的树结构的图。
图3A是说明本发明原理的图。图3B是说明用于实施本发明的硬件结构例的图。图3C是说明差分数据制作装置的功能块结构的图。图3D是说明差分数据更新装置的功能块结构的图。图4是示出比特序列检索的基本动作的流程图。图5是示出求出配对节点树所存储的索引关键字最小值的处理的流程图。图6是示出以升序方式取出配对节点树所存储的索引关键字的处理的流程图。图7A是示出作为插入处理前级的检索处理的处理流程的图。图7B是说明准备用于待插入节点对的数组元素的处理的处理流程图。图7C是示出求得插入节点对的位置、写入节点对的各节点的内容来完成插入处 理的处理流程的图。图7D是说明包含根节点的插入处理的追加索引关键字时的节点插入处理整体的 处理流程图。图8A是示出作为删除处理前级的检索处理的处理流程的图。图8B是说明删除处理后级的处理流程的图。图9是说明基于新旧数据的差分数据制作处理的概要的图。图10是说明基于新旧数据的差分数据制作的处理流程的图。图11是说明利用旧数据制作配对节点树的处理流程的图。图12是说明在差分数据中存储更新数据的处理流程的图。图13是说明将残留在差分树中的关键字作为删除关键字制作差分数据的处理流 程的图。图14是说明利用差分数据将旧数据更新为新数据的处理概要的图。图15是说明利用差分数据将旧数据更新为新数据的处理流程的图。
具体实施例方式首先,说明由本申请人在先前上述申请中提出的针对在本发明中利用的配对节点 树将配对节点树存储在数组中的例子。作为分支节点所保持的表示链接目的地位置的数 据,还可以设为存储装置的地址信息,通过采用由可存储分支节点或叶节点中占有区域的 存储容量大的一方的数组元素构成的数组,能够利用数组编号来表示节点位置,能够削减 位置信息的信息量。图2A是说明存储在数组中的配对节点树的构成例的图。参照图2A,节点101配置在数组100的数组编号为10的数组元素内。节点101由 节点类别102、鉴别比特位置103以及代表节点编号104构成。节点类别102是0,表示节 点101是分支节点。在鉴别比特位置103中存储有1。在代表节点编号104中存储有链接 目的地节点对的代表节点的数组编号20。另外,以下为了简化说明,有时把存储在代表节点 编号中的数组编号称为代表节点编号。并且,对于存储在代表节点编号中的数组编号,有时 利用赋予给该节点的符号或赋予给节点对的符号来表示。在数组编号20的数组元素中存储有节点对111的代表节点即节点
112。而且, 在相邻的下一数组元素(数组编号20+1)中存储有与代表节点成对的节点[1]113。在节点W] 112的节点类别114中存储有0,在鉴别比特位置115中存储有3,在代表节点编号116 中存储有30。并且,在节点[1] 113的节点类别117中存储有1,表示节点[1]113是叶节点。 在索引关键字118中存储有“0001”。与之前针对Patricia树描述的一样,当然在叶节点内 包含有对与索引关键字对应的记录进行访问的信息,省略说明。另外,有时用节点
表示代表节点,用节点[1]表示与其成对的节点。此外,有 时将存储在某个数组编号的数组元素中的节点称为该数组编号的节点,将存储有节点的数 组元素的数组编号称为节点的数组编号。省略了由存储在数组编号30和31的数组元素中的节点122和节点123构成的节 点对121的内容。分别赋予给存储有节点
112、节点[1] 113、节点122以及节点123的数组元素 的0或1表示在使用检索关键字进行检索的情况下链接到节点对的哪个节点。链接到将位 于前级的分支节点的鉴别比特位置上的检索关键字的比特值0或1与代表节点编号相加所 得到的数组编号的节点。因此,通过将前级的分支节点的代表节点编号与检索关键字的鉴别比特位置的比 特值相加,可求出存储有链接目的地节点的数组元素的数组编号。另外,在上述例子中代表节点编号采用配置有节点对的数组编号中的小的一方, 然而显然也可采用大的一方。图2B是概念性地示出配对节点树的树结构的图。图示的6比特的索引关键字与 图1所例示的Patricia树的索引关键字相同。符号210a所示的是根节点。在图示的例子中,根节点210a作为配置在数组编号 220上的节点对201a的代表节点。作为树结构,在根节点210a之下配置有节点对201b,在节点对201b的下层配置有 节点对201c和节点对201f,在节点对201f的下层配置有节点对201h和节点对201g。在 节点对201c之下配置有节点对201d,并在节点对201d之下配置有节点对201e。附在各节点前面的符号0或1与在图2A中所说明的附在数组元素前面的符号相 同。根据检索关键字的鉴别比特位置的比特值来搜索树,从而找到检索对象叶节点。在图示的例子中,根节点210a的节点类别260a是0,表示是分支节点,鉴别比特位 置230a示出为0。代表节点编号是220a,该编号是存储了节点对201b的代表节点210b的 数组元素的数组编号。节点对201b由节点210b和211b构成,它们的节点类别260b、261b都是0,表示是 分支节点。在节点210b的鉴别比特位置230b上存储有1,在链接目的地的代表节点编号中 存储有存储了节点对201c的代表节点210c的数组元素的数组编号220b。由于在节点210c的节点类别260c中存储有1,因而该节点是叶节点,因此包含索 引关键字。在索引关键字250c中存储有“000111”。另一方面,节点211c的节点类别261c 是0,鉴别比特位置231c是2,在代表节点编号中存储有存储了节点对201d的代表节点 210d的数组元素的数组编号221c。节点210d的节点类别260d是0,鉴别比特位置230d是5,在代表节点编号中存储 有存储了节点对201e的代表节点210e的数组元素的数组编号220d。与节点210d成对的 节点211d的节点类别261d是1,在索引关键字251d中存储有“011010”。
节点对201e的节点210e、211e的节点类别260e、261e都是1,表示双方都是叶节 点,在各自的索引关键字250e、251e中存储有“010010”和“010011”作为索引关键字。在节点对201b的另一个节点即节点211b的鉴别比特位置231b中存储有2,在链 接目的地的代表节点编号中存储有存储了节点对201f的代表节点210f的数组元素的数组 编号221b。节点对201f的节点210f、211f的节点类别260f、261f都是0,表示双方都是分支 节点。在各自的鉴别比特位置230f、231f中存储有5、3。在节点210f的代表节点编号中存 储有存储了节点对201g的代表节点210g的数组元素的数组编号220f,在节点211f的代表 节点编号中存储有存储了节点对201h的代表节点即节点W]210h的数组元素的数组编号 221f。节点对201g的节点210g、211g的节点类别260g、261g都是1,表示双方都是叶节 点,在各自的索引关键字250g、251g中存储有“ 100010”和“ 100011 ”。并且同样,节点对201h的代表节点即节点
210h和与其成对的节点[l]211h的 节点类别260h、261h都是1,表示双方都是叶节点,在各自的索引关键字250h、251h中存储 有“101011”和“101100”。以下,简单说明从上述的树中检索索引关键字“100010”的处理流程。鉴别比特位 置从左起为0、1、2、…。首先,将比特序列“100010”作为检索关键字,从根节点210a开始处理。由于根节 点210a的鉴别比特位置230a是0,因而当查看检索关键字“ 100010”的鉴别比特位置0的 比特值时是1。因此,链接到对存储有代表节点编号的数组编号220a加上1后的数组编号 的数组元素中存储的节点211b。由于在节点211b的鉴别比特位置231b中存储有2,因而 当查看检索关键字“100010”的鉴别比特位置2的比特值时是0,因此链接到在存储有代表 节点编号的数组编号221b的数组元素中存储的节点210f。由于节点210g的节点类别260g是1,表示是叶节点,因而当读出索引关键字250g 并与检索关键字进行比较时,双方都是“100010”,是一致的。这样进行使用配对节点树的检索。下面,参照图2B说明配对节点树的结构的意义。配对节点树的结构是由索引关键字的集合规定的。在图2B的例子中,根节点210a 的鉴别比特位置是0,这是因为在图2B所例示的索引关键字中有第0比特是0的索引关键 字以及第0比特是1的索引关键字。第0比特是0的索引关键字的组被分类在节点210b 之下,第0比特是1的索引关键字的组被分类在节点211b之下。节点211b的鉴别比特位置是2,这反映了索引关键字集合的性质,即存储在节点 211h、210h、211g、210g内的第0比特是1的索引关键字的第1比特全都是0,从第2比特开 始才有不同。以下与第0比特的情况一样,第2比特是1的索引关键字被分类在节点211f侧, 第2比特是0的索引关键字被分类在节点210f侧。然后,由于第2比特是1的索引关键字中存在第3比特不同的索引关键字,因而在 节点211f的鉴别比特位置上存储3,由于在第2比特是0的索引关键字中第3比特和第4 比特均相同而第5比特不同,因而在节点210f的鉴别比特位置中存储5。
在节点211f的链接目的地中,由于第3比特是1的索引关键字和第3比特是0的 索引关键字分别只有一个,因而节点210h、211h成为叶节点,在索引关键字250h和251h中 分别存储有“ 101011”和“ 101100”。即使在索引关键字的集合内包含有“101101”或“101110”来取代“101100”,但是 到第3比特为止与“101100”相等,因而也只是存储在节点211h内的索引关键字改变,树结 构自身不会改变。然而,当除了 “101100”以外还包含有“101101”时,节点211h成为分支 节点,其鉴别比特位置成为5。当所追加的索引关键字是“101110”时,鉴别比特位置为4。如以上说明的那样,配对节点树的结构是由索引关键字集合中包含的各索引关键 字的各比特位置的比特值所确定的。进而也可以说,对于成为不同比特值的每个比特位置,分支到比特值是“1”的节点 和比特值是“0”的节点,所以当使节点“1”侧和树的深度方向优先来搜索叶节点时,在它们 中存储的索引关键字成为节点211h的索引关键字251h的“101100”、节点210h的索引关 键字250h的“101011”、…、节点210c的索引关键字250c的“000111”,并以降序的方式排序。S卩,在配对节点树中,对索引关键字进行排序并将其配置在树上。当利用检索关键字进行检索时,搜索在配对节点树上配置了索引关键字的根,例 如,如果检索关键字是“101100”,则可到达节点211h。并且,根据上述说明还可以想到,即 使在将“101101”或“101110”作为检索关键字的情况下,也会到达节点211h,与索引关键字 251h进行比较,由此可知晓检索失败。并且,例如在利用“100100”进行检索的情况下,在节点210a、211b、210f的链接路 径上不使用检索关键字的第3比特和第4比特,由于“100100”的第5比特是0,所以与利用 “100010”进行检索的情况同样,到达节点210g。这样,使用与存储在配对节点树中的索引 关键字的比特结构对应的鉴别比特位置来进行分支。接着,说明本发明的原理。图3A是示意性示出本发明原理的图。如图3A(1)所示的图是说明根据旧数据和 新数据制作差分数据的原理的图,如图3A(2)所示的图是说明利用差分数据将旧数据更新 为新数据的原理的图。如图3A(1)所示,为了制作差分数据,利用新数据所包含的所有关键字来检索旧 数据所包含的关键字。针对与旧数据一致的关键字(即存在于旧数据和新数据中的关键 字),由于不是更新对象,所以从旧数据中删除。与旧数据不一致的检索关键字(即新数据中追加的关键字)作为插入关键字放入 到差分数据内。通过新数据检索不到而残留在旧数据中的关键字(即新数据中不存在的关 键字)作为删除关键字放入到差分数据内。此外,在上述说明中,设利用新数据所包含的所有关键字来检索旧数据所包含的 关键字,由于制作差分数据,因此显然也可以设利用旧数据所包含的所有关键字来检索新 数据所包含的关键字,制作差分数据。在此情况下,将残留在新数据中的关键字作为插入关 键字放入差分数据,将与新数据不一致的旧数据作为删除关键字放入差分数据。如图3A(2)所示,为了利用差分数据将旧数据更新为新数据,将插入关键字作为 在新数据中追加了的关键字插入到旧数据,利用删除关键字从旧数据中删除不存在于新数据中的关键字。图3B是说明用于实施本发明的硬件结构例的图。如图所示,用于实施本发明的硬 件由差分数据制作装置300和差分数据更新装置400a 400X构成。差分数据更新装置 400a 400x的个数是任意的。利用至少具备中央处理装置302以及缓存存储器303的数据处理装置301,采用 数据存储装置308来实施由本发明的差分数据制作装置300制作差分数据。数据存储装置 308可通过主存储装置305或外部存储装置306来实现,或者还可以使用经由通信装置307 连接的配置在远方的装置,该数据存储装置308具有配置配对节点树的数组309、对存储 有在检索中搜索到的节点的数组元素的数组编号进行存储的搜索路径堆栈310、存储旧数 据的旧数据存储区域321、存储新数据的新数据存储区域322以及存储制作完毕差分数据 的差分数据存储区域320。在图3B的例示中,主存储装置305、外部存储装置306以及通信装置307通过一根 总线304与数据处理装置301连接,但连接方法不限于此。另外,可以将主存储装置305设 置在数据处理装置301内,或者还可以将搜索路径堆栈310作为中央处理装置302内的硬 件来实现。或者,显然可以根据可使用的硬件环境、索引关键字集合的大小等来适当选择硬 件结构,例如将旧数据存储区域321、新数据存储区域322以及差分数据存储区域320保持 在外部存储装置306内,将搜索路径堆栈310保持在主存储装置305内等。另外,虽未特别图示,但为了在之后的处理中使用在处理中途获得的各种值,显然 可以采用与各个处理对应的临时存储装置。在差分数据制作装置300中制作的差分数据被发送至差分数据更新装置400a 400x,存储在各个差分数据存储区域420a 420x中,用于将存储在各个索引存储区域 421a 421x中的旧数据更新为新数据。虽未特别图示,在差分数据更新装置400a 400x 中也具备数据处理装置以及具有差分数据存储区域、索引存储区域和其它存储区域的数据 存储装置。此外,在以下中,如上述例如将存储在差分数据存储区域320内的差分数据表述 为差分数据320,有时对存储在某数据存储区域内的数据本身标注数据存储区域的标号来 进行说明。图3C是说明差分数据制作装置300的功能块结构的图。如图所示,差分数据制作装置300包含差分树取得单元330和差分数据制作单元 331的功能块。这些功能块通过图3B所例示的硬件和执行以下说明的处理流程的软件来实 现。差分树取得单元330取得下述差分树,该差分树存储旧数据或新数据的索引关键 字作为配对节点树的叶节点的索引关键字。差分数据制作单元331将差分树的根节点作为检索开始节点,将新数据或旧数据 的所有索引关键字作为检索关键字进行检索,从差分树中删除作为与检索关键字一致的检 索结果关键字的索引关键字,将与作为检索结果关键字的索引关键字不一致的检索关键字 作为差分数据的插入关键字或删除关键字。然后,将基于新数据或旧数据的所有索引关键 字的检索结束之后未被删除而残留在差分树中的索引关键字作为差分数据的删除关键字 或插入关键字,来制作差分数据。
图3D是说明差分数据更新装置的功能块结构的图。如图所示,差分数据更新装置400包含更新树取得单元422和新旧索引关键字更 新单元423的功能块。这些功能块可通过针对图3B所示的差分数据更新装置400a 400x 说明的硬件和执行以下说明的处理流程的软件来实现。更新树取得单元422取得下述更新树,该更新树存储旧数据的索引关键字作为配 对节点树的叶节点的索引关键字。新旧索引关键字更新单元423通过从更新树中删除从差分数据制作单元331制作 的差分数据中取出的删除关键字,向更新树插入从差分数据取出的插入关键字,来制作存 储新数据的索引关键字作为叶节点的索引关键字的新数据配对节点树,根据新数据配对节 点树,将旧数据更新为新数据。接着,在为了理解本发明而需要的范围内,介绍在上述申请中由本申请人提出的 使用配对节点树的基本检索处理、配对节点树的插入删除处理以及求出配对节点树所包含 的索引关键字的最小值的处理等应用处理的一部分。图4是示出在作为本申请人的申请的上述日本专利申请特愿2006-293619中提出 的比特序列检索的基本动作的流程图。首先,在步骤S401中,取得检索开始节点的数组编号。与所取得的数组编号对应 的数组存储有构成配对节点树的任意节点。在后面说明的各种应用检索中指定检索开始节
点ο所取得的检索开始节点的数组编号设定在未图示的检索开始节点设定区域内,但 该检索开始节点设定区域是先前所述的“为了在之后的处理中使用在处理中途获得的各种 值而与各个处理对应的临时存储装置”之一。在以下说明中,有时记述成“获得检索开始 节点的数组编号”、“设定为检索开始节点”或者简单记述成“设定成检索开始节点”,来替代 “设定在未图示的检索开始节点设定区域内”这样的表述。接着,在步骤S402中,在搜索路径堆栈310中存储所取得的数组编号,在步骤S403 中,读出与该数组编号对应的数组元素作为应参照的节点。然后,在步骤S404中,从所读出 的节点内取出节点类别,在步骤S405中判定节点类别是否是分支节点。在步骤S405的判定中,当所读出的节点是分支节点时,进到步骤S406,从节点 中取出关于鉴别比特位置的信息,并且在步骤S407中,从检索关键字中取出与所取出的 鉴别比特位置对应的比特值。然后,在步骤S408中,从节点中取出代表节点编号,在步骤 S409中,将从检索关键字取出的比特值和代表节点编号相加,作为新的数组编号,返回步骤 S402。以后,反复从步骤S402到步骤S409的处理,直到在步骤S405的判定中判定为叶 节点而进到步骤S410为止。在步骤S410中,从叶节点取出索引关键字,结束处理。图5是示出在作为本申请人的申请的上述日本专利申请特愿2006-293619中提出 的求出配对节点树(包含部分树)所存储的索引关键字最小值的处理的流程图。根据如先 前所述的索引关键字在树上的配置,求出索引关键字最小值的处理相当于在树上从检索开 始节点到叶节点搜索节点W]。首先,从步骤S501的取得检索开始节点的数组编号到步骤S505的判定节点类别, 分别与上述图4的步骤S401 步骤S405的处理相同。
当在步骤S505的节点类别判定中判定为节点类别为分支节点时,进到步骤S506, 从节点取出数组的代表节点编号,在步骤S507中,将值“0”与所取出的代表节点编号相加, 将其结果作为新的数组编号,返回步骤S502。以后,反复从步骤S502到步骤S507的处理, 直到在步骤S505中判定为该节点为叶节点为止,在步骤S508中,从叶节点中取出索引关键
字,结束处理。在上述图5所示的处理中,为了搜索节点W],而一律将代表节点编号与“0”相加。 即,根据图5的处理,链接目的地的节点必定是节点对中的节点W],分支到存储有更小值 的索引关键字的节点。由此,可以取出树结构如先前所述为顺序结构的配对节点树的最小 索引关键字。此外,虽未图示,但在图5的步骤S507中,如果代表节点编号不与值11011相加而 与值"1"相加,则搜索节点[1],可以取出配对节点树的最大索引关键字。图6是示出以升序方式取出存储在配对节点树中的索引关键字的处理的流程图。 以升序方式取出索引关键字的处理相当于,使构成节点对的节点中的节点
侧以及树的 深度优先,从节点依次搜索叶节点,从各叶节点中取出索引关键字。首先,在步骤S601中,将根节点的数组编号设定为检索开始节点的数组编号,在 步骤S602中,执行参照上述图5说明的求出最小索引关键字的处理,取得包含在配对节点 树内的索引关键字中的最小索引关键字。然后,在步骤S603中,取出所取得的索引关键字, 进到步骤S604。在步骤S604中,判定搜索路径堆栈310的堆栈指针(以下,有时也称为指针。)是 否指向根节点的数组编号。当堆栈指针指向的数组编号是根节点以外的情况下,进到步骤 S605。然后,在步骤S605中,从搜索路径堆栈310取出堆栈指针指向的数组编号,然后使堆 栈指针的值减1。在步骤S606中,根据步骤S605中取出的数组编号,获得表示该数组编号的节点存 储在节点对的哪个数组元素中的节点位置。例如对于节点W],可通过存储在偶数编号数 组的数组元素中等,根据数组编号求出节点位置。然后,在步骤S607中,判定步骤S606中 获得的节点位置是否是节点[1]侧。在步骤S607中判定为节点[1]侧的情况下,返回步骤 S604,反复从步骤S604到步骤S607的处理,直到堆栈指针指向的数组编号的节点为节点
或根节点为止。当在步骤S607中判定为节点
侧时,进到步骤S608,使数组编号与1相加,获 得与该节点成对的节点[1]的数组编号。然后,在步骤S609中,对检索开始节点设定步骤 S608中获得的节点[1]的数组编号,在步骤S610中,执行求出将检索开始节点作为根节点 的部分树的最小索引关键字的处理。步骤S610的处理与步骤S602相同,都采用图5所示 的最小值检索处理。当在步骤S610中求出最小索引关键字时,返回步骤S603,取出所求出的索引关键 字,以后反复同样的处理,直到在步骤S604中判定为指针指向根节点的数组编号为止。这样,参照搜索路径堆栈310的指针所指向的数组编号,针对与搜索路径堆栈310 所存储的数组编号的节点
成对的节点[1],将该节点作为检索开始节点,在该节点属下 求出最小索引关键字。在步骤S602内求出最小值的阶段中,搜索路径堆栈310的指针指向 包含配对节点树的最小索引关键字的节点的数组编号。然后进行搜索路径堆栈310的出栈动作,将所取出的数组编号节点中的节点[1]作为检索开始节点,进行求出将该检索开始 节点作为根节点的部分树的索引关键字最小值的处理,反复出栈动作和最小值检索处理, 直到搜索路径堆栈310的出栈动作的结果为取出配对节点树的根节点的数组编号为止。先前在步骤S602中对根节点属下的节点进行求出最小值的处理,由此在搜索路 径堆栈310内依次存储有关于链接路径的数组编号。因此,使搜索路径堆栈310的指针减 1,针对指针新指向的数组编号的节点中的节点W],求出与该节点成对的节点[1],对节点 [1]的节点属下依次进行最小值检索处理,此时以升序方式取出索引关键字。本领域技术人员可知,与之前所述的可改变最小值检索来进行最大值检索的情况 相同,可以通过取代最小值检索而进行最大值检索,将节点[1]的判定置换为节点
的判 定等,由此以降序方式取出索引关键字。接着,通过图7A 图7D来说明在作为本申请人的申请的上述日本专利申请特愿 2006-187827中提出的配对节点树的节点插入处理。图7A 图7C说明通常的插入处理,图 7D说明根节点的插入处理。通过根节点的插入处理和通常的插入处理来生成配对节点树, 因此节点插入处理的说明也是配对节点树的生成处理的说明。图7A是示出作为插入处理前级的检索处理的处理流程的图,相当于在图4所示的 检索处理中将根节点作为检索开始节点,将插入关键字作为检索关键字。在步骤S701中,在设定检索开始节点的数组编号的区域中设定根节点的数组编 号,在步骤S702中,把检索关键字设定为插入关键字。接着在步骤S710中,执行图4所示的检索处理并获得检索结果的索引关键字,进 到步骤S711。在步骤S711中将索引关键字与插入关键字进行比较,如果相等则插入关键字已 存在于配对节点树,因此插入失败,结束处理。如果不相等,则进到下一处理(即图7B的步 骤S712以下的处理)。图7B是说明准备用于待插入节点对的数组元素的处理的处理流程图。在步骤S712中,从数组中求出空节点对,取得该节点对中应成为代表节点的数组 元素的数组编号。进到步骤S713,对插入关键字和在步骤S710获得的索引关键字的大小进行比较, 在插入关键字大时获得值为1的布尔值,在插入关键字小时获得值为0的布尔值。进到步骤S714,将在步骤S712取得的代表节点的数组编号与在步骤S713取得的 布尔值相加,获得相加所得的数组编号。进到步骤S715,将在步骤S712取得的代表节点的数组编号与在步骤S713取得的 布尔值的逻辑非值相加,获得相加所得的数组编号。在步骤S714取得的数组编号是存储有将插入关键字作为索引关键字持有的叶节 点的数组元素的数组编号,在步骤S715取得的数组编号是存储有与该叶节点成对的叶节 点或分支节点的数组元素的编号。S卩,根据在前级检索处理中取得的存储在叶节点的索引关键字和插入关键字的大 小,来确定在待插入节点对中的哪个节点内存储保持插入关键字的叶节点。例如,在图2B的配对节点树中插入〃 011011〃的情况下,检索结果的索引关键字 是存储在节点211d中的"011010"。根据插入关键字〃 011011和存储在节点211d中的索引关键字"011010"的大小比较来求出布尔值,在当前例中因为插入关键字较大所以获 得布尔值1,在待插入节点对的代表节点编号与1相加所得的数组元素中存储保持插入关 键字的叶节点。另一方面,索引关键字"011010"被存储在将利用大小比较而获得的布尔 值进行逻辑反转后的值与代表节点编号相加后得到的数组编号的数组元素中。此时,由于索引关键字“011010”与插入关键字“011011”在第5比特不同,因而节 点211d成为如下的分支节点鉴别比特位置为5、代表节点编号为所插入的节点对的代表 节点的数组编号。此外,在图2B的配对节点树中插入“011001”的情况下,检索结果的索引关键字 成为存储在节点211d中的“011010”。在该情况下,由于插入关键字较小,因而得到布尔值 0,在待插入节点对的代表节点编号加上0后得到的数组元素内存储保持插入关键字的叶 节点。而且,由于索引关键字“011010”与插入关键字“011001”在第4比特不同,因而节点 211d成为如下的分支节点鉴别比特位置为4、代表节点编号为所插入的节点对的代表节 点的数组编号。接着进入图7C的步骤S716以下的处理。图7C是示出将节点存储在图7B中所准备的数组内并求出其插入位置、变更已有 节点的内容来完成插入处理的处理流程的图。步骤S716 步骤S723的处理是求出待插入节点对在配对节点树上的位置的处 理,步骤S724以下的处理是对各节点设定数据来完成插入处理的处理。在步骤S716中,例如利用逻辑“异或”来进行插入关键字与步骤S710所得到的索 弓丨关键字之间的比特序列比较,得到差分比特序列。进到步骤S717,根据步骤S716所得到的差分比特序列,得到从上位第0比特起观 察到的第一个不一致比特的比特位置。对于该处理,例如可在具有优先编码器的CPU中,向 该优先编码器输入差分比特序列,得到不一致的比特位置。此外,也可以软件方式进行与优 先编码器同等的处理,得到第一个不一致比特的比特位置。然后进到步骤S718,判定搜索路径堆栈的堆栈指针是否指向根节点的数组编号。 如果指向根节点的数组编号则转到步骤S724,如果没有指向根节点的数组编号则进到步骤 S719。在步骤S719中,使搜索路径堆栈的堆栈指针后退1,取出堆栈在此的数组编号。进到步骤S720,从数组中读出在步骤S719取出的数组编号的数组元素作为节点。进到步骤S721,从在步骤S720读出的节点中取出鉴别比特位置。接着进入步骤S722,判定在步骤S721取出的鉴别比特位置是否是比在步骤S717 取得的比特位置上位的位置关系。这里所谓上位的位置关系是指比特序列的更左侧的位 置,即比特位置的值较小的位置。在步骤S722的判定结果是否定时,回到步骤S718反复执行直到步骤S718的判定 为肯定或者步骤S722的判定为肯定为止。当步骤S722的判定为肯定时,在步骤S723中使 搜索路径堆栈的堆栈指针前进1,转到步骤S724以下的处理。在上述步骤S716 步骤S723中说明的处理是这样的处理为了确定待插入节 点对的插入位置,在待插入索引关键字与通过检索取得的索引关键字之间进行比特序列比 较,调查在比特序列比较中成为不同比特值的第一个(最上位的)比特位置与存储在搜索 路径堆栈中的分支节点的鉴别比特位置之间的相对位置关系,将鉴别比特位置为上位的分支节点的下一分支节点的链接目的地设为待插入节点对的插入位置。例如当在图2B的配对节点树中插入“111000”时,检索结果的索引关键字为存储 在节点210h中的“101011”。通过插入关键字“111000”与存储在节点210h中的索引关键 字“101011”之间的比特序列比较,得到成为不同比特值的最上位的比特位置1。依次对搜 索路径堆栈进行反向搜索,直到所得到的比特位置1与蓄积在搜索路径堆栈中的数组编号 的数组元素所存储的分支节点的鉴别比特位置之间的位置关系成为鉴别比特位置在上位 为止,此时到达根节点210a。在此,使搜索路径堆栈的指针前进1,得到节点211b的数组编 号。把插入关键字“111000”插入到节点211b的链接目的地。此外,即使对搜索路径堆栈进行反向搜索而到达根节点,与先前求出的在比特序 列比较中成为不同比特值的、最上位的比特位置相比,根节点的鉴别比特位置也不是上位 的比特位置是指以下的情况在该配对节点树的索引关键字的上位比特中,与根节点的鉴 别比特位置相比为上位的比特的值全部相等。并且是指如下情况在待插入的索引关键字 中,一开始就存在与比根节点的鉴别比特位置上位的比特值不同的比特值。因此,待插入的 节点对成为根节点的直接链接目的地,根节点的鉴别比特位置变成作为与已有索引关键字 不同的值的插入关键字的最上位比特的位置。接下来,说明步骤S724以下的在各节点中设定数据来完成插入处理的处理。在步骤S724中,从搜索路径堆栈中取出堆栈指针所指向的数组编号。在步骤S725中,在步骤S714中得到的数组编号所指向的数组元素的节点类别中 写入1 (叶节点),在索引关键字中写入插入关键字。进到步骤S726,从数组中读出在步骤S724得到的数组编号的数组元素。然后在步骤S727中,在步骤S715中得到的数组编号的数组元素中写入在步骤 S726中读出的内容。最后在步骤S728中,在步骤S724中得到的数组编号所指向的数组元素的节点类 别中写入0(分支节点),在鉴别比特位置中写入在步骤S717得到的比特位置,在代表节点 编号中写入步骤S712中得到的数组编号,结束处理。在上述图2B的配对节点树中插入“111000”的例子中,在所取得的空节点对的节 点
中写入节点211b的内容(步骤S727),将节点[1]设为保持插入关键字“111000”的 叶节点(步骤S725)。然后,在节点211b的鉴别比特位置中存储通过比特序列比较而成为 不同比特值的、最上位的比特位置1,将存储有所取得的节点对的代表节点的数组元素的数 组编号存储在代表节点编号中(步骤S728)。图7D是说明在作为本申请人的申请的上述日本专利申请特愿2006-187827中提 出的包含根节点插入处理的追加索引关键字时的节点插入处理整体的处理流程图。在步骤SlOl中,判定是否登记了想要取得的配对节点树的根节点的数组编号。如 果已登记,则进行采用图7A 图7C说明的通常的插入处理。如果在步骤SlOl中的判定为没有登记,则开始完全新的配对节点树的登记、生 成。首先,在步骤S102中,从数组求得空节点对,取得该节点对中的应成为代表节点 的数组元素的数组编号。然后在步骤S103中,求出对步骤S102中得到的数组编号加上0 后的数组编号(实际上,等于在步骤S102中取得的数组编号)。然后在步骤S104中,针对在步骤S103中得到的数组编号的数组元素,对待插入根节点的节点类别写入1 (叶节点), 对索引关键字写入插入关键字,在步骤S105中,登记在步骤S102中取得的根节点的数组编 号,结束处理。如前所述,显然,当存在索引关键字的集合时,从该集合中依次取出索引关键字, 反复进行图7D和图7A 图7C的处理,从而可以构建与索引关键字的集合对应的本发明的 配对节点树。接着参照图8A、图8B,说明在作为本申请人的申请的上述日本专利申请特愿 2006-187827中提出的从配对节点树所涉及的索引关键字集合中删除特定索引关键字的处
理流程。图8A是示出作为删除处理前级的检索处理的处理流程的图,相当于在图4所示的 检索处理中将根节点作为检索开始节点,将插入关键字作为检索关键字。在步骤S801中,在设定检索开始节点的数组编号的区域内设定根节点的数组编 号,在步骤S802中,将检索关键字设定为删除关键字。接着在步骤S810中,执行图4所示的检索处理获得检索结果的索引关键字,进到 步骤S811。在图8A的步骤S811中对删除关键字和索引关键字进行比较,如果不相等则要删 除的索引关键字不存在于配对节点树中,所以删除失败,结束处理。如果相等则进到下一处 理(即,图8B的步骤S812以下的处理)。图8B是说明删除处理后级的处理流程的图。首先,在步骤S812中判定在搜索路径堆栈中是否存储有2个以上的数组编号。所 谓没有存储2个以上的数组编号,换句话说只存储有1个数组编号,该数组编号是存储了根 节点的数组元素的数组编号。在该情况下,转到步骤S818,删除在步骤S801中得到的根节 点的数组编号所涉及的节点对。然后进到步骤S819,删除所登记的根节点的数组编号,结束处理。当在步骤S812中判定为在搜索路径堆栈内存储有两个以上数组编号时进到步骤 S813,将步骤S808中得到的代表节点编号加上步骤807中得到的比特值的反转值,得到相 加后的数组编号。该处理是求出配置有与存储有删除对象索引关键字的叶节点成对的节点 的数组编号的处理。然后在步骤S814中,读出在步骤S813中得到的数组编号的数组元素的内容,在步 骤S815中使搜索路径堆栈的堆栈指针后退1,取出数组编号。接着进到步骤S816,将步骤S814中读出的数组元素的内容重写到步骤S815中得 到的数组编号的数组元素中。该处理是将作为链接到存储有删除对象索引关键字的叶节点 的链接源的分支节点置换成与上述叶节点成对的节点的处理。最后,在步骤S817中删除在步骤S808中获得的代表节点编号所涉及的节点对,结 束处理。以上,说明了关于配对节点树的作为本发明前提的技术,如果需要,参照上述专利 申请的说明书以及附图的记载。接着,参照图9 图13,对制作本发明的差分数据的处理进行说明。图9是说明本发明一实施方式的利用旧数据和新数据来制作差分数据的处理概要的图。在图9所示的例子中,旧数据321由关键字321a" 010010"、321b" 010011"、 321c ‘‘ 100011 ‘‘、321d ‘‘ 101011 ‘‘以及 321e ‘‘ 101100 ‘‘构成,新数据 322 由关 键字 322a “ 010010 “ ,322b “ 010110 “ ,322c “ 100010 “、322d “ 100011 “以及 322e" 101100"构成。另外,差分数据320的各更新数据380a 380d由更新类别381和更新关键字382 的项目构成。如图所示,更新数据380a 380d的各更新关键字382是关键字321d、321b、 322c、322b。通过图9的㈧所示的插入处理,作为旧数据的关键字321a 321e插入到更新 前的差分树309-1。此外,图9(的A)所示的S1001示出对应于后述图10所示的制作差分 数据的处理流程的步骤S1001中的处理。以下图9的(B) (E)也是同样的。接着,如图9的(B)所示,在图10所示流程的步骤S1005中进行基于新数据的关 键字322a 322e的删除处理。作为删除处理的结果,在更新后的差分树309-2中残留着 未被删除的旧数据的关键字321d和321b。对于在旧数据中不存在同一数据而如图9的(C)所示在图10的流程步骤S1006中 判定为删除失败的新数据的关键字322c和322b,如图9的(D)所示,在图10的步骤S1007 中作为插入关键字存储在差分数据存储区域320中。如图9所示,插入关键字的值被存储 在更新关键字382中,在更新类别381中存储有"i",表示存储在更新关键字内的322c、 322b是插入关键字。另一方面,对于残留在更新后的差分树309-2中的旧数据的关键字321d和321b, 如图9的(E)所示,在图10的步骤S1009中将它们从差分树309-2中取出,作为删除关键 字存储到差分数据存储区域320内。如图9所示,删除关键字的值被存储在更新关键字382 中,在更新类别381中存储"d",表示存储在更新关键字中的321d、321b是删除关键字。此外,在上述说明中,根据旧数据生成差分树309-1,利用新数据进行删除处理。但 是如先前所述,由于制作旧数据与新数据的差分,所以显然可以反过来根据新数据生成差 分树,利用旧数据进行删除处理来制作差分数据。在此情况下,残留在更新后的差分树中的 新数据成为插入关键字,删除失败的旧数据成为删除关键字,这对本领域技术人员来说是 显然的。图10是说明利用旧数据和新数据来制作差分数据的处理流程的图。以下,参照图 10来说明基于新旧数据来制作差分数据的处理流程。如图10所示,在步骤S1001中,将旧数据的所有关键字插入到差分树中。在后文 中参照图11来详细说明此处理。此外,如果旧数据已经存储在配对节点树中(即数据库的 索引具有配对节点树的数据结构),则取代步骤1001而取得其登记的根节点的数组编号即 可。另外,在配对节点树没有存储在数组内的情况下,取得表示根节点的位置的位置信息即可。接着,在步骤S1002中设定新数据。该新数据的设定可以通过将从新数据的供给 源供给的新数据例如存储在图3B以及图9所示的新数据存储区域322内来进行,不过也可 以从存储有由供给源提供的新数据的存储介质中直接读出关键字。接着进到步骤S1003,判定是否对所有的新数据都进行了处理。如果所有的新数据都处理完毕则转移到步骤S1008,如果没有处理完毕则进到步骤S1004。在步骤S1004中,从步骤S1002中设定的新数据内取出关键字。在下一步骤S1005 中,将该取出的关键字作为删除关键字从差分树中删除。该删除处理如图8A以及图8B所示ο接着在步骤S1006中,判定在步骤S1005中的删除是否成功。如果删除成功,则 返回步骤S1003,如果失败则在步骤S1007中,将删除关键字作为插入关键字来制作差分数 据,返回步骤S1003。在下文中参照图12来详细说明步骤S1007的处理。当所有的新数据都处理完毕而从步骤S1003分支到的步骤S1008中,判定是否登 记有差分树。如果没有登记则处理结束,如果已登记,则在步骤S1009中取出差分树的所有 关键字,作为删除关键字来制作差分数据,结束处理。在后文中参照图13来详细说明步骤 S1009。此外,图10所说明的流程仅是1例,可部分替换如之前基于图9的说明所述利用 新数据来生成差分树的方法或者处理顺序等,进行各种变形,这对本领域技术人员来说是 显然的。图11是说明图10所示的利用旧数据和新数据制作差分数据的处理流程的步骤 S1001中执行的、利用旧数据制作配对节点树(差分树)的处理流程的图。首先在步骤SllOl中设定旧数据。该旧数据的设定通过预先保管从旧数据的供给 源供给的旧数据(例如存储在图3B以及图9所示的旧数据存储区域321中)来进行,不过 也可以从存储有由供给源供给的旧数据的存储介质中直接读出关键字。接着在步骤S1102中判定是否已从旧数据中取出了所有关键字,如果取出了所有 关键字则结束处理。如果没有从旧数据中取出了所有关键字,则在步骤S1103中从旧数据取出关键 字,进到步骤Sl 104,将所取出的关键字作为插入关键字,通过图7A 图7D所示的处理,向 差分树插入关键字。反复在步骤S1104的插入处理后返回步骤S1102的判定处理的循环处理,直到从 旧数据中取出了所有关键字为止。图12是说明在差分数据中存储更新数据的处理流程的图。图12所示的处理流程 可适用于图10所示的利用旧数据和新数据来制作差分数据的处理流程的步骤S1007中执 行的、将删除关键字作为插入关键字制作差分数据的处理。另外,图12所示的处理流程还可适用于图10所示的处理流程的步骤S1009中执 行的差分数据制作处理,提供表示数据更新是插入还是删除的信息以及作为差分数据更新 关键字的关键字的值。另外,作为工作区域,使用未图示的由更新类别和更新关键字构成的 更新数据设定区域。如图所示在步骤S1201中,根据表示数据更新是插入还是删除的信息,对更新数 据设定区域的更新类别设定更新类别。在图9所示的例子中,如果调用源是步骤S1007数 据更新是插入,则对更新类别设定"i"。接着在步骤S1202中,对更新数据设定区域的更新关键字设定作为更新关键字的 关键字的值。接着在步骤S1203中,将在步骤S1201和步骤S1202中设定在更新数据设定区域
23内的更新数据存储在差分数据存储区域内,结束处理。图13是说明图10所示的利用旧数据和新数据制作差分数据的处理流程的步骤 S1009中执行的、取出差分树的所有关键字作为删除关键字来制作差分数据的处理流程的 图。在步骤S1301中,设定差分树的根节点的数组编号,作为检索开始节点的数组编 号。接着从检索开始节点进行图5所示的最小值检索,求出索引关键字的最小值。接着进到步骤S1303,将在步骤S1302中求出的最小值作为删除关键字来制作差 分数据。该步骤1303的处理通过下述处理来实现将更新类别设为删除,更新关键字的值 设为在紧接上一次的最小值检索中求出的最小值,图12所示的在差分数据中存储更新数 据的处理。以下,如步骤S1303、步骤S1304 步骤S1310所示,反复最小值检索以升序方式 从差分树取出索引关键字,反复将所取出的最小值作为删除关键字制作差分数据的步骤 S1303。因此,步骤S1304 步骤S1310的处理与图6所示的以升序方式取出索引关键字 的处理流程的步骤S604 步骤S610的处理相同,所以省略说明。此外,对于图10所示的步骤S1009中执行的处理,能够取出残留在差分树中的所 有关键字即可,所以不限于图13所示的升序取出,也可以采用先前所述的降序取出。通过参照以上的图10 图13说明的处理,利用旧数据和新数据来制作差分数据。接着,参照图14、图15,说明本发明的利用差分数据将旧数据更新为新数据的处 理。图14是说明本发明一实施方式的利用差分数据将旧数据更新为新数据的处理概 要的图。图14所示的例子为通过在图9中例示的利用旧数据和新数据制作的差分数据, 在图3B例示的差分数据更新装置400a中将旧数据更新为新数据。因此,与图9所示的旧数据相同,在索引存储区域421a中存储有旧数据的 关键字 321a" 010010 “、321b “ 010011 “、321c “ 100011 “、321d “ 101011"以及 321e" 101100"。另外,同样地,在差分数据存储区域420a中也存储有与图9所示的存储 在差分数据存储区域中的更新数据相同的数据。作为旧数据的关键字321a 321e通过图14(A)所示的插入处理,插入到更新前 的更新树409a-l。此外,图14的(A)所示的S1501表示对应于后述图15所示的利用差分 数据将旧数据更新为新数据的处理流程的步骤S1501中的处理。以下图14的(B) (D) 也同样。接着,如图14的(B)所示,对于差分数据存储区域420a所存储的更新数据中更新 类别281的值是"d"的更新数据380a、380b,其作为更新关键字282的关键字321b和关 键字321d的删除处理在图15所示的流程步骤S1508中进行。此外,如图14的(C)所示,对于差分数据存储区域420a所存储的差分数据中更新 类别281的值是"i〃的更新数据380c、380d,其作为更新关键字282的关键字322b和关 键字322c的插入处理在图15所示的流程步骤S1507中进行。结果,更新前的更新树409a_l更新成更新后的更新树409a_2。在更新树409a_2 中含有旧数据所包含的关键字321a、321c以及321e以及所插入的关键字322b与322c。
接着,如图14的(D)所示,从更新后的更新树409a_2中取出关键字存储在新数据 存储区域422a内的处理在图15所示的步骤S1509中进行,旧数据更新成新数据。在新数 据存储区域 422a 中存储有关键字 321a〃 010010"、322b〃 010110"、322c〃 100010"、 321c" 100011"以及321e〃 101100〃。此外,可以将新数据存储区域422a设为与索引存 储区域421a相同的区域,在旧数据上重写新数据。此外,在上述说明中,在对更新树409a_l执行了删除处理后进行插入处理,但不 论以怎样的顺序执行删除插入,结果都是相同的。另外,还可以进行下述等各种变形仅取出差分数据420a中的插入关键字与旧 数据421a—起制作更新前的更新树409a-l,之后仅通过删除处理制作更新后的更新树 409a-2o图15是说明利用差分数据将旧数据更新为新数据的处理流程的图。如图15所示,在步骤S1501中,将旧数据的所有关键字插入更新树。该处理通过参 照图11说明的利用旧数据制作配对节点树的处理来实现。与先前所述的相同,如果旧数据 已存储在配对节点树内(即数据库的索引具有配对节点树的数据结构),则取代步骤1501, 取得其所登记的根节点的数组编号或者表示根节点位置的位置信息即可。并且,在该情况 下,因为数据库的索引具有配对节点树的数据结构,所以显然不需要后述步骤S1509的处 理。接着,在步骤S1502中设定差分数据。该差分数据的设定通过下述来进行例如在 图3B和图14所示的差分数据存储区域420a 420x中存储从由差分数据制作装置制作了 差分数据的供给源提供的差分数据,不过也可以从存储有由供给源提供的新数据的存储介 质中直接读出关键字。接着进到步骤S1503,判定是否处理完了所有的更新数据。如果处理完了所有的更 新数据则转移到步骤S1509,如果没有处理完则进到步骤S1504。在步骤S1504中,取出步骤S1502中设定的差分数据的更新数据,然后从该更新数 据中取出更新关键字。在下一步骤S1505中,从更新数据中取出更新类别,接着在步骤S1506中,判定步 骤S1505中取出的更新类别。如果更新类别是删除则进到步骤S1507,如果是插入则进到步骤S1508。在步骤S1507中,通过图8A、图8B所示的删除处理,将更新关键字作为删除关键字 从更新树中删除,返回步骤S1503。在步骤S1508中,通过图7A 图7D所示的插入处理,将更新关键字作为插入关键 字插入到更新树,返回步骤S1503。在处理完了所有的更新数据而从步骤S1503分支到的步骤S1509中,通过图6所 示的升序取出处理,取出更新树的所有关键字作为新数据,结束处理。在上述说明中,利用更新数据的更新类别来划分删除处理和插入处理,但如果在 图10所示的差分数据制作处理中将差分数据文件分割制作成删除关键字文件和插入关键 字文件,则针对各个文件执行删除处理和插入处理。另外,如图14的说明所述,还可以进行 将旧数据和插入关键字文件的所有关键字插入到更新树的处理,利用存储在删除关键字文 件中的删除关键字来执行更新树的删除处理,将旧数据更新成新数据。
由以上详细说明可知,根据本发明,可以通过活用配对节点树来高效地将数据库 的索引从旧数据更新为新数据。另外,本发明的实施方式不限于此,可进行各种变形,这对本领域技术人员而言是 显然的。此外显然,可以在计算机中执行使计算机执行本发明的索引关键字更新方法的程序。因此,上述程序以及存储有程序的计算机可读存储介质包含在本发明的实施方式 中。
权利要求
一种数据库的索引关键字更新方法,在对数据库的索引关键字的旧数据提供置换该旧数据的新索引关键字的新数据时,进行所述索引关键字的更新,其特征在于,该索引关键字更新方法具有以下步骤差分树取得步骤,取得差分树,该差分树存储所述旧数据或新数据的索引关键字作为配对节点树的叶节点的索引关键字,该配对节点树是用于比特序列检索的树,由根节点、以及配置在相邻存储区域中的分支节点和叶节点、或者分支节点之间或叶节点之间的节点对构成,所述根节点是表示树的起点的节点,当该树的节点为一个时所述根节点是所述叶节点,当树的节点为两个以上时所述根节点是所述分支节点,所述分支节点包含进行比特序列检索的检索关键字的鉴别比特位置、和表示作为链接目的地节点对中的一个节点的代表节点的位置的位置信息,所述叶节点包含由检索对象比特序列构成的索引关键字,将所述树的任意节点作为检索开始节点,依次反复下述动作在所述分支节点中根据该分支节点中包含的鉴别比特位置的检索关键字的比特值,来链接到链接目的地节点对的代表节点或配置在与其相邻的存储区域中的节点,直至到达所述叶节点为止,由此将存储在所述叶节点中的索引关键字作为检索结果关键字,该检索结果关键字是所述树的以所述检索开始节点为根节点的任意部分树的、基于所述检索关键字的检索结果;差分数据制作步骤,将所述差分树的根节点作为所述检索开始节点,将所述新数据或旧数据的所有索引关键字作为检索关键字进行检索,从差分树中删除作为与检索关键字一致的所述检索结果关键字的索引关键字,将与作为所述检索结果关键字的索引关键字不一致的检索关键字设为差分数据的插入关键字或删除关键字,将基于所述新数据或旧数据的所有索引关键字的检索结束后未被删除而残留在所述差分树中的索引关键字作为差分数据的删除关键字或插入关键字,来制作差分数据;更新树取得步骤,取得更新树,该更新树是存储所述旧数据的索引关键字作为叶节点索引关键字的所述配对节点树;以及新旧索引关键字更新步骤,通过从所述更新树中删除从所述差分数据中取出的删除关键字,向所述更新树插入从所述差分数据中取出的插入关键字,来制作存储新数据的索引关键字作为叶节点索引关键字的新数据配对节点树,根据该新数据配对节点树,将所述旧数据更新为所述新数据。
2.一种旧数据和新数据的差分数据制作方法,该差分数据制作方法用于数据库的索引 关键字更新,该索引关键字更新在对数据库的索引关键字的旧数据提供置换该旧数据的新 索引关键字的新数据时,进行所述索引关键字的更新,其特征在于,该差分数据制作方法具 有以下步骤差分树取得步骤,取得差分树,该差分树存储所述旧数据或新数据的索引关键字作为 配对节点树的叶节点的索引关键字,该配对节点树是用于比特序列检索的树,由根节点、以 及配置在相邻存储区域中的分支节点和叶节点、或者分支节点之间或叶节点之间的节点对 构成,所述根节点是表示树的起点的节点,当该树的节点为一个时所述根节点是所述叶节 点,当树的节点为两个以上时所述根节点是所述分支节点,所述分支节点包含进行比特序 列检索的检索关键字的鉴别比特位置、和表示作为链接目的地节点对中的一个节点的代表 节点的位置的位置信息,所述叶节点包含由检索对象比特序列构成的索引关键字,将所述 树的任意节点作为检索开始节点,依次反复下述动作在所述分支节点中根据该分支节点中包含的鉴别比特位置的检索关键字的比特值,来链接到链接目的地节点对的代表节点或 配置在与其相邻的存储区域中的节点,直至到达所述叶节点为止,由此将存储在所述叶节 点中的索引关键字作为检索结果关键字,所述检索结果关键字是所述树的以所述检索开始 节点为根节点的任意部分树的、基于所述检索关键字的检索结果;以及差分数据制作步骤,将所述差分树的根节点作为所述检索开始节点,将所述新数据或 旧数据的所有索引关键字作为检索关键字进行检索,从差分树中删除作为与检索关键字一 致的所述检索结果关键字的索引关键字,将与作为所述检索结果关键字的索引关键字不一 致的检索关键字设为差分数据的插入关键字或删除关键字,将基于所述新数据或旧数据的 所有索引关键字的检索结束后未被删除而残留在所述差分树中的索引关键字作为差分数 据的删除关键字或插入关键字,来制作差分数据。
3.根据权利要求2所述的差分数据制作方法,其特征在于,所述配对节点树存储在数组中,表示所述链接目的地节点对的代表节点的位置的信息 是所述数组的存储有该节点的数组元素的数组编号。
4.根据权利要求3所述的差分数据制作方法,其特征在于,所述差分树取得步骤在将包含从所述旧数据或新数据中第一个取出的索引关键字的 叶节点设为该差分树的根节点后,反复下述索引关键字插入处理将之后从所述旧数据或 新数据中取出的所述索引关键字作为所述检索关键字从该差分树中检索相应的叶节点,并 且在堆栈内依次存储对直至该叶节点为止的链接路径上的分支节点和该叶节点进行存储 的数组元素的数组编号,在所述检索关键字与所述相应的叶节点所包含的索引关键字之间 进行大小比较和比特序列比较,根据在比特序列比较中成为不同比特值的第一个比特位置 与存储在所述堆栈中的分支节点的鉴别比特位置之间的相对位置关系,来确定由包含待插 入索引关键字的叶节点和另一个节点构成的节点对的插入位置,根据所述大小关系来确定 将包含待插入索引关键字的叶节点作为所述待插入节点对的哪个节点。
5.一种索引关键字的差分数据更新方法,该方法使用数据库的索引关键字的旧数据与 置换该旧数据的新索引关键字的新数据之间的差分数据进行所述索引关键字的更新,其特 征在于,该方法具有以下步骤更新树取得步骤,取得更新树,该更新树是存储所述旧数据的索引关键字作为配对节 点树的叶节点的索引关键字的所述配对节点树,该配对节点树是用于比特序列检索的树, 由根节点、以及配置在相邻存储区域中的分支节点和叶节点、或者分支节点之间或叶节点 之间的节点对构成,所述根节点是表示树的起点的节点,当该树的节点为一个时所述根节 点是所述叶节点,当树的节点为两个以上时所述根节点是所述分支节点,所述分支节点包 含进行比特序列检索的检索关键字的鉴别比特位置、和表示作为链接目的地节点对中的一 个节点的代表节点的位置的位置信息,所述叶节点包含由检索对象比特序列构成的索引关 键字,将所述树的任意节点作为检索开始节点,依次反复下述动作在所述分支节点中,根 据该分支节点中包含的鉴别比特位置的检索关键字的比特值,来链接到链接目的地节点对 的代表节点或配置在与其相邻的存储区域中的节点,直至到达所述叶节点为止,由此将存 储在所述叶节点中的索引关键字作为检索结果关键字,所述检索结果关键字是所述树的以 所述检索开始节点为根节点的任意部分树的、基于所述检索关键字的检索结果;以及新旧索引关键字更新步骤,通过从所述更新树中删除从根据下述方式制作的差分数据中取出的删除关键字,向所述更新树插入从所述差分数据中取出的插入关键字,来制作存 储有新数据的索引关键字作为叶节点索引关键字的新数据配对节点树,根据该新数据配对 节点树,将所述旧数据更新为所述新数据,该方式为将存储了所述旧数据或新数据的索引 关键字作为所述配对节点树的叶节点索引关键字的差分树的根节点作为所述检索开始节 点,将所述新数据或旧数据的所有索引关键字作为检索关键字进行检索,从差分树中删除 作为与检索关键字一致的所述检索结果关键字的索引关键字,将与作为所述检索结果关键 字的索引关键字不一致的检索关键字设为差分数据的插入关键字或删除关键字,将基于所 述新数据或旧数据的所有索引关键字的检索结束后未被删除而残留在所述差分树中的索 引关键字作为差分数据的删除关键字或插入关键字,来制作差分数据。
6.根据权利要求5所述的索引关键字的差分数据更新方法,其特征在于,所述配对节点树存储在数组中,表示所述链接目的地节点对的代表节点的位置的信息 是所述数组的存储有该节点的数组元素的数组编号。
7.根据权利要求6所述的索引关键字的差分数据更新方法,其特征在于,所述更新树取得步骤在将包含从所述旧数据中第一个取出的索引关键字的叶节点设 为该更新树的根节点后,反复下述索引关键字插入处理将之后从所述旧数据中取出的所 述索引关键字作为所述检索关键字,从该更新树中检索相应的叶节点,并且在堆栈中依次 存储对直至该叶节点为止的链接路径上的分支节点和该叶节点进行存储的数组元素的数 组编号,在所述检索关键字与所述相应的叶节点所包含的索引关键字之间进行大小比较和 比特序列比较,根据在比特序列比较中成为不同比特值的第一个比特位置与存储在所述堆 栈中的分支节点的鉴别比特位置之间的相对位置关系,来确定由包含待插入索引关键字的 叶节点和另一个节点构成的节点对的插入位置,根据所述大小关系来确定将包含待插入索 引关键字的叶节点作为所述待插入节点对的哪个节点。
8.根据权利要求7所述的索引关键字的差分数据更新方法,其特征在于,所述更新树取得步骤除了取出所述旧数据的索引关键字之外,还取出所述差分数据的 插入关键字,反复所述索引关键字的插入处理,所述新旧索引关键字更新步骤通过从所述更新树中删除从所述差分数据中取出的删 除关键字,来制作存储了新数据的索引关键字作为叶节点索引关键字的新数据配对节点 树,根据该新数据配对节点树,将所述旧数据更新成所述新数据。
9.根据权利要求5所述的索引关键字的差分数据更新方法,其特征在于,所述旧数据的索引关键字存储在配对节点树中,所述更新树取得步骤取得表示该配对节点树的根节点位置的位置信息,所述新旧索引关键字更新步骤通过制作所述新数据配对节点树,来将所述旧数据更新 成所述新数据。
10.一种旧数据和新数据的差分数据制作装置,该差分数据制作装置用于数据库的索 引关键字更新,该索引关键字更新在对数据库的索引关键字的旧数据提供置换该旧数据的 新索引关键字的新数据时,进行所述索引关键字的更新,其特征在于,该差分数据制作装置 具有差分树取得单元,其取得差分树,该差分树存储所述旧数据或新数据的索引关键字作 为配对节点树的叶节点的索引关键字,该配对节点树是用于比特序列检索的树,由根节点、以及配置在相邻存储区域中的分支节点和叶节点、或者分支节点之间或叶节点之间的节点 对构成,所述根节点是表示树的起点的节点,当该树的节点为一个时所述根节点是所述叶 节点,当树的节点为两个以上时所述根节点是所述分支节点,所述分支节点包含进行比特 序列检索的检索关键字的鉴别比特位置、和表示作为链接目的地节点对中的一个节点的代 表节点的位置的位置信息,所述叶节点包含由检索对象比特序列构成的索引关键字,将所 述树的任意节点作为检索开始节点,依次反复下述动作在所述分支节点中根据该分支节 点所包含的鉴别比特位置的检索关键字的比特值,来链接到链接目的地节点对的代表节点 或配置在与其相邻的存储区域中的节点,直至到达所述叶节点为止,由此将存储在所述叶 节点中的索引关键字作为检索结果关键字,所述检索结果关键字是所述树的以所述检索开 始节点为根节点的任意部分树的、基于所述检索关键字的检索结果;以及差分数据制作单元,其将所述差分树的根节点作为所述检索开始节点,将所述新数据 或旧数据的所有索引关键字作为检索关键字进行检索,从差分树中删除作为与检索关键字 一致的所述检索结果关键字的索引关键字,将与作为所述检索结果关键字的索引关键字不 一致的检索关键字设为差分数据的插入关键字或删除关键字,将基于所述新数据或旧数据 的所有索引关键字的检索结束后未被删除而残留在所述差分树中的索引关键字作为差分 数据的删除关键字或插入关键字,来制作差分数据。
11. 一种索引关键字的差分数据更新装置,该装置使用数据库的索引关键字的旧数据 与置换该旧数据的新索引关键字的新数据之间的差分数据来进行所述索引关键字的更新, 其特征在于,该装置具有更新树取得单元,其取得更新树,该更新树是存储所述旧数据的索引关键字作为配对 节点树的叶节点的索引关键字的所述配对节点树,该配对节点树是用于比特序列检索的 树,由根节点、以及配置在相邻存储区域中的分支节点和叶节点、或者分支节点之间或叶节 点之间的节点对构成,所述根节点是表示树的起点的节点,当该树的节点为一个时所述根 节点是所述叶节点,当树的节点为两个以上时所述根节点是所述分支节点,所述分支节点 包含进行比特序列检索的检索关键字的鉴别比特位置、和表示作为链接目的地节点对中的 一个节点的代表节点的位置的位置信息,所述叶节点包含由检索对象比特序列构成的索引 关键字,将所述树的任意节点作为检索开始节点,依次反复下述动作在所述分支节点中, 根据该分支节点所包含的鉴别比特位置的检索关键字的比特值,来链接到链接目的地节点 对的代表节点或配置在与其相邻的存储区域中的节点,直至到达所述叶节点为止,由此将 存储在所述叶节点中的索引关键字作为检索结果关键字,所述检索结果关键字是所述树的 以所述检索开始节点为根节点的任意部分树的、基于所述检索关键字的检索结果;以及新旧索引关键字更新单元,其通过从所述更新树中删除从根据下述方式制作的差分数 据中取出的删除关键字,向所述更新树插入从所述差分数据中取出的插入关键字,来制作 存储有新数据的索引关键字作为叶节点索引关键字的新数据配对节点树,根据该新数据配 对节点树,将所述旧数据更新为所述新数据,该方式为将存储了所述旧数据或新数据的索 引关键字作为所述配对节点树的叶节点索引关键字的差分树的根节点作为所述检索开始 节点,将所述新数据或旧数据的所有索引关键字作为检索关键字进行检索,从差分树中删 除作为与检索关键字一致的所述检索结果关键字的索引关键字,将与作为所述检索结果关 键字的索引关键字不一致的检索关键字设为差分数据的插入关键字或删除关键字,将基于所述新数据或旧数据的所有索引关键字的检索结束后未被删除而残留在所述差分树中的 索引关键字作为差分数据的删除关键字或插入关键字,来制作差分数据。
12.根据权利要求11所述的索引关键字的差分数据更新装置,其特征在于,所述旧数据的索引关键字存储在配对节点树中,所述更新树取得单元取得表示该配对节点树的根节点位置的位置信息,所述新旧索引关键字更新单元通过制作所述新数据配对节点树,来将所述旧数据更新 成所述新数据。
13.—种在计算机上运行的程序,该程序用于数据库的索引关键字更新,该索引关键字 更新在对数据库的索引关键字的旧数据提供置换该旧数据的新索引关键字的新数据时,进 行所述索引关键字的更新,其特征在于,该程序使计算机执行以下步骤差分树取得步骤,取得差分树,该差分树存储所述旧数据或新数据的索引关键字作为 配对节点树的叶节点的索引关键字,该配对节点树是用于比特序列检索的树,由根节点、以 及配置在相邻存储区域中的分支节点和叶节点、或者分支节点之间或叶节点之间的节点对 构成,所述根节点是表示树的起点的节点,当该树的节点为一个时所述根节点是所述叶节 点,当树的节点为两个以上时所述根节点是所述分支节点,所述分支节点包含进行比特序 列检索的检索关键字的鉴别比特位置、和表示作为链接目的地节点对中的一个节点的代表 节点的位置的位置信息,所述叶节点包含由检索对象比特序列构成的索引关键字,将所述 树的任意节点作为检索开始节点,依次反复下述动作在所述分支节点中根据该分支节点 中包含的鉴别比特位置的检索关键字的比特值,来链接到链接目的地节点对的代表节点或 配置在与其相邻的存储区域中的节点,直至到达所述叶节点为止,由此将存储在所述叶节 点中的索引关键字作为检索结果关键字,该检索结果关键字是所述树的以所述检索开始节 点为根节点的任意部分树的、基于所述检索关键字的检索结果;以及差分数据制作步骤,将所述差分树的根节点作为所述检索开始节点,将所述新数据或 旧数据的所有索引关键字作为检索关键字进行检索,从差分树中删除作为与检索关键字一 致的所述检索结果关键字的索引关键字,将与作为所述检索结果关键字的索引关键字不一 致的检索关键字设为差分数据的插入关键字或删除关键字,将基于所述新数据或旧数据的 所有索引关键字的检索结束后未被删除而残留在所述差分树中的索引关键字作为差分数 据的删除关键字或插入关键字,来制作差分数据。
14.一种在计算机上运行的程序,该程序用于数据库的索引关键字更新,该索引关键字 更新在对数据库的索引关键字的旧数据提供置换该旧数据的新索引关键字的新数据时,进 行所述索引关键字的更新,其特征在于,该程序使计算机执行以下步骤更新树取得步骤,取得更新树,该更新树存储所述旧数据的索引关键字作为配对节点 树的叶节点的索引关键字,该配对节点树是用于比特序列检索的树,由根节点、以及配置在 相邻存储区域中的分支节点和叶节点、或者分支节点之间或叶节点之间的节点对构成,所 述根节点是表示树的起点的节点,当该树的节点为一个时所述根节点是所述叶节点,当树 的节点为两个以上时所述根节点是所述分支节点,所述分支节点包含进行比特序列检索的 检索关键字的鉴别比特位置、和表示作为链接目的地节点对中的一个节点的代表节点的位 置的位置信息,所述叶节点包含由检索对象比特序列构成的索引关键字,将所述树的任意 节点作为检索开始节点,依次反复下述动作在所述分支节点中根据该分支节点所包含的鉴别比特位置的检索关键字的比特值,来链接到链接目的地节点对的代表节点或配置在与 其相邻的存储区域中的节点,直至到达所述叶节点为止,由此将存储在所述叶节点中的索 引关键字作为检索结果关键字,该检索结果关键字是所述树的以所述检索开始节点为根节 点的任意部分树的、基于所述检索关键字的检索结果;以及新旧索引关键字更新步骤,通过从所述更新树中删除从在权利要求13所述的所述差 分数据制作步骤中制作的差分数据中取出的删除关键字,向所述更新树插入从所述差分数 据取出的插入关键字,来制作存储了新数据的索引关键字作为叶节点的索引关键字的新数 据配对节点树,根据该新数据配对节点树,将所述旧数据更新成所述新数据。
全文摘要
在针对现有数据库的索引关键字提供与其置换的用于新数据库的索引关键字时,能高效地进行数据库的索引关键字的更新。从存储旧数据的索引关键字作为叶节点的索引关键字的配对节点树中,利用新数据的索引关键字进行删除处理,制作由插入关键字和删除关键字构成的新数据和旧数据的差分数据,对存储旧数据的索引关键字作为叶节点的索引关键字的配对节点树,进行从差分数据取出的删除关键字的删除处理和插入关键字的插入处理,来制作新数据。
文档编号G06F12/00GK101911060SQ20088012240
公开日2010年12月8日 申请日期2008年10月30日 优先权日2007年12月28日
发明者国分光裕, 新庄敏男 申请人:新叶股份有限公司