用于处理数据库的设备和方法

文档序号:6466831阅读:160来源:国知局
专利名称:用于处理数据库的设备和方法
技术领域
本发明涉及用于处理用来处理具有分级结构的结构化文档的数据库的设备和方法。
背景技术
近年来,由于结构化文档,如XML文档的逐渐流行,在其中储存结构化文档的数据 库(例如,XML数据库)越来越流行。作为能用来对此种数据库进行査询的语言的实例, 提出了 XQuery。
XQuery是能用来进行XML査询的功能型语言,其特征在于具有FLWR语法。FLWR 语法表示包括FOR子句,LET子句,WHERE子句,和RETURN子句的语法。使用XQuery 的处理实例在M. Fernandez, J. Simeon, B. Choi, A. Marian, G. Sur, Implementing XQuery 1.0: The Galax Experience , VLDB 2003中有所说明。
在XQuery的FLWR语法中,FOR子句将序列中的项目结合到变量。另一方面,LET 子句将整个序列结合到变量。通过组合FOR子句和LET子句,可以进行适合于XML的 高级査询。(不用LET子句则无法表达XML重构和聚合)。
在XQuery中,通过使用LET子句,还可以调用具有嵌套结构的查询,在该结构中使 用了多个FOR子句。
在当前可得的数据库产品中,经常执行LET子句,从而与用于功能型语言的处理系统 兼容。在执行过程(implementation)与用于功能型语言的处理系统兼容的情形中,当如上 所述对嵌套结构进行查询时,要考虑嵌套结构中外XQuery数据与内XQuery数据之间存在 输入输出关系。因此,当己经完成外XQuery数据的处理时,要将处理的各结果,作为变 量,转发到内XQuery数据以致能处理内XQuery数据。
为了使用XQuery进行高级査询,如上所述的嵌套结构不可或缺;然而,问题在于, 在执行过程与用于功能型语言的处理系统兼容的情形中,具有双重或更多嵌套结构所需的 计算量很大。
具体说来,因为用于功能型语言的处理系统是在已经处理外部的多重循环之后再处理 内部,内XQuery数据的处理将调用与多重循环中的循环数量相同的次数。因此,即使嵌 套结构中的嵌套数量仅增加一,计算量也会大量增加。

发明内容
根据本发明的一个方面,数据库处理设备包括接收单元,其从另一部分语法树接收请 求获取与结构化数据库中所包含的部分语法树中储存的各个元素(element)相同的元素对 应的信息的处理的获取请求,该处理是执行嵌套结构中多重循环的处理,并且每一个元素 在多重循环的每一个中被当作变量使用;识别符赋值单元,其将唯一识别符赋值到元素表 中储存的每一个记录,每一个元素表是为多重循环中的每一个循环创建的;结合单元,其 通过对已经赋值有识别符的元素表执行叉积结合处理来创建叉积结合表,在该叉积结合表 中将多个识别符赋值给每一个记录;信息获取单元,其基于每一个元素表中包括的元素, 获取在获取请求中指定为被获取目标的信息;单次循环表创建单元,其对每一个循环创建 储存记录的单次循环表,在该记录中所获取的信息,识别符,和元素互相对应;结合表创 建单元,其通过将对每一个循环分别创建的单次循环表结合来创建赋值有多个识别符的循 环间结合表;以及对应控制单元,其基于赋值给叉积结合表的多个识别符和赋值给循环间 结合表的多个识别符,控制叉积结合表中的记录与循环间结合表中的记录之间的对应。
根据本发明的另一方面,数据库处理方法包括从另一部分语法树接收获取请求获取与 结构化数据库中所含部分语法树中储存的各元素相同的元素项对应的信息的处理请求,该 处理是执行嵌套结构中多重循环的处理,并且每一个元素用作每一个多重循环中的变量; 将唯一的识别符赋值到元素表中储存的每一个记录,每一个元素表是为多重循环中的循环 的每一个创建的;通过对已经赋值有识别符的元素表执行叉积结合处理来创建叉积结合 表,在叉积结合表中将多个识别符赋值给每一个记录;基于每一个元素表中包括的元素, 获取在获取请求中指定为获取目标的信息;对每一个循环创建储存记录的单次循环表,在 该记录中所获取的信息,识别符,和元素互相对应;通过结合对各循环分别创建的单次循 环表,创建赋值有多个识别符的循环间结合表;以及基于赋值给叉积结合表的多个识别符 和赋值给循环间结合表的多个识别符,控制叉积结合表中的记录与循环间结合表中的记录 之间的对应。


图1是说明本发明第一实施例所对应的数据库处理设备的总体配置的示意图; 图2是说明代表具有分层结构的结构化文档的XML数据的实例的示意图; 图3是说明图2所示的XML数据,使用树结构表示的概念图,; 图4是说明XQuery数据的第一实例的示意图5是说明代表通过处理图4所示的XQuery数据获得的结果的XML数据的实例的示 意图6A是用来解释在其中对图4所示XQuery数据的输入执行传统的处理程序的第一实 例的示意图6B是用来解释在其中对图4所示XQuery数据的输入执行传统的处理程序的第二实 例的示意图7是由数据库处理设备执行的总体处理程序的流程图8是由嵌套XQuery计划创建单元和单次XQuery计划创建单元执行的计划创建程序 的流程图9是说明通过分解图4所示的XQuery数据所获得的单次XQuery数据的第一实例的 示意图10是说明通过分解图4所示的XQuery数据所获得的单次XQuery数据的第二实例 的示意图11是实现嵌套XQuery计划的计划创建程序的流程图,;
图12是用来解释由XQuery计划执行单元执行的计划执行处理的第一实例,连同所创 建表的示意图13是链接更新操作单元执行的链接更新处理中的程序的流程图; 图14是说明XQuery数据的第二实例的示意图15是用来解释XQuery计划执行单元执行的计划执行处理的第二实例,连同所创建 表的示意图16是说明XQuery数据的第三实例的示意图n是说明通过分解图16所示的XQuery数据所获得的单次XQuery数据的第一实例 的示意图18是说明通过分解图16所示的XQueiy数据所获得的单次XQuery数据的第二实例 的示意图19是说明通过分解图16所示的XQuery数据所获得的单次XQuery数据的第三实例 的示意图20是用来解释在创建根据对应于图17中所示单次XQuery数据的计划的表的处理 中的程序的示意图21是用来解释在创建根据对应于图18中所示单次XQuery数据的计划的表的处理 中的程序的示意图22是用来解释在创建根据对应于图19中所示单次XQuery数据的计划的表的处理 中的程序的图示;
图23是用来解释通过对图20到22所示处理中创建的表,执行叉积结合处理,自然 结合处理,和链接更新处理从图16所示的XQuery数据获取处理结果的处理的程序的图示;
图24是说明根据第三变型实例的数据库处理设备所创建的与图16中所示的XQuery 数据相对应的表的图示;以及
图25是说明数据库处理设备的硬件配置的图示。
具体实施例方式
如图1所示,本发明第一实施例所对应的数据库处理设备IOO包括査询接收单元101; 嵌套XQuery计划创建单元102;单次XQuery计划创建单元103; XQuery计划执行单元
104;叉积结合操作单元105;自然结合操作单元106;链接更新操作单元107;测试操作 单元108;数据获取操作单元109;索引(index)获取操作单元110;输出单元112;分层 表存储单元lll;和XML数据库113。
XML数据库113是在其中储存有代表具有多个分层等级结构的结构化文档的XML数 据的数据库。在XML数据中,组成结构化文档的每一个个体部分被称为"元素"。通过使 用标签(tag)将各个元素写入。具体说来,各元素的表示是通过在两个标签之间放置数据, 即指示元素开始的标签(以下称为"开始标签")和指示元素结束的标签(以下称为"结束标 签")。在各个元素中,放置在丌始标签和结束标签之间的文本数据,称为元素中包含的文 本元素(即,文本节点)。
在图2所示实例中,数据由多段放置在开始标签<1100丁〉和结束标签</11001>之间的 部分XML数据构成。这些部分XML数据包括放置在开始标签〈DEPARTMENT DATA〉 (DEPARTMENT DATA, 部门数据)和结束标签〈/DEPARTMENT DATA〉之间并与其所 属公司中的部门名称相关的一段数据;放置在开始标签〈DECADE DATA> (DECADE DATA,年代数据)和结束标签々DECADEDATA〉之间并按照R历年份与年代相关的一段 数据;以及放置在开始标签〈EMPLOYEEDATA〉 (EMPLOYEE DATA,雇员数据)和结束 标签々EMPOLYEE DATA〉之间并与一个或多个雇员相关的一段数据。如本文所述,图2 所示的XML数据配置为以使互相不同类型的数据储存在互相不同的部分语法树中以及在 互相不同的分层等级中。通过该安排, 一段XML数据可以在其中储存不同类型的数据。
图2所示的XML数据可以通过使用图3所示的语法树来表示。XML数据是通过以类 似于文档对象模型(DOM, Document Object Model)的格式使用目标和链接来表示。各个 对象表示不同的上述元件之一。
举例来说,目标El代表表示〈ROOT〉的元素。换而言之,语法树表示一个 <DEPARTMENT DATA>对象被直接放置在<ROOT>对象之下并通过表示父子 (parent-child)关系的链接结合到〈ROOT〉对象。
在以下部分中,语法树的任意部分将称为部分语法树。图3所示的语法树由包括部分 数据E2及其下级的部分语法树;包括年代数据E7及其下级的部分语法树;以及包括雇员 数据E7及其下级的部分语法树组成。这些部分语法树各自由更小的部分语法树组成。举 例来说,包括部门数据E2及其下级的部分语法树由包括部门数据E3及其下级的部分语法 树,以及包括部门数据E5及其下级的部分语法树组成。
表示上述的文本节点的文本对象放置在这些对象的最低分层等级中。这些文本对象分 别以矩形显示在图3的实例中。举例来说,对象E4是在其中储存"分散(DISTRIBUTION)" 作为文本元素的文本节点。
分层表存储单元111在其中储存多个分层表,该表在XQuery査询的执行过程中被创 建。这些表之间的分层关系是根据XQuery数据中的嵌套结构形成的。稍后详细说明。
在分层表存储单元lll中,层级是使用链接表达的。为表示表间层级所用的技术相当 于关系数据库(ROB)中"关系"的相关技术。因此,将省略对其的说明。各分层表由称为 列(column)和记录的元素组成,和传统RDB—样。
XML数据库113和分层表存储单元111可以各自配置有任意类型的常用存储手段,诸 如硬盘驱动器(HDD),光盘,存储卡,或随机存储器(RAM, Random Access Memory )。 在第一实施例中,XML数据库113和分层表存储单元111各自配置有HDD,以致数据永 久储存在其中。然而,,也可以根据需要接受数据被临时存储在RAM中的安排。
回到图1的说明,查询接收单元101接收被写入进XQuery以及关于XML数据库113 作出的查询请求的输入。
接下来,将从程序方面解释XQuery的语言规范。如上所述,XQuery包括FOR子句, LET子句,WHERE子句,禾BRETURN子句。使用FOR子句的语法表示为"for VARIABLE in EXPRESSION)"。使用FOR子句的语法表示指示满足表达式的值应该赋值到变量以致 产生循环的指令。
使用LET子句的语法表示为"let VARIABLE: = EXPRESSIONS使用LET子句的语
法表示指示满足表达式的值应该作为序列集合(aggregate)并赋值到变量的指令,。
使用WHERE子句的语法表示为"where EXPRESSION: WHERE子句根据表达式限 制重复处理的循环。换而言之,包括WHERE子句的指令句发出指令,其指示如果满足表 达式表达的条件应该重复执行循环处理,以及如果不满足表达式表达的条件应该跳过循 环。
使用RETURN子句的语法表示为"return EXPRESSIONS RETURN子句是用来输出通 过处理XQuery数据获得的结果,该结果为特定格式。因此,在包含RETURN子句的表达 式中,举例来说,可以写入包含变量的任意XML数据。
上述FLWR语法中使用的各变量以1字符串(CHARACTER STRING)"的形式定义。 在以此种方式定义变量的情形中,任意具有相同字符串的变量将视作相同变量,除了当由 于包括主查询和副查询的嵌套结构而说明(declare)有双重结构时。
在XQuery中,用来指定XML数据中元素之间的分层条件的路径算符可以被说明如下。 在以下部分中,将说明三种不同类型的路径算符实例路径算符的第一实例是"/",其表示 元素之间的父子关系。具体说来,算符表示位于"/"右侧的元素是位于"/"左侧元素的子。
路径算符的第二实例是"//",其表示元素之间的祖先-子孙(ancestor-descendant)关系。 具体说来,算符表示位于"//"右侧的元素是位于"//"左侧元素的子孙。最后,路径算符的第 三实例是".",其表示任意元素。路径算符不限于这些实例。XML数据可以包含由任意其 他算符表示的处理。
如上所述,XQuery是用来对XML数据进行查询的功能型语言。传统地,已经使用结 构化査询语言(SQL)作为对RDB进行查询的语言。差别之一在于,SQL是说明性语言, XQnery的特征在于是功能型语言。
查询接收单元101接收包含上述已经说明的一个或多个语法和算符的XQuery数据的 输入。假定XQuery数据已经从用户,另一系统等等输入。根据第一实施例的数据库处理 设备100的特征在于,对XQueiy数据执行的处理具有嵌套结构。接下来,将说明具有嵌 套结构的XQuery数据。
图1所示的XQuery数据发出请求,其请求"应该在XML数据库中产生作为根的子孙 的部门($x)与作为根的子孙的年代($y)的组合;对各个已产生的组合,应该提取作为 与组合(即,部门和年代)匹配的根的子孙的雇员($w);并且应该返回所提取的雇员的 文本(即,雇员姓名)作为序列"。
换而言之,图4所示的XQuery数据对XML数据库发出请求,其请求应该产生存储在
容纳在XML数据库中的部分语法树中的元素的组合;并且应该通过使用各个元素作为双 重循环中各循环中的变量从另一部分语法树提取匹配各个组合的信息。在当前实例的
XQuery数据中,双重循环指示循环,表示为"for $x in 〃DEPARTMENT"的循环,和表示为 "for $y in 〃DECADE"的循环。
在通过使用图4所示的XQuery数据处理图2所示的XML数据的情形中,数据库处理 设备100创建图5所示的XML数据。换而言之,数据库处理设备100通过使用根据图4 所示FOR子句,LET子句,和WHERE子句获得的数据,创建符合RETURN子句所定义 格式的XML数据。
接下来,将参照图6A和6B说明执行来使用XQuery处理XML数据的传统处理程序。 在传统的XQuery处理中,在LET子句在嵌套结构内部的情形中,将考虑嵌套结构的外部 和内部之间存在输入输出关系。换而言之,当已经完成对嵌套结构外部XQuery数据的处 理时,处理结果被指定为一组输入变量,并发送到内XQuery数据,以致能处理内XQuery 数据。在以下部分中,将说明特定的实例。
首先,通过使用数据获取操作单元,传统数据库处理设备从XML数据获取对应于Sx 的数据列,并创建表T1 (步骤S601),并且还从XML数据获取对应于Sy的数据列,并 创建表T2 (步骤S602)。步骤S601和S602处的处理对应于图4所示XQuery数据中的算 符"〃"。
上述处理中创建的表Tl被结构化以致包括具有一列的两个记录。如图6A所示,表 Tl中的记录在其中储存"分散"和"轻量(LIGHTWEIGHT)",分别对应于XQuery数据中 的"〃DEPARTMENT"。
类似地,表T2也被结构化以致包括具有一列的两个记录。表T2中的记录在其中储存 "1990s"和"2000s",分别对应于XQuery数据中的"〃DECADE" (DECADE,年代)。
接下来,传统数据库处理设备通过使用叉积结合操作单元对表T1和表T2执行叉积结 合操作,并创建表T3 (步骤S603)。如图6A所示,创建的表T3被结构化以致包括具有 两列的四个记录。
上述步骤S601到S603的处理对应于对嵌套结构外部执行的处理。在完成对嵌套结构 外部的处理之后,表T3中所存记录的信息被指定作为一组输入变量并被转发至内XQuery 数据以致能处理内XQuery数据。
首先,传统数据库处理设备复制表T3中的各记录。具体说来,传统数据库处理设备 复制表T3中的第一记录并创建被结构化以致只包括一个记录的表T4 (步骤S604)。类似
地,传统数据库处理设备复制表T3中的第二记录并创建表T5 (步骤S605),复制表T3 中的第三记录并创建表T6 (步骤S606),以及复制表T3中的第四记录并创建表T7 (步骤 S607)。
在这里假定,两种类型的索引数据被预先赋值给图2所示的XML数据库。 一种是索 引1,其通过使用"DEPARTMENT/text ( )" (DEPARTMENT,部门)作为关键字返回一组 "EMPLOYEE/text( )" (EMPLOYEE,雇员)。另一种是索引2,其通过使用"DECADE OF CORPORATION ENTRY/text ()"作为关键字返回一组"DEPARTMENT/text ()"。在该情形 中,"DECADE OF CORPORATION ENTRY"(进入公司的年代)表示雇员加入公司所处的 年代。
此后,通过使用索引获取操作单元,传统数据库处理设备通过使用表T4中的第一列 作为搜索关键字访问上述索引1。换而言之,因为表T4被结构化成具有一个记录,即["分 散","1900s"],传统数据库处理设备,通过使用索引获取操作单元,通过使用第一列"分 散"作为搜索关键字,访问索引l,并获取匹配搜索关键字所指示条件的组(歩骤S608)。 该处理中获得的组将发展成为表T8中的第三列。如图6A所示,由"HATTORI", "KANAI", 和"KUROKAWA"组成的所得到的组作为分离记录,被储存到表T8中。
此外,关于表T5,传统数据库处理设备还通过使用第一列"分散"作为搜索关键词访问 索引1并获取组从而创建表T9 (歩骤S609)。关于表T6和T7,传统数据库处理设备也执 行类似处理(步骤S610和S611)。
然后,通过使用数据获取操作单元,传统数据库处理设备通过使用表T8第三列中的 雇员姓名作为搜索关键字,从XML数据库获取对应于雇员姓名储存的"DECADE OF CORPORATION ENTRY"(步骤S612)。传统数据库处理设备进一步创建表T12,其中将 已经获得的"DECADE OF CORPORATION ENTRY"储存在第四列中。
类似地,关于表T9, T10,和Tll,传统数据库处理设备用通过使用第三列中的雇员 姓名作为搜索关键字,而获得的"DECADE OF CORPORATION ENTRY",创建表T13, T14, 和T15 (歩骤S613, S614,和S615)。
此后,通过使用测试操作单元,传统数据库处理设备通过使用比较条件检査以査看第 二列是否等于第四列来测试表T12并创建图6B所示的表T16 (步骤S616)。
类似地,传统数据库处理设备还通过使用比较条件检査以査看第二列是否等于第四列 来测试表T13和T14并创建图6B所示的表T17和T18 (步骤S617和S618)。此外,传统 数据库处理设备还通过使用比较条件检查以査看第二列是否等于第四列来测试表T15。然
而,由于不存在匹配的记录,最终的表在其中具有空白记录以及,没有表被创建(步骤
5619) 。
此后,传统数据库处理设备执行处理,使所创建的表T16到T18与表T3对应(步骤
5620) 。作为该处理的结果,传统数据库处理设备能够将单向链接从表T19粘贴到表T16, T17,和T18。
通过使用图4所示的XQuery数据中RETURN子句中所写的格式,调整T19, T16, T17,和T18中所存信息的形式,可以获取图5所示的XML数据。在上述传统数据库处理 设备执行的处理中,对叉积结合处理中所创建表中的各个记录执行处理。因此,将产生计 算量极大的问题。相反,通过具有下述配置,根据第一实施例的数据库处理设备100能阻 止计算量的增加。
嵌套XQuery计划创建单元102包括识别符赋值单元121,对应控制单元122,表创建 单元123,和索引信息获取单元128。在查询接收单元IOI己经接收作为输入的XQuery数 据具有嵌套结构的情形中,嵌套XQuery计划创建单元102输出用来提取各自作为嵌套结 构一部分的XQuery数据段以及处理嵌套结构的计划。稍后详细说明所提取的XQuery数据 段。
在作为输入被查询接收单元101接收的XQuery数据没有嵌套结构的情形中,单次 XQuery计划创建单元103输出用来处理XQuery数据的计划。
此外,在嵌套XQuery计划创建单元102从作为输入被査询接收单元101接收的具有 嵌套结构的XQuery数据中提取每一段都是嵌套结构的一部分的多段XQuery数据的情形 中,单次XQuery创建单元103对每一段被提取的XQuery数据段输出用于处理XQuery数 据段的计划。各输出计划表示为由下述各类操作单元执行的处理序列。由单次XQuery计 划创建单元103创建的计划输出到嵌套XQuery计划创建单元102。接下来,将说明创建用 于处理XQuery数据的计划的组成元素。
表创建单元123包括元素表格创建单元124,单次循环表创建单元125,结合表创建 单元126,和叉积结合单元127。表创建单元123创建用于创建表的计划。根据创建的计 划,通过XQuery计划执行单元104创建表。稍后将详细说明创建表的处理。接下来,将 说明由组成元素创建的表创建计划。
对XQuery嵌套结构中多重循环中的各个循环,元素表格创建单元124创建计划,用 于创建在其中表示为循环中的变量的元素被储存为分离记录的元素表。根据所创建的计 划,由多个下述操作单元通过XQuery计划执行单元104,创建元素表格。
对XQuery嵌套结构中多重循环中的各个循环,单次循环表创建单元125创建用于创 建在其中储存如下记录的单次循环表的计划,在记录中中使元素表格中储存的元素,由下 述识别符赋值单元121赋值的识别符(即,ID),和由下述索引信息获取单元128获取的 索引信息互相对应。根据所创建的计划,通过XQuery计划执行单元104创建单次循环表。
叉积结合单元127创建用于创建上级(superordinate)表(g卩,叉积结合表)的计划, 在上级表中通过对根据识别符赋值单元121创建的计划赋值有ID的元素表执行叉积结合 处理,将多个ID赋值给各个记录。根据叉积结合单元127创建的计划,通过XQuery计划 执行单元104,创建上级表。稍后详细说明上级表。
结合表创建单元126创建用于创建循环间结合表的计划,在循环间结合表中通过结合 单次循环表,由识别符赋值单元121赋值的互不相同的ID分别被储存在多个列中,其中 每一个单次循环表由单次循环表创建单元125为不同的循环之一创建。根据所创建的计划, 通过XQuery计划执行单元104创建循环间结合表。
识别符赋值单元121创建用于将唯一的ID赋值到为不同的循环之一创建的元素表格 中的各个记录的计划,。根据所创建的计划,通过XQuery计划执行单元104将唯一的ID 赋值到各记录。稍后将详细说明赋值ID的处理。
根据各上级表中的各元素(即,记录),索引信息获取单元128创建计划,用于获取 在XQuery查询请求中指定为获取目标的信息作为索引信息。索引信息获取单元128所创 建的计划进一歩包含将获取的索引信息田加到上级表中的各记录的处理,。根据所创建的 计划,对上级表中的各记录,通过XQuery计划执行单元104,获取对应的索引信息段并添 加到记录。
对应控制单元122创建用于控制(i)通过对赋值有唯一的ID的元素表格执行叉积结 合处理所得表中的记录和(ii)由结合表创建单元126创建的循环间结合表中的记录之间 的对应的计划。因此,通过XQuery计划执行单元104,控制记录与循环间结合标志中记录 的对应。为控制对于记录的对应,使用表中储存的ID。此外,根据表之间的对应关系,下 述XQuery计划执行单元104执行计划。稍后将详细说明该处理。
通过上述方式,已经由嵌套XQuery计划创建单元102和单次XQuery计划创建单元 103创建的计划,由XQuery计划创建单元102放到一起并输出到XQuery计划执行单元104。
XQuery计划执行单元104根据已经由嵌套XQuery计划创建单元102输入到其中的计 划(包括创建表,赋值识别符,和控制记录间对应的计划),执行处理。并且,为了根据 输入计划执行处理,XQuery计划执行单元104调用稍后将说明的各类操作单元中的算符。
由XQuery计划执行单元104使用的,以及具有诸如叉积结合处理,自然结合处理, 和链接更新处理的基础功能的指令将被称为算符。算符的实例包括用来更新分层表存储单 元111中所存的表的算符。算符之间的输入和输出是通过使用分层表中的指针和ID来实 现的。
叉积结合运行单元105执行分层表之间的叉积操作。叉积操作相当于对RDB执行的 叉积操作。举例来说,叉积结合操作单元105根据已经由叉积结合到那元127创建的计划, 对元素表格执行叉积结合处理。
自然结合操作单元106执行分层表之间的自然结合操作。自然结合操作相当于对RDB 执行的自然结合操作。
链接更新操作单元107执行操作以更新用来链接位于互不相同分层等级中的多个表的 ID。在ID被分别储存在作为诸如叉积结合处理的结合处理结果而获得的表的多个列的每 一个中的情形中,根据第一实施例的链接更新操作单元107执行处理以用唯一的链接ID 更新各ID组合。
测试操作单元108执行使用例如相等符号或不等符号的比较操作。比较操作相当于 RDB中的选择操作。
数据获取操作单元109通过执行朝祖先向上遍历分层等级,或朝子孙向下遍历分层等 级的操作,获取所需数据,并通过跟踪将元素互相结合的链接,获取文本,该元素包括在 XML数据库U3储存的XML数据中。
索引获取操作单元IIO访问已被赋值到XML数据库113中的XML数据的索引数据, 并获取被储存作为索引数据的信息。通过以上述方式组合索引获取操作单元和数据获取操 作单元,能够以高速从XML数据库113获取所需数据。
作为XQuery计划执行单元104所执行操作的结果,数据单元112输出XML数据,其 匹配已经输入作为査询请求的XQuery数据。
接下来,将参照图7说明数据库处理设备100执行的总体处理程序。
首先,査询接收单元IOI从用户等接收XQuery数据的输入(步骤S701)。
其次,嵌套XQuery计划创建单元102和单次XQuery计划创建单元103基于已经输入 的XQuery数据,创建将要执行的计划(步骤S702)。稍后详细说明该处理程序。
此后,XQuery计划执行单元104通过使用各类操作单元,执行所创建的计划(步骤 S703)。稍后详细说明该处理程序。
最后,输出单元112输出已经创建作为XQuery计划执行单元104所执行计划的执行
结果的XML数据(步骤S704)。
作为上述处理程序的结果,数据库处理设备100可以输出XML数据,该数据对应于 己经从用户等等作为输入接收的XQuery数据。
接着,讲参照图8说明图7中步骤S702处所示,并由嵌套XQuery计划创建单元102 和单次XQuery计划创建单元103执行来创建计划的程序。
首先,嵌套XQuery计划创建102对已经输入的XQuery数据执行语法分析(歩骤S801)。 语法分析可以由如Yacc & Lex的编译工具方便地执行。
接着,嵌套XQuery计划创建单元102基于语法分析的结果,判断XQuery数据是否包 含任何嵌套结构(歩骤S802)。
在嵌套XQuery计划创建单元102已经判定XQuery数据不包含嵌套结构的情形中(步 骤S802:否),嵌套XQuery计划创建单元102将语法分析的结果输出到单次XQuery计划 创建单元103。因此,单次XQuery计划创建单元103创建单结构计划,以致可以基于已经 输入的XQuery数据执行处理(歩骤S803)。通过使用不包含嵌套结构的语法树来创建计 划的方法,可以通过使用传统技术来实现,例如在标题为"结构化文档检索方法,结构化文 档检索设备,和结构化文档检索系统"的第2001-147933号日本专利公开公报(KOKAI) 中披露的技术。
与此相反,在嵌套XQuery计划创建单元102已经判定XQuery数据包含一个或多个嵌 套结构的情形中(歩骤S802:是),嵌套XQuery计划创建单元102执行处理以分解已经 输入的XQuery数据(步骤S804)。
分解处理表示将图4所示XQuery数据分解为图9所示的XQuery数据段和图10所示 的另一 XQuery数据段的处理。图4所示的XQuery数据可以通过跟踪XQuery数据中包含 的路径算符,分解为两段XQuery数据。具体说来,因为以"for $x in 〃DEPARTMENT"开始 的XQuery数据段和以"for $y in 〃DACADE"开始的另一 XQuery数据段通过嵌套方式互相 结合,嵌套XQuery计划创建单元102执行处理以将XQuery数据分解为这些XQuery数据 段。因此,将产生图9所示的XQuery数据P和图10所示的另一 XQuery数据段。在实际 处理中,分解处理的结果可以是语法树或分解元素,而非XQuery数据段。
已经作为分解处理的结果获得并且不包含嵌套结构的各XQuery数据段,称为单次 XQuery数据段。此外,因为已经作为分解处理获得的单次XQuery数据段涉及诸如由相等 符号表示的条件的比较条件,将储存比较条件相关的信息。可以通过使用传统技术,实现 用来执行分解处理的方法。因此,将省略其说明。
接着,嵌套XQuery计划创建单元102判断是否已经创建了所有的用于对作为分解处 理结果获得的单次XQuery数据段执行处理的单结构计划(步骤S805)。在嵌套XQuery计 划创建单元102己经判定并未创建所有单结构计划的情形中(步骤S805:否),单次XQuery 计划创建单元103基于作为分解处理结果获得的单次XQuery数据段,创建一个或多个用 来执行处理的单结构计划(步骤S806)。此后,嵌套XQuery计划创建单元102在歩骤S805 再次判断是否已经创建了所有计划。
与此相反,在嵌套XQuery计划创建单元102己经判定已经创建了所有用于对作为分 解处理结果获得的单次XQuery数据段执行处理的单结构计划的情形中(步骤S805:否), 创建嵌套结构结合计划以致将已经创建的单结构计划结合到一起,同时考虑作为分解处理 结果获得的单次XQuery数据段之间的比较条件,比较条件已经被预先储存。然后,通过 将己经创建的单结构计划与嵌套结构结合计划组合,创建详细计划(步骤S807)。因此, 处理完成。
嵌套结构结合计划表示,通过使用三个操作单元的一个或多个,即叉积结合操作单元, 自然结合操作单元,和链接更新操作单元,将根据上述多个单结构计划所执行处理的结果 结合的计划。此后,XQuery计划执行单元.104根据巳经在步骤S807和S803处创建的计 划,执行处理。接着,详细说明在步骤S807处执行的创建计划的处理。
参照图ll,说明在图8中步骤S807处所示的创建计划的程序。并参照图12,详细说 明所创建的表。
首先,嵌套XQuery计划创建单元102中包括的元素表格创建单元124创建用于获得 单结构计划所对应循环中所对应元素的数据的计划,并创建元素表格(步骤SllOl)。当执 行该计划时,使用数据获取操作单元109来获取元素的数据。举例来说,对于图9所示单 次对应于XQuery数据的单结构计划,从图3所示部门数据及其下级获取"分散"和"轻量", 以致创建包括具有一列的两个记录的元素表格。该处理对各单结构计划执行。
接着,识别符赋值单元121创建用于对己经创建的元素表格中的各记录赋值唯一的ID 的计划,(步骤S1102)。因此,上述元素表格成为包括具有两列的两个记录的元素表格。
此后,表创建单元123中包括的叉积结合单元127创建用于通过对已经赋值唯一的ID 的元素表格执行叉积结合处理创建上级表的计划(步骤S1103)。
根据第一实施例,表的创建是通过跟踪XQuery数据中嵌套结构的分层等级。对应于 上级分层等级的表称为上级表,而位于上级表下级的表称为下级表。上级表对应于主査询, 而下级表对应于副査询。然而,表的实例不限于上级表和下级表。在已经输入的XQuery
数据包含较多嵌套结构的情形中,可以根据嵌套结构,创建对应于更多数量的分层等级的 表。
然后,单次循环创建表125创建用于通过复制元素表格创建下级表的计划(步骤 S1104)。
此后,索引信息获取单元128创建计划,其用于由索引获取操作单元110,对下级表 中的各记录,获取对应的索引信息段,并将获得的各段索引信息添加到下级表中的对应记 录(歩骤S1105)。
然后,结合表创建单元126创建用于通过结合下级表创建下级结合表的计划(歩骤 S1106)。该结合处理是通过使用根据由上述嵌套XQuery计划创建单元102创建的单结构 计划的结合方法实现。
此后,根据来自对应控制单元122的指令,链接更新操作单元107创建用于通过对上 级表和下级结合表执行链接更新处理以执行控制上级表中的记录与下级表中的记录之间 的对应的计划(歩骤S1107)。稍后详细说明该处理程序。
通过执行在在上述处理中己经创建的计划,在接收到具有嵌套结构的XQuery数据作 为输入的情形中,可以相对于传统处理,减少计算量。接着,为了说明计算量减少,将参 照图12,连同所创建表的实例,说明上述处理中已创建计划的执行程序。用为处理目标的 XML数据是图2中所示数据。
首先,根据元素表格创建单元124已经创建的计划,数据获取操作单元109获取图9 中Sx对应的数据列(步骤S1201)。因此,元素表格创建单元124创建元素表格HT1。
并且,数据获取操作单元109获取图10中Sy对应的数据列(步骤S1202)。因此,XQuery 计划执行单元104创建元素表格HT2。己经创建的元素表格HT1和HT2被储存到分层表 存储单元111中。步骤S1201和S1202处的处理对应于XQuery中的算符"/"。
接下来,根据已经由识别符赋值单元121创建的计划,XQuery计划执行单元104将唯 一的ID"A1"和"A2"分别赋值到所创建元素表格HT1中第二列中的记录(步骤S1203),从 而创建元素表格HT3。
并且,根据已经由识别符赋值单元121创建的计划,XQuery计划执行单元104将唯一 的ID"B1"和"B2"分别赋值到所创建的元素表格HT2中第二列中的记录(步骤S1204),从 而创建元素表格HT4。
此后,根据己经由叉积结合单元127创建的计划,叉积结合操作单元105通过对元素 表格HT3和元素表格H4执行叉积结合处理,创建上级表HT5 (步骤S1205)。
然后,根据已经由单次循环表创建单元125创建的计划,XQuery计划执行单元104 复制元素表格HT3,从而创建下级表HT6 (歩骤S1206)。并且,根据已经由单次循环表创 建单元125创建的计划,XQuery计划执行单元104复制元素表格HT4,从而创建下级表 HT7 (歩骤S1207)。
如上所述,下级表HT6由两个记录组成,即["A1","分散"]和["A2","轻量"]。在该 情形中,根据已经由索引信息获取单元128创建的计划,索引获取操作单元110通过使用 第二列中指示的部门作为搜索关键字,执行获取索引信息的处理(步骤S1208)。为获取索 引信息,将使用以上已经说明为传统技术的索引1。此后,根据己经由单次循环表创建单 元125创建的计划,XQuery计划执行单元104将由所得索引信息组成的组赋值到下级表 HT6,到其第三列中,从而创建下级表HT8。
此外,通过执行与下级表HT7相同的处理,XQuery计划执行单元104创建下级表HT9 (歩骤S1209)。
根据图9所示对应于单次XQuery数据的单结构计划,执行创建表的处理,该处理从 元素表格HT1开始,通过元素表格HT3和下级表HT6,然后,是下级表HT8。另一方面, 根据图10所示单次XQuery数据对应的单结构计划,执行创建表的处理,该处理从元素表 格HT2开始,通过元素表格HT4和下级表HT7,然后,是下级表HT9。其后的处理,即 步骤S1205的叉积结合处理,步骤S1210的自然结合处理,和歩骤S1211的链接更新处理, 对应于在附加图8中步骤S807处所示的嵌套结构结合计划中创建的算符。
此后,根据已经由结合表创建单元126创建的计划,XQuery计划执行单元104通过结 合下级表HT8和下级表HT9,创建下级结合表HTIO (步骤S1210)。在该结合处理中,将 使用由自然结合操作单元106执行的自然结合处理。
然后,根据已经由对应控制单元122创建的计划,链接更新操作单元107对下级表HT5 和下级结合表HTIO,执行链接更新处理,从而创建下级表HTll和下级结合表HT12,并 控制下级表HTll中的记录与下级结合表HT12中的记录之间的对应(歩骤S1211)。换而 言之,链接更新操作单元107用排列为单结构列(即,单链接列)的唯一的ID"C1",更新 出现在下级表HT5的第三和第四列(称为"复杂链接列")中,和下级结合表HT10的第一 和第二列(也称为"复杂链接列")中"A1"和"B1"的各个组合。以类似方式,链接更新操作 单元107用排列为单结构列的唯一的ID,更新其他复杂链接列中的各个组合。因此,记录 之间的对应关系变得明显,并且处理结宋,各个唯一的链接ID可以具有任意值。举例来 说,代替C1, C2等,可以采用以升序排列的自然数诸如1, 2, 3,等等,来赋值作为唯
一的ID。该处理的实施可以通过使用能以高速读取的存储数据结构,诸如散列表。稍后详 细说明该处理程序。
此后,XQuery计划执行单元104调整已经创建的下级表HT11和下级结合表HT12的 形式,以致其以RETURN子句中所写的格式表示XML数据。因此,将获得如图5所示的 XML数据。
综上所述,根据传统处理程序,在完成外XQuery数据处理之后,将己完成处理的结 果作为输入变量组,转发到内XQuery数据对应的处理,以致能处理内XQuery数据。与此 相反,在第一实施例所对应的处理程序中,虽然以相同方式将结果发送到内XQuery数据 对应的处理,本发明与传统技术的不同在于,不复制来自叉积结合操作单元的输出结果, 并且不复制叉积结合操作单元所创建表中的各记录以致创建表。
换而言之,在图6A和6B所示的传统处理程序中,对嵌套结构的处理要执行与上级分 层等级中多重循环中的循环数量相同的次数;然而,在图12所示的处理程序中,不存在 此种重复。因此,当图6A和6B所示实例中处理的执行次数与图12所示实例中处理的执 行次数相比时,很明显算符的执行次数存在差别。并且,对于处理之间的差别,应当理解 的是,当上级分层等级中多重循环的循环数增加时,性能的差别水平将更大。
接下来,将参照图13说明链接更新操作单元107根据已经由对应控制单元122创建 的计划执行链接更新处理所执行的处理程序。
首先,链接更新操作单元107判断是否已经完全扫描了上级表中的所有记录(步骤 S1301)。在链接更新操作单元107已经判定并未完全扫描上级表中的所有记录的情形中(步 骤S130h否),链接更新操作单元107用唯一的链接ID,更新尚未扫描的记录中复杂链 接列中所存的各个ID组合(步骤S1302)。
此后,链接更新操作单元107将更新信息储存到散列表中(步骤S1303)。
与此相反,在结合更新操作单元107已经判定已经完全扫描了上级表中的所有记录的 情形中(步骤S1301:是),链接更新操作单元107判断是否已经扫描了下级结合表中的所 有记录(步骤S1304)。在链接更新操作单元107已经判定并未扫描所有记录的情形中(步 骤S1304:否),链接更新操作单元107通过参照散列表,用唯一的链接ID,更新尚未扫 描的记录中复杂链接列中所存的各个ID组合(步骤S1305)。
与此相反,在链接更新操作单元107已经判定已经扫描了所有记录的情形中(步骤 S1304:是),处理结束。
通过执行上述处理程序,可以控制上级表中的记录和下级结合表中的记录之间的对
应。
本发明不限于上述示范性实施例。可以用以下实例中说明的诸多方式对本发明实施变型。
在上述第一实施例中,说明了仅用自然结合处理将下级表结合到一起的实例;然而, 可以用来将下级表结合到一起的方法,不限于自然结合处理。
在本发明的第一变型例中,将说明如下实例,其中除了自然结合处理外,还执行测试 处理。数据库处理设备100的配置与第一实施例的对应设备相同。因此,将省略其说明。
在第一变型例中,假定查询接收单元IOI已经收到图14所示XQuery数据的输入。图 14所示XQuery数据与图4所示XQuery的不同在于,在用参考字符1401表示的行中添加 了"and $x/@id!=$y/@id"。
将参照图15说明根据该条件下创建的计划将要执行的处理程序。
首先,以相同方式,执行第一实施例所对应图12所示的步骤S1201到S1210,根据已 经创建的计划,创建上级表HT5,并且,用自然结合处理将下级表HT'8和HT'9结合到 --起(歩骤S1501到S1510)。
此后,在根据第一变型例的数据库处理设备100中,测试操作单元108对己经作为对 下级表所执行自然结合处理的结果而创建的表,执行测试处理(步骤S1511)。在该测试处 理中,只有匹配条件"and sx/(gidhsy/(gid"的记录,将从已经作为自然结合处理的结果而创 建表中提取。因此,将创建下级结合表HT'IO。
此后,根据已经由对应控制单元122船检的计划,链接更新操作单元107对上级表HT'5 和下级结合表HT'10执行链接更新处理,丛而创建上级表HT,ll和下级结合表HT'12,并 控制上级表HT'll中的记录与下级结合表HT'12中的记录之间的对应(步骤S1512)。
如第一变型例所示,在对下级表执行的结合处理中,可以除了自然结合处理之外,还 执行测试处理。如本文所述,对下级表执行的结合处理可以根据已经输入的XQuery数据 而不同。换而言之,根据已经输入的XQuery数据,可以通过使用并非自然结合处理的结 合处理,来结合下级表。
在上述第一实施例中,说明了在XQuery数据归因于嵌套结构包含双重循环的情形中 执行的处理。然而,示范性实施例不限于其中XQuery数据包含双重循环的实例。作为本 发明的第二变型例,将说明本发明被应用到XQuery数据包含三个或更多重循环的情形的 实例。数据库处理设备100的配置与第一实施例对应的设备相同。因此,将省略其说明。
在第二变型例中,假定数据库处理设备100中包括的査询接收单元101已经收到图16
所示的XQuery数据。图16所示XQuery数据与图4所示XQuery数据的不同在于,在用 参考字符1601表示的行中附加了"and $d in (MALE, FEMALE)" (MALE,男性;FEMALE,
女性)。
因此,嵌套XQuery计划创建单元102从图16所示XQuery数据,提取图17所示单次 XQuery数据段。然后,单次XQuery计划创建单元103创建对应于这些单次XQuery数据 段的计划。
此后,XQuery计划提取单元104执行对应于图17到19所示的单次XQuery数据段的 计划。对应于图17所示单次XQuery数据段的处理显示在图20中。并且,对应于图18所 示单次XQuery数据段的处理显示在图21中。此外,对应于图19所示单次XQuery数据段 的处理显示在图22中。
在图20所示的处理中,假定,以第一实施例中的相同方式,在已经创建涉及部门数 据的元素表格HA.l之后,通过复制元素表格HA.l,创建分层表HA.2。并且,通过执行 与索引获取处理相同的处理,创建分层表HA.3。
在图21所示的处理中,假定,以第一实施例中的相同方式,在已经创建涉及年代数 据的元素表格HB.1之后,通过复制元素表格HB.l,创建分层表HA.2。并且,通过执行与 索引获取处理相同的处理,创建分层表HB.3。
在图22所示的处理中,因为XML数据不包含涉及男性或女性的元素,将创建空白表 HC.l。此后,作为诸如索引获取处理等处理的对应处理,附加MALE和FEMALE作为分 离记录,并且赋值包括唯一的ID的列,以致创建分层表HC2。然后,通过复制分层表HB.2, 创建表HC.3。
使在图20到22所示处理中已经创建的表互相对应的处理被显示在图23中。如图23 中,通过重复处理组,其由两个叉积结合处理, 一个(自然)结合处理,和两个链接更新 处理组成,重复次数等于从XQuery数据中嵌套结构所引起循环的次数减去一所获得的数 量,可以实现XQuery数据请求的处理。因此,可以将本发明应用到具有如下嵌套结构的 XQuery数据,该结构具有三重或更多重循环。
具体说来,在执行叉积结合处理,另一叉积结合处理,和自然结合处理之后,该处理 是对图20所示元素表格HA.l,分层表HA.2,和分层表HA.3,以及图21所示元素表格 HB.l,分层表HB.2,和分层表HB.3执行的,将对作为结合处理的结果所得的表执行链接 更新处理。因此,将创建叉积结合表HAB.1',叉积结合表HAB.2",和自然结合表HAB.3'。
此后,在叉积结合处理之后,将执行另一叉积结合处理,和自然结合处理,该处理是
对图22所示的元素表格HC.1(其在第二变型例中是空白表),分层表HC2,和分层表HC3, 以及已经从上述处理获取的叉积结合表HAB.1',叉积结合表HAB.2",和自然结合表 HAB.3'执行的,并对作为结合处理结果获得的表执行链接更新处理。因此,将创建叉积结 合表HABC.r,叉积结合表.HABC.2",和自然结合表HABC.3,。
在上述处理中,举例来说,叉积结合操作单元105通过对已经执行过链接更新处理的 叉积结合表HAB.l,和元素表格HC.l执行叉积结合处理,来创建叉积结合表HABC.l。并 且,叉积结合操作单元105通过对己经执行过链接更新处理的叉积结合表HAB.2"和并未 执行过结合处理的分层表HC.2执行叉积结合处理,来创建叉积结合表HABC.2。在该处理 中,因为表HC.l是空白表,叉积结合表HAB.1'成为叉积结合表HABC.l。
并且,结合表创建单元126创建计划,用于通过对并未执行过结合处理的表HC.3和 已经执行过链接更新处理的自然结合表HAB.3'执行自然结合处理,来创建自然结合表 HABC.3。
此外,对应控制单元122创建用于通过执行链接更新处理来控制叉积结合表HABC.l 与叉积结合表HABC2之间的对应性计划,以及用于通过执行链接更新处理,来控制已经 被控制的叉积结合表HABC.2'和自然结合表HABC.3之间的对应的计划。因此,将产生下 述对应关系。
如图24所示,用唯一的识别符"K1"到"K4",使已经在上述处理中创建的表HABC.1' 和HABC.2"互相对应。并且,用唯一的识别符"J1"到"J5",使表HABC.2"和HABC.3'互相对应。
在根据第二变型例的数据库处理设备100中,通过根据上述程序执行处理,即使在基 于归因于嵌套机构具有包含三重或更多重循环的多重循环的XQuery数据来处理XML数据 的情形中,也可以减少计算量。
如图25所示,作为其硬件配置,上述数据库处理设备100包括只读存储器(ROM) 2502,其在其中储存例如用来执行上述处理的数据库处理计算机程序,中央处理器(CPU) 2501,其根据ROM 2501中储存的计算机程序,控制数据库处理设备100的组成元素,随 机读写存储器(RAM) 2503,其在其中储存各种所需数据,通信接口 (I/F) 2504,其建立 到网络的结合,并执行通信,以及总线2505,其使这些组成元素互相结合。
在其中数据库处理计算机程序以可安装格式或可执行格式的文件形式被记录在诸如 高密度磁盘只读存储器(CD-ROM),软盘(注册商标),磁盘(FD),数字多功能光盘(DVD) 等上提供的安排也可接受。
在该情形中,计算机程序加载到主存储装置(例如,RAM 2503)中,其从记录介质 读取并在数据库处理设备IOO中执行,以致在上述软件配置中说明的组成元素产生在主存 储装置中。
另一安排也可接受,其中示范性实施例所对应的计算机程序储存在计算机中,该计算 机结合到诸如英特网的网络,以致计算机程序通过网络下载提供。
已经通过示范性实施例说明本发明;然而,可以对这些示范性实施例进行诸多变型和 改进。
对本领域的技术人员而言,很容易实现其他优点和修改。因此,本发明在其更广大方 面并不限于本文说明的具体细节和典型实施例。相应地,可以做出诸多修改,而不背离总 体发明概念的精神和范围,该总体发明概念由附加的权利要求及其等价物定义。
权利要求
1. 一种数据库处理设备,其特征在于,包含接收单元,其从另一部分语法树接收请求获取与结构化数据库中包含的部分语法树中储存的各个元素相同的元素相对应的信息的处理的获取请求,所述处理是执行嵌套结构中多重循环的处理,并且所述每一个元素用作每一个所述多重循环中的变量;识别符赋值单元,其将唯一的识别符赋值到元素表中储存的每一个记录,每一个所述元素表是为所述多重循环中的每一个循环创建的;结合单元,其通过对已经赋值有所述识别符的所述元素表执行叉积结合处理来创建叉积结合表,在所述叉积结合表中将多个所述识别符赋值给每一个所述记录;信息获取单元,其基于每一个所述元素表中包括的所述元素获取在所述获取请求中指定为获取目标的信息;单次循环表创建单元,其对每一个所述循环创建储存所述记录的单次循环表,在所述记录中所获取的信息,所述识别符,和所述元素互相对应;结合表创建单元,其通过将对每一个所述循环分别创建的所述单次循环表结合来创建赋值有多个所述识别符的循环间结合表;以及对应控制单元,其基于赋值给所述叉积结合表的多个所述识别符和赋值给所述循环间结合表的多个所述识别符,控制所述叉积结合表中的所述记录与所述循环间结合表中的所述记录之间的对应。
2. 如权利要求l所述的设备,其特征在于,所述接收单元从另一部分语法树接收获取请求,以请求获取与结构化数据库中包含的 部分语法树中储存的各元素相同的元素对应的信息的处理,所述处理是执行所述嵌套结构 中所述多重循环的处理,并且所述各个元素用作三重或更多重循环中的循环的每一个中的 变量;所述结合单元通过对已被所述对应控制单元控制的第一叉积结合表和未被所述对应 控制表控制的第一单次循环表执行叉积结合处理,进一歩创建第一多重叉积结合表,并且 还通过对已被所述对应控制单元控制的第二叉积结合表和未被所述对应控制表控制的第 二单次循环表执行叉积结合处理来创建第二多重叉积结合表,结合表创建单元进一歩通过结合未被对应控制单元控制的第三单次循环表和已被对 应控制表控制的第三循环间结合表来创建多重循环间结合表,以及 对应控制单元进一步控制所述第一多重叉积结合表和所述第二多重叉积结合表之间 的对应,并且还控制已被控制的所述第二多重叉积结合表与所述多重循环间结合表之间的 对应。
3. 如权利要求1所述的设备,其特征在于,进一步包含更新单元,其用唯一的链接 识别符,更新每一个多个所述识别符的组合。
4. 如权利要求1所述的设备,其特征在于,所述结合表创建单元在结合多个所述单 次循环表之后,根据所述获取请求中的嵌套结构中指示的结合条件,执行预定操作。
5. 如权利要求l所述的设备,其特征在于,所述接收单元接收XQuery格式的所述获 取请求,以请求对XML格式的所述结构化数据库执行的获取处理。
6. —种数据库处理方法,其特征在于,包含从另一部分语法树接收获取请求,以请求获取与结构化数据库中包含的部分语法树中 储存的各元素相同的元素对应的信息的处理,所述处理是执行嵌套结构中多重循环的处 理,并且每一个元素用作所述多重循环中的每一个的变量;将唯一的识别符赋值到元素表中储存的每一个记录,每一个所述元素表是为所述多重 循环中的每一个循环创建的;通过对已经赋值有所述识别符的所述元素表执行叉积结合处理来创建叉积结合表,在 所述叉积结合表中将多个所述识别符赋值给每一个所述记录;基于每一个所述元素表中包括的所述元素获取在所述获取请求中指定为获取目标的信息;对每一个所述循环,创建储存所述记录的单次循环表,在该所述记录中所获取的信息, 所述识别符,和所述元素互相对应;通过将对每一个所述循环分别创建的所述单次循环表结合,创建赋值有多个所述识别 符的循环间结合表;以及基于赋值给所述叉积结合表的多个所述识别符和赋值给所述循环间结合表的多个所 述识别符,控制所述叉积结合表中的所述记录与所述循环间结合表中的所述记录之间的对 应。
7. 如权利要求6所述的方法,其特征在于,在从所述另一部分语法树接收请求获取对应于与结构化数据库中所含部分语法树中 储存的各元素相同的元素的信息的处理的所述获取请求时,所述处理是执行所述嵌套结构 中所述多重循环的处理,并且所述每一个元素用作三重或更多重循环中所述循环中的每一 个的变量;在创建所述叉积结合表时,通过对己经在控制过程中被控制的所述叉积结合表和未在 控制过程中被控制的所述单次循环表中的一个执行叉积结合处理来进一步创建多重叉积 结合表;在创建所述循环间结合表时,通过未在控制过程中被控制的结合单次循环表中的一个 和已在控制过程中被控制的循环间结合表来进一步创建多重循环间结合表,以及在控制过程中,进一步控制所述叉积结合表和所述多重叉积结合表之间的对应,并且 还控制已被控制的所述多重叉积结合表与所述多重循环间结合表之间的对应。
8. 如权利要求6所述的方法,其特征在于,进一步包含用唯一的结合识别符,更新 每一个多个所述识别符的组合。
9. 如权利要求6所述的方法,其特征在于,在创建所述循环间结合表时,在结合多 个所述单次循环表之后,根据所述获取请求中的所述嵌套结构中指示的结合条件,执行预 定操作。
10. 如权利要求6所述的方法,其特征在于,在接所述收获取请求时,接收XQuery 格式的所述获取请求,以请求对XML格式的所述结构化数据库执行的获取处理。
全文摘要
本发明提供一种用于处理数据库的设备和方法。接收获取请求,以请求通过使用多重循环,从结构化数据库获取信息。将唯一的识别符赋值到为循环中的不同个创建的元素表中的每一个记录。通过对元素表执行叉积结合处理,创建叉积结合表,以致从元素表获取在获取请求中指定为获取目标的信息。在该表中对各记录赋值有多个识别符。对每一个循环,创建储存记录的单次循环表,在该表中所获取的信息,识别符,和元素互相对应。通过结合多个单次循环表,创建循环间结合表。基于包含在叉积结合表和循环间结合表中的识别符,控制叉积结合表中的记录与循环间结合表中的记录之间的对应。
文档编号G06F17/30GK101388034SQ200810160838
公开日2009年3月18日 申请日期2008年9月11日 优先权日2007年9月11日
发明者服部雅一 申请人:株式会社东芝
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1