用于预处理XQuery的方法和数据库系统技术方案

技术编号:2917588 阅读:252 留言:0更新日期:2012-04-11 18:40
本发明专利技术公开了用于预处理XQuery的方法和数据库系统。本发明专利技术涉及一种预处理XML数据库上的XQuery(10)的方法,包括以下步骤:解析所述XQuery以获得抽象语法树(20);分类所述抽象语法树(20)以将至少一个指针提供到用于所述XML数据库的XML文档的模式(30;100,200),其中分类步骤包括使用所述XML数据库的模式(30;100,200)和累积实例数据(40;300)。

【技术实现步骤摘要】

本专利技术涉及一种用于预处理XQuery的方法和数据库系统
技术介绍
XML数据库由于其灵活性成为现代信息社会中越来越重要的技术工具。响应于查询而高效检索XML数据是操作XML数据库的几乎任何数据库系统的主要目的。在XML数据库上执行查询以图1中示意性示出的多个步骤来执行。首先,解析通常以XML查询语言(XQuery)定义的原始查询,即识别查询的不同标志并且随后将查询表示为结构化对象,其通常称为抽象语法树(AST)。在下一步骤中,进一步处理查询,即AST经历提供如何创建查询执行计划的提示的某些改变或装饰。执行计划是要执行的步骤的序列,以获得查询结果。在该情况下,重要的是区分编译时和运行时步骤。仅查询执行发生在运行时,即实际访问真实数据。每个其它步骤发生在编译时并且可被认为是表示预处理步骤。任何编译时查询动作的总目的是让实际运行时访问保持较短。在如图1中所示的现有技术中,已知使用用于分类查询的模式数据,其是查询预处理的一部分(参见文档“XQuery 1.0 and XPath 2.0 FormalSemantics”,在http://www.w3.org/TR/xquery-semantics/可得到)。分类(typing)试图将类型附加于作为查询一部分的每个表达式。这要求定义哪些类型存在的基础类型系统。在XML数据库上查询的情况下,由W3CXML模式提供可能的类型系统。分类查询有两个主要目的。首先,在编译时已经可以检测(并且更好地指向)一些类型错误。第二和更重要的优点在于类型信息提供了用于查询优化和/或执行的提示,尤其是相关于索引-->使用。这是基于以下示例查询示出的:for $book in input()//bookwhere $book/author/last=”Suciu”return $book/title该查询返回当前集合中作者的姓是‘Suciu’的所有书的名称。使用“author/last”上的索引,上面查询的执行使用更少的处理时间和努力,因为索引列出实际上包含作为书作者的“Sucis”的所有文档。因此不需要单独查看每个文档。仅仅必须提取这些书的名称元素。图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数据库的数据库系统,该搜索引擎适于执行任一上述方法。附图说明在随后的详细描述中,参考下面的附图进一步描述本专利技术的当前优选-->实施例:图1:根据现有技术的查询处理的示意流程图;图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()//bookwhere $book//last=”Suciu”return $book/title这里,不能使用修改200中在“author/last”上定义的索引,因为路径语句“$book//last”也指向XML模式的“editor/last”元素。在该情况下,累积实例信息可另外地用于查询本文档来自技高网
...

【技术保护点】
一种预处理XML数据库上的XQuery(10)的方法,包括以下步骤: a.解析所述XQuery(10)以获得抽象语法树(20); b.分类所述抽象语法树(20)以将至少一个指针提供到用于所述XML数据库的XML文档的模式(100,200),其特征在于 c.步骤b.包括使用所述XML数据库的模式数据(30;100,200)和累积实例数据(40;300)。

【技术特征摘要】
EP 2007-9-3 07017213.51.一种预处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表达式,并且所...

【专利技术属性】
技术研发人员:朱利安哈巴斯托尔斯特恩飞尔比格凯汉斯彼得温克尔
申请(专利权)人:软件股份公司
类型:发明
国别省市:DE[德国]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1