论文部分内容阅读
近年来XML已越来越被广泛的用于互联网上各种数据交换与数据表示,越来越多的公司与组织都通过XML来进行数据的交换与存储。但是XML有个致命的缺点:结构数据冗余。XML表示有效数据的同时,引入了大量的重复的半结构性元素标记数据。这些数据增加了宽带的传输负荷,同时增加了XML数据的存储成本,造成存储空间不必要的浪费。因此,压缩XML数据成为非常必要的工作。而在压缩数据上支持不全部解压即可快速查询的需求越来越大。现有的一些XML数据压缩算法的压缩率及查询效率不尽如人意。而商业的或研究型的XML数据库这方面的性能也较低,有很大的提升空间。为此,本文分析了现实中的XML数据的特性,特别是大数据量的XML数据的特性,据此提出一种新的压缩算法。该压缩算法不但能高效的压缩XML数据,也支持在压缩的数据上快速的实现用户的查询。首先,为了提高查询效率,在XML结构上提出了一种新的编码方案,本文称之为层次奇数编码法,并从理论上分析了该编码特有的性质。其次,用二进制串压缩XML文档中大量冗余的元素标记名和属性名这样的结构数据,并用Hash的方式实现以提高查询时的效率。然后,通过分析现实中XML文档数据的特性,特别是大数据量的XML文档数据特性,以及现实中用户对XML数据的常用的查询需求,本文定义并提出一种同构子树的概念。以此为基础,创新性的提出一种同构子树索引结构,合并同构子树中的节点,进一步压缩XML文档的冗余结构数据。同时,由于这种索引结构考虑到现实用户的查询需求与模式,相比传统的索引,在压缩数据上的查询效率更高效。并且,根据本文提出的层次奇数编码值的特性,为了进一步压缩数据,即压缩引入的节点编码值,提出了一种n元组合并算法。这样不但进一步压缩了数据,而且相对于不合并压缩层次奇数编码值,在合并的n元上采用n元组分裂等操作还能提高查询效率。再次,本文深入分析了XML数据上基于内容的常用的查询需求,以此为基础,提出一种将一般XML内容数据和常用短关键词查询域内容数据分离压缩的方案。此方式可以很好的降低用户的平均查询反应时间。再其次,分析、讨论了在同构子树索引及n元组分裂的算法上进行XPath简单路径查询、分支路径查询、带值的内容查询以及XQuery查询中常用到的XPath轴查询算法。同时,设计了一辅助的缓冲池,以进一步提高查询效率。最后,本文和现有的几个经典压缩查询算法做了实验对比。实验结果说明本文的算法具有较高的压缩率,并且平均查询时间明显比经典算法的更短。