数据库的索引关键字更新方法以及程序.pdf

上传人:1*** 文档编号:4575263 上传时间:2018-10-21 格式:PDF 页数:48 大小:2.42MB
返回 下载 相关 举报
摘要
申请专利号:

CN200880122404.0

申请日:

2008.10.30

公开号:

CN101911060A

公开日:

2010.12.08

当前法律状态:

终止

有效性:

无权

法律详情:

未缴年费专利权终止IPC(主分类):G06F 17/30申请日:20081030授权公告日:20120905终止日期:20141030|||专利权的转移IPC(主分类):G06F 17/30变更事项:专利权人变更前权利人:新叶股份有限公司变更后权利人:株式会社高速屋变更事项:地址变更前权利人:日本千叶县变更后权利人:日本神奈川县登记生效日:20121031|||授权|||实质审查的生效IPC(主分类):G06F 17/30申请日:20081030|||公开

IPC分类号:

G06F17/30; G06F12/00

主分类号:

G06F17/30

申请人:

新叶股份有限公司

发明人:

新庄敏男; 国分光裕

地址:

日本千叶县

优先权:

2007.12.28 JP 2007-338413

专利代理机构:

北京三友知识产权代理有限公司 11127

代理人:

黄纶伟

PDF下载: PDF下载
内容摘要

在针对现有数据库的索引关键字提供与其置换的用于新数据库的索引关键字时,能高效地进行数据库的索引关键字的更新。从存储旧数据的索引关键字作为叶节点的索引关键字的配对节点树中,利用新数据的索引关键字进行删除处理,制作由插入关键字和删除关键字构成的新数据和旧数据的差分数据,对存储旧数据的索引关键字作为叶节点的索引关键字的配对节点树,进行从差分数据取出的删除关键字的删除处理和插入关键字的插入处理,来制作新数据。

权利要求书

1: 一种数据库的索引关键字更新方法, 在对数据库的索引关键字的旧数据提供置换该 旧数据的新索引关键字的新数据时, 进行所述索引关键字的更新, 其特征在于, 该索引关键 字更新方法具有以下步骤 : 差分树取得步骤, 取得差分树, 该差分树存储所述旧数据或新数据的索引关键字作为 配对节点树的叶节点的索引关键字, 该配对节点树是用于比特序列检索的树, 由根节点、 以 及配置在相邻存储区域中的分支节点和叶节点、 或者分支节点之间或叶节点之间的节点对 构成, 所述根节点是表示树的起点的节点, 当该树的节点为一个时所述根节点是所述叶节 点, 当树的节点为两个以上时所述根节点是所述分支节点, 所述分支节点包含进行比特序 列检索的检索关键字的鉴别比特位置、 和表示作为链接目的地节点对中的一个节点的代表 节点的位置的位置信息, 所述叶节点包含由检索对象比特序列构成的索引关键字, 将所述 树的任意节点作为检索开始节点, 依次反复下述动作 : 在所述分支节点中根据该分支节点 中包含的鉴别比特位置的检索关键字的比特值, 来链接到链接目的地节点对的代表节点或 配置在与其相邻的存储区域中的节点, 直至到达所述叶节点为止, 由此将存储在所述叶节 点中的索引关键字作为检索结果关键字, 该检索结果关键字是所述树的以所述检索开始节 点为根节点的任意部分树的、 基于所述检索关键字的检索结果 ; 差分数据制作步骤, 将所述差分树的根节点作为所述检索开始节点, 将所述新数据或 旧数据的所有索引关键字作为检索关键字进行检索, 从差分树中删除作为与检索关键字一 致的所述检索结果关键字的索引关键字, 将与作为所述检索结果关键字的索引关键字不一 致的检索关键字设为差分数据的插入关键字或删除关键字, 将基于所述新数据或旧数据的 所有索引关键字的检索结束后未被删除而残留在所述差分树中的索引关键字作为差分数 据的删除关键字或插入关键字, 来制作差分数据 ; 更新树取得步骤, 取得更新树, 该更新树是存储所述旧数据的索引关键字作为叶节点 索引关键字的所述配对节点树 ; 以及 新旧索引关键字更新步骤, 通过从所述更新树中删除从所述差分数据中取出的删除关 键字, 向所述更新树插入从所述差分数据中取出的插入关键字, 来制作存储新数据的索引 关键字作为叶节点索引关键字的新数据配对节点树, 根据该新数据配对节点树, 将所述旧 数据更新为所述新数据。
2: 一种旧数据和新数据的差分数据制作方法, 该差分数据制作方法用于数据库的索引 关键字更新, 该索引关键字更新在对数据库的索引关键字的旧数据提供置换该旧数据的新 索引关键字的新数据时, 进行所述索引关键字的更新, 其特征在于, 该差分数据制作方法具 有以下步骤 : 差分树取得步骤, 取得差分树, 该差分树存储所述旧数据或新数据的索引关键字作为 配对节点树的叶节点的索引关键字, 该配对节点树是用于比特序列检索的树, 由根节点、 以 及配置在相邻存储区域中的分支节点和叶节点、 或者分支节点之间或叶节点之间的节点对 构成, 所述根节点是表示树的起点的节点, 当该树的节点为一个时所述根节点是所述叶节 点, 当树的节点为两个以上时所述根节点是所述分支节点, 所述分支节点包含进行比特序 列检索的检索关键字的鉴别比特位置、 和表示作为链接目的地节点对中的一个节点的代表 节点的位置的位置信息, 所述叶节点包含由检索对象比特序列构成的索引关键字, 将所述 树的任意节点作为检索开始节点, 依次反复下述动作 : 在所述分支节点中根据该分支节点 2 中包含的鉴别比特位置的检索关键字的比特值, 来链接到链接目的地节点对的代表节点或 配置在与其相邻的存储区域中的节点, 直至到达所述叶节点为止, 由此将存储在所述叶节 点中的索引关键字作为检索结果关键字, 所述检索结果关键字是所述树的以所述检索开始 节点为根节点的任意部分树的、 基于所述检索关键字的检索结果 ; 以及 差分数据制作步骤, 将所述差分树的根节点作为所述检索开始节点, 将所述新数据或 旧数据的所有索引关键字作为检索关键字进行检索, 从差分树中删除作为与检索关键字一 致的所述检索结果关键字的索引关键字, 将与作为所述检索结果关键字的索引关键字不一 致的检索关键字设为差分数据的插入关键字或删除关键字, 将基于所述新数据或旧数据的 所有索引关键字的检索结束后未被删除而残留在所述差分树中的索引关键字作为差分数 据的删除关键字或插入关键字, 来制作差分数据。
3: 根据权利要求 2 所述的差分数据制作方法, 其特征在于, 所述配对节点树存储在数组中, 表示所述链接目的地节点对的代表节点的位置的信息 是所述数组的存储有该节点的数组元素的数组编号。
4: 根据权利要求 3 所述的差分数据制作方法, 其特征在于, 所述差分树取得步骤在将包含从所述旧数据或新数据中第一个取出的索引关键字的 叶节点设为该差分树的根节点后, 反复下述索引关键字插入处理 : 将之后从所述旧数据或 新数据中取出的所述索引关键字作为所述检索关键字从该差分树中检索相应的叶节点, 并 且在堆栈内依次存储对直至该叶节点为止的链接路径上的分支节点和该叶节点进行存储 的数组元素的数组编号, 在所述检索关键字与所述相应的叶节点所包含的索引关键字之间 进行大小比较和比特序列比较, 根据在比特序列比较中成为不同比特值的第一个比特位置 与存储在所述堆栈中的分支节点的鉴别比特位置之间的相对位置关系, 来确定由包含待插 入索引关键字的叶节点和另一个节点构成的节点对的插入位置, 根据所述大小关系来确定 将包含待插入索引关键字的叶节点作为所述待插入节点对的哪个节点。
5: 一种索引关键字的差分数据更新方法, 该方法使用数据库的索引关键字的旧数据与 置换该旧数据的新索引关键字的新数据之间的差分数据进行所述索引关键字的更新, 其特 征在于, 该方法具有以下步骤 : 更新树取得步骤, 取得更新树, 该更新树是存储所述旧数据的索引关键字作为配对节 点树的叶节点的索引关键字的所述配对节点树, 该配对节点树是用于比特序列检索的树, 由根节点、 以及配置在相邻存储区域中的分支节点和叶节点、 或者分支节点之间或叶节点 之间的节点对构成, 所述根节点是表示树的起点的节点, 当该树的节点为一个时所述根节 点是所述叶节点, 当树的节点为两个以上时所述根节点是所述分支节点, 所述分支节点包 含进行比特序列检索的检索关键字的鉴别比特位置、 和表示作为链接目的地节点对中的一 个节点的代表节点的位置的位置信息, 所述叶节点包含由检索对象比特序列构成的索引关 键字, 将所述树的任意节点作为检索开始节点, 依次反复下述动作 : 在所述分支节点中, 根 据该分支节点中包含的鉴别比特位置的检索关键字的比特值, 来链接到链接目的地节点对 的代表节点或配置在与其相邻的存储区域中的节点, 直至到达所述叶节点为止, 由此将存 储在所述叶节点中的索引关键字作为检索结果关键字, 所述检索结果关键字是所述树的以 所述检索开始节点为根节点的任意部分树的、 基于所述检索关键字的检索结果 ; 以及 新旧索引关键字更新步骤, 通过从所述更新树中删除从根据下述方式制作的差分数据 3 中取出的删除关键字, 向所述更新树插入从所述差分数据中取出的插入关键字, 来制作存 储有新数据的索引关键字作为叶节点索引关键字的新数据配对节点树, 根据该新数据配对 节点树, 将所述旧数据更新为所述新数据, 该方式为 : 将存储了所述旧数据或新数据的索引 关键字作为所述配对节点树的叶节点索引关键字的差分树的根节点作为所述检索开始节 点, 将所述新数据或旧数据的所有索引关键字作为检索关键字进行检索, 从差分树中删除 作为与检索关键字一致的所述检索结果关键字的索引关键字, 将与作为所述检索结果关键 字的索引关键字不一致的检索关键字设为差分数据的插入关键字或删除关键字, 将基于所 述新数据或旧数据的所有索引关键字的检索结束后未被删除而残留在所述差分树中的索 引关键字作为差分数据的删除关键字或插入关键字, 来制作差分数据。
6: 根据权利要求 5 所述的索引关键字的差分数据更新方法, 其特征在于, 所述配对节点树存储在数组中, 表示所述链接目的地节点对的代表节点的位置的信息 是所述数组的存储有该节点的数组元素的数组编号。
7: 根据权利要求 6 所述的索引关键字的差分数据更新方法, 其特征在于, 所述更新树取得步骤在将包含从所述旧数据中第一个取出的索引关键字的叶节点设 为该更新树的根节点后, 反复下述索引关键字插入处理 : 将之后从所述旧数据中取出的所 述索引关键字作为所述检索关键字, 从该更新树中检索相应的叶节点, 并且在堆栈中依次 存储对直至该叶节点为止的链接路径上的分支节点和该叶节点进行存储的数组元素的数 组编号, 在所述检索关键字与所述相应的叶节点所包含的索引关键字之间进行大小比较和 比特序列比较, 根据在比特序列比较中成为不同比特值的第一个比特位置与存储在所述堆 栈中的分支节点的鉴别比特位置之间的相对位置关系, 来确定由包含待插入索引关键字的 叶节点和另一个节点构成的节点对的插入位置, 根据所述大小关系来确定将包含待插入索 引关键字的叶节点作为所述待插入节点对的哪个节点。
8: 根据权利要求 7 所述的索引关键字的差分数据更新方法, 其特征在于, 所述更新树取得步骤除了取出所述旧数据的索引关键字之外, 还取出所述差分数据的 插入关键字, 反复所述索引关键字的插入处理, 所述新旧索引关键字更新步骤通过从所述更新树中删除从所述差分数据中取出的删 除关键字, 来制作存储了新数据的索引关键字作为叶节点索引关键字的新数据配对节点 树, 根据该新数据配对节点树, 将所述旧数据更新成所述新数据。
9: 根据权利要求 5 所述的索引关键字的差分数据更新方法, 其特征在于, 所述旧数据的索引关键字存储在配对节点树中, 所述更新树取得步骤取得表示该配对节点树的根节点位置的位置信息, 所述新旧索引关键字更新步骤通过制作所述新数据配对节点树, 来将所述旧数据更新 成所述新数据。
10: 一种旧数据和新数据的差分数据制作装置, 该差分数据制作装置用于数据库的索 引关键字更新, 该索引关键字更新在对数据库的索引关键字的旧数据提供置换该旧数据的 新索引关键字的新数据时, 进行所述索引关键字的更新, 其特征在于, 该差分数据制作装置 具有 : 差分树取得单元, 其取得差分树, 该差分树存储所述旧数据或新数据的索引关键字作 为配对节点树的叶节点的索引关键字, 该配对节点树是用于比特序列检索的树, 由根节点、 4 以及配置在相邻存储区域中的分支节点和叶节点、 或者分支节点之间或叶节点之间的节点 对构成, 所述根节点是表示树的起点的节点, 当该树的节点为一个时所述根节点是所述叶 节点, 当树的节点为两个以上时所述根节点是所述分支节点, 所述分支节点包含进行比特 序列检索的检索关键字的鉴别比特位置、 和表示作为链接目的地节点对中的一个节点的代 表节点的位置的位置信息, 所述叶节点包含由检索对象比特序列构成的索引关键字, 将所 述树的任意节点作为检索开始节点, 依次反复下述动作 : 在所述分支节点中根据该分支节 点所包含的鉴别比特位置的检索关键字的比特值, 来链接到链接目的地节点对的代表节点 或配置在与其相邻的存储区域中的节点, 直至到达所述叶节点为止, 由此将存储在所述叶 节点中的索引关键字作为检索结果关键字, 所述检索结果关键字是所述树的以所述检索开 始节点为根节点的任意部分树的、 基于所述检索关键字的检索结果 ; 以及 差分数据制作单元, 其将所述差分树的根节点作为所述检索开始节点, 将所述新数据 或旧数据的所有索引关键字作为检索关键字进行检索, 从差分树中删除作为与检索关键字 一致的所述检索结果关键字的索引关键字, 将与作为所述检索结果关键字的索引关键字不 一致的检索关键字设为差分数据的插入关键字或删除关键字, 将基于所述新数据或旧数据 的所有索引关键字的检索结束后未被删除而残留在所述差分树中的索引关键字作为差分 数据的删除关键字或插入关键字, 来制作差分数据。
11: 一种索引关键字的差分数据更新装置, 该装置使用数据库的索引关键字的旧数据 与置换该旧数据的新索引关键字的新数据之间的差分数据来进行所述索引关键字的更新, 其特征在于, 该装置具有 : 更新树取得单元, 其取得更新树, 该更新树是存储所述旧数据的索引关键字作为配对 节点树的叶节点的索引关键字的所述配对节点树, 该配对节点树是用于比特序列检索的 树, 由根节点、 以及配置在相邻存储区域中的分支节点和叶节点、 或者分支节点之间或叶节 点之间的节点对构成, 所述根节点是表示树的起点的节点, 当该树的节点为一个时所述根 节点是所述叶节点, 当树的节点为两个以上时所述根节点是所述分支节点, 所述分支节点 包含进行比特序列检索的检索关键字的鉴别比特位置、 和表示作为链接目的地节点对中的 一个节点的代表节点的位置的位置信息, 所述叶节点包含由检索对象比特序列构成的索引 关键字, 将所述树的任意节点作为检索开始节点, 依次反复下述动作 : 在所述分支节点中, 根据该分支节点所包含的鉴别比特位置的检索关键字的比特值, 来链接到链接目的地节点 对的代表节点或配置在与其相邻的存储区域中的节点, 直至到达所述叶节点为止, 由此将 存储在所述叶节点中的索引关键字作为检索结果关键字, 所述检索结果关键字是所述树的 以所述检索开始节点为根节点的任意部分树的、 基于所述检索关键字的检索结果 ; 以及 新旧索引关键字更新单元, 其通过从所述更新树中删除从根据下述方式制作的差分数 据中取出的删除关键字, 向所述更新树插入从所述差分数据中取出的插入关键字, 来制作 存储有新数据的索引关键字作为叶节点索引关键字的新数据配对节点树, 根据该新数据配 对节点树, 将所述旧数据更新为所述新数据, 该方式为 : 将存储了所述旧数据或新数据的索 引关键字作为所述配对节点树的叶节点索引关键字的差分树的根节点作为所述检索开始 节点, 将所述新数据或旧数据的所有索引关键字作为检索关键字进行检索, 从差分树中删 除作为与检索关键字一致的所述检索结果关键字的索引关键字, 将与作为所述检索结果关 键字的索引关键字不一致的检索关键字设为差分数据的插入关键字或删除关键字, 将基于 5 所述新数据或旧数据的所有索引关键字的检索结束后未被删除而残留在所述差分树中的 索引关键字作为差分数据的删除关键字或插入关键字, 来制作差分数据。
12: 根据权利要求 11 所述的索引关键字的差分数据更新装置, 其特征在于, 所述旧数据的索引关键字存储在配对节点树中, 所述更新树取得单元取得表示该配对节点树的根节点位置的位置信息, 所述新旧索引关键字更新单元通过制作所述新数据配对节点树, 来将所述旧数据更新 成所述新数据。
13: 一种在计算机上运行的程序, 该程序用于数据库的索引关键字更新, 该索引关键字 更新在对数据库的索引关键字的旧数据提供置换该旧数据的新索引关键字的新数据时, 进 行所述索引关键字的更新, 其特征在于, 该程序使计算机执行以下步骤 : 差分树取得步骤, 取得差分树, 该差分树存储所述旧数据或新数据的索引关键字作为 配对节点树的叶节点的索引关键字, 该配对节点树是用于比特序列检索的树, 由根节点、 以 及配置在相邻存储区域中的分支节点和叶节点、 或者分支节点之间或叶节点之间的节点对 构成, 所述根节点是表示树的起点的节点, 当该树的节点为一个时所述根节点是所述叶节 点, 当树的节点为两个以上时所述根节点是所述分支节点, 所述分支节点包含进行比特序 列检索的检索关键字的鉴别比特位置、 和表示作为链接目的地节点对中的一个节点的代表 节点的位置的位置信息, 所述叶节点包含由检索对象比特序列构成的索引关键字, 将所述 树的任意节点作为检索开始节点, 依次反复下述动作 : 在所述分支节点中根据该分支节点 中包含的鉴别比特位置的检索关键字的比特值, 来链接到链接目的地节点对的代表节点或 配置在与其相邻的存储区域中的节点, 直至到达所述叶节点为止, 由此将存储在所述叶节 点中的索引关键字作为检索结果关键字, 该检索结果关键字是所述树的以所述检索开始节 点为根节点的任意部分树的、 基于所述检索关键字的检索结果 ; 以及 差分数据制作步骤, 将所述差分树的根节点作为所述检索开始节点, 将所述新数据或 旧数据的所有索引关键字作为检索关键字进行检索, 从差分树中删除作为与检索关键字一 致的所述检索结果关键字的索引关键字, 将与作为所述检索结果关键字的索引关键字不一 致的检索关键字设为差分数据的插入关键字或删除关键字, 将基于所述新数据或旧数据的 所有索引关键字的检索结束后未被删除而残留在所述差分树中的索引关键字作为差分数 据的删除关键字或插入关键字, 来制作差分数据。
14: 一种在计算机上运行的程序, 该程序用于数据库的索引关键字更新, 该索引关键字 更新在对数据库的索引关键字的旧数据提供置换该旧数据的新索引关键字的新数据时, 进 行所述索引关键字的更新, 其特征在于, 该程序使计算机执行以下步骤 : 更新树取得步骤, 取得更新树, 该更新树存储所述旧数据的索引关键字作为配对节点 树的叶节点的索引关键字, 该配对节点树是用于比特序列检索的树, 由根节点、 以及配置在 相邻存储区域中的分支节点和叶节点、 或者分支节点之间或叶节点之间的节点对构成, 所 述根节点是表示树的起点的节点, 当该树的节点为一个时所述根节点是所述叶节点, 当树 的节点为两个以上时所述根节点是所述分支节点, 所述分支节点包含进行比特序列检索的 检索关键字的鉴别比特位置、 和表示作为链接目的地节点对中的一个节点的代表节点的位 置的位置信息, 所述叶节点包含由检索对象比特序列构成的索引关键字, 将所述树的任意 节点作为检索开始节点, 依次反复下述动作 : 在所述分支节点中根据该分支节点所包含的 6 鉴别比特位置的检索关键字的比特值, 来链接到链接目的地节点对的代表节点或配置在与 其相邻的存储区域中的节点, 直至到达所述叶节点为止, 由此将存储在所述叶节点中的索 引关键字作为检索结果关键字, 该检索结果关键字是所述树的以所述检索开始节点为根节 点的任意部分树的、 基于所述检索关键字的检索结果 ; 以及 新旧索引关键字更新步骤, 通过从所述更新树中删除从在权利要求 13 所述的所述差 分数据制作步骤中制作的差分数据中取出的删除关键字, 向所述更新树插入从所述差分数 据取出的插入关键字, 来制作存储了新数据的索引关键字作为叶节点的索引关键字的新数 据配对节点树, 根据该新数据配对节点树, 将所述旧数据更新成所述新数据。

说明书


数据库的索引关键字更新方法以及程序

    技术领域 本发明涉及数据库的索引关键字更新方法以及与其关联的差分数据制作方法和 装置、 索引关键字的差分数据更新方法和装置、 以及程序。
     背景技术 近年, 社会的信息化不断发展, 大规模的数据库在各处被利用起来。 为了从这种大 规模的数据库中检索记录, 通常是将与存储有各记录的地址相对应的记录内的项目作为索 引关键字进行检索, 检索出期望的记录。 并且, 全文检索中的字符串也可视为文档的索引关 键字。
     而且, 由于这些索引关键字利用比特序列来表达, 因而数据库的检索可归结于比 特序列的检索。
     作为本发明的背景技术之一, 首先对上述比特序列的检索处理进行说明。
     对于比特序列的检索处理方法公知有各种方法。在这些之中, 为了高速进行比特 序列的检索, 一直以来对存储比特序列的数据结构进行了各种研究。 作为这样的结构之一, 公知有 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 连接, 右链接 1741f 与节点 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 的代表节点即节点 [0]112。 而且, 在相邻的下一数组元素 ( 数组编号 20+1) 中存储有与代表节点成对的节点 [1]113。 在节点[0]112 的节点类别 114 中存储有 0, 在鉴别比特位置 115 中存储有 3, 在代表节点编号 116 中存储有 30。 并且, 在节点 [1]113 的节点类别 117 中存储有 1, 表示节点 [1]113 是叶节点。 在索引关键字 118 中存储有 “0001” 。与之前针对 Patricia 树描述的一样, 当然在叶节点内 包含有对与索引关键字对应的记录进行访问的信息, 省略说明。
     另外, 有时用节点 [0] 表示代表节点, 用节点 [1] 表示与其成对的节点。此外, 有 时将存储在某个数组编号的数组元素中的节点称为该数组编号的节点, 将存储有节点的数 组元素的数组编号称为节点的数组编号。
     省略了由存储在数组编号 30 和 31 的数组元素中的节点 122 和节点 123 构成的节 点对 121 的内容。
     分别赋予给存储有节点 [0]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 的代表节点即节点 [0]210h 的数组元素的数组编号 221f。
     节点对 201g 的节点 210g、 211g 的节点类别 260g、 261g 都是 1, 表示双方都是叶节 点, 在各自的索引关键字 250g、 251g 中存储有 “100010” 和 “100011” 。
     并且同样, 节点对 201h 的代表节点即节点 [0]210h 和与其成对的节点 [1]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” , 并以降序的方式排 序。
     即, 在配对节点树中, 对索引关键字进行排序并将其配置在树上。
     当利用检索关键字进行检索时, 搜索在配对节点树上配置了索引关键字的根, 例 如, 如果检索关键字是 “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 中提出 的求出配对节点树 ( 包含部分树 ) 所存储的索引关键字最小值的处理的流程图。根据如先 前所述的索引关键字在树上的配置, 求出索引关键字最小值的处理相当于在树上从检索开 始节点到叶节点搜索节点 [0]。
     首先, 从步骤 S501 的取得检索开始节点的数组编号到步骤 S505 的判定节点类别, 分别与上述图 4 的步骤 S401 ~步骤 S405 的处理相同。
     当在步骤 S505 的节点类别判定中判定为节点类别为分支节点时, 进到步骤 S506, 从节点取出数组的代表节点编号, 在步骤 S507 中, 将值 “0” 与所取出的代表节点编号相加, 将其结果作为新的数组编号, 返回步骤 S502。以后, 反复从步骤 S502 到步骤 S507 的处理, 直到在步骤 S505 中判定为该节点为叶节点为止, 在步骤 S508 中, 从叶节点中取出索引关键 字, 结束处理。
     在上述图 5 所示的处理中, 为了搜索节点 [0], 而一律将代表节点编号与 “0” 相加。 即, 根据图 5 的处理, 链接目的地的节点必定是节点对中的节点 [0], 分支到存储有更小值 的索引关键字的节点。由此, 可以取出树结构如先前所述为顺序结构的配对节点树的最小 索引关键字。
     此外, 虽未图示, 但在图 5 的步骤 S507 中, 如果代表节点编号不与值 11011 相加而 与值″ 1″相加, 则搜索节点 [1], 可以取出配对节点树的最大索引关键字。
     图 6 是示出以升序方式取出存储在配对节点树中的索引关键字的处理的流程图。 以升序方式取出索引关键字的处理相当于, 使构成节点对的节点中的节点 [0] 侧以及树的 深度优先, 从节点依次搜索叶节点, 从各叶节点中取出索引关键字。
     首先, 在步骤 S601 中, 将根节点的数组编号设定为检索开始节点的数组编号, 在 步骤 S602 中, 执行参照上述图 5 说明的求出最小索引关键字的处理, 取得包含在配对节点 树内的索引关键字中的最小索引关键字。然后, 在步骤 S603 中, 取出所取得的索引关键字, 进到步骤 S604。
     在步骤 S604 中, 判定搜索路径堆栈 310 的堆栈指针 ( 以下, 有时也称为指针。) 是 否指向根节点的数组编号。当堆栈指针指向的数组编号是根节点以外的情况下, 进到步骤 S605。然后, 在步骤 S605 中, 从搜索路径堆栈 310 取出堆栈指针指向的数组编号, 然后使堆 栈指针的值减 1。
     在步骤 S606 中, 根据步骤 S605 中取出的数组编号, 获得表示该数组编号的节点存 储在节点对的哪个数组元素中的节点位置。例如对于节点 [0], 可通过存储在偶数编号数 组的数组元素中等, 根据数组编号求出节点位置。然后, 在步骤 S607 中, 判定步骤 S606 中 获得的节点位置是否是节点 [1] 侧。在步骤 S607 中判定为节点 [1] 侧的情况下, 返回步骤 S604, 反复从步骤 S604 到步骤 S607 的处理, 直到堆栈指针指向的数组编号的节点为节点 [0] 或根节点为止。
     当在步骤 S607 中判定为节点 [0] 侧时, 进到步骤 S608, 使数组编号与 1 相加, 获 得与该节点成对的节点 [1] 的数组编号。然后, 在步骤 S609 中, 对检索开始节点设定步骤 S608 中获得的节点 [1] 的数组编号, 在步骤 S610 中, 执行求出将检索开始节点作为根节点 的部分树的最小索引关键字的处理。步骤 S610 的处理与步骤 S602 相同, 都采用图 5 所示 的最小值检索处理。
     当在步骤 S610 中求出最小索引关键字时, 返回步骤 S603, 取出所求出的索引关键 字, 以后反复同样的处理, 直到在步骤 S604 中判定为指针指向根节点的数组编号为止。
     这样, 参照搜索路径堆栈 310 的指针所指向的数组编号, 针对与搜索路径堆栈 310 所存储的数组编号的节点 [0] 成对的节点 [1], 将该节点作为检索开始节点, 在该节点属下 求出最小索引关键字。在步骤 S602 内求出最小值的阶段中, 搜索路径堆栈 310 的指针指向 包含配对节点树的最小索引关键字的节点的数组编号。然后进行搜索路径堆栈 310 的出栈动作, 将所取出的数组编号节点中的节点 [1] 作为检索开始节点, 进行求出将该检索开始 节点作为根节点的部分树的索引关键字最小值的处理, 反复出栈动作和最小值检索处理, 直到搜索路径堆栈 310 的出栈动作的结果为取出配对节点树的根节点的数组编号为止。
     先前在步骤 S602 中对根节点属下的节点进行求出最小值的处理, 由此在搜索路 径堆栈 310 内依次存储有关于链接路径的数组编号。因此, 使搜索路径堆栈 310 的指针减 1, 针对指针新指向的数组编号的节点中的节点 [0], 求出与该节点成对的节点 [1], 对节点 [1] 的节点属下依次进行最小值检索处理, 此时以升序方式取出索引关键字。
     本领域技术人员可知, 与之前所述的可改变最小值检索来进行最大值检索的情况 相同, 可以通过取代最小值检索而进行最大值检索, 将节点 [1] 的判定置换为节点 [0] 的判 定等, 由此以降序方式取出索引关键字。
     接着, 通过图 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 取得的数组编号是存储有与该叶节点成对的叶节 点或分支节点的数组元素的编号。
     即, 根据在前级检索处理中取得的存储在叶节点的索引关键字和插入关键字的大 小, 来确定在待插入节点对中的哪个节点内存储保持插入关键字的叶节点。
     例如, 在图 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” 的例子中, 在所取得的空节点对的节 点 [0] 中写入节点 211b 的内容 ( 步骤 S727), 将节点 [1] 设为保持插入关键字 “111000” 的 叶节点 ( 步骤 S725)。然后, 在节点 211b 的鉴别比特位置中存储通过比特序列比较而成为 不同比特值的、 最上位的比特位置 1, 将存储有所取得的节点对的代表节点的数组元素的数 组编号存储在代表节点编号中 ( 步骤 S728)。
     图 7D 是说明在作为本申请人的申请的上述日本专利申请特愿 2006-187827 中提 出的包含根节点插入处理的追加索引关键字时的节点插入处理整体的处理流程图。
     在步骤 S101 中, 判定是否登记了想要取得的配对节点树的根节点的数组编号。如 果已登记, 则进行采用图 7A ~图 7C 说明的通常的插入处理。
     如果在步骤 S101 中的判定为没有登记, 则开始完全新的配对节点树的登记、 生 成。
     首先, 在步骤 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 的 (A) 所示的插入处理, 作为旧数据的关键字 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 中执行的、 利用旧数据制作配对节点树 ( 差分树 ) 的处理流程的图。
     首先在步骤 S1101 中设定旧数据。该旧数据的设定通过预先保管从旧数据的供给 源供给的旧数据 ( 例如存储在图 3B 以及图 9 所示的旧数据存储区域 321 中 ) 来进行, 不过 也可以从存储有由供给源供给的旧数据的存储介质中直接读出关键字。
     接着在步骤 S1102 中判定是否已从旧数据中取出了所有关键字, 如果取出了所有 关键字则结束处理。
     如果没有从旧数据中取出了所有关键字, 则在步骤 S1103 中从旧数据取出关键 字, 进到步骤 S1104, 将所取出的关键字作为插入关键字, 通过图 7A ~图 7D 所示的处理, 向 差分树插入关键字。
     反复在步骤 S1104 的插入处理后返回步骤 S1102 的判定处理的循环处理, 直到从 旧数据中取出了所有关键字为止。
     图 12 是说明在差分数据中存储更新数据的处理流程的图。图 12 所示的处理流程 可适用于图 10 所示的利用旧数据和新数据来制作差分数据的处理流程的步骤 S1007 中执 行的、 将删除关键字作为插入关键字制作差分数据的处理。
     另外, 图 12 所示的处理流程还可适用于图 10 所示的处理流程的步骤 S1009 中执 行的差分数据制作处理, 提供表示数据更新是插入还是删除的信息以及作为差分数据更新 关键字的关键字的值。 另外, 作为工作区域, 使用未图示的由更新类别和更新关键字构成的 更新数据设定区域。
     如图所示在步骤 S1201 中, 根据表示数据更新是插入还是删除的信息, 对更新数 据设定区域的更新类别设定更新类别。在图 9 所示的例子中, 如果调用源是步骤 S1007 数 据更新是插入, 则对更新类别设定″ i″。
     接着在步骤 S1202 中, 对更新数据设定区域的更新关键字设定作为更新关键字的 关键字的值。
     接着在步骤 S1203 中, 将在步骤 S1201 和步骤 S1202 中设定在更新数据设定区域内的更新数据存储在差分数据存储区域内, 结束处理。
     图 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-1。此外, 图 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-1 更新成更新后的更新树 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-1 执行了删除处理后进行插入处理, 但不 论以怎样的顺序执行删除插入, 结果都是相同的。
     另外, 还可以进行下述等各种变形 : 仅取出差分数据 420a 中的插入关键字与旧 数据 421a 一起制作更新前的更新树 409a-1, 之后仅通过删除处理制作更新后的更新树 409a-2。
     图 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 的说明所述, 还可以进行 将旧数据和插入关键字文件的所有关键字插入到更新树的处理, 利用存储在删除关键字文 件中的删除关键字来执行更新树的删除处理, 将旧数据更新成新数据。由以上详细说明可知, 根据本发明, 可以通过活用配对节点树来高效地将数据库 的索引从旧数据更新为新数据。
     另外, 本发明的实施方式不限于此, 可进行各种变形, 这对本领域技术人员而言是 显然的。此外显然, 可以在计算机中执行使计算机执行本发明的索引关键字更新方法的程 序。
     因此, 上述程序以及存储有程序的计算机可读存储介质包含在本发明的实施方式 中。

数据库的索引关键字更新方法以及程序.pdf_第1页
第1页 / 共48页
数据库的索引关键字更新方法以及程序.pdf_第2页
第2页 / 共48页
数据库的索引关键字更新方法以及程序.pdf_第3页
第3页 / 共48页
点击查看更多>>
资源描述

《数据库的索引关键字更新方法以及程序.pdf》由会员分享,可在线阅读,更多相关《数据库的索引关键字更新方法以及程序.pdf(48页珍藏版)》请在专利查询网上搜索。

在针对现有数据库的索引关键字提供与其置换的用于新数据库的索引关键字时,能高效地进行数据库的索引关键字的更新。从存储旧数据的索引关键字作为叶节点的索引关键字的配对节点树中,利用新数据的索引关键字进行删除处理,制作由插入关键字和删除关键字构成的新数据和旧数据的差分数据,对存储旧数据的索引关键字作为叶节点的索引关键字的配对节点树,进行从差分数据取出的删除关键字的删除处理和插入关键字的插入处理,来制作新数。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 物理 > 计算;推算;计数


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1