首页> 中国专利> 分散数据库检索装置及分散数据库检索方法

分散数据库检索装置及分散数据库检索方法

摘要

本发明提供一种不使主服务器侧的机制复杂化而实现高效率的检索的分散数据库检索装置。实施方式的分散数据库检索装置是,将基于所输入的询问查询检索数据库的主服务器与具备数据库的多个从属服务器连接而构成的。从属服务器具备与主服务器进行数据的收发的第2收发部、基于接收到的分散计划生成本地计划候选的本地计划候选生成部、和基于所生成的本地计划候选决定运算开销为最低的本地计划的本地计划选择部。

著录项

  • 公开/公告号CN102831138A

    专利类型发明专利

  • 公开/公告日2012-12-19

    原文格式PDF

  • 申请/专利号CN201210048380.7

  • 发明设计人 黑田洋介;

    申请日2012-02-28

  • 分类号G06F17/30;

  • 代理机构永新专利商标代理有限公司;

  • 代理人杨谦

  • 地址 日本东京都

  • 入库时间 2023-12-18 07:46:04

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2015-10-28

    授权

    授权

  • 2013-02-06

    实质审查的生效 IPC(主分类):G06F17/30 申请日:20120228

    实质审查的生效

  • 2012-12-19

    公开

    公开

说明书

本申请享受2011年6月14日在先提出的日本专利申请号2011- 131854的优先权,并引用其全部内容。

技术领域

本发明的实施方式涉及分散数据库检索装置及分散数据库检索方法。

背景技术

为了处理表形式或XML形式等的大量数据而存在由多个服务器构成 的分散数据库检索装置。分散数据库检索装置通常具有与用户进行交换的 主服务器和实际管理数据的从属服务器。

从属服务器既可以全部由相同架构的数据库检索装置构成,也可以由 不同架构的数据库检索装置构成。

一般,在对分散数据库检索装置输入了检索式(以下,称作查询)的 情况下,主服务器接收查询。主服务器将查询解析,分割为各从属服务器 在服务器内部执行的部分和需要在服务器间运算的部分。对于在各从属服 务器内执行的部分,各从属服务器生成最优的本地计划。对于服务器间的 运算部分,主服务器生成最优的分散计划。另外,所谓本地计划,是从属 服务器用来检索从属服务器所具有的数据的计划,所谓分散计划,是用来 检索对象的分散数据库具有的数据整体的计划。

当生成分散计划时,决定JOIN(结合)等针对服务器间的数据的结合 运算处理、SORT(分类)等针对多个服务器的集合运算处理、分割后的部 分查询的结合运算处理等运算处理的顺序和执行的服务器,以使检索应答 时间为最短。还决定向执行运算的服务器转送的数据转送方法及格式等。

在分散数据库中,为了提高检索性能,希望通过强化分散计划的优化、 来降低数据库间的数据交接处理中的数据的转送开销(cost)、及服务器间 的数据的运算开销(cost)。

以往,分散计划的优化全部通过主服务器实现。但是,主服务器决定 全部的分散计划存在许多的问题。

首先,分散计划的研究范围如在上述中列举那样,为查询的分割范围、 服务器间运算的顺序和执行场所的决定、分割后的查询的结合方法等非常 广泛,所以会发生许多的候选计划,为了从其中检索最优的计划而需要许 多的信息。因此,主服务器需要密集地取得来自各从属服务器侧的索引或 统计信息等并维持、管理。因而,主服务器的机制较复杂,会花费较多管 理成本。

此外,即使在主服务器全部取得了想要的信息的情况下,在按照每个 从属服务器而统计量较大地不同的情况或架构不同的情况下,也有可能对 每个从属服务器来说最优的动作不同。在这样的情形中,在针对全部的从 属服务器统一的分散计划中,一部分的从属服务器的执行速度成为瓶颈, 整体性能有可能下降。但是,如果按照每个从属服务器生成能够进行最优 动作的分散计划,则主服务器的分散计划生成的机制变得复杂。即,如果 提高主服务器的分散计划处理部的优化功能,则主服务器的优化的机制复 杂化。因此,主服务器难以按照各从属服务器的状态而以适合的形式生成 分散计划。

发明内容

本发明要解决的技术问题是提供一种不使主服务器侧的机制复杂化而 实现高效率的检索的分散数据库检索装置。

实施方式的分散数据库检索装置是将主服务器与具备数据库的多个从 属服务器连接而构成的,上述主服务器基于输入的询问查询检索数据库。 从属服务器具备:第2收发部,与主服务器进行数据的收发;本地计划候 选生成部,基于所接收到的分散计划生成本地计划候选;以及本地计划选 择部,基于所生成的本地计划候选,决定运算开销最低的本地计划。

附图说明

图1是有关第1实施方式的分散数据库检索装置的整体结构图的一例。

图2是表示作为登记在有关第1实施方式的数据库中的数据的1种的 XML数据的一例的示意图。

图3是表示作为登记在有关第1实施方式的数据库中的数据的1种的 XML数据的一例的示意图。

图4是表示有关第1实施方式的从属服务器所保持的数据库信息的一 例的示意图。

图5是表示有关第1实施方式的主服务器所保持的从属服务器群信息 的一例的示意图。

图6是表示有关第1实施方式的分散数据库检索处理的一例的流程图。

图7是表示有关第1实施方式的相对于XML的询问语言XQuery的一 例的示意图。

图8是表示在有关第1实施方式的查询分割部中生成的部分查询的一 例的图。

图9是表示在有关第1实施方式的分散计划生成部中生成的分散计划 的一例的图。

图10是表示由有关第1实施方式的分割查询结合运算追加部进行的分 散计划修正处理的一例的流程图。

图11是表示进行了有关第1实施方式的分割查询结合运算追加处理后 的分散计划的一例的示意图。

图12是表示在有关第1实施方式的本地计划选择部中生成的本地计划 的一例的示意图。

图13是表示有关第1实施方式的本地计划候选生成处理的一例的流程 图。

图14是表示有关第1实施方式的本地计划候选生成处理的一例的流程 图。

图15是表示有关第1实施方式的本地计划候选生成处理的一例的流程 图。

图16是表示在有关第1实施方式的本地计划候选生成部中生成的本地 计划的一例的示意图。

图17是表示在有关第1实施方式的本地计划候选生成部中生成的本地 计划的一例的示意图。

图18是表示在有关第1实施方式的本地计划候选生成部中生成的本地 计划的一例的示意图。

图19是表示在有关第1实施方式的本地计划候选生成部中生成的本地 计划的一例的示意图。

图20是表示在有关第1实施方式的本地计划候选生成部中生成的本地 计划的一例的示意图。

图21是表示在有关第1实施方式的本地计划候选生成部中生成的本地 计划的一例的示意图。

图22是表示在有关第1实施方式的本地计划候选生成部中计算运算开 销时使用的参数的一例的流程图。

图23是表示有关第1实施方式的分散计划更新部将分散计划更新的处 理的一例的流程图。

图24是表示在有关第1实施方式的分散计划更新部中更新的分散计划 的一例的示意图。

图25是有关第2实施方式的分散数据库检索装置的整体结构图的一 例。

图26是表示由有关第2实施方式的模式(schema)变更部变更前的模 式的一例的示意图。

图27是表示有关第2实施方式的分散数据库检索处理的一例的流程 图。

图28是表示进行了有关第2实施方式的本地计划顺序决定处理后的本 地计划的一例的示意图。

图29是表示有关第2实施方式的模式生成部生成分散计划的模式的处 理的一例的流程图。

图30是表示由有关第2实施方式的模式变更部变更后的新的模式的一 例的示意图。

图31是表示有关第2实施方式的模式变更部将在分散计划的运算中输 入的数据的模式更新的处理的一例的流程图。

图32是表示作为进行了有关第2实施方式的模式变更部进行的模式生 成处理后的结果而得到的输入输出模式的一例的图。

具体实施方式

以下,参照附图对实施方式的分散数据库检索装置进行说明。

(第1实施方式)

图1是表示第1实施方式的分散数据库检索装置的功能结构的结构图。 本实施方式的分散数据库检索装置基于从用户输入的检索式(以下,称作 询问查询)进行检索,并输出检索结果。

如图1所示,本实施方式的分散数据库检索装置是作为主服务器发挥 功能的计算机0、和作为从属服务器发挥功能的计算机1~计算机N相连接 而构成的。

作为主服务器的计算机0具备语法解析部11、查询分割部12、分散计 划生成部13、分割查询结合运算追加部14、分散计划更新部15、分散计划 执行部16、收发部17(第1收发部)、和信息存储部20(第1存储装置)。

信息存储部20具备保存从属服务器群信息的从属服务器群信息存储部 21、和保存后述的分散计划的分散计划存储部22。另外,所谓从属服务器 群信息,是全部的从属服务器的名称或位置、以及登记件数等关于从属服 务器拥有的数据库的信息,是从属服务器拥有的数据库的信息的一部分。 主服务器基于该从属服务器群信息决定对从属服务器发送哪个数据。

语法解析部11将从用户给出的询问查询51进行语法解析。

查询分割部12具备将询问查询51分割的功能,基于由语法解析部11 得到的询问查询51的语法解析结果和从属服务器群信息表21,以服务器内 运算及服务器间运算为单位将询问查询51分割。将分割后的询问查询51 称作部分查询。另外,所谓服务器内运算,是将询问查询51在各从属服务 器内处理。此外,所谓服务器间运算,是从多个从属服务器收集数据而在 主服务器内运算的处理。

分散计划生成部13是作为分散计划生成机构发挥功能的,基于由查询 分割部12得到的部分查询和从属服务器群信息表21的信息,生成分散计 划。即,分散计划生成部13基于保存在从属服务器群信息存储部21中的 从属服务器的名称或位置、以及登记件数等,生成决定分割后的服务器内 运算和服务器间运算的运算顺序、运算执行场所以及在服务器间收发的数 据的内容而得到的分散计划。另外,所谓在服务器间收发的数据的内容, 例如是从属服务器的数据、从属服务器的数据的一部分、平均值等从属服 务器的数据运算结果、或者最大值、多个从属服务器的数据组合等服务器 间运算结果。

分散计划生成部13具备分割查询结合运算追加部14和分散计划更新 部15。

分割查询结合运算追加部14将由分散计划生成部13得到的分散计划 按照图10的流程图所示的分割查询结合运算追加处理进行修正。以下,将 修正后的分散计划称作修正分散计划。关于分割查询结合运算追加处理在 后面叙述。

分散计划更新部15是作为分散计划更新机构发挥功能的,进行基于从 本地计划选择部、从属服务器发送来的本地计划将修正分散计划更新的分 散计划更新处理。关于分散计划修正处理在后面叙述。

分散计划执行部16基于由分散计划更新部15更新后的分散计划执行 运算。

收发部17具有作为数据收发机构的功能。

接着,对作为从属服务器的计算机1~N进行说明。

计算机1~N是作为从属服务器发挥功能的,具备本地计划选择部31、 本地计划候选生成部32、本地计划执行部33、收发部34(第2收发部)、 和信息存储部40(第2存储装置)。

信息存储部40具备保持数据库信息的数据库信息存储部41、保持本地 计划的本地计划存储部42、和保持检索对象的实际的数据(以下,称作保 存数据)的保存数据存储部43,上述数据库信息是所保存的数据的模式 (schema)信息及件数等统计信息等与保存在数据库中的数据有关的信息。

本地计划选择部31是作为本地计划生成机构发挥功能的,具备本地计 划候选生成部32。本地计划选择部31生成通过由分割查询结合运算追加部 14得到的修正分散计划中的、与自身的服务器关联的部分计划所构成的本 地计划。基于本地计划选择部生成的本地计划,本地计划候选生成部3进 一步制作本地计划的候选。本地计划选择部31从自身制作出的本地计划和 由本地计划候选生成部32制作出的本地计划候选之中,计算由估计执行时 间或估计执行计算量构成的运算开销。本地计划选择部31决定计算出的运 算开销为最小的计划作为本地计划。

本地计划执行部33基于由本地计划选择部31得到的本地计划实施运 算。收发部34具有与主服务器的收发部17相同的功能。

这里,在图2及图3中,表示登记在从属服务器的保存数据存储部43 中的数据的一例。另外,本实施方式的登记在从属服务器的保存数据存储 部43中的数据以XML的格式形式记述。另外,图2所示的数据是关于书 籍的发行年数、标题、著者、价格的数据。图3所示的数据是关于某个奖 项的获奖年度、获奖者、获奖的书籍的标题、获奖者的性别的数据。

图4是从属服务器的数据信息存储部41所保持的数据库的信息的一 例。如图4所示,数据库信息被作为具有“登记节点”112、“登记数”113、 和“索引信息”114的项目的数据库信息表111加以保持。

“登记节点”112表示登记在从属服务器的保存数据存储部43中的 XML数据所具有的节点名,这里,包括处于哪个节点之下地进行记述。另 外,所谓节点,是构成XML数据的要素或属性等。

“登记数”113表示在从属服务器的保存数据存储部43中登记的XML 数据中各登记节点112出现的次数。

“索引信息”114记述有对登记节点112设定的索引的种类。索引的种 类例如是数值索引或字符索引。另外,在图4中,作为一例而表示计算机1 至计算机4的数据库信息表111-1~111-4。

图5是保存在作为主服务器的计算机0所保持的从属服务器群信息存 储部21中的从属服务器群信息21的一例。如图5所示,从属服务器群信 息被作为具有“服务器名”122、“收集信息(Collection信息)”123、“登 记文档数”124的项目的从属服务器群信息表121加以保持。

在“服务器名”122中保存有从属服务器的名称。在“收集信息”123 中保存有登记的XML数据的保存场所的名称(以下,称作收集名)。本实 施方式的分散数据库由于即使在不同的从属服务器中也能够拥有相同的收 集信息123,所以用户能够通过指定收集名来对特定的XML数据的集合内 进行检索。“登记文档数”124保存有登记在收集(Collection)中的XML 数据的数量。

这里,参照图6至图25,对本实施方式的分散数据库检索装置的处理 进行说明。图6是表示本实施方式的分散数据库检索装置的检索处理的一 例的流程图。另外,假设本实施方式的分散数据库检索装置在计算机1~4 的数据库信息存储部41中保存有图4所示的数据库信息。

首先,由用户对主服务器输入作为检索式的询问查询51(步骤S1)。

这里,在图7中表示由用户输入的询问查询51的一例。图7所示的询 问查询51通过作为XML数据的询问语言的XQuery记述。另外,图7所 示的询问查询51的意思是“输出有过去的获奖经历的男性作家的著书中的 于1990年以后出版的书的标题和价格”。

输入的询问查询51的第1行的从for开始的一个语句将拥有在 ″publisher″的Collection中登记的book的名称的节点中的、将属性节点year 的值数值化后的结果大于等于1990的节点保存到变量$x中。由此,取得于 1990年以后出版的书的一览。另外,在XQuery中,变量被表现为以″$″开 始的字符串。

接着,第2行的从for开始的一个语句在选择拥有在″prizeWinners″的 Collection中登记的prizeWinner的名称的节点中的、将gender的子节点的 值字符串化后的结果与″male″的字符串相等的节点之后,将作为其子节点 的name保存到变量$y中,由此取得有获奖经历的男性作家的名称的一览。 接着,在第3、4、5行的从let开始的一个语句中,将作为在第1行取得的 book的子节点的author、title、price的节点分别保存到变量$z、$u、$v中, 由此取得书的著者名、标题和价格。接着,在第6行的从where开始的一 个语句中,取得男性作家的名称与书的著者名一致者的组合。最后,在第7 行的从return开始的一个语句中,对在第6行取得的组合制作出用List的 名称的节点包围的XML并返还给用户。由此,取得满足条件的书的标题和 价格。

如果将图7所示的询问查询51输入到主服务器中,则主服务器的语法 解析部11对询问查询51进行语法解析(步骤S2)。由语法解析部11得到 的语法解析结果被发送给主服务器的查询分割部12。

接收到语法解析结果的查询分割部12基于从属服务器群信息表21的 信息,进行将询问查询51分割为部分查询的询问查询51分割处理,上述 部分查询以在各从属服务器内处理的服务器内运算以及从多个从属服务器 收集数据而运算的服务器间运算为单位(步骤S3)。

即,查询分割部12基于语法解析部11的语法解析的结果,将询问查 询51分割为部分查询。查询分割部12参照从属服务器群信息表121,按照 这些部分查询的每一个,判断部分查询的内容是服务器间运算还是服务器 内运算。这里,将作为查询分割部12的分割结果的部分查询的一览即部分 查询一览表131的一例表示在图8中。

图8所示的部分查询一览表131具有保存对部分查询依次分配的号码 的“号码”132、保存分割而得到的部分查询的“部分查询内容”133、保 存部分查询是服务器内运算还是服务器间运算的“服务器间/服务器内运 算”134、将保存有运算所需要的数据的计算机名保存的“对应服务器”135 的项目。

以下,参照图7至图8对由查询分割部12进行的询问查询的分割处理 具体地进行说明。

查询分割部12基于从属服务器群信息表121,确定保持各部分查询的 运算中使用的数据的计算机。在图8中,着眼于图7所示的询问查询51中 的Collection(″publisher″)和Collection(″prizeWinner″)这两个收集信息。 即,使用这些收集信息检索图5所示的从属服务器群信息表121。

即,查询分割部12判断为Collection(″publisher″)存在于计算机1至 3中,Collection(″prizeWinner″)存在于计算机4中。

进而,查询分割部12着眼于对Collection实施的″/″、″//″、″>=″、″=″ 这样的XQuery的运算,判断运算是否需要来自多个不同的计算机的值。在 运算需要来自多个不同的计算机的值的情况下,将该运算判断为服务器间 运算。另外,在是利用来自一个计算机的值进行的运算的情况下,将该运 算判断为服务器内运算。

如图8所示,在询问查询51中,为了使″/″、″//″、″>=1990″等运算全 部能够在作为输入的数据的计算机上实施,$x、$z、$u、$v保存有全部都 在相同的计算机上运算出的数据。另外,关于服务器内运算,用几个运算 单位分割。在图8中,以″for″、″let″等赋值语句发生的单位分割,发生号 码1~5的部分查询。另外,以″for″、″let″这样的赋值语句的单位分割是1 例,实际上也可以以更细的运算单位分割,也可以以更大的运算单位分割。

另一方面,在″where$y=$z″的运算中,由于$y是计算机4的数据,$z 是存在于计算机1到3中的数据,所以设为是服务器间运算。

接着,下面的″return<List>{$u}{$v}</List>″的运算是返回最终结果的运 算,所以判断为需要收集拥有$u、$v的数据的计算机1到3的数据来进行 运算的服务器间运算。

接着,分散计划生成部13基于图8所示的部分查询一览表131和图5 所示的从属服务器群信息表121,生成分散计划(步骤S4)。将所生成的分 散计划保存到分散计划表141中。

在图9中表示分散计划表141的一例。

分散计划表141具有“运算号码”142、“部分查询号码”143、“运算 内容”144、“事前执行运算号码”145、“执行场所”146、“发送场所”147、 “输入变量”148、“输出变量”149的项目。

“运算号码”142表示对每个运算分配的号码。“部分查询号码”143 保存图8所示的部分查询表131中的部分查询号码132的项目中分配的号 码。在没有被分配部分查询号码132的情况下为空栏。

“运算内容”144保存各运算的内容。这里,分散计划生成部13将图 8所示的部分查询一览表131中的服务器内运算原样设为服务器内运算,部 分查询一览表131中的服务器间运算记述表示具体操作的运算内容。进而, 在部分查询一览表131中的服务器间运算的前后,由于需要数据的发送、 数据接收的运算,所以新添加。

“事前执行运算号码”145在有必须在执行该运算之前执行的运算的情 况下,保存该运算号码。“执行场所”146保存执行运算的场所(计算机)。 在数据的发送和数据接收的运算的情况下,将运算结果的数据的发送目的 地保存到“发送场所”147中。即,执行场所146是数据的发送源的计算机, 发送场所147是数据的发送目的地的计算机。

“输入变量”148在运算中需要输入数据的情况下被保存,将保存着该 数据的变量的名称的列表加以保存。“输出变量”149在运算制作新的值的 情况下,保存其保存目的地的变量的名称的列表。

另外,图9所示的分散计划表141的运算号码1至5对应于图8所示 的部分查询一览表131的号码1至5。此外,分散计划表141的运算号码 10及11对应于图8所示的部分查询一览表131的号码6、7。

此外,关于在部分查询一览表131中在服务器内/服务器间运算134中 保存有“服务器间运算”的部分查询号码6的运算,在运算内容144中保 存有“服务器间联合(服务器将JOIN)”。即,保存基于部分查询内容133 的具体的运算内容。同样,关于部分查询号码7的运算,在运算内容144 中保存有“返还数据制作”的具体的运算。另外,所谓“服务器间联合”, 是将保存在两个变量中的数据中值相等的组合保留的运算,所谓“返还数 据制作”,是利用输入的数据制作新的XML数据的运算。

分散计划生成部13仅着眼于“服务器间运算”,决定执行顺序及执行 场所。具体而言,图9所示的分散计划表141中,由于服务器间运算的运 算内容144是服务器间联合和返还数据制作的两种,所以判断为在执行服 务器间联合后进行返还数据制作运算时,作为对象的数据较少,效率较高。

此外,在本实施方式中,服务器间运算作为由主服务器实施的运算, 决定了执行场所。另外,为了将服务器间运算在主服务器中执行,需要收 集处于各从属服务器中的数据。因此,分散计划生成部13追加分散计划表 141的运算号码6及运算号码8,在各自的运算内容144中保存作为从属服 务器对主服务器发送数据的运算的“数据发送”。接着,为了主服务器接收 在运算号码6及8中发送的数据而追加运算号码7及9,在各自的运算内容 144中保存作为主服务器从从属服务器接收数据的运算的“数据接收”。

另外,在本实施方式中决定为将服务器间运算由主服务器执行,但也 可以不是主服务器,而例如决定为由多个从属服务器执行。

分散计划生成部13基于图8中记载的部分查询内容133,保存输入变 量148及输出变量149。例如,设为在″for~in″、″let~:=″的″~″中写入的 变量是输出变量149,在其以外的场所中写入的变量是输入变量148。此外, 在数据发送运算中,输入变量148成为输出变量149。进而,在数据接收运 算中,数据发送运算的输出变量149成为输入变量148和输出变量149。

另外,服务器内运算由分散计划生成部13以顺序关系不会混乱的方式 配置为任意的顺序,。这样,本实施方式的分散计划生成部13仅研究部分 查询一览表131的“服务器间运算”。由此,研究范围被限定,所以分散计 划生成部131能够容易地生成分散计划。

接着,分割查询结合运算追加部14对分散计划生成部13生成的分散 计划追加“分割查询结合”运算,进行执行分散计划的修正的分割查询结 合运算追加处理(步骤S5)。

这里,参照图10,具体地说明分割查询结合运算追加部14对保存在图 9所示的分散计划表141中的分散计划进行分割查询结合运算追加处理时 的动作。

另外,在该分割查询结合运算追加处理中,使用i及j这样的变量。i 大于等于1的整数,并且小于等于对象的分散计划的运算号码(1≤i≤分 散计划的运算号码的最大值)。此外,在分割查询结合运算追加处理的开始 时刻,i=1。此外,设分散计划的运算号码的最大值为“max”。此外,设运 算号码142为i的分散计划的运算是运算E。另外,假设j是与i同样性质 的变量,运算号码142为j的分散计划的运算是运算S。

分割查询结合运算追加部14如果从分散计划生成部13接收到分散计 划,则首先,作为初始化处理而设i=1、分散计划的运算号码的最大值=max (步骤S10)。

分割查询结合运算追加部14取得记载在图9中的分散计划表141中的 运算号码i的运算E(步骤S20)。接着,分割查询结合运算追加部14判断 是否所取得的运算E是服务器间运算并且i≠max(步骤S30)。

在所取得的运算E是服务器间运算并且i≠max的情况下,即在运算E 是最后的运算以外的情况下(步骤S30为“是”),设为j:=1(步骤S40)。

接着,取得分散计划表141的运算号码j的运算S(步骤S50)。分割 查询结合运算追加部14参照图9的分散计划表141,判断是否运算S的运 算内容144是数据发送并且保存在发送场所147中的计算机是从属服务器 (步骤S60)。

在运算S的运算内容144是“数据发送”并且发送场所147的计算机 是从属服务器的情况下(步骤S60为“是”),分割查询结合运算追加部14 制作保存有在运算S的输入变量147和运算E的输入变量147中共通出现 的变量的列表(以下,称作varList)(步骤S70)。接着,制作保存有从运 算S的输入变量147中除去了处于varList中的变量所得到的变量的列表(以 下,称作newVarList)(步骤S80)。分割查询结合运算追加部14判断是否 制作出的varList不为空、并且包含在该varList中的变量不与运算S的输入 变量147完全一致、并且输出varlist的变量的运算与输出newVarList的变 量的运算能够并行执行(步骤S90)。

另外,这里说明在图9所示的分散计划表141中,输出varlist的变量 的运算与输出newVarList的变量的运算是否能够并行执行的判断方法。该 方法是,在反复回溯调查一个运算的事前执行运算号码145以及该事前执 行运算号码145的运算的事前执行运算号码145时,在另一个运算不作为 事前执行运算号码存在的情况下,判断为两个运算能够并行执行。即,在 运算A的事前执行运算号码145中有运算B的运算号码的情况下,必需在 执行运算B之后执行运算A,所以判断为不能并行执行。

回到图10的步骤S90的说明。在varList不是空、并且包含在该varList 中的变量不与运算S的输入变量147完全一致、并且输出varlist的变量的 运算与输出newVarList的变量的运算能够并行执行的情况下(步骤S90为 “是”),将以下5个运算插入到运算E之后,在插入后,在i中代入i+5(i: =i+5)(步骤S100)。

在第1个运算中,运算内容144是″数据发送″,输入变量148和输出 变量149是包含在varList中的变量,执行场所146是″运算S的发送场所 147″,发送场所147是″运算S的执行场所146″。

在第2个运算中,运算内容144是″数据接收″,输入变量148和输出 变量149是包含在varList中的变量,执行场所146是″运算S的发送场所 147″,发送场所147是″运算S的执行场所146″。

在第3个运算中,运算内容144是″分割查询结合″,输入变量148是 包含在varList中的变量,执行场所146是″运算S的执行场所146″。另外, 所谓运算内容是“分割查询结合”,是将对某个变量分别并行进行处理而得 到的结果再次合为1个的运算。

在第4个运算中,运算内容144是″数据发送″,输入变量148和输出 变量149是包含在newVarList中的变量,执行场所146是″运算S的执行场 所146″,″发送场所147是运算S的发送场所147″。

在第5个运算中,运算内容144是″数据接收″,输入变量148和输出 变量149是newVarList,执行场所146是″运算S的执行场所146″,发送场 所147是″运算S的发送场所″。

接着,为了变更在运算S中发送的变量而实施3个处理(步骤S110)。 第1个是,将运算S的输入变量148和输出变量149的内容变更为varList 的值。第2个是,取得运算S接下来的运算R。运算R是与运算S对应的 运算内容144″数据接收″的运算。第3个是,将R的输入变量148和输出变 量149列表的内容变更为varList的值。然后,向步骤S120前进。

另外,在运算S不是数据发送、或者执行场所146的计算机不是从属 服务器的情况下(步骤S60为“否”),也向步骤S120前进。

此外,在varList为空或与运算S的输入变量列表完全一致、或输出 varlist的变量的运算和输出newVarList的变量的运算不能并行执行的情况 下(步骤S90为“否”的情况下),也前进到步骤S120。

在步骤S120中,分割查询结合运算追加部14在j中代入j+1(j:=j+1) (步骤S120)。即,在步骤S60为“否”的情况下、或在步骤S90为“否” 的情况下、或者接着步骤S110进行步骤S120。

接着步骤S120,分割查询结合运算追加部14判断j是否比i小(步骤 S130)。在j比i小的情况下(步骤S130为“是”),回到步骤S50而重复处 理。在j比i小的情况下(步骤S130为“否”)前进到步骤S140,在i中代 入i+1(i:=i+1)(步骤S140)。

在运算E不是服务器间运算、或i=max的情况下(步骤S30为“否”), 前进到步骤S140。即,在步骤S130为“否”的情况下、或者在步骤S30 为“否”的情况下继续进行步骤S140的处理。

接着步骤S140,分割查询结合运算追加部14判断i是否小于等于max (步骤S150)。即,判断是否对全部的部分查询进行了分割查询运算追加 处理。

在i小于等于max的情况下(步骤S150为“是”),分割查询结合运算 追加部14回到步骤S20而重复处理。在i比max大的情况下(步骤S150 为“否”),分割查询结合运算追加部14结束处理。

这里,在图11中,表示分割查询结合运算追加部14对图9所示的分 散计划进行上述分割查询结合运算追加处理后的结果为修正后的分散计划 (以下,称作修正分散计划)的一例。

记载在图9的分散计划表141中的分散计划中,由于运算1至10不是 服务器间运算,所以分割查询结合运算追加部14每次将i增加1,直到i 成为10(图10的步骤S20、步骤S30、步骤S140、步骤S150)。

如果成为i=10,则运算E是服务器间运算(步骤S30为“是”),所以 在变量j中代入1(步骤S40)。另外,基于运算E的部分查询号码,参照 分散计划表141进行运算E是否是服务器间运算的判断。

接着,在j成为6之前不是数据发送,所以将j每次增加1(步骤S50、 步骤S60为“否”、步骤S120、步骤S130)。

如果j成为6,则由于运算S的运算内容是数据发送,并且执行场所 146的计算机是从属服务器(步骤S60为“是”),所以制作保存有在运算 号码6的输入变量148和运算号码10的输入变量148中共通出现的变量$z 的变量列表varList(步骤S70)。

制作从所取得的运算号码6的输入变量148除去varList的变量列表后 的保存有变量$u、变量$y的变量列表newVarList(步骤S80)。

由于varList不是空、与运算号码6的输入变量列表也不完全一致、并 且将varlist和newVarList的变量输出的运算能够并行执行,所以在追加图 11的运算号码11-15这5个运算后,将i加5而代入15(步骤S90、步骤 S100)。接着,在运算号码6的数据发送和运算号码7的数据发送的输入变 量148和输出变量149中代入varList的值变量$z(步骤S110)。

接着,由于在j成为8之前不是数据发送,所以单纯地将变量j每次增 加1(步骤S50、步骤S60、步骤S120、步骤S130)。在j是8的情况下, 由于运算内容144是数据发送,并且执行场所146是从属服务器,所以取 得保存有在运算号码8的输入变量和运算号码10的输入变量列表中共通地 出现的变量$y的变量列表varList(步骤S70)。

由于所取得的varList虽然不是空,但与运算号码8的输入变量列表完 全一致(步骤S90为“否”),所以对j加1(步骤SS120)。以后,由于没 有数据发送运算,所以将i增加1而代入16(步骤S120、步骤S130、步骤 S140、步骤S150)。

接着,由于i为16的运算是服务器间运算,但i等于max(步骤S150 为“是”),所以回到步骤S20,重复处理。并且,如果i的值超过max(步 骤S150为“否”),则分割查询结合运算追加部14结束处理。其结果,制 作出分散计划。在图11中表示修正后的分散计划的表151。即,分散计划 结合运算追加部14将计划改写为将服务器间运算和其他运算尽可能并行执 行然后结合的形式。

如上所述,如果分割查询结合运算追加部14将分散计划修正,则主服 务器的收发部17对从属服务器发送修正后的修正分散计划。此时,也可以 对全部从属服务器发送修正分散计划。此外,也可以参照执行场所而仅对 有关联的从属服务器发送修正分散计划。

从属服务器的本地计划选择部31生成针对接收到的由分割查询结合手 顺追加部14修正后的分散计划中的、与自身的服务器关联的部分的本地计 划候选(步骤S6)。

这里,将由本地计划选择部31生成的本地计划的候选在图12中例示。 图12所示的本地计划候选2是作为计算机2的从属服务器的本地计划选择 部31基于图11所记载的分散计划和图4所记载的数据库信息111生成的、 关于计算机2的本地计划候选的一例。

如图12所示的本地计划候选2所示,本地计划候选2具有“运算号码” 302、“部分查询号码”303、“运算内容”304、“事前执行运算号码”305、 “执行场所”306、“发送场所”307、“输入变量”308、“输出变量”309 的项目。另外,本实施方式的本地计划候选及后述的本地计划具有的项目 302~309与本实施方式的分散计划表具有的项目142~149相同。

另外,在图12所示的本地计划候选2中,在计算机2中对于来自图4 的数据库信息的book之下的year属性节点设定了数值索引。因此,通过运 算“数值索引”实现用最初的运算号码1对应于部分查询号码1的部分查 询的处理。运算“数值索引”是下述运算:针对设定了使节点拥有的值数 值化后的值索引化的数值索引后得到的节点,高速地取得满足与给出的数 值之间的比较条件的节点或者拥有该节点的文档的最初的节点。

具体而言,本地计划选择部31从数值索引内找出满足属性节点year 的值大于等于1990的条件的book节点,保存到变量$x中。

运算号码2、4、5分别实施处理部分查询号码3、4、5的部分查询的 运算“TRAVERSE(遍历)”。另外,所谓运算“遍历”,是从XML内的某 个节点(输入)向某个节点(输出)探索的运算。具体而言,从保存在由 运算号码1求出的$x中的book节点取得作为子节点的author、title、price, 分别保存到变量$z、$u、$v中。运算号码3、6、7、8是将由分散计划制作 的数据发送、数据接收、分割查询结合运算原样保留后的运算。

接着,参照图13,说明本地计划候选生成部32基于图12的本地计划 候选2再次生成本地计划候选的本地计划候选生成处理(图6的步骤S7)。 图13是表示本地计划候选生成处理的一例的流程图。

另外,该本地计划候选生成处理使用i这样的变量。i大于等于1,并 且小于等于对象的本地计划选择部31所生成的本地计划候选的列表(以下, 称作inputPlanList)内的要素数(1≤i≤inputPlanList内的要素数)。

首先,本地计划候选生成部32取得图12所示的本地计划候选(步骤 S200)。本地计划候选生成部32设i=1、inputPlanList内的要素数=max(步 骤S210)。

接着,本地计划候选生成部32从inputPlanList取得第i个本地计划候 选plan(步骤S220)。本地计划候选生成部32基于所取得的plan,实施后 述的分割查询结合的实施变量的组合样式生成处理,制作包括该plan的新 的本地计划候选列表(步骤S230)。所谓分割查询结合的实施变量的组合 样式生成处理,是使分割查询结合前后实施的运算变化而生成各种各样的 本地计划候选的处理,通过图14的流程图在后面叙述详细情况。

本地计划候选生成部32取得通过分割查询结合的实施变量的组合样式 生成处理得到的新的本地计划候选列表(以下,称作nextPlanList)(步骤 S240)。这里,使用j这样的变量。j大于等于1,并且小于等于nextPlanList 内的要素数(1≤j≤nextPlanList内的要素数)。此外,此时j=1,nextPlanList 内的要素数=finalMax(步骤S250)。

接着,本地计划候选生成部32从nextPlanList中取得第j个本地计划 候选nextPlan(步骤S260)。本地计划候选生成部32基于所取得的nextPlan 实施分割查询结合的实施场所样式生成处理,制作包括nextPlan的新的本 地计划候选列表(步骤S270)。所谓分割查询结合的实施场所样式生成处 理,是通过使分割查询结合运算的执行场所变化而生成各种本地计划候选 的处理,通过图15的流程图在后面叙述详细情况。

本地计划候选生成部32基于分割查询结合的实施场所样式生成处理结 果,制作新的本地计划候选列表finalPlanList(步骤S280)。将制作出的 finalPlanList内的本地计划候选追加到作为最终输出的输出候选计划列表 outputList中(步骤S290)。

接着,前进到步骤S300,在j中代入j+1(j:=j+1)(步骤S300)。本 地计划候选生成部32判断该j是否小于等于finalMax(步骤S310)。在j 小于等于finalMax的情况下(步骤S310为“是”),回到步骤S260,重复 处理。

在j比finalMax大的情况下(步骤S310为“否”),前进到步骤S320, 在i中代入i+1(i:=i+1)(步骤S320)。

接着,判断i是否小于等于max(步骤S330)。在i小于等于max的情 况下(步骤S330为“是”),回到步骤S220,重复处理。在i比max大的 情况下结束。最终输出是保存在outputList中的本地计划候选列表,本地计 划选择部31从该本地计划候选列表中最终选择1个本地计划。

接着,按照图14的流程图,说明由本地计划候选生成部32进行的、 图13的步骤S230中的分割查询结合的实施变量的组合样式生成处理。另 外,该分割查询结合的实施变量的组合样式生成处理使用i这样的变量。i 大于等于1,并且小于等于输入对象的本地计划候选plan的运算号码(1≤ i≤plan的运算号码的最大值)。

首先,本地计划候选生成部32将plan登记到作为最终输出的临时候选 列表nextPlanList中(步骤S400)。此外,本地计划候选生成部32设i=1、 plan的运算号码的最大值=max(步骤S410)。

接着,本地计划候选生成部32取得所输入的本地计划候选plan的运算 号码i的运算E(步骤S420)。在所取得的运算E是分割查询结合运算的情 况下(步骤S430为“是”),取得plan的第i+1个运算号码的数据发送运算 S,再取得运算S的输入变量的全部组合样式的列表varPatternList(步骤 S440)。

接着,设j:=1、nextPlanList内的要素数=nextMax(步骤S450)。接 着,取得nextPlanList的第j个计划nextPlan(步骤S460)。接着,设k:=1、 varPatternList内的要素数=vtMax(步骤S470)。接着,制作复制了nextPlan 的内容后的新的本地计划候选newPlan(步骤S480)。

接着,本地计划候选生成部32实施以下3个处理(步骤S490)。第1 个是,取得varPatternList的第k个要素targetVars的处理,第2个是,取得 newPlan的第i+1个运算号码的数据发送运算AS的处理,第3个是,取得 newPlan的第i-1个运算号码的数据接收运算AR的处理。

接着,判断运算AS的输入变量列表与targetVars的内容是否一致(步 骤S500)。

在运算AS的输入变量列表为空的情况下(步骤S500为“是”),不需 要运算E、运算AS、运算AR,所以将各运算内容变更为dummy(空)。 dummy是什么都不做的运算,在后面删除。这里,由于运算号码错开,所 以不删除。

接着,为了变更处于比运算E靠前的数据发送运算的输入输出变量和 事前执行运算号码以便事前发送不进行分割查询结合的变量,实施以下4 个处理(步骤S520)。第1个是,取得以运算E的输入变量为输入变量的 数据发送运算BS的处理,第2个是,向BS的输入输出变量列表追加包含 在targetVars中的变量的处理,第3个是,取得输出targetVars的变量的运 算的运算号码列表preExeList的处理,第4个是,在BS的事前执行运算号 码中代入preExeList的值的处理。

本地计划候选生成部32将进行了步骤S520的处理之后的newPlan追 加到newPlanList中(步骤S530)。

然后,在k中代入k+1(k:=k+1)(步骤S540),判断k是否小于等于 vtMax(步骤S550)。在k小于等于vtMax的情况下(步骤S550为“是”), 回到步骤S480,重复处理。在k比vtMax大的情况下(步骤S550为“否”), 前进到步骤S560中,在j中代入j+1(j:=j+1)(步骤S560)。

本地计划候选生成部32判断j是否小于等于nextMax(步骤S570)。 在j小于等于nextMax的情况下(步骤S570为“是”),回到步骤S460,重 复处理。在j比nextMax大的情况下(步骤S570为“否”),前进到步骤S580, 将newPlanList内的要素全部转移到nextPlanList中(步骤S580)。然后, 向步骤S590前进,在i中代入i+1(i:=i+1)(步骤S590)。

另外,在运算E不是分割查询结合的情况下(步骤S430为“否”),也 前进到步骤S590,在i中代入i+1(i:=i+1)(步骤S590)。即,在步骤S430 为“否”时或接着步骤S580进行步骤S590的处理。

本地计划候选生成部32判断i是否小于等于max(步骤S600)。在i 小于等于max的情况下(步骤S600为“是”),回到步骤S420,重复处理。 在i比max大的情况下结束。处理的结束后的最终输出是保存在nextPlanList 中的本地计划候选列表,回到图13的步骤S240而继续本地计划候选生成 部32的处理。

接着,按照图15的流程图对分割查询结合的实施场所样式生成处理进 行说明。另外,该分割查询结合的实施场所样式生成处理使用i这样的变 量。i大于等于1,并且小于等于输入对象的本地计划候选nextPlan的运算 号码(1≤i≤nextPlan的运算号码的最大值)。

本地计划候选生成部32将nextPlan登记到作为最终输出的最终候选列 表finalPlanList中(步骤S700)。

此外,在处理的开始时刻,设i=1、nextPlan的运算号码的最大值=max (步骤S710)。

首先,分割查询结合的实施场所样式生成处理取得所输入的本地计划 候选nextPlan的运算号码i的运算E(步骤S720)。在所取得的运算E是分 割查询结合运算的情况下(步骤S730为“是”),取得nextPlan的第i+1个 运算号码的运算S(步骤S740)。接着,设j:=1、finalPlanList内的要素数 =finalMax(步骤S750)。接着,取得finalPlanList的第j个计划finalPlan(步 骤S760)。接着,制作复制了finalPlan的内容后的新的本地计划候选newPlan (步骤S770)。

接着,本地计划候选生成部32为了将分割查询结合的执行场所变更为 主服务器而实施以下5个处理(步骤S780)。第1个是,取得分割结合运 算E紧后面的发送数据运算S的处理。第2个是,取得分割查询结合运算 E紧前面的接收数据运算R的处理。第3个是,将运算R的运算内容变更 为发送数据运算、对输入输出变量追加S的输入变量、将执行场所变更为 运算S的发送目的地→S的发送源的处理。第4个处理是,将变为不需要 的运算S的运算内容变更为dummy的处理。第5个处理是,将运算E的执 行场所变更为S的发送源的处理。

接着,前进到步骤S790,将在步骤S780中修正后的newPlan追加到 新计划列表newPlanList中(步骤S790)。接着,前进到步骤S800,在j中 代入j+1(j:=j+1)(步骤S800)。接着,判断j是否小于等于finalMax(步 骤S810)。在j小于等于finalMax的情况下(步骤S810为“是”),回到步 骤S760,重复处理。在j比finalMax大的情况下(步骤S810为“否”), 前进到步骤S820,将newPlanList内的要素全部转移到finalPlanList中(步 骤S820)。再向步骤S830前进。

此外,在运算E不是分割查询结合的情况下(步骤S730为“否”),也 前进到步骤S830,在i中代入i+1(i:=i+1)(步骤S830)。即,在步骤S730 为“否”时或接着步骤S820进行步骤S830的处理。

接着,判断i是否小于等于max(步骤S840)。在i小于等于max的情 况下(步骤S840为“是”),回到步骤S720而重复处理。在i比max大的 情况下,前进到步骤S850。

步骤S850是,将处于finalPlanList内的全部的本地计划候选内的运算 中的、运算内容为dummy者删除而结束(步骤S850)。最终输出是保存在 finalPlanList中的本地计划候选列表,回到图13的步骤S280,继续本地计 划候选生成部32的处理。

在图12所示的本地计划候选2是由本地计划选择部31得到的本地计 划候选的情况下,将进行上述本地计划候选生成处理后的结果而得到的新 的本地计划候选2-1至2-6表示在图16至图21中。

具体地说明本地计划候选生成部32生成这些本地计划候选2-1至2 -6的处理。首先,图12的本地计划候选2作为分割查询结合的实施变量 的组合样式处理的输入被传递(图13的步骤S200、S210、S220、S230)。

接着,在分割查询结合的实施变量的组合样式处理中,将输入的图12 的本地计划候选2(以下,设为plan)登记到临时候选列表(以下,设为 nextPlanList)中(图14的步骤S400)。接着,在plan中,由于在i成为7 之前不是分割查询结合运算,所以将变量i每次增加1(步骤S420、S430、 S550、S540)。i为7时的运算E是分割查询结合,所以取得运算号码为8 的运算S,作为S的输入变量($u、$v)的全部组合而将3个组合($u)、 ($v)、($u、$v)保存到varPatternList中(步骤S440)。接着,设j:=1, 取得作为nextPlanList内的第1个要素最先登记的图12的plan作为nextPlan (步骤S450、S460)。接着,制作将nextPlan复制而成的newPlan(步骤 S480)。

接着,取得varPatternList的第1个要素($u),取得newPlan的运算号 码8的数据发送运算AS和运算号码6的数据接收运算AR(步骤S490)。 由于AS的输入变量($u、$v)与($u)不一致,所以取得发送分割查询 结合的输入变量的运算号码3的数据发送运算,对输入输出变量追加处于 分割查询结合的对象以外的变量$u。再将输出变量$u的运算号码4追加到 运算号码3的事前执行运算号码中(步骤S500、S520)。将由此得到的 newPlan追加到newPlanList中(步骤S530)。将作为newPlan的本地计划 候选2-1的内容表示在图16中。其中,在图16所示的本地计划候选2-1 中,已删除运算内容dummy的运算。接着,在k中代入2,再次制作复制 了图12的plan而成的newPlan(步骤S480)。

接着,取得varPatternList的第2个要素($v),取得newPlan的运算号 码8的数据发送运算AS和运算号码6的数据接收运算AR(步骤S490)。 由于AS的输入变量($u、$v)与($v)不一致,所以取得发送分割查询 结合的输入变量$z的运算号码3的数据发送运算,在输入输出变量中追加 处于分割查询结合的对象以外的变量$v。再将输出变量$v的运算号码5追 加到运算号码3的事前执行运算号码中(步骤S500、S520)。将由此得到 的newPlan追加到newPlanList中(步骤S530)。将作为newPlan的本地计 划候选2-2的内容表示在图17中。其中,在图17所示的本地计划候选2 -2中,已删除运算内容dummy的运算。接着,在k中代入3,再次制作 复制了图12的plan而成的newPlan(步骤S480)。

接着,取得varPatternList的第3个要素($u、$v),取得newPlan的运 算号码8的数据发送运算AS和运算号码6的数据接收运算AR(步骤S490)。 由于AS的输入变量($u、$v)和varPatternList的第3个要素($u、$v) 完全一致,所以将运算E、AS、AR的运算内容变更为dummy(步骤S510)。 接着,取得发送分割查询结合的输入变量的运算号码3的数据发送运算, 在输入输出变量中追加处于分割查询结合的对象以外的变量$u、$v。进而, 将输出变量$u、$v的运算号码4、5追加到运算号码3的事前执行运算号码 中(步骤S520)。将由此得到的newPlan追加到newPlanList中(步骤S530)。 将作为该newPlan的本地计划候选2-3的内容表示在图18中。其中,在 图18所示的本地计划候选2-3中,已删除运算内容dummy的运算。接着, 在k中代入4(步骤S540)。

接着,varPatternList由于要素数仅到3,所以在j中代入2(步骤S590、 S580)。接着,nextPlanList由于要素数只有1个,所以将到目前为止得到 的newPlanList内的3个本地计划候选图16、17、18所示的本地计划候选 转移到nextPlanList中(步骤S570、S560)。nextPlanList在该时刻作为要素 而拥有图12、图16至图18的本地计划候选。接着,即使在i中代入8以 后的值,也不存在分割查询结合,所以结束分割查询结合的实施变量的组 合样式生成处理(步骤S550、S540、S420、S430)。

接着,作为分割查询结合的实施变量的组合样式生成处理的输出列表 而取得保存有图12、图16至图18的本地计划候选的nextPlanList(图13 的步骤S240)。接着,在j中代入1,取得作为nextPlanList的第1个要素 的图12的本地计划候选nextPlan(步骤S250、S260)。接着,nextPlan作 为分割查询结合的实施场所样式生成处理的输入被传递(步骤S270)。

接着,将作为分割查询结合的实施场所样式生成处理的输入传递来的 图12的本地计划候选nextPlan登记到最终候选列表finalPlanList中(图15 的步骤S700)。接着,在i中代入1(步骤S710)。

在nextPlan中,在i成为7之前不是分割查询结合运算,所以将变量i 每次增加1(步骤S720、S730、S830、S840)。i为7时的运算E是分割查 询结合,所以取得运算号码为8的数据发送运算S(步骤S740)。接着,在 j中代入1,取得作为finalPlanList内的第1个要素而最初登记的、图12所 示的本地计划候选nextPlan作为finalPlan(步骤S750、S760)。接着,制作 复制了finalPlan而成的newPlan(步骤S770)。

为了将部分查询号码的执行场所变更为主服务器而进行以下的处理 (步骤S780)。最先取得运算号码8的发送数据运算S和运算号码6的接 收数据运算R。接着,将R变更为发送数据运算,输入输出变量变更为添 加了S的输入变量$u、$v后的变量,将执行场所变更为″计算机2→0″。进 而,将S的运算内容变更为dummy。最后,将E的执行场所变更为计算机 0。

接着,将由此得到的newPlan追加到newPlanList中(步骤S790)。将 作为newPlan的本地计划候选2-4的内容表示在图19中。其中,在图19 所示的本地计划候选2-4中,已删除运算内容dummy的运算。

接着,在j中代入2,但finalPlanList由于要素数仅有1个,所以将到 目前为止得到的newPlanList内的1个本地计划候选2-4转移到 finalPlanList中(步骤S800、S810、S820)。接着,由于即使在i中代入8 以后的值也不存在分割查询结合,所以将到目前为止在finalPlanList中得到 的各本地计划候选内存在的运算内容为dummy的运算删除,分割查询结合 的实施场所样式生成处理结束(步骤S830、S840、S850)。

接着,作为分割查询结合的实施场所样式生成处理的输出列表而取得 保存有图12、图19的本地计划候选的finalPlanList(图13的步骤S280)。 接着,将finalPlanList内的要素图12、图19的本地计划候选转移到输出候 选计划列表outputList中(步骤S290)。接着,在j中代入2,取得作为 nextPlanList的第2个要素的图16的本地计划候选nextPlan(步骤S300、 S310、S260)。接着,nextPlan作为分割查询结合的实施场所样式生成处理 的输入被传递(步骤S270)。

在分割查询结合的实施场所样式生成处理中,图16所示的本地计划候 选2-1与图12所示的本地计划候选2相比,计划的形式除了输入输出变 量149以外是大致相同的,由于是与图12所示的本地计划候选2为输入的 情况相同的动作,所以省略图16所示的本地计划候选2-1为输入的情况 下的详细说明。分割查询结合的实施场所样式生成处理的输出列表 finalPlanList的内容成为图16、图20的本地计划候选列表。

接着,将finalPlanList内的要素图16、图20的本地计划候选转移到输 出候选计划列表outputList中(步骤S290)。接着,在j中代入3,取得作 为nextPlanList的第3个要素的图17的本地计划候选nextPlan(步骤S300、 S310、S260)。接着,nextPlan作为分割查询结合的实施场所样式生成处理 的输入被传递(步骤S270)。

在分割查询结合的实施场所样式生成处理中,图17所示的本地计划候 选2-2与图12所示的本地计划候选2相比,计划的形式除了输入输出变 量149以外是大致相同的,由于是与图12所示的本地计划候选2为输入的 情况相同的动作,所以省略图17所示的本地计划候选2-2为输入的情况 下的详细说明。分割查询结合的实施场所样式生成处理的输出列表 finalPlanList的内容成为图17、图21的本地计划候选列表。

将finalPlanList内的要素图17、图21的本地计划候选转移到输出候选 计划列表outputList中(步骤S290)。接着,在j中代入4,取得作为 nextPlanList的第4个要素的图18的本地计划候选nextPlan(步骤S300、 S310、S260)。接着,nextPlan作为分割查询结合的实施场所样式生成处理 的输入被传递(步骤S270)。

将作为分割查询结合的实施场所样式生成处理的输入传递来的图18的 本地计划候选nextPlan登记到最终候选列表finalPlanList中(图15的步骤 S700)。接着,在i中代入1(步骤S720)。接着,在nextPlan中,将变量i 每次增加1,但由于到最后之前不存在分割查询结合运算,所以转移到步骤 S850中(步骤S720、S730、S830、S840)。在步骤S850中,删除在登记 于finalPlanList中的图18所示的本地计划候选2-3内存在的运算内容为 dummy的运算,分割查询结合的实施场所样式生成处理结束(步骤S850)。 分割查询结合的实施场所样式生成处理的输出列表finalPlanList的内容成 为图19的本地计划候选列表。

将finalPlanList内的要素图19的本地计划候选2-4转移到输出候选计 划列表outputList中(步骤S290)。接着,在j中代入5(步骤S300)。由于 登记在nextPlanList中的要素数仅为4,所以在i中代入2(步骤S310、S320)。 由于inputPlanList的要素数仅为1,所以结束本地计划候选生成处理。登记 在最终得到的本地计划候选列表outputList中的本地计划候选是图16至图 21。

在图12的本地计划候选2中,通过运算号码7,在计算机2中将由于 在服务器间运算中需要而通过运算号码3的数据发送运算发送来的变量$z 与通过和服务器间运算并行执行的运算4、5得到的变量$u、$v分割结合。

图16所示的本地计划候选2-1相对于图12所示的本地计划候选2是 如下本地计划候选:通过使运算号码4不与服务器间运算并行执行,而在 运算号码3的数据发送运算中发送变量$z和$u,在运算号码7的分割结合 中与$v分割结合。

图17所示的本地计划候选2-2相对于图12所示的本地计划候选2是 如下本地计划候选:通过使运算号码5不与服务器间运算并行执行,而在 运算号码3的数据发送运算中发送变量$z和$v,在运算号码7的分割结合 中与$u分割结合。

图18所示的本地计划候选2-3相对于图12所示的本地计划候选2是 如下本地计划候选:通过使运算号码4、5不与服务器间运算并行执行,在 运算号码3的数据发送运算中发送变量$z、$v和$u而不进行分割结合。

图19所示的本地计划候选2-4相对于图12所示的本地计划候选2, 是执行场所不是计算机2而是计算机0的情况下的本地计划候选。

图20所示的本地计划候选2-5相对于图16所示的本地计划候选2- 1,是执行场所不是计算机2而是计算机0的情况下的本地计划候选。

图21所示的本地计划候选2-6相对于图17所示的本地计划候选2- 2,是执行场所不是计算机2而是计算机0的情况下的本地计划候选。

如以上这样,在图12以及图16至图21所示的本地计划候选中,生成 网罗了进行分割结合运算的情况和不进行的情况下的本地计划候选、以及 在进行分割结合运算的情况下在分割结合时作为对象的全部变量的组合、 和分割结合的实施场所是主服务器或从属服务器的组合在内的本地计划候 选。

本地计划选择部31从这些本地计划候选中计算由估计执行时间或估计 执行计算量构成的开销,选择开销为最小的本地计划(步骤S8)。

这里,说明本地计划候选的估计执行时间计算的一例。本地计划候选 的估计执行时间例如基于在图22中举出的各运算的处理估计时间用的参 数、和包含在本地计划中的运算来计算。

各运算的参数例如是“数值索引:0.001msec/输出变量的件数”、 “TRAVERSE(遍历):1msec/输入变量的件数”、“分割查询结合:1msec/ 输入变量的件数”、“服务器间JOIN(联合):1msec/输入变量的件数”、“数 据发送5msec+(0.001msec/输入变量的件数)×变量的数”、“数据接收5msec+ (0.001msec/输入变量的件数)×变量的数”等。另外,预先根据运算内容 设定在输出变量中保存的件数。

这里,以下说明图12所示的本地计划候选2的估计时间的计算处理的 一例。另外,根据图4可知,在计算机2中登记有1万件XML数据,所以 由此计算各运算的估计执行时间。

(1)在数值索引中使用″>=″运算的情况下,估计整体的10%命中。因 此,估计1万件的10%即1000件命中。因而,数值索引的估计计算时间为 0.001msec/输出变量的件数×1000件=1msec。

(2)遍历的输入变量的件数根据(1)的结果,估计为1000件。假设 输出不变化而估计为1000件。因而,遍历的估计计算时间为1msec/输入变 量的件数×1000件=1000msec。

(3)数据发送的输入变量的件数根据(2)的结果,估计为1000件。 因而,数据发送的估计计算时间为5msec+0.001msec/输入变量的件数× 1000×1=6msec。

(4)遍历的输入变量的件数根据(2)的结果,估计为1000件。假设 输出不变化而估计为1000件。因而,遍历的估计计算时间为1msec/输入变 量的件数×1000件=1000msec。

(5)遍历的输入变量的件数根据(4)的结果,估计为1000件。假设 输出不变化而估计为1000件。因而,遍历的估计计算时间为1msec/输入变 量的件数×1000件=1000msec。

(6)关于数据接收的输入变量的件数,在主服务器中执行服务器间联 合而削减到40%,估计为400件。因而,数据接收的估计计算时间为 5msec+0.001msec/

(7)分割查询结合的输入件数根据(5)、(6)而估计共计为1400件。 因而,分割查询结合的估计计算时间为1msec/输入变量的件数×1400件 =1400msec。

(8)在(3)中向主服务器进行数据发送后,在主服务器中执行图11 的分散计划的运算号码10的服务器间联合。这里,设为服务器间联合的估 计计算时间在分散计划生成部13中以与本地计划候选的估计计算时间同样 的考虑方式计算后、与分散计划一起发送给从属服务器。在分散计划生成 部13中,服务器间联合的输入件数假定为各从属服务器的登记数据数的1/3 左右来加以计算。因而,服务器间联合的估计时间为1msec/输入变量的件 数×11250件÷3=3750msec。

另外,在图11中,作为能够由分割查询结合运算追加部14与运算号 码10的服务器间联合并行执行的运算而举出的、运算号码4、5的服务器 内运算,对应于本地计划候选2的运算号码4、5的遍历。因此,可知运算 号码4、5与运算号码3、6以及服务器间联合并行实施,所以本地计划候 选2的估计时间为以下两个估计时间的较长者。

(1)+(2)+(3)+(8)+(6)+(7)=6163msec

(1)+(2)+(4)+(5)+(7)=4401msec

结果,估计为6163msec。

作为另一例,在将本地计划候选2-3在计算机2中执行时,全部处理 不能并行执行,所以估计时间为将(1)、(2)、(3)、(4)、及(5)的运算 与服务器间联合相加后的值。即,为

1msec+1000msec+1000msec+1000msec+6msec+3750msec=6757msec, 计算出本地计划候选2相对而言在包含服务器间联合时变快。这样,通过 对本地计划候选的估计计算时间也加上由主服务器执行的服务器间运算的 估计时间,能够判断通过由分割查询结合运算追加部追加后的分割查询结 合进行的优化是否有效。

在本实施方式中,假设计算机1选择图18所示的本地计划候选2-3, 计算机2选择图12所示的本地计划候选2,计算机3选择图19所示的本地 计划候选2-4分别作为本地计划。

各计算机的本地计划选择部31将所选择的本地计划发送给主服务器的 分散计划更新部15。如果本地计划选择部31将所选择的本地计划发送给分 散计划更新部15,则从属服务器执行对象的本地计划(步骤S9)。

接收到本地计划的主服务器的分散计划更新部15与从属服务器进行的 步骤S9并行地进行分散计划更新处理(步骤S10)。

这里,说明主服务器的分散计划更新部15在计算机1、计算机2、计 算机3分别选择了图18、图12、图19的本地计划候选的情况下按照图23 的流程图对图11的分散计划进行分散计划的更新的情况下的分散计划更新 处理。另外,该分散计划更新处理使用i这样的变量。i大于等于1,并且 小于等于对象的从属服务器数(1≤i≤从属服务器数)。

在处理的开始时刻,是i=1。此外,设从属服务器数=max(步骤S900)。

分散计划更新部15取得计算机号码i的本地计划LPlan(步骤S910)。 接着,检查分散计划与本地计划之间的关于分割查询结合的差分(步骤 S920)。通过差分检查,在LPlan中判断分割查询结合是否被完全删除(步 骤S930)。

在LPlan中分割查询结合被完全删除的情况下(步骤S930为“是”), 从处于分散计划中的分割查询结合以及处于其前后的数据发送运算、数据 接收运算的执行场所中删除计算机i(步骤S940)。接着,判断删除后的结 果分割查询结合运算的执行场所是否为空(步骤S950)。

在分割查询结合运算的执行场所为空的情况下(步骤S950为“是”), 将处于分散计划中的分割查询结合以及处于其前后的数据发送运算、数据 接收运算删除(步骤S960)。接着,前进到步骤S970。

此外,在分割查询结合运算的执行场所不是空的情况下(步骤S950为 “否”),前进到步骤S970。进而,在LPlan中分割查询结合没有被完全删 除的情况下(步骤S930为“否”),前进到步骤S970。即,在步骤S930为 “否”的情况下、或者在步骤S950为“否”的情况下、或者接着步骤S960 进行步骤S970的处理。在步骤S970中,判断在LPlan中是否变更了分割 查询结合的执行场所。

在LPlan中变更了分割查询结合的执行场所的情况下(步骤S970为 “是”),从处于分散计划中的分割查询结合、处于其前后的数据发送运算、 以及数据接收运算的执行场所中删除计算机i(步骤S980)。接着,判断删 除后的结果分割查询结合运算的执行场所是否为空(步骤S990)。

在分割查询结合运算的执行场所为空的情况下(步骤S990为“是”), 将处于分散计划中的分割查询结合以及处于其前后的数据发送运算、数据 接收运算删除(步骤S1000)。接着,前进到步骤S990。

此外,在分割查询结合运算的执行场所不是空的情况下(步骤S990为 “否”),前进到步骤S1010。即,在步骤S990为“否”的情况下或接着步 骤S1000进行步骤S1010的处理。在步骤S1010中,判断变更了LPlan的 执行场所后的分割查询结合是否已经存在于分散计划内。

在将LPlan的执行场所变更后的分割查询结合不是已经存在于分散计 划内的情况下(步骤S1010为“否”),将变更了执行场所后的分割查询结 合、以及处于其前后的数据发送、数据接收的运算追加到分散计划中(步 骤S1030)。接着,前进到步骤S1040。

此外,在变更了LPlan的执行场所后的分割查询结合已经存在于分散 计划内的情况下(步骤S1010为“否”),对执行场所追加计算机i(步骤 S1020)。接着,前进到步骤S1040。

进而,在LPlan中没有变更分割查询结合的执行场所的情况下(步骤 S970为“否”),前进到步骤S1040。即,在步骤S970为“否”的情况下、 或接着步骤S1020、或接着步骤S1030进行步骤S1040的处理。在步骤S1040 中,在i中代入i+1(i:=i+1)(步骤S1040)。

接着,判断i是否小于等于max(步骤S1050)。在i小于等于max的 情况下(步骤S1050为“是”),回到步骤S910而重复处理。在i比max大 的情况下结束。

图24中示出在计算机1、2、3的本地计划分别是本地计划候选2-3、 本地计划候选2、本地计划候选2-4的情况下对图11所示的分散计划进行 上述分散计划更新处理后的结果而得到的分散计划。

图24所示的分散计划3具有“运算号码”312、“部分查询号码”313、 “运算内容”314、“事前执行运算号码”315、“执行场所”316、“发送场 所”317、“输入变量”318、“输出变量”319的项目。该分散计划3具有的 项目312至319与分散计划表141具有的项目142至149以及本地计划候 选2、2-1至2-6具有的项目302至309相同。

首先,在i中代入1,检查作为计算机1选择的本地计划的本地计划候 选2-3与图11的分散计划之间的关于分割查询结合的差分(步骤S900、 S910、S920)。在本地计划候选2-3中,由于计算机1的分割查询结合被 完全删除,所以从图11的分散计划的分割查询结合以及处于其前后的数据 发送、数据接收运算(图24的运算号码11-15)的执行场所中删除计算机 1(步骤S940)。

接着,由于分割查询结合的执行场所不是空,所以分散计划更新部15 检查本地计划候选2-3,检查分割查询结合的执行场所是否没有被变更(步 骤S950、S970)。由于执行场所没有被变更,所以在i中代入2(步骤S1040、 S1050)。

接着,设i为2,检查图11的分散计划与作为计算机2选择的本地计 划的本地计划候选2之间的关于分割查询结合的差分(步骤S920)。由于 图12所示的本地计划候选2中计算机2的分割查询结合没有被删除,执行 场所也没有变化,所以在i中代入3(步骤S930、S970、S1040、S1050)。

接着,设i为3,检查图11的分散计划与作为计算机3选择的本地计 划的本地计划候选2-4之间的关于分割查询结合的差分(步骤S920)。由 于本地计划候选2-4中计算机3的分割查询结合没有被删除,所以接着检 查分割查询结合的执行场所是否被变更(步骤S930、S970)。

此外,由于本地计划候选2-4中分割查询结合的执行场所被变更,所 以从分散计划的分割查询结合以及处于其前后的数据发送、数据接收运算 (图24的运算号码11-15)的执行场所中删除计算机3(步骤S980)。由 于分割查询结合的执行场所不是空,所以分散计划更新部15接着确认变更 了执行场所后的分割查询结合是否插入在分散计划中(步骤S980、S1010)。 由于没有被插入在分散计划中,所以将变更了执行场所后的分割查询结合 以及处于其前后的数据发送、数据接收运算插入到分散计划中(图24的运 算号码14、15、16)(步骤S1030)。接着,在i中代入4,但由于计算机数 到3为止,所以结束处理(步骤S1040、S1050)。最终得到图24的分散计 划3。

分散计划执行部16执行分散计划3的运算(图6的步骤S11)。另外, 分散计划3的执行与从属服务器的本地计划执行部33的执行相互在数据的 收发中处于依存关系,例如并行执行、或等待从对方发送数据。即,主服 务器的收发部17和从属服务器的收发部34一边进行数据的交换一边执行 分散计划。

如上所述,根据本实施方式,对于由用户输入到主服务器中的询问查 询,主服务器仅实施与除了部分查询的结合处理以外的服务器间运算关联 的部分的优化,部分查询的结合的优化由从属服务器实施。即,主服务器 能够将部分查询的结合处理从优化的范围中除外,所以与全部在主服务器 侧优化的情况相比能够以简单的机制实现。

即,主服务器以不依存于从属服务器决定的部分查询的结合处理的形 式临时决定部分查询的结合处理。从属服务器基于每个服务器的数据库信 息将部分查询的结合处理优化。进而,从属服务器将该部分查询的结合处 理的结果通知给主服务器,由此,主服务器生成效率较高的分散计划。此 外,关于分割查询结合运算,从属服务器侧进行优化,所以能够生成适合 于各从属服务器的高效率的计划。

因而,根据本发明的实施方式,关于询问查询51,通过从主服务器决 定的分散计划的范围中去除与分割查询结合运算有关的运算来使主服务器 的分散计划优化的机制简洁化,在此基础上,从属服务器分别以最优的形 式实施上述范围的优化。由此,能够实现高效率的查询处理。

(第2实施方式)

参照附图对第2实施方式的分散数据库检索装置进行说明。另外,对 于与第1实施方式的分散数据库检索装置相同的结构赋予相同的标号并省 略说明。

图25是表示第2实施方式的分散数据库检索装置的功能结构的结构 图。如图25所示,本实施方式的分散数据库检索装置是在图1所示的分散 数据库检索装置的结构中还具有模式生成部18、35和模式变更部19、36 的结构。

所谓模式(schema),是保持所保存的数据的种类或位置信息的数据构 造。

模式生成部18、35生成在各服务器中进行的运算的结果而输入输出的 数据的模式。例如,主服务器具备的模式生成部18生成分散计划的各运算 的输入输出数据的模式。此外,从属服务器具备的模式生成部35生成本地 计划的各运算的输入输出数据的模式。

模式变更部19、36在将通过分散计划或本地计划的各运算得到的数据 传递给下个运算时变更该数据的模式。主服务器的模式变更部19在将通过 分散计划或本地计划的各运算的输出得到的数据传递给分散计划接下来的 运算的输入时变更数据的模式。从属服务器的模式变更部36将通过分散计 划或本地计划的各运算的输出而得到的数据传递给本地计划接下来的运算 时变更该数据的模式。

这里,在图26中表示在由本实施方式的模式变更部19变更前的模式 中包含的项目的一例。所谓变更前的模式,即是由后述的模式生成部18生 成的模式。所谓模式,是保持所保存的数据的种类或位置信息的构造,如 图26所示,在本实施方式中,具有“可变区域”401、“变量~”402-i(i 是大于等于1的整数)、和“扩展变量$#e(V1…,Vn)”403的项目。

“扩展变量$#e(V1,…,Vn)”403的“$#e”装入与“变量~”402 -i的“~”不一致的唯一的字符串,在“(V1,…,Vn)”中装入用“,” 分隔的n个唯一的任意的字符串。所谓“可变区域”401,是保存用来在服 务器间传递数据时吸收列(column)数的差异的数据的项目。“变量~”402 -i是保存各变量的数据的项目,“扩展变量$#e(V1,…,Vn)”403是保 存从变量“V1”到变量“Vn”的全部变量的数据的项目。另外,“变量~” 402-i按照输入输出的每个数据而保存各种各样的变量。

这里,参照图27,对本实施方式的分散数据库检索装置的检索处理的 一例进行说明。图27是表示本实施方式的分散数据库检索装置的检索处理 的一例的流程图。另外,关于步骤S1至S8以及S10的处理,与图6所示 的流程图相同,所以省略说明。

在图27的步骤S1-S8中决定了本地计划后,本地计划选择部37实施 对所决定的本地计划中未决定执行顺序的部分进行确定的本地计划顺序决 定处理(步骤S12)。这里,所谓未决定执行顺序的部分,是本地计划的各 运算的事前执行号码相等的运算的集合。这些运算由于没有指定以哪个顺 序执行,所以能够以任意的顺序执行。即,通过本地计划顺序决定处理唯 一地决定这些运算的执行顺序。

在图28中表示图12所示的本地计划候选2通过本地计划顺序决定处 理(步骤S12)唯一地决定了未决定的运算集合的顺序后的结果。在图12 所示的本地计划候选2中,运算号码2、4、5的各运算的事前执行号码是1, 执行顺序未决定。在图29中决定为以运算号码2、4、5的顺序执行,将运 算号码4的事前执行号码从1改写为2,将运算号码5的事前执行号码从1 改写为4。

将在步骤S12中的本地计划顺序决定处理后决定了运算顺序的本地计 划通过发送部34发送给主服务器。如果主服务器接收到该本地计划,则分 散计划更新部10进行分散计划更新处理(步骤S10)。与步骤S10并行, 从属服务器的模式生成部35生成该本地计划内的各运算的输入模式及输出 模式(以下,称作输入输出模式)(步骤S14)。所谓输入模式,是所输入 的数据的模式。所谓输出模式,是通过运算输出的数据的模式。

这里,参照图29,具体地说明模式生成部35对于图28所示的本地计 划进行模式生成处理(步骤S14)时的动作。

另外,在该模式生成处理中,使用i这样的变量。i是大于等于1的整 数,并且小于等于对象的本地计划的运算号码(1≤i≤本地计划的运算号 码的最大值)。此外,在模式生成处理的开始时刻,是i=1。此外,将本地 计划的运算号码的最大值设为“max”。此外,将运算号码301为i的本地 计划的运算设为运算S。

模式生成部35如果从本地计划选择部31接收到本地计划,则首先, 作为初始化处理而设i=1、本地计划的运算号码的最大值=max(步骤 S1110)。接着,判断i是否小于等于max(步骤S1110)。

在i小于等于max的情况下(步骤S1110为“是”),取得运算号码i 的运算S(步骤S1120)。接着,判断在运算S中是否有输出变量(步骤 S1130)。

在运算S中有输出变量的情况下(步骤S1130为“是”),将运算S的 输出变量追加到输出模式和变量列表VL中。进而,对每个变量准备到达 号码列表RL和利用号码列表UL(步骤S1140)。接着,根据各运算的事前 执行号码取得运算S和比运算S靠后执行的运算号码的列表AL(步骤 S1150)。接着,对于运算S的各输出变量,在对每个变量准备的到达运算 号码列表RL中登记保存在列表AL中的运算号码(步骤S1160)。然后, 前进到步骤S1170。另外,在运算S中没有输出变量的情况下(步骤S1130 为“否”),也前进到步骤S1170。

在步骤S1170中,判断在运算S中是否有输入变量(步骤S1170)。

在运算S中有输入变量的情况下(步骤S1170为“是”),循着运算S 的事前执行运算号码,取得在比运算S靠前执行的运算号码的列表BL(步 骤S1180)。接着,对于运算S的各输入变量,在对每个变量准备的利用运 算号码列表UL中登记保存在列表BL中的运算号码(步骤S1200)。然后, 前进到步骤S1210。另外,在运算S中没有输入变量的情况下(步骤S1170 为“否”)也前进到步骤S1210。

在步骤S1210中,在i中代入i+1(i:=i+1)(步骤S1210)。接着,回 到步骤S1110。

在i比max大的情况下(步骤S1110为“否”),前进到步骤S1220。

这里,使用j这样的变量。j大于等于1,并且小于等于变量列表VL 内的要素数(1≤j≤VL内的要素数)。此外,此时是j=1,设VL内的要素 数=vmax(步骤S1220)。接着,判断j是否小于等于vmax(步骤S1230)。

在j小于等于vmax的情况下(步骤S1230为“是”),从变量列表VL 取得第j个变量var(步骤S1240)。接着,取得在变量var的到达运算号码 列表RL和利用号码列表UL中共通出现的运算号码列表CL(步骤S1250)。 接着,对列表CL内的运算号码的各运算的输出模式追加变量var(步骤 S1260)。接着,在j中代入j+1(j:=j+1)(步骤S1270)。接着,回到步骤 S1230。

在j比vmax大的情况下(步骤S1230为“否”),在i中代入1(i:=1) (步骤S1280)。接着,判断i是否小于等于max(步骤S1290)。

在i小于等于max的情况下(步骤S1290为“是”),取得运算号码i 的运算S(步骤S1300)。接着,将事前执行运算号码的运算的输出模式复 制到运算S的输入模式中(步骤S1310)。接着,对运算S的输出模式的开 头追加可变区域,对最末尾追加扩展变量$#e()(步骤S1320)。接着,在 i中代入i+1(i:=i+1)(步骤S1330)。接着,回到步骤S1290。

在i比max大的情况下(步骤S1290为“否”),结束处理。另外,图 29所示的流程图在从属服务器的模式生成部18的模式生成处理S15中也 仅存在对象是本地计划还是分散计划的差异,动作是同样的。

这里,在图30中,表示在通过图28所示的本地计划顺序决定处理得 到的本地计划中,进行了上述模式生成处理后的结果而得到的输入输出模 式的一例。图30所示的输入输出模式表500表示运算号码500、输入模式 1、输入模式2、输出模式502的项目。

在输入输出模式表500的运算号码501中,保存有与进行了模式生成 处理后的计划的运算号码相对应的运算号码。

输入模式1保存有在模式生成处理中生成的输入模式的第1个输入模 式。输入模式2保存有在模式生成处理中生成的输入模式的第2个输入模 式。

输出模式504保存有在模式生成处理中生成的输出模式。

具体地说明模式生成处理部18计算该输入输出模式表500的处理。首 先,图28的本地计划作为模式生成处理的输入被传递。接着,在i中代入 1,在max中代入8(步骤S1100)。接着,由于i小于等于max,所以取得 运算号码1的运算S(步骤S1110、S1120)。由于运算S拥有输出变量$x, 所以将$x追加到输出模式504和变量列表VL中。进而,准备针对$x的到 达号码列表RL和利用号码列表UL(步骤S1130、S1140)。接着,循着事 前执行号码,将运算S的运算号码1和比运算S靠后执行的运算号码2-8 保存到到达号码列表RL中(步骤S1150、S1160)。由于运算S不拥有输入 变量,所以在i中代入2,取得运算号码2的运算S(步骤S1210、S1110、 S1120)。

由于运算S拥有输出变量$z,所以将$z追加到输出模式504和变量列 表VL中。进而,准备针对$z的到达号码列表RL和利用号码列表UL(步 骤S1130、S1140)。接着,循着事前执行号码,将运算S的运算号码2和 比运算S靠后执行的运算号码3-8保存到到达号码列表RL中(步骤S1150、 S1160)。接着,由于运算S拥有输入变量$x,所以将比S靠前执行的运算 号码1登记到利用运算号码UL中。(步骤S1170、S1180、S1200)。接着, 取得运算号码3的运算S(步骤S1210、S1110、S1120)。

由于运算S拥有输出变量$z,所以将$z追加到输出模式504和变量列 表VL中。进而,准备针对$z的到达号码列表RL和利用号码列表UL(步 骤S1130、S1140)。接着,循着事前执行号码,将运算S的运算号码3和 比运算S靠后执行的运算号码3、6-8保存到到达号码列表RL中(步骤 S1150、S1160)。接着,由于拥有输入变量$z,所以将比S靠前执行的运算 号码1、2登记到$z的利用运算号码UL中(步骤S1130、S1170、S1180、 S1200)。接着,取得运算号码4的运算S(步骤S1210、S1110、S1120)。

由于运算S拥有输出变量$u,所以将$u追加到输出模式504和变量列 表VL中。进而,准备针对$u的到达号码列表RL和利用号码列表UL(步 骤S1130、S1140)。接着,循着事前执行号码,将运算S的运算号码4和 比运算S靠后执行的运算号码5、7、8保存到到达号码列表RL中(步骤 S1150、S1160)。接着,由于运算S拥有输入变量$x,所以将比S靠前执行 的运算号码1、2登记到利用运算号码UL中(步骤S1170、S1180、S1200)。 接着,取得运算号码5的运算S(步骤S1210、S1110、S1120)。

用于运算S拥有输出变量$v,所以将$v追加到输出模式504和变量列 表VL中。进而,准备针对$v的到达号码列表RL和利用号码列表UL(步 骤S1130、S1140)。接着,循着事前执行号码,将运算S的运算号码5和 比运算S靠后执行的运算号码7、8保存到到达号码列表RL中(步骤S1150、 S1160)。接着,由于运算S拥有输入变量$x,所以将比S靠前执行的运算 号码1、2、4登记到利用运算号码UL中(步骤S1170、S1180、S1200)。 接着,取得运算号码6的运算S(步骤S1210、S1110、S1120)。

由于运算S拥有输出变量$z,所以将$z追加到输出模式504和变量列 表VL中。进而,准备针对$z的到达号码列表RL和利用号码列表UL(步 骤S1130、S1140)。接着,循着事前执行号码,将运算S的运算号码6和 比运算S靠后执行的运算号码7、8保存到到达号码列表RL中(步骤S1150、 S1160)。接着,由于拥有输入变量$z,所以将比S靠前执行的运算号码1 -3登记到$z的利用运算号码UL中(步骤S1130、S1170、S1180、S1200)。 接着,取得运算号码7的运算S(步骤S1210、S1110、S1120)。

由于运算S不拥有输出变量、而拥有输入变量$z,所以将比S靠前执 行的运算号码1-6登记到$z的利用运算号码UL中(步骤S1130、S1170、 S1180、S1200)。接着,取得运算号码8的运算S(步骤S1210、S1110、S1120)。

由于运算S拥有输出变量$u和$v,所以将$u和$v追加到输出模式504 和变量列表VL中。进而,准备针对$u和$v的到达号码列表RL和利用号 码列表UL(步骤S1130、S1140)。接着,循着事前执行号码,将运算S的 运算号码8保存到到达号码列表RL中(步骤S1150、S1160)。接着,由于 拥有输入变量$u、$v,所以将比S靠前执行的运算号码1-7登记到$u、$v 的利用运算号码UL中(步骤S1130、S1170、S1180、S1200)。接着,由于 i超过了max,所以在j中代入1,在vmax中代入VL的要素数4(步骤S1210、 S1110、S1220)。接着,取得作为变量列表的第1个要素的变量$x(步骤 S1230、S1240)。

由于变量$x的利用号码列表UL的各要素是1、2、4,到达运算号码 RL是1-8,所以对共通出现的运算号码1、2、4的输出模式504追加$x (步骤S1250、S1260)。接着,取得VL的第2个变量$z(步骤S1270、S1230、 S1240)。

由于变量$z的利用号码列表UL的各要素是1-6,到达运算号码RL 是2-8,所以对共通出现的运算号码2-6的输出模式504追加$z(步骤 S1250、S1260)。接着,取得VL的第3个变量$u(步骤S1270、S1230、 S1240)。

由于变量$u的利用号码列表UL的各要素是1-7,到达运算号码RL 是4、5、7、8,所以对共通出现的运算号码4、5、7的输出模式504追加 $u(步骤S1250、S1260)。接着,取得VL的第4个变量$v(步骤S1270、 S1230、S1240)。

由于变量$v的利用号码列表UL的各要素是1-7,到达运算号码RL 是5、7、8,所以对共通出现的运算号码5、7的输出模式504追加$v(步 骤S1250、S1260)。接着,在i中代入1,取得运算号码1的运算S(步骤 S1270、S1230、S1280)。

由于运算号码1没有输入,所以对输出模式504追加可变区域和扩展 变量$#e(),取得运算号码2的运算S(步骤S1300-S1320、S1280、S1290)。

将运算号码1的输出模式504复制到运算号码2的输入模式1中,对 输出模式504追加可变区域和扩展变量$#e(),取得运算号码3的运算S (步骤S1300-S1320、S1280、S1290)。

将运算号码2的输出模式504复制到运算号码3的输入模式1中,对 输出模式504追加可变区域和扩展变量$#e(),取得运算号码4的运算S (步骤S1300-S1320、S1280、S1290)。

将运算号码2的输出模式504复制到运算号码4的输入模式1中,对 输出模式504追加可变区域和扩展变量$#e(),取得运算号码5的运算S (步骤S1300-S1320、S1280、S1290)。

将运算号码4的输出模式504复制到运算号码5的输入模式1中,对 输出模式504追加可变区域和扩展变量$#e(),取得运算号码6的运算S (步骤S1300-S1320、S1280、S1290)。

将运算号码3的输出模式504复制到运算号码6的输入模式1中,对 输出模式504追加可变区域和扩展变量$#e(),取得运算号码7的运算S (步骤S1300-S1320、S1280、S1290)。

分别将运算号码5的输出模式504复制到运算号码7的输入模式1中, 将运算号码6的输出模式504复制到输入模式2中,对输出模式504追加 可变区域和扩展变量$#e(),取得运算号码8的运算S(步骤S1300-S1320、 S1280、S1290)。

将运算号码7的输出模式504复制到运算号码8的输入模式1中,对 输出模式504追加可变区域和扩展变量$#e()而结束(步骤S1300-S1320、 S1280、S1290)。模式生成处理的输出结果的一例是图30所示的输入输出 模式表500。另外,在图30中,在输入模式仅有1个的情况下保存到输入 模式1的项目中,在有两个的情况下将第2个保存到输入模式2的项目中, 但输入模式的项目也可以根据需要而增减。

这里,对与步骤S14并行执行的主服务器的处理进行说明。分散计划 生成部23进行分散计划更新处理(步骤S10),在将分散计划更新后,基 于更新后的分散计划实施对未决定执行顺序的部分进行确定的分散计划顺 序决定处理(步骤S13)。步骤S13的分散计划顺序决定处理除了对象的计 划不是本地计划而是分散计划以外与步骤S12相同。

接着,模式生成部18生成所决定的分散计划内的各运算的输入输出模 式(步骤S15)。步骤S15的模式生成处理除了对象的计划不是本地计划而 是分散计划以外与步骤S14相同。

如果由主服务器和从属服务器分别进行模式生成处理,则主服务器和 从属服务器分别基于所生成的输入输出模式执行计划。即,从属服务器的 本地计划执行部36基于在模式生成处理(步骤S14)中生成的输入输出模 式执行本地计划(步骤S9)。此外,主服务器的分散计划执行部16基于在 模式生成处理(步骤S15)中生成的模式,执行分散计划(步骤S11)。

在本地计划执行(步骤S9)中,本地计划执行部33在实施本地计划 的各运算时,将输入的数据和准备好的输入模式传递给模式变更部36,实 施模式变更处理(步骤S16)。此外,在分散计划执行(步骤S11)中也同 样,分散计划执行部16在实施分散计划的各运算时,将输入的数据和准备 好的输入模式传递给模式变更部19而实施模式变更处理(步骤S16)。

这里,参照图31,对在步骤S16中主服务器的模式变更部19执行分 散计划时进行的模式变更处理进行说明。

模式变更部19取得作为分散计划执行部16接着执行的运算的输入的 拥有模式S的数据D、和由模式生成部18预先准备的运算的输入模式T(步 骤S1400)。接着,判断模式S与模式T的变量的项目是否一致(步骤S1410)。

在模式S与模式T的变量的项目不一致的情况下(步骤S1410为“否”), 取得模式S的扩展变量$#e的变量列表VL,判断列表是否是空(步骤 S1420)。

在模式S的扩展变量$#e的变量列表VL不是空的情况下(步骤S1420 为“否”),将扩展变量列表VL内的各变量追加作为模式S的变量的项目, 将VL变更为空(步骤S1430)。接着,取得存在于模式S中但不存在于模 式T中的变量的项目的列表DL(步骤S1430)。接着,前进到步骤S1450。 另外,在模式S的扩展变量$#e的变量列表VL为空的情况下(步骤S1420 为“是”),也前进到步骤S1450。

在步骤S1450中,判断变量的项目列表DL内的变量是否在模式S中 非连续地排列(步骤S1450)。

在变量的项目列表DL内的变量在模式S中非连续地排列的情况下(步 骤S1450为“是”),将模式S和数据D的各数据改写,以使变量的项目列 表DL内的变量连续(步骤S1460)。接着,前进到步骤S1470。另外,在 变量的项目列表DL内的变量在模式S中没有非连续地排列的情况下(步 骤S1420为“否”),也前进到步骤S1470。

在步骤S1470中,从模式S的变量的项目中删除列表DL内的变量, 追加到扩展变量$#e的变量列表中(步骤S1470)。接着,在数据D的可变 区域的项目中保存列表DL内的变量的合计尺寸并结束(步骤S1480)。另 外,在模式S与模式T的变量的项目一致的情况下(步骤S1410为“是”) 也结束。另外,关于图31所示的流程图,在针对本地计划执行部33的运 算进行的模式变更部36的处理时,也仅存在对象是本地计划还是分散计划 的差异,动作是同样的。

这里,参照图31,具体地说明模式变更部19对图26所示的计算机0 的运算号码7的输入模式、和从计算机1、计算机2、计算机3发送来的各 数据的模式进行模式变更处理时的动作。在分散计划为图24、计算机1、 计算机2、计算机3的本地计划为图12、图18、图16所示的本地计划候选 时的、分散计划的运算号码7的接收运算的实施时进行该模式变更处理。

首先,取得图26的计算机0的运算号码7的输入模式T、和从计算机 1发送来的数据的模式S(步骤S1400)。由于模式S与模式T的变量项目 一致,所以结束处理(步骤S1410)。

接着,取得计算机0的运算号码7的输入模式T、和从计算机2发送 来的数据的模式S(步骤S1400)。由于模式S与模式T的变量项目不一致, 并且S的扩展变量$#e的变量列表是空,所以作为存在于模式S中而不存 在于模式T中的变量,取得$u和$v(步骤S1410、步骤S1420、步骤S1440)。 由于变量$u和$v在模式S中连续排列,所以从模式S的项目中删除变量$u 和$v,追加到扩展变量$#e的变量列表中(步骤S1450、步骤S1470)。最 后,将$u和$v的变量的合计尺寸保存到扩展区域中(步骤S1480)。

接着,取得计算机0的运算号码7的输入模式T、和从计算机3发送 来的数据的模式S(步骤S1400)。由于模式S与模式T的变量项目不一致, 并且S的扩展变量$#e的变量列表为空,所以作为存在于模式S中而不存 在于模式T中的变量,取得$u(步骤S1410、步骤S1420、步骤S1440)。 由于变量$u在模式S中连续排列,所以从模式S的项目中删除变量$u,追 加到扩展变量$#e的变量列表中(步骤S1450、步骤S1470)。最后,将$u 的变量的合计尺寸保存到扩展区域中(步骤S1480)。将模式变更处理的结 果表示到图32中。图32是表示模式变更处理后的模式所包括的项目的一 例。如图32所示,在本实施方式中,在模式变更处理后,具有“可变区域” 401、“变量~”402、和“扩展变量$#e(V1…,Vn)”403的项目。

另外,说明了在主服务器的分散计划的运算和从属服务器的本地计划 的运算中交接数据时实施上述模式变更处理的事例,但在同一服务器内、 或从属服务器间的运算中交接数据时也能够采用。在图24中,在运算号码 6的服务器间联合之前接收变量$z。

但是,由图18、图12、图19的本地计划候选可知,计算机1发送变 量$z、$u、$v这3组数据,计算机2发送变量$z,计算机3发送变量$z、 $u这两组数据。因此,这样下去成为处理列数不同的表。因而,在主服务 器的模式变更部18中,将模式变更,以便能够将图26所示的各计算机的 数据的模式如图32所示那样看作全部计算机的数据为相同的模式。在图24 中,在运算号码6的服务器间联合中仅需要变量$z,所以在除此以外还包 含变量的情况下,全部作为保存有1个可变长数据的扩展变量$#e的列加以 处理。并且,在可变区域中存储有可变长区域的尺寸。由此,在服务器间 联合的执行时能够全部作为相同形式的表加以处理。

根据本实施方式的分散数据库检索装置,由于对每个从属服务器制作 本地计划,所以有可能按照每个从属服务器而分散计划的一部分不同。即, 有可能按照每个从属服务器而发送的数据的模式不同。本实施方式在这样 的情况下,通过在模式变更部18、20中变更在交接数据时发送的一侧的数 据的模式(输入模式)与接收的数据的模式(输出模式)的差异,实现作 为相同模式的数据进行处理。

即,在按照每个从属服务器制作效率较高的本地计划的情况下,有时 存在多个不同的模式的数据。这样,在按照每个从属服务器制作效率较高 的本地计划的情况下,需要将多个不同的模式的数据统一处置的处理。

如上所述,根据本实施方式,能够将多个不同模式的数据统一地处置。 此外,在本实施方式中,仅通过仅模式、或者模式和数据的一部分的区域 的改写,就能够实现统一地处置多个不同模式的数据。

以上,说明了本发明的实施方式,但这些实施方式是作为例子提示的, 并不意味着限定发明的范围。这些新的实施方式能够以其他各种形态实施, 在不脱离发明的主旨的范围内能够进行各种省略、替换、变更。这些实施 方式及其变形包含在发明的范围及主旨中,并且包含在权利要求书所记载 的发明和其等价的范围中。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号