用于预处理XQuery的方法和数据库系统的制作方法

文档序号:6466534阅读:135来源:国知局
专利名称:用于预处理XQuery的方法和数据库系统的制作方法
技术领域
本发明涉及一种用于预处理XQuery的方法和数据库系统。
背景技术
XML数据库由于其灵活性成为现代信息社会中越来越重要的技术工 具。响应于査询而高效检索XML数据是操作XML数据库的几乎任何数据 库系统的主要目的。
在XML数据库上执行查询以图1中示意性示出的多个步骤来执行。 首先,解析通常以XML査询语言(XQuery)定义的原始査询,即识别査 询的不同标志并且随后将查询表示为结构化对象,其通常称为抽象语法树 (AST)。
在下一步骤中,进一步处理查询,即AST经历提供如何创建查询执行 计划的提示的某些改变或装饰。执行计划是要执行的步骤的序列,以获得 查询结果。在该情况下,重要的是区分编译时和运行时步骤。仅査询执行 发生在运行时,即实际访问真实数据。每个其它步骤发生在编译时并且可 被认为是表示预处理步骤。任何编译时査询动作的总目的是让实际运行时 访问保持较短。
在如图1中所示的现有技术中,已知使用用于分类査询的模式数据, 其是査询预处理的一部分(参见文档"XQuery 1.0 and XPath 2.0 Formal Semantics", 在http:〃www.w3.org/TR7xquerv-semantics/可f寻至(j)。 分类 (typing)试图将类型附加于作为查询一部分的每个表达式。这要求定义 哪些类型存在的基础类型系统。在XML数据库上查询的情况下,由W3C XML模式提供可能的类型系统。分类査询有两个主要目的。首先,在编 译时己经可以检测(并且更好地指向) 一些类型错误。第二和更重要的优 点在于类型信息提供了用于查询优化和/或执行的提示,尤其是相关于索引
使用。这是基于以下示例査询示出的
for $book in input()//book where $book/author/last=,,Suciu,, return $book/title
该査询返回当前集合中作者的姓是'Suciu'的所有书的名称。使用 "author/last"上的索引,上面査询的执行使用更少的处理时间和努力,因 为索引列出实际上包含作为书作者的"Suds"的所有文档。因此不需要单 独查看每个文档。仅仅必须提取这些书的名称元素。
图1中示出的査询预处理通过评估模式数据来发现索引是可适用的, 以确信表示所表示条件成立的值的路径表达式仅指向某个字段。此外, XML数据库必须具有在该字段上定义的索引。
然而,在某些情况下,为成功预处理XQuery单独使用模式数据是不 够的,尤其是如果搜索条件不像上面示例中一样简单时。结果,不管图1 中的分类步骤,对于在XML数据库上执行的查询的主要部分,将仍需要 大量的时间和处理能力。
因此,本发明下的技术问题是改进XML数据库上的XQuery的预处 理,使得可更好地优化经相应预处理的XQuery的执行,并且在运行时期 间最终需要更少的数据库系统的硬件的处理时间和努力。

发明内容
在本发明的一个方面中,通过包括如下步骤的预处理XML数据库上 的XQuery的方法来解决该问题解析XQuery以获得抽象语法树,分类抽 象语法树以将至少一个指针提供到用于XML数据库的XML文档的模式, 其中分类步骤包括使用XML数据库的模式和累积实例数据。
根据本发明,在XQuery预处理期间,将分类信息添加到XQuery AST 中的至少一些表达式。分类信息是到XML数据库的XML文档下的模式中 的元素或属性描述的指针集。除了模式数据使用累积实例数据允许将指针 集减少为更小的集合,当最后执行査询时,这转而将减少要查看的文档数
在一个实施例中,累积实例数据包括表示XML数据库的XML文档中 出现的元素和/或属性的路径列表。该列表便于XML数据库的XML文档 上的一个或多个索引的最优使用。
更通常来说,XQuery优选地包括XPath表达式,并且最后的方法步骤 优选地包括根据XPath表达式标识模式上的指针集的步骤,和排除根据累 积示例数据未出现在XML数据库中的指针的步骤。可从左到右检查 XPath表达式,并且XPath表达式可包括沿着孩子或属性轴的定位步骤。 如果这样,标识模式上的指针集的相应步骤优选地在排除根据累积示例数 据未出现在XML数据库中的指针的步骤之前执行。
当从左到右检査XPath表达式并且XPath表达式包括沿着子孙或者子 孙或自身轴的定位步骤时,标识模式上的指针集的相应步骤优选地在排除 根据累积示例数据未出现在XML数据库中的指针的步骤之后执行。
以取决于査询的XPath表达式的特定定位步骤的方式来组合两个信息 源(即模式数据和实例数据)便利了査询的随后优化。在预处理和优化 后,可执行査询并且其结果显示给用户或者存储在存储介质上。
根据本发明的进一方面,上面所示方法步骤的第二个可还包括计算 XML数据库的预期数量的文档,其必须被搜索以用于在运行时期间执行 预处理XQuery。预期数量可表示为最小和最大数量之间的间隔。提供该 数量是有价值的,因为它允许估计时间量,即对于数据库系统的给定硬件 和软件组合来说要实际执行查询所需的时间量。
所述方法另外的修改或修正在进一步的从属权利要求中定义。
此外,本发明涉及包括适于执行任一上述方法的指令的计算机程序。 这种软件可安装在涉及处理数据库查询的任何种类的硬件上,例如主机、 客户端-服务器架构的服务器或客户端、或者任何其它种类的处理系统。
最后,本发明涉及包括用于XQuery的搜索引擎的用于XML数据库的 数据库系统,该搜索引擎适于执行任一上述方法。


在随后的详细描述中,参考下面的附图进一步描述本发明的当前优选
实施例
图l:根据现有技术的查询处理的示意流程图2:用于示例XML数据库的XML文档的示例模式;
图3:图2的模式的另外定义;
图4:累积实例信息的示例;
图5:示出根据本发明实施例的査询处理的示意流程图。
具体实施例方式
在下面,描述了本发明的优选实施例。首先,给出了用于组合基于模 式的信息和基于累积用户数据的信息的基本简化的示例。在第二部分,一 般地论述了 一般概念及其各种候选方式。
图2给出了 XML模式100的示例,其定义了 XML数据库的XML文 档的结构。图2的XML模式严格遵守相应的W3C推荐规范,其例如可在 http:〃www.w3c.org/TR/xmlschema-0/找到。作为对图2的模式的修改,可 以有私有的标志,以声明XML模式中描述的某个字段定义为索引。该修 改看起来如图3中引用数字200下所示。
在如上面在前言部分中所述的简单査询的情况下,图2的XML模式 100,并且更特定地,图3的修改200允许在査询预处理期间检测修改200 中定义的索引可用于高效执行该査询。在该情况下,査询中提供了路径的 信息对于指向模式中的相应条目是完全充分的,并且以便由此成功预处理 整个査询,而不使用任何实例数据。
然而,存在査看提供了查询的路径信息的情况并且模式不充分,如以
下示例査询中
for $book in input()//book where $book//last="Suciu" return $book/title
这里,不能使用修改200中在"author/last"上定义的索引,因为路径 语句"$book//last"也指向XML模式的"editor/last"元素。
在该情况下,累积实例信息可另外地用于査询预处理。例如,贯穿所
有数据库的XML文档没有提供编者的姓的信息将重新允许使用 "author/last"上定义的索引。
通常,术语"累积实例信息"可指XML数据库的XML模式中描述的 哪些元素或属性实际出现在实例中,或者它们出现的频繁程度,或者甚至 实现了哪些值的任何种类的信息。在图4的简化示例中,假设累积实例信 息是表示根据图2的模式可能在XML文档中的所有元素(除了一定出现 在每个文档中的文档元素)的路径的列表或表格300。每个这种路径与指 向其中出现该元素的那些文档的文档id列表成对。
返回上面基于路径"book//last"的示例査询,可最好地在两个阶段中 设计査询执行。可单独处理包含editor/last元素的一个文档,并且对于剩 余的数据,使用author/last上定义的索引仍然是适合的。
通过应用本发明获得的效率增益是充分的不是不顾"author/last"上 定义的索引并且搜寻数据库中的所有XML文档,累积实例数据允许保留 索引的使用并且直接调查XML数据库的仅单个另外文档。
现在以更一般的术语说明本发明的实施例,在XQuery预处理期间分 类包括优选地将类型信息添加到XQuery AST中的每个表达式。添加到表 示来自XML数据库的节点序列的表达式的类型信息优选地包括以下项
-指向模式的指针的集合;
-对于每个集合的模式指针,文档集,其中要找到遵守该模式指针的当 前节点;
通过跟随分类信息的两个源并且通过组合所检索信息来获得产生的类 型信息。检査表达式因而导致整个浏览两个信息源。这在图4中示意性地 示出。类似于图l,首先存在针对XQuery 10的产生AST 20的解析步骤。 然而,相比于图l的流程图,基于模式数据30和实例数据40进一步处理 AST 20,这一起导致了分类査询50。进一步可选的优化步骤最终提供了用 于XQuery的可执行代码60。
在下面,提供了 XQuery中的可能表达式的概述,以及如何基于模式 和累积实例信息的组合预处理它们的概述。表达式包括以下组中的表达式 等
-XPath表达式
-具有过滤条件的XPath表达式 -连接(join)
-顺序操作(sequence operation)
关于XPath表达式,我们假设每个XPath表达式以收集文档的表达式 开始,并且继而沿着以下轴移动 -属性 -孩子 -子孙
-子孙或本身 -双亲
跟随XPath表达式的轴的定位步骤可能未提供要检索的精确名称,但 也是以下三个通配符选项中之一 -氺:namc
-name:* _*
XPath表达式的定位步骤、轴和通配符在W3C的XPath 1.0推荐规范 中更详细地描述(例如参见http:〃www.w3c.org/TR/xpath)。
检查用于分类目的的路径表达式意味着从左到右逐步检查表达式,并 且对于每个定位步骤,考虑通过前一的定位步骤获得了什么,以及在当前 定位步骤中使用哪个轴。
关于属性或孩子轴,首先为下一定位步骤商议模式。假设直到该步骤 的路径表达式可通过模式指针集来表示,这对于包括当前步骤的表达式也 应当成立。当在下一步骤中使用通配符时,集合可变得更大,因为一个模 式元素指针可产生多个子元素指针,如果模式碰巧覆盖了元素的多于一个 子元素的话。如果名称(或模式)不适合元素的任何子元素,集合可变得 更小。在通过査看模式而计算了结果之后,实例信息用于除去没有出现的 那些结果元素。
当跟随子孙(或者子孙或自身)轴时,推荐首先参考示例信息,因为
让模式提供所有可能的子孙常常导致非常大的元素集。必须计算结果,回 到模式内的指针。
跟随双亲轴被执行如下在模式中,检索来自当前指针集的相应双亲 元素。如果前一集合包含指向具有相同双亲的元素的指针,模式指针集变 得更小。
在实例信息中,将属于模式指针之一的文档指针的联合分配给每个模 式指针,该模式指针之一是该模式指针的前任。这意味着文档指针的总集 合保持不变。例如在以下表达式的情况下
Input()〃book/author[last=,,Suciu,,]/..
对双亲步骤之前的部分进行分类,从而产生了到"book/author"的模 式指针和包含路径"book/author/last"的文档集。现在跟随双亲轴,模式 指针切换到书元素,而需要被扫描的文档仍然是那些包含book/author/last 的,因为跟随完整路径仅可发现那些文档。
过滤器和where表达式名异实同。通过将当前节点表示为 variable:node[value=,const,]<->where $a/value=,const,, 过滤器条件可公式 化为where子句。
当过滤器包括在路径表达式中时,必须检查这些是否可用于减少模式 指针集和/或相关于要预期的结果数量是更限制性的。如果过滤器包含路径 表达式,这些被评估。如果由于导致空结果的路径可证明过滤器表达式总 是错误的,清空整个路径的类型并且可丢弃分类。
过滤器可以是逻辑表达式。如果或表达式的一部分相关于空白分类的 表达式,可丢弃该部分。如果与表达式的一部分分类为空白,丢弃整个表 达式。
可按如下使用文档指针如果过滤器中的子表达式产生某些结果(即 文档指针),但是那些指针不与用所过滤结果获得的文档指针相交,那么 整个表达式分类为空白。这通过以下示例来示出
collection("bookshop")/bib/book[tf:containsText(title,,,Web,,)and author]
关于模式指针来分类该表达式,从而产生关于模式条目'书'的所有 结果。在前一步骤中计算了包含书的所有文档的集合,过滤器允许排除既
不包含"book/title"路径也不包含"book/author"路径的那些文档。
分类连接意味着分类return子句。由于大多数连接return子句是包含 路径表达式的生成元素,分类连接意味着分类这些路径表达式。考虑由连 接标准规定的另外过滤器标准来分类它们。这意味着仅保留为连接标准中 出现的字段定义条目的那些文档。
for $b in collection("bib,,)/bib/book
for $p in collection("bookshop,,)/price
where $b/@isbn=$p/@isbn
return <book>{$b/title} {$p}</book>
关于模式指针和要扫描的文档来分类第一和第二 'for'表达式。要分 类的表达式现在是Sb/title和Sp。文档集是也包含isbn属性的书出现的集 合,因为没有isbn属性的书的实例未参与连接。$p模式指针与用于 collection("bookshop")/price 的那些相同。文档集是 collection("bookshop")/price减去不包含isbn属性的那些文档的集合。
在分类路径表达式上的顺序操作可以是联合、交集,以及差。分类两 个分类表达式的联合意味着指向模式内的指针是单独模式指针集的联合。 对于每个模式指针,文档指针的集合是属于一个或两个子集中的该模式指 针的文档指针的联合。
为了分类交集,指向模式以及文档集内的指针相交。最后,分类差, 保留了第一表达式的类型。
权利要求
1. 一种预处XML数据库上的XQuery(10)的方法,包括以下步骤a. 解析所述XQuery(10)以获得抽象语法树(20);b. 分类所述抽象语法树(20)以将至少一个指针提供到用于所述XML数据库的XML文档的模式(100,200),其特征在于c. 步骤b.包括使用所述XML数据库的模式数据(30;100,200)和累积实例数据(40;300)。
2. 根据权利要求1所述的方法,其中步骤b.还为所述至少一个指针 提供了所述XML数据库的XML文档集,该XML数据库具有遵守所述至 少一个指针的至少一个节点。
3. 根据任一前述权利要求所述的方法,其中累积实例数据(300)包 括表示在所述XML数据库的XML文档中出现的元素和/或属性的路径列 表。
4. 根据任一前述权利要求所述的方法,其中所述XQuery (10)包括 XPath表达式并且其中步骤c.包括根据所述XPath表达式来标识所述模式(30)上的指针集的步骤和排除根据所述累积实例数据(40)未出现在所 述XML数据库中的指针的步骤。
5. 根据权利要求4所述的方法,其中从左到右检査所述XPath表达 式,并且所述XPath表达式包括沿着孩子或属性轴的定位步骤,并且其中 在所述排除根据所述累积实例数据未出现在所述XML数据库中的指针的 步骤之前执行标识所述模式上的指针集的步骤。
6. 根据权利要求3或4所述的方法,其中从左到右检査所述XPath表 达式,并且所述XPath表达式包括沿着子孙或者子孙或本身轴的定位步 骤,并且其中在所述排除根据所述累积实例数据未出现在所述XML数据 库中的指针的步骤之后执行标识所述模式上的指针集的步骤。
7. 根据前述权利要求4到6中任意一个所述的方法,其中所述XPath表达式包括过滤器表达式。
8. 根据任一前述权利要求所述的方法,其中步骤b.还包括计算所述 XML数据库的预期文档数量,其必须被搜索以用于在运行时期间执行所 述预处理XQuery。
9. 根据权利要求8所述的方法,其中所述预期数量表示为最小和最 大数量之间的间隔。
10. 根据任一前述权利要求所述的方法,还包括执行所述XML数据 库上的所述预处理XQuery的步骤。
11. 包括适于执行根据前述方法权利要求1到10中任意一个所述的 方法的指令的计算机程序。
12. 包括用于XQuery的搜索引擎的用于XML数据库的数据库系统, 所述搜索引擎适于执行前述方法权利要求1到10中任意一个的方法。
全文摘要
本发明公开了用于预处理XQuery的方法和数据库系统。本发明涉及一种预处理XML数据库上的XQuery(10)的方法,包括以下步骤解析所述XQuery以获得抽象语法树(20);分类所述抽象语法树(20)以将至少一个指针提供到用于所述XML数据库的XML文档的模式(30;100,200),其中分类步骤包括使用所述XML数据库的模式(30;100,200)和累积实例数据(40;300)。
文档编号G06F17/30GK101382945SQ200810147578
公开日2009年3月11日 申请日期2008年9月3日 优先权日2007年9月3日
发明者凯·汉斯-彼得·温克尔, 托尔斯特恩·飞尔比格, 朱利安·哈巴斯 申请人:软件股份公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1