文档介绍:导航处理 XQuery 的概要设计
负责人:陆世潮
编写人:陆世潮
系统版本号:OrientX Version
完成时间:2004/9/9
开发单位:中国人民大学 IDKE 实验室 XML 工作组
引言
OrientX 系统是一个 Native XML 数据库系统,专门用于管理和维护 XML 数据。众所周
知,XML 数据是一种树状结构,具有自我描述的特性,一个结点下面可有 0 个或多个结点。
在存储时,Native XML 数据库把 XML 数据划分成多个较小的子树,每一棵 XML 子树就是一
个记录,保留了 XML 数据的树状结构。存储模块向上层模块提供了类似 DOM 的数据读取方法,
以遍历 XML 数据。
如同关系数据库需要用 SQL 语言来检索数据一样,XML数据库也需要一种简单易用的查
询语言来从海量的 XML 数据中抽取、重构出符合特定条件的数据。关于 XML 查询语言,曾出
现过很多种,例如 Quilt,XQL,XPath,XQuery 等;W3C 推荐的 XQuery 正日臻完善,逐渐
得到大家的公认,最有可能成为 XML 查询语言的标准。
OrientX 系统在 版本已经支持 XPath 查询语言;但是由于其 XPath 的表达能力有限,
OrientX 在 版本中增加支持 XQuery。本文就是概要设计在 OrientX 系统如何导航式处理
XQuery。
本文正是概要设计 Xquery 在 OrientX 系统中的处理方法。后面文章的组织方式如下:
第 2 部分介绍 OrientX 系统导航式处理 XQuery 的背景。第 3 部分介绍 OrientX 系统的总体
框架,XQuery 查询引擎在整个系统的地位,以及 XQuery 处理的流程;第 4 部分则是 OrientX
系统 Xquery 处理模块与其他模块的接口;第 5 部分是实现 Xquery 的主要类的设计。第 6
部分介绍处理 Xquery 的重要算法。第 7 部分总结 XQuery 处理的经验,以及尚未解决的问题。
的处理策略
Xquery 的处理策略,按照读取数据的方法可以分为基于导航的和基于集合的。
所谓基于导航的处理,就是根据 XQuery 查询的导航性语义,采用类似 DOM 接口的方
式遍历 XML 文档,抽取出符合特定条件的数据片断。例如对于查询 doc(“”)
//book/author,它将从文档的根节点遍历整个文档 ,对于找到的每一个 book 结点,
再往下遍历其子结点,每遇到一个 author 结点,就向上返回。导航式处理的好处在于,它
通过导航来遍历 XML 数据树,与 Xquery 导航性语义相吻合,使得这种基于语法的导航式
处理更加符合人们的思维。目前实现了 XQuery 导航式处理的系统有 IPSI-XQ ,Galax,Xindice
等。
受到 SQL 的处理策略的启发,人们认为 XQuery 设计一套基于集合的代数,采用每次
一集合地处理 XML 数据,其效率比每次一结点的导航处理方式会更高。集合式处理 XQuery
的典型代表是 Timber 系统,它从与关系数据库进行类比出发,定义了一套称为 TAX 的 XML
代数。它极力模仿关系代数,以利用关系代数系统的成熟理论。TAX 的每一个操作符以一
个或多个有序的子树集合作为输入,产生出一个有序的子树集合。
在没有得到确切的实验数据之前,我们暂且不讨论孰优孰劣。但是,可以肯定的是,导
航式处理的思想,更加符合 XQuery 语言的过程化特征。
在 OrientX 系统 版本,我们实现了 XQuery 的导航式处理。本文概要地设计 XQuery
导航式处理的思想以及程序设计过程中的一些重要技术问题。
3. 总体设计
Xquery 查询引擎在整个系统的地位如图 1 所示,它的功能主要是为用户提供快速高效
的数据查询、检索功能。为此,我们处理 Xquery 时除了要确保结果的正确性之外,还要尽
可能提高查询的效率。
XML
Query XML
Documents Documents
Execute Engine
Data Definition XQuery XPath Update
Element Node Schema info Record Address
Data Schema Index
manager manager Manager
Records
Storage
图 1 Orie