新客网WWW.XKER.COM:致力做中国最专业的网络学院!
学院: 操作系统 - 网络应用 - 服务器 - 网络安全 - 工具软件 - 办公软件 - Web开发 - 数据库 - 网页设计 - 图形图像 - 媒体动画 - 硬件学堂 - 存储频道 - QQ专区
您的位置:首页 > 软件开发 > 数据库 > 数据库综合 > 正文:基于关系数据库引擎的“XML“索引技术

基于关系数据库引擎的“XML“索引技术

新客网 XKER.COM 2008-02-02 来源:赛迪网 10633 收藏本文

Dataguides 索引是从根结点为起始的精练路径的一种结构摘要。边标签串联在一起形成的字符串路径在 Dataguides 中只描述一次。Dataguides 减少了遍历路径查询时所需的部分结点,它对从根部遍历 XML文档是有效的。但对于含有通配符的路径查询或对带有XPath标准中定义的descendant-or-self轴的路径查询要进行多次的连接操作,查询效率较低,并且存在数据冗余。

Index Fabric是在Patricia Trie树上发展而来的一种索引结构,它把到每个元素节点的每条标记路径都用一个字符串编码,再将这些编码值插入到Patricia Trie树中去,从而将按照路径方式对XML数据的查询转化为对字符串的查询。在查询时先将查询路径编码成字符串的形式,再在索引树中进行查找。Index Fabric索引优点是存储了XML数据的层次结构信息,统一处理了有模式和无模式信息情况下的XML数据的检索,并且使对XML数据的查询和更新所需要的时间与层次相关而不是与索引要害字的长度相关。Index Fabric索引的缺点在于丢失了元素节点间的结构关系,因为它只保留了有文本值的元素节点的信息。因此,与DataGuides索引类似,Index Fabric索引处理带有XPath标准中定义的descendant-or-self轴的部分匹配查询表达式效率不高

为此,APEX[14]引入了依靠于XML数据查询分布的信息:将经常出现的XML查询语句对应的标签节点预先保存在一个哈希结构中。它的作用类似于Cache的功能:当有新的查询要求处理时,首先在哈希表中搜索是否有满足的节点集合。但它对于带有元素值或属性值的查询表达式的处理效率较低。

基于节点的索引

基于节点的索引本质上即是将XML数据分解为数据单元的记录集合,同时在记录中保存该单元在XML数据中的位置信息。与基于路径的索引不同,基于节点的索引打破了必须通过标签路径查找节点这一限制,将XML数据分解成规范形式的节点记录。由于保存了节点的位置信息,而且能够很好地结合到成熟的关系数据库治理系统中,因此它是目前应用最广泛的一种索引。

根据对位置信息的编码方式不同,基于节点的索引一般可以分为一下几类:

1.基于前缀的索引

基于前缀的索引主要是根据Dewey[12]编码生成的索引,文献[13]的 ORDPATH 编码采用的也是类似的方法,并给出了压缩 ORDPATH的方法,该方法已应用于SQL Server 2005的索引组织中。

前缀编码的基本思想是直接将一个节点的双亲节点的编码作为该节点编码的前缀,对于前缀编码,要判定一个节点v是否另一个节点u的后裔,只要判定u的编码是否v的编码的前缀。前缀编码索引的一个重要性质是它们的字典有序:以节点r为根的子树中的任意一个节点u,它的前缀编码c(u)大于(小于)它的左兄弟子树(右兄弟子树)中所有节点的前缀编码。因此,基于前缀的索引不仅能够有效地支持包含关系的运算,而且能够有效地支持文档位置关系的计算。

2. 基于区间编码的索引

对于区间编码索引,树T中的每一个结点被赋予一个区间编码[begin,end],满足:一个结点的区间编码包含它的后裔结点的区间编码.也就是说,树T中 的节点u是节点v的祖先,当且仅当start(u)

第一个区间编码方案是Dietz编码,树T中的每一个结点被赋予一个具有先序遍历序号和后序遍历序号的二元组.由于树T中的一个祖先结点u在先序遍历(后序遍历)中必然出现在它的后裔结点v之前(之后),因此, 节点u和v是祖先/后裔关系,当且仅当pre(u)

另一个区间编码索引的典型例子是XISS索引,它为每个节点赋予一个数字对,其中order为扩展的前序编码,size为节点的子孙的范围。对一棵文档树中的任意节点X和Y,当且仅当order(x)

XISS索引通过将原始查询语句分解为子表达式。然后分别针对这些子表达式实现查询,最后对这些中间结果进行联结获得查询结果集。从而能较好地支持含通配符的查询语句。不过,它是对每一个中间结果进行联结后得到最终查询结果。虽然这样一种方法的确能够解决所有的通配符问题,可是,这种中间结果的联结很有可能是非常耗时的,非凡是对于长路径的简单表达式。

两种索引机制的比较

基于路径的索引主要基于节点合并的策略,通过节点等价、路径等价等技术,得到比原始文档小得多的索引结构,它的结构仍然是树型的,所以在处理查询时,基本上仍须遍历整个索引树才能得到结果。基于路径的索引可以很好地支持简单路径表达式的查询,但是对于正则路径表达式,它效果不是很理想。

基于节点的索引通过编码技术索引每一个节点,节点之间的结构关系通过编码可以在常数时间内确定它可以很好地支持正则路径表达式,但是对于长的路径表达式,尤其是在查询产生的中间结果很多的时候,节点索引的连接操作代价高昂。

基于路径的索引和基于节点的索引各有优缺点,但可以优势互补。目前在实际应用中,基于节点的索引应用更为广泛,研究得也比较成熟,因此,达梦公司有关XML索引结构研究主要以基于节点的索引为主,并适当参考基于路径的索引加以改进。

共2页: 上一页 [1] [2] 下一页
收藏】 【评论】 【推荐】 【投稿】 【打印】 【关闭
发表评论
要记得去论坛讨论,点击注册新会员匿名评论
评论内容:不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规。
阅读排行
随机推荐
实用信息推荐