一种基于层次结构XML编码方法.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
一种基于层次结构XML编码方法

一种基于层次结构的XML编码方法   摘要:随着Web的发展,XML文档的应用越来越广泛。目前针对XML文档的查询处理,已有的查询策略往往需要判断结点的祖先/后代关系,因而对结点要进行编码。但是目前的编码技术,有的在文档更新时需要重新对XML文档进行编码,有的支持XML文档更新但需要庞大的存储空间。本文提出了一种基于层次结构的编码方案,不仅可以在线性时间内判断两个结点的祖先/后代关系,并且可以优化存储。   关键词:XML 编码 层次结构 结点 存储   中图分类号:TP301 文献标识码:A 文章编号:1673-8454(2009)07-0082-03      一、引言      随着大量XML数据的出现,如何有效地存储和查询这些XML数据就成为目前研究XML数据库的一个重要问题。通常,XML数据的存储和查询有四种不同的选择:一是利用文件系统;二是利用关系数据库系统:三是利用面向对象的数据库系统:四是建立一个特殊的数据库系统,或称为原生的XML数据库系统,如Tamino、TextML 等。为了有效支持查询,对于XML结构查询,一种实现方法是建立XML文档树的路径索引,并通过路径索引来加速XML结构查询的计算;另一种方法是对XML文档树中的结点进行编码,即给XML文档树中的每一个结点赋予一个唯一的编码,以便能够通过编码直接判断结点之间的结构关系,而不是对原XML文档进行遍历。也就是说,通过编码将XML结构查询的计算转化为结构连接的计算。目前针对XML文档的查询处理,对结点进行编码的方法已经成为了主流,提出了多种编码方案。其中主要有基于区间的编码和基于路径的编码。基于区间的编码方案主要是利用XML文档有序的特点,根据每一个元素结点在原XML文档中的字典顺序的位置给每一个结点赋予一个编码;而基于路径的编码方案则是利用XML文档的嵌套特点,根据XML的嵌套结构给从根结点开始所能到达的每一条路径和元素结点赋予一个编码。但是,目前已有的一些编码方法,像区间编码[1~2]、前缀编码[3~5]、位向量编码[6]等编码方案,有的不利于文档的更新,有的是编码空间太长,不利于编码的存储。本文提出了一种基于层次结构的编码方案,不仅可以在线性时间内判断两个结点的祖先/后代关系,并且可以优化存储。      二、Stru-code编码      本文提出的Stru-code方案,充分利用二叉树具有层次结构化、容易存储等优点,因此首先把XML文档树转换成二叉树,然后利用二叉树的性质对XML文档树进行编码。本编码方法不但可以在常数时间复杂度内判断结点之间的父子关系或祖先-后裔关系,而且数据存储还采用了分块压缩存储的方法,有效地优化了存储空间。   1.XML文档树到二叉树的转化   由于普通的XML文档树没有规律性,因此可以把它转换为有规律的二叉树,然后再对已转化的二叉树进行编码。这种方法既有利于快速编码,也有利于结点间关系的判断,还有利于编码的存储。编码形式是,其中order代表结点在文档中的位置,而sibling _order代表结点在兄弟中的序号,因此利用它可以有效地支持兄弟间的关系查询。   假设T为XML文档树,BT为转换后相应的二叉树,则   2. Stru-code的编码方案   Stru-code对结点的编码利用了二叉树层次结构的性质,按照结点在完全二叉树中的位置进行编码。下面给出了具体的编码算法。   输入:BT中的结点   输出:BT中所有结点的编码   Stru-code (BinTree BT)   {A,D1,D2均为二叉树中的结点,输出其编码   深度优先遍历BT   if A is Root of BTthen{N.pos=1;}   else{   if D1 is left_child_of(parent(N)) then N.pos=2* parent(N).pos   else {    if D2 is right_child_of(parent(N)) then N.pos=2* parent(N).pos+1}    endif   endif   endif   }   3.XML的结点关系判断   根据Stru-code算法,我们可以得出任何两个结点之间的父亲/孩子、祖先/后代关系。结点间关系判断规则如下:   对于任意的结点?坌A,D,N∈BT   (1)Layer(Code(N)):=Code(N)的二进制数零的个数+1;它表示该结点在XML文档树中的层次。      三、 Stru-code编码的存储      为了节省存储空间,Stru-code编码采用压缩和层次存储的方法解决存储空间优化的问题。由于这些编码都是数字,根据

文档评论(0)

189****7685 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档