XML数据库的查询技术研究
2023-09-13
来源:榕意旅游网
第19卷第4期 2013年8月 江苏技术师范学院学报 JOURNAL OF JIANGSU TEACHERS UNIVERSITY OF TECHNOLOGY V01.19.No.4 Aug.,2013 XML数据库的查询技术研究 许娴 (江苏理工学院计算机工程学院,江苏常州 213001) 摘要:XML Schema作为一种描述XML文档模式信息即结构信息的标准,对于XML索引的建立及查询效率 的提高有着重要的作用。现在大部分XML索引结构着重研究XML文档的结构查询。本文在比较研究了现有的 区间编码方式和XML索引技术的基础上,提出了一种基于Schema的XML索引技术SBXI(Schema—Based XML Indexing)。SBXI充分利用了XML Schema建立XML索引从而提高路径查询的效率,并进一步展望未来的研究方 向。 关键词:XML数据库;XML查询;XML索引;SBXI 中图分类号:TP311 文献标识码:A 文章编号:1674—8522(2013)04—0007—06 O 引 言 可扩展标记语言XMLt (eXtensible Markup Language)是w3c(w0rld Wide Web Consortium)于1998年 2月正式推荐的Web上的数据表示和交换标准。由于XML的可扩展性和自描述性,使它在电子商务、网 站管理、个性化出版、电子文档交换等多个领域得到了广泛应用。XML不仅能够存储数据,而且能够存储 结构和语义信息,具有通用的数据表示能力,能表示结构化、半结构化及元结构化数据,然而XML对数据 的处理能力却相当有限。因此,解决好XML文档的存储、管理和查询等问题特别是查询问题,构造一个能 在应用中管理和控制XML文档的数据库系统,即将XML与数据库技术相结合,使XML在各个领域以及 各个行业发挥其最大的潜力,已经成为一个急待解决的问题。 1 XML数据库 随着XML技术的不断发展,XML的存储方法以及各种XML数据库产品都不断涌现。 按照数据存储系统的不同,XML的存储方法大致可以分为三种。 (1)在文件系统中以文本文件方式存储XML。这种方式显然不能使XML的结构化特征得到很好的 体现。 (2)支持XML的数据库(XML—Enabled Database,XED)。它是在传统数据库(关系数据库或面向对象 数据库)的基础上,有数据库厂商或者是第三方增加了XML映射层,由这个映射层管理XML数据的存 储,实现传统数据库与XML文档之间的转换,特别适合以数据为中心的XML文档。例如Oracle公司的 Oraele 9i,Microsoft公司的SQL Server 2000,IBM公司的DB2 XML Extender等,只是它们针对XML文档的 特性所使用的存储和查询方法不同。 (3)XML本源数据库(Native XML Database,NXD o NXD是专门设计用于存储XML文档的数据库,它 收稿日期:2013—06—19 作者简介:许娴(1980一),女,江苏常州人,讲师,硕士,主要研究方向为XML和数据库应用。 8 江苏技术师范学院学报 第19卷 以XML文档自身的形式来存储XML文档,支持事务、安全、多用户访问、编程的AP1和查询语言等,其内 部模型是基于XML文档格式的。 实际上,XML本源数据库系统也并非是一定要建立一个新的特殊的数据库系统。关于XML本源数 据库,R.Bourret给出了一个定义,即只有满足以下三个条件的XML数据库才能称之为XML本源数据 库[21: (1)为XML文档定义一个(逻辑)模型,XML数据的存储和查询都基于这个模型。这个模型至少需要 包含元素、属性以及PCDATA等,并保持文档顺序。 (2)将XML文档作为(逻辑)存储的基本单位,正如关系数据库将行(元组)作为存储的基本单位一 样。 (3)不要求只能使用某一特定的底层物理模型或某种专有的存储格式。第一个条件要求XML本源数 据库必须基于某种模型,这是因为各种数据库都基于不同的模型,就像关系数据库基于关系模型,层次数 据库基于层次模型一样。第二个条件的含义是在XML本源数据库中,数据只有在一个XML文档中才有 意义,当然这并不妨碍查询一个文档的片断,就像在关系数据库中仍然可以查询一个元组的片断(属性 值)一样。第三个条件的含义是底层的存储格式并不重要,事实上,很多XML本源数据库是采用一些传统 的数据库作为底层存储引擎的,当然也有采用专用存储格式的。 从上述定义中可以看出,XML本源数据库的核心在于其模式,即它的逻辑模式必须是某种特殊的模 型,而不能是关系的或面向对象的。 尽管目前还不清楚到底那种存储和查询XML数据的方案能被广泛接受,但有一点是清楚的,那就是 关系数据库系统已经非常成熟,有管理大规模数据的能力,有很好的查询性能,且目前在关系数据库系统 中有大量的商用数据。因此,有许多研究者已经或正在从事基于关系数据库的XML数据库系统的研究。 建立一个XML文档的数据模型,对XML文档树中的所有对象(包括元素结点、属性结点、属性值或 文本内容中的关键字等)按某种遍历顺序进行编码和存储,这种编码原则反映了这些对象在XML文档树 中固有的相互关系,以实现对XML文档结构的有效查询,同时还要建立相应的索引来提高数据的访问和 查询效率。这种方法也属于前面所说的XML本源数据库中的一种实现方式。 2 XML数据库的查询及优化 XML文档的查询通常应包括: (1)在元素内容上的选择,即通过限定在元素内容或属性值上的取值而进行的选择,称为值查询。 (2)通过路径表达式,对文档中标记的元素之间的结构关系进行查询,称为结构查询。 元素之间的结构关系包括:祖先/后裔(ancestor/descendant)关系、双亲/孩子(parent/child)关系、之前 /之后(preceding/following)关系、左兄弟/右兄弟(preceding—sibling/following—sibling)等。而XML数据库中 大量的查询正是基于结构查询。 为了有效支持XML查询,已经有很多研究者提出了XML的各种编码方式和索引技术。 2.1 XML编码方式 对于XML文档的编码方式,大致可以分为两大类:基于区间的编码方式和基于路径的编码方式。基 于区间(region—based)的编码方式利用XML文档的有序特点,根据每一个元素结点在原XML文档中字 典顺序的位置给每一个结点赋予一个编码;而基于路径(path—based)的编码方式则是利用XML文档的嵌 套特点,根据XML文档的嵌套结构,给从文档根结点开始所能到达的每个路径和元素赋予一个编码。较 为著名的区间编码如Dietz编码『3l、Li—Moon编码嗍、Zhang编码【5]等,而很多其他区间编码也是由这几种区 间编码演化而来的。 2.2×ML索引技术 为了提高XML数据的查询效率,特别是结构查询的效率,XML索引技术是一种很有效的方法。 第4期 许娴:XML数据库的查询技术研究 9 文献[4】中的XISS对XML文档树以前、后序遍历值进行编码。它的主要索引结构有元素索引、属性索 引和结构索引,其主要思想是将复杂路径查询分解为简单路径,然后对各简单路径的处理结构进行连接。 XISS对路径查询处理,无需遍历XML文档。但是,首先,如果查询路径由N个元素/屙l生组成,XISS需要 从索引中检索出N组结点;其次,对于由N个元素/属性组成的查询路径,处理每个XML文档至少需要 (N—1)次结构连接算法的调用;再次,不可避免的会有许多不相关结构中的结点参与简单路径处理过程 中的双亲/孩子关系或祖先/后裔关系判断,例如路径conference/title中没有book元素,但是该路径中 title结点会参与book/title这一双亲/孩子关系判断。 文献[6,7]中的Lore索引是基于一种对象交换模型(OEM,object exchange mode1)的图状模型。Lore索 引由4个索引结构组成,它们是值索引(Vindex)用于查找具有入边并且满足查询条件的所有原子对象; 链接索引(Lindex)用于查找已知结点的双亲结点,因为Lore本身没有提供访问双亲结点的机制;文本索 引(Tindex)用于支持复杂的文本查询,找到包含特定词的对象以及该词在对象值(文本)中的位置;路径 索引(Pindex)返回通过路径能到达的所有对象,它是和Dataguides配合使用的。 文献[8]中的SphinX是最先利用XML的文档类型定义DTD对XML文档进行索引的系统。SphinX只 须对符合查询条件的XML文档进行处理,但由于只有XML文档的叶子结点携带了相应的DTD结构信 息,因此,只有条件路径在XML文档中的定位可以利用DTD的结构,而目标路径在XML文档中的定位 依然需要传统的向上或向下的XML文档树遍历方法,即在确定了条件路径的叶子结点对应的符合条件 约束的XML结点集之后,仍需要XML文档部分结构的遍历过程,因此,SphinX对DTD的利用是不彻底 的 3基于Schema的XML索引技术 结合XISS系统中使用的区间编码和SphinX中利用的XML文档类型定义DTD,提出了一种基于 Schema的xML索引技术  ̄](Schema—Based XML Indexing,SBXI)。 XML Schema作为一种描述XML文档模式信息即结构信息的标准,对于XML索引的建立及查询效 率的提高有着重要的作用。它与DTD一样,描述了XML文档的结构信息,有着丰富而强大的数据库类 型,有很好的扩展性、伸缩性和重用性,而且它本身也是一个XML文档。 SBXI是一种充分利用XML Schema建立XML索引提高路径查询的技术。它采用两种区间编码方式 Dietz编码和Li—Moon编码,分别对XML Schema和XML文档进行编码,使得XML文档中的每个元素和 属性的编码都携带了相应的Schema结构信息。 为了有效地实现对文档树中任意2个结点之间的祖先/后裔关系和双亲/孩子关系的检测,以加速 路径表达式的计算,同时实现按关键字搜索XML文档,SBXI将编码方式和逆序列表的思想相结合,分别 对XML Schema和XML文档分别建立索引,并在此基础上提出了SBXI的关系存储模式。 SBXI主要由两部分组成:XML Schema索引结构和XML索引结构。 (1)XML Schema索引结构 XML Schema索引(见图1)是一个逆序列表, 左边第一列为XML Schema中出现的元素/属性 Schema元 名,每个元素/属性名指向一组有相同名字的元素 素/属性结 点记录 /属性的记录。 (2)XML索引结构 XML索引(见图2)中,左边第一列是Schema 树中的元素/属性结点的先序遍历值列表,每个先 结点集 序遍历值记录,指向一组有相同名字的对应 图1 XMLSchema索弓 Schema树中的同一元素/属性结点的XML元素/ 10 江苏技术师范学院学报 第19卷 属性结点集记录,以XML文档ID分组。 SBXI选择关系数据库系统来进行存储,一方面是因为关系数据库系统能够有效地管理和处理大量 的数据,而XML文档一般来说是大数据量的;另一方面,关系数据库管理系统也能够被用来执行XQuery 查询的其他功能。图3所示是根据SBXI的思想设计的XML数据的索引结构及关系存储模式。 XML元素/ 属一 结点 记录 树中的同 … 元 具有相同名字 遍历值列表 的XML元素/属 结点集 图2×ML索引 图3×ML数据的索引结构及关系存储模式 其中: 各个索引列表或值列表的码屙『生都用下划线标出。假设所有列表都按码属性建立聚集索引,以加快 查找的执行速度。 对于XML Schema中所有具有相同元素名name的元素结点建立一个元素索引表elem_name,该索引 列表中的每一个记录是标识该结点的一个五元组(pre,post,parent_pre,depth,nodetype)。其中,pre是该结 点的先序遍历序号;post是该结点的后序遍历序号;parent_pre表示该结点的双亲结点的先序遍历序号 (根结点为0);depth表示该结点在Schema所对应的树中所处的层数,以反映祖先/后裔关系中的嵌套层 数关系;dtype表示该元素的数据类型;min和max分别表示该结点在文档中出现的最小次数和最大次 数。 对于XML Schema中所有具有相同属性名name的属性结点简历一个属性索引表attr_name,该索引 列表中的每一个记录是标识该结点的一个六元组(pre,post,parent_pre,depth)。其中,pre、post、parent_pre、 depth、dtype、min和max与元素索引表elem—name中类似。 元素索引表elem_name和属性索引表attr_name的作用是有效地实现对文档树任意结点对之间的包 含关系(祖先/后裔关系或双亲/孩子关系)的检测,以加速路径表达式的计算。显然,如果存在多个XML Schema,XML Schema文档森林中的所有元素结点和屙『生结点的索引信息可以集中组织在一个列表中。但 是,一方面这样一个列表一般来说是巨大的;另一方面,路径表达式查询的计算经常要对这些列表进行选 择操作、结构连接操作等,因此,为了提高处理性能,这里就按文档中出现的元素或属性的“name”分别组 成多个元素索引表和属性索引表。 value表用来存储XML文档的内容,即所有文本结点的内容及属性结点的值。其中,did表示该关键 字所在文档的文档标识;order表示该关键字的扩展先序遍历序号;val则存储文本结点的内容及属性结 点的值;parent_order表示该关键字的双亲结点的order;depth是该关键字在文档树中所处的层数,以反映 它是直接属于哪一个属性结点或双亲元素结点。 第4期 许娴:XML数据库的查询技术研究 11 structure表用来存储所有元素结点和属性结点的扩展先序列表,即文档的总索引。其中,通过nid可 以从name表中获得每一个元素结点的标记名和属性名;did表示该结点所在文档的文档标识;order表示 该结点的扩展先序遍历序号;size表示以该结点的后裔范围;parent_order表示该结点的双亲结点的扩展 先序遍历序号;depth表示该结点在XML文档树中所处的层数;s_pre表示该结点在元素索引表el— era_name或属性索引表attr_name中对应结点的先序遍历序号;nodetype用来存储结点的类型,它的取值 是“EE”,“ET”,“EM”,“EN”或“A”,分别表示内容是子元素、内容为文本、内容是子元素和文本混合、内容 为空的元素结点或结点为属性结点。 另外还要建立一个document索引表和一个name索引表。Document索引表中的每一个记录与一个 XML文档相对应,用来存储did(文档标识)、URL(文档所在位置的URL)以及其他一些与文档相关的信 息;name索引表中的每一个记录与XML Schema文档树中的一个元素名或属性名相对应,用来存储nid (名字标识)、name(元素名或属性名)以及其他一些与该名字相关的信息。 在这里,还要注意以下2点: (1)XML Schema所对应的树中的元素结点和属性结点都按先序遍历序号pre升序排列,XML文档树 中的元素结点、属性结点以及属性值和文本结点内容中的“关键字”都按扩展先序遍历序号order升序排 列。 (2)为了有效地实现元素/属性关系的结构连接,对于每一个元素结点,规定它的所有属性的遍历先 于对它的子元素及文本内容的遍历。 如图4,左边为错误的遍历编码,假设要计算//section/@title,在检测elem_section表的(1,9)的结点时, 将扫描attr_title表中(3,5)结点和(7,9)结点,得到(1,9)和(7,9)时双亲/孩子结点的结果;继续检测el— era_section表的(2,6)结点时,由于attr_title表中的(3,5)结点已经扫描过了,因此必须重新搜索并扫描。而 对于右边的遍历编码,则不会出现这种情况,它可以确保在计算元素/属性之间的双亲/孩子关系时,仅 需对elem_section表和attr_title表中的元组分别进行一次扫描即可实现连接。 ● ElementNode ◆ AttributeNode 图4错误的和正确的结点遍历编码示例 通过相关实验,SBIX在索引建立时间以及查询响应时间等上都有不同程度的提高,而且对于XML 无效查询也能做出正确的回应。 4 结 语 XML在各个领域以及各个行业都具有十分巨大的潜力,XML与数据库技术的结合使得XML的潜力 能够得到更为充分的挖掘。随着XML数据库查询技术的不断发展,XML编码方式和索引技术的深入研 究,XML与数据库技术的结合必将会实现更为强大的功能。 SBXI是一种充分利用XML Schema建立XML索引提高路径查询的技术。它采用两种区间编码方式 Dietz编码和Li—Moon编码,分别对XML Schema和XML文档进行编码,使得XML文档中的每个元素和 属性的编码都携带了相应的Schema结构信息。为了有效地实现对文档树中任意两个结点之间的祖先/ 后裔关系和双亲/孩子关系的检测,以加速路径表达式的计算,同时实现按关键字搜索XML文档,SBXI 12 江苏技术师范学院学报 第19卷 将编码方式和逆序列表的思想相结合,分别对XML Schema和XML文档分别建立索引,并在此基础上提 出了SBXI的关系存储模式。通过相关实验,SBIX在索引建立时问以及查询响应时间等上都有不同程度 的提高,而且对于XML无效查询也能做出正确的回应。 参考文献: [1】World Wide Web Consortium,Extensible Markup Language(XML)I.1[EB/OL].W3C Recommendaiton 04 February 2004,http //www.w3.org/TR/xmll 1/. [2]Bourret R.XML and Database[EB/OL].http://www.rpbourret.com/xml/XMLAndDatabase.htm. [3]Dietz P F.Maintaining Order in a Linked List[C].In:Lewis H R et al Eds.Proceedings of the 14th Annual ACM Symposium on The— ory of Computing(STPC’82).San Francisco,California,USA.May5—7,1982.New York:ACM Press,1982:122—127. [4]Li Q,Moon B.Indexing and Querying XML Data for Reulgar Path Expressions[C].Proceedings of 27th International Conference on VLDB,2001:361—370. 【5 Yos5Jhikawa M,Amagara T,Shimura T,et a1.Storing and Querying Ordered XML using a Relational Database System[C].In: Franklin M J et al Eds.Proceedings of the 21th ACM SIGMOD International Conference on Management of Data.Madison,Wis— consin,USA.June 3-6,2002.New York:ACM,2002:204—215. [6】Goldman R,Widom J.DataGuides:Enabling Query Formulation nda Optimization in Semistructured databases【C1.In Proceedings of 23th International Conference on VLDB.1997:436-445. http://wwwdb.stanford.e— [7]McHugh J,Widom J,Abiteboul S,et a1.Indexing Semistructured Data.Technical Report,January 1998.一du/lore/pubs. [8]Poola L K,Haristsa J R.SphinX:Schema-conscious XML Indexing[EB/OLJ.Technical report.TR-2001—04,DSL/SERC,http: //ds1.serc.iisc.ernet.irdrepo ̄s.htrn1. [9】曾一,许娴,张元平.一种基于Schema的XML索引结构[J].计算机工程,2006,32(18):64—66. [10]许娴.基于Schema的XML索引技术的研究[D].重庆:重庆大学,2006. Research on Query Technology of XML Database xU Xian (School of Computer Engineering,Jiangsu University of Technology,Changzhou,213001,China) Abstract:As a standard of describing the scheme information or structure information of XML document,XML Schema plays an important role in the building of XML indexing and improving of the query efficiency.Now most of the XML indexing structures focus on studying the structural query. Comparing the current region encoding and XML indexing technique,the paper brought forward a kind of XML indexing based on XML Schema SBXI(Schema-Based XML Indexing).SBXI made the most of the XML Schema to build the XML indexing to improve the eficiency of path querying and prospected fthe future research directions. Key words:XML Database;XML Query;XML Indexing;SBXI 责任编辑张志钊