当前位置: 首页 > 专利查询>复旦大学专利>正文

一种基于文件差异的XML文档压缩方法技术

技术编号:2819905 阅读:351 留言:0更新日期:2012-04-11 18:40
本发明专利技术属数据库技术领域,具体提出了一种新型的XML文档压缩算法,该方法步骤是:a.将XML文件划分为64K的XML文档片断;b.计算XML文档片断之间的差异;c.压缩文档片断之间的差异。解压缩步骤与该过程相反。这是一种高效的基于计算文件差异的XML文档压缩算法。XDrill通过对XML文档树进行划分来挖掘文档内部以及文档间的冗余信息,得到了良好的压缩效果。相比于传统的XML压缩算法,XDrill的文件操作粒度更小,使用也更加灵活。

【技术实现步骤摘要】

本专利技术属数据库
,具体涉及一种新颖高效的XML文档压缩算法,XDrill压缩算法。XDrill通过对XML文档进行划分来挖掘文档内部以及文档间的冗余信息,得到了良好的压缩效果。
技术介绍
XML作为一种自描述标记语言已广泛应用于各个领域,例如电子文书的交换,医院中的电子病例等。XML被大量用来描述半结构化数据,为了支持XML的自描述特性,XML文档中存在着大量标记用来区分文档内容的结构。这种结构和内容并存的存储结构方式在方便文档查询和机器交互的同时也带来了大量的信息冗余。在一些资源受限的系统中,XML文件的冗余问题会造成传输数据时浪费大量带宽。为了解决这一问题,许多研究工作提出了针对XML文档进行压缩的技术,包括XMill,XGrind,XPress等。 XMill首先提出了在XML文档压缩过程中分离结构信息。利用XML文档已有的结构信息,XMill重新构造压缩后的文档结构,使其可以最大效率的利用结构信息提高压缩率。XMill的压缩策略在大多数情况下都能得到非常优秀的压缩效果,但是当XML文档非常小或者XML文档内的标记种类非常多时,对标记名称进行字典编码等过程所带来的附加结构会导致压缩效果下降。实验表明当文件小于20K时,XMill的压缩效果并不明显。这一特点导致XMill非常不适合压缩大量结构简单,体积较小的XML文档集合。
技术实现思路
本专利技术的目的在于提出了一种基于文件差异的XML压缩算法XDrill,使得不管对单一的XML文档还是结构和内容相似的文档集合都能取得良好的压缩效果。 该方法步骤是 a,将XML文件划分为64K的XML文档片断; b,计算XML文档片断之间的差异; c,压缩文档片断之间的差异。 解压缩步骤与该过程相反。 本专利技术的优点是,该算法通过对XML文档树结构进行划分来挖掘文档内部以及文档间的冗余信息,得到了良好的压缩效果。本文提出的方法经扩展后,可以支持压缩后XML文档的增量式存储和降低更新操作的系统开销。 关于XML文档树 本专利技术中,一棵XML文档树T={V,E,Root},其中V={VT,VC},VT表示结构节点,VC表示内容节点,E表示XML文档树的边,Root表示文档根节点。 关于XML文档树的划分和XML文档片断 T中Root的儿子节点集合W={d1,d2...di,...dn},对以di为根节点的子树,定义XML文档树T的划分定义 对应的XML文档为XML文档片断 关于 的内容信息片断和结构信息片断 的内容信息片断是指按照前序遍历遇到内容节点的顺序,将节点内容通过连接符“^“(假定“^“符号不会在XML文档中出现)连接成的字符串。 的结构信息片断是指按照前序遍历的顺序,将结构内容连接成的字符串。这一过程中对遍历到的内容节点,使用符号“^“来代替。 关于参考文件和目标文件 这里参考文件和目的文件都是指XML文档片断。参考文件被用作压缩其它文件的参考。目的文件是指使用参考文件进行压缩的文件。 关于XML文档片断间的相似度 为了消除结构和内容信息混合存储所带来的影响,这里使用传统的树编辑距离DT和文本编辑距离DC来分别定义的结构信息和内容信息相似度。文档片断A通过基本操作达到文档片断B的最少步骤个数定义为两个XML文档片断间的相似度,DiffA→B=DT+DC。 定理1.DiffA→B=DT+DC和DiffB→A=DT+DC相等。由DT和DC定义知,两种编辑距离的基本操作都是可逆的,例如由A转换为B时的添加操作对应于由B转换为A的删除操作等,所以两种编辑距离的值相等。 推论由于DiffA→B=DT+DC和DiffB→A=DT+DC值相同。对于片断集合可以使用无向带权图G={V,E,W}来表示。其中 关于XDrill压缩算法的参考文件关系图 XDrill压缩算法的参考文件关系图R={V,E,W}为一个有向带权无环图。其中边eij表示使用第i个文档片断为参考文件对第j个文档片断进行压缩,称为j依赖于i。首先参考文件关系图必须保证每一个文件只能被压缩一次。另一方面如果R内存在环,则压缩文档不能只依赖已压缩的部分信息进行解压缩。例如假设Di,Dj,Dk之间互相依赖,则三个文件无法在不依赖外部信息的情况下进行解压缩,如图一所示。 定2.当固定每一个文件使用唯一参考文件时(XDrill参考文件关系图中任意一个节点入度最多为1),使得XDrill压缩压缩效果最优的问题等价无向带权图的最小生成子树问题。 定理3.当每一个文件使用两个或两个以上的参考文件时,XDrill压缩压缩效果最优的问题可以被抽象为hypergraph上的branching问题,已被证明是NPC问题。 由于这种计算方法需要提前计算任意两个文档间的关系,会消耗大量时间和资源,所以在实际使用中并不适用。 附图说明 图1 循环依赖关系图。 图2 XDrill系统框架。 具体实施例方式 关于XDrill压缩系统框架 图2是XDrill压缩系统的框架结构图。XDrill压缩系统主要由两大部分组成,一部分是SAX解析器部分,主要用来读取原始文件并且通过调用切分模块(segmentationmodule)来生成对应的参考文件以及目的文件。另一部分是压缩器模块(Compressor),这一部分调用底层的zdelta压缩器对原始文件进行压缩。 其中XML segment是指通过切分模块后生成的XML片断。 关于 XDrill压缩算法和流程 XDrill压缩算法流程如表一所示。XDrill压缩系统需要维护六个系统缓存,其中refl_structure,ref2_structure用来存储两个参考文件的结构片断信息。refl_structure,ref2_contents用来存储两个参考文件的内容片断信息。tar_structure和tar_contents用来维护当前的XML文件片断的信息。SAX解析器不断读取XML文档内容向tar_structure和tar_contents中写入数据。如果当前的SAX事件满足了切割规则的切割断点,调用zdelta压缩工具利用对应的结构和内容片断对目的文件压缩(对应于第7,8两行代码)。对应代码中的第9至14行是对应的缓冲区数据交换。利用ref2_structure和ref2_contents更新refl_structure和ref2_contents中的数据。同样,使用tar_structure和tar_contents中的数据替换ref2_structure和ref2_contents中的数据。最后清空tar_structure和tar_contents。SAX parser继续读入下面的数据。 解压缩过程与此相反,不赘述。 在XDrill系统中为了降低XML文档的操作粒度我们采用了分割XML文档树的做法。对于生成的每一个XML文档片断,依然可以使用已有的XML压缩算法,例如XMill等进行压缩。但是对于XML文档整体来说,已有的XML压缩算法只能利用单个XML文档片断内部的信息冗余,而XDrill在利用该片断自身冗余信息的同时还通过参考文件内的信息预测了本文档来自技高网...

【技术保护点】
一种基于文件差异的XML文档压缩方法,该方法步骤是: a,将XML文件划分为64K的XML文档片断; b,计算XML文档片断之间的差异; c,压缩文档片断之间的差异; 解压缩步骤与该过程相反。

【技术特征摘要】

【专利技术属性】
技术研发人员:周傲英耿志华王晓玲
申请(专利权)人:复旦大学
类型:发明
国别省市:31[中国|上海]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1