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

一种XML压缩数据的多查询处理方法技术

技术编号:2914193 阅读:293 留言:0更新日期:2012-04-11 18:40
本发明专利技术为一种压缩XML数据多查询处理方法,其是一种在分布式网络环境下的结构化查询索引树结构,使之作为全局结构优化整个网络的稳定性,并具有多样的查询支持能力;该方法步骤是:a,对原始的XML文档进行压缩;b,采用SQIT构造算法,建立结构化查询索引树SQIT;c,根据建立的构化查询索引树SQIT,进行SQIT查询算法处理。在给定XML源文档和查询语句的基础上,首先构造对应的结构化查询索引树SQIT,然后在此基础上进行查询处理。本发明专利技术方法新颖高效,并具有很好的可扩展性。

【技术实现步骤摘要】

本专利技术属数据库
,具体涉及一种快速有效地对一个XML文档进行多查询处理的方法。采用该方法可以在分布式协作的服务器/客户端网络下,有效地克服XML文档自身的冗余问题,并高效地实现多查询处理。
技术介绍
继HTML(Hyper Text Markup Language)语言之后,XML(eXtensible Markup Language)语言业已逐渐成为互联网信息的主要表示和交换工具。随着XML文档的使用日益频繁广泛,网络上越来越多的信息以XML的模式来进行存储和传递,同时一些需要传递的XML文档规模也不断增大。在有限带宽和处理能力的条件下,怎样有效的进行信息的传递,既能提高查询技术又减小对带宽的消耗,成为当前研究的热点话题之一。对XML文档进行压缩从而减小其规模成为一种可能的解决方式。由于XML文档不同于一般的文本性文档,它同时包含了数据信息和数据间的结构关系,怎样才能有效地利用XML文档的特征来进行有效的压缩,同时又不会对查询处理带来过多的冗余操作,是针对XML压缩的两个关键问题。2000年第一种针对XML的压缩方法XMill被提出,其动机是最大程度的减小XML文档的规模。因此XMill将XML的结构和数据分割开来,先对文档抽取结构(skeleton),再对文档进行遍历,对相同路径下的所有结点归类到同一个桶中,遍历结束之后,每个桶内的数-->据具有相同的特性,如全部都是整数,或全都是字符串。由于针对整数、字符串和浮点数的最优压缩技术互不相同,针对分类之后得到的桶,XMill选择最适合的方法进行压缩,从而保证了整个文档的高压缩率。不同于XMill,XMLPPM针对遍历XML文档的SAX流进行动态的压缩,这个方法通过采用了部分匹配预测(Prediction by Partial Match)方法进行压缩而得以命名。在SAX遍历的过程中,对于每个XML标签,都构造一个PPM模型进行编码。该模型包含了几个部分:Syms部分,用于存储首次出现的标签和属性(attribute)名;Elts部分,利用索引表示当前的标签并保存下来以维持原文档的结构;Atts则用于区分标签和属性,因为其中只保存了属性名和文本数据;Chars用来保存每个标签对应的数据。在Chars中的每个文本数据之前,都标注上对应元素的索引;而Atts和Chars中都通过“<n>“来维持四个模型之间的关系,从而维持模型之间的交叉依赖。通过使用PPM模型来对即将来到的字符串进行预测,XMLPPM方法实现了当前XML压缩方法中的最高压缩率。XMill和XMLPPM通过对XML文档的数据和结构进行分离并针对数据类型选择压缩方法实现了较高的压缩率,但是这两种方法得到的压缩文档不能保存原有的结构,如果要对压缩文档进行查询,就需要将整个文档进行解压缩,而这将耗费比压缩更多的时间和空间。因此学者们转向了支持直接查询的压缩方法。2002年,针对日益广泛的手机,PDA和Palm的有限CPU,第一种同态压缩技术XGRIND得以提出。XGRIND是一种非自适应的压缩方法,在压缩开始前,它必须采用DTD来建立字典,同时还要对原文档进行一-->次预扫描以搜集所有的词频信息,从而建立对应的Huffman编码器。在压缩过程中,对于文档中每个元素和属性,直接采用字典中对应的索引数进行替代。而对大量的非枚举型元素,采用已有的Huffman编码器进行编码。此外枚举型数据则直接使用二元编码。XGRIND旨在保留原文档的结构,因此压缩后的文档实现了和原文档的一一对应,也使得大部分的XPath查询能够直接在压缩文档上进行执行。但对于包含范围谓词(rangepredicate)查询,必须对压缩文档进行对应部分的局部解压缩。由于该方法只针对XML文档的冗余标签,而没有解决文档中的路径和数据重复问题,其压缩率远远低于XMill和XMLPPM。同时由于无法对所有的复杂查询进行直接解析,XGRIND的查询支持率也不尽人意。在分析了XGRIND的优点和缺点之后,2004年XPress被提出。这一方法创新性地提出了针对标签压缩的逆向数学编码,不仅有效地进行编码,同时增强了其对查询执行的支持。这一方法将标签(包括元素和属性)转化为一个浮点数据,转化规则依赖于该标签所处的路径和所有的祖先结点信息。这种压缩方法通过数值区间的包含来表示结点之间的祖先和后代关系。对于文档中的文本数据,XPress则根据数据特征来选择使用字典或Huffman编码。由于逆向编码有效的保持了路径信息,XPress对查询的支持率大大提高。同时这一编码方式,对于复杂路径中的后代查询也进行了有效的解决。
技术实现思路
本专利技术的目的在于提供一种XML压缩数据的多查询处理方法,其是一种在分布式网络环境下的结构化查询-->索引树结构,使之作为全局结构优化整个网络的稳定性,并具有多样的查询支持能力。该方法步骤是:a,对原始的XML文档进行压缩;b,采用SQIT构造算法,建立结构化查询索引树SQIT;c,根据建立的构化查询索引树SQIT,进行SQIT查询算法处理。所述的SQIT构造算法,其步骤是:步骤1,输入参数Sq和R,其中,Sq是查询集合,R是查询树的根节点;步骤2,初始化循环变量qn为0,用来标记当前处理的查询;步骤3,判断条件,如果Sq中还有未被处理的查询,就执行4;否则,就执行12;步骤4,Q是Sq中正在被处理的查询,如果Q是复杂查询,就将Q转化为SXP,然后初始化循环变量sn;步骤5,针对当前每一个栈,都执行6;步骤6,如果Q包含当前栈顶元素,就执行7;否则,执行8;步骤7,把Q压入当前栈内,如果Q包含多个栈顶元素,就合并这些栈,并把Q作为栈顶元素;步骤8,如果栈顶元素包含Q,就执行9;否则,执行5;步骤9,把Q压入到栈的次顶元素中;步骤10,如果Q与所有的栈顶元素都没有包含关系,就新建一个栈,把Q压入新栈;步骤11,计算共享前缀,并把所有栈顶元素记为R的孩子;-->步骤12,初始化循环变量n为0;步骤13,针对每一个栈,如果含有多个元素,就递归执行1;步骤14,输出SQIT树,结束。所述的SQIT查询算法处理,其步骤是:步骤1,输入参数Doc和Sqit,其中,Doc是压缩的XML文档,Sqit是包含所有子查询的SQIT树;步骤2,初始化,新建关于Doc根节点的路径结构PSr,并将Sqit的根压入到PSr的UnsatNodes中,再把PSr压入到路径栈中;步骤3,针对每一个标志T,执行4;步骤4,新建T的路径结构PST,并把路径栈的栈顶元素记为PSP。七专利技术的优点在于,在分布式协作的服务器/客户端网络下,为了有效地克服XML文档自身的冗余问题,并高效地实现多查询处理,我们提出了一种针对压缩数据的基于结构化查询索引树(SQIT)的多查询处理算法。该方法不仅能够支持更加复杂的查询,还能增强普通查询树在分布式环境中的鲁棒性,以适应分布式环境中中转节点不稳定的情况。在同类技术和方法中,本专利技术处于领先水平,是相关领域的技术突破。在与其他技术所作的同等实验中,这些技术优势得到了极佳的验证。附图说明图1 SQIT构造流程图。图2 基于SQIT的查询处理流程图。图3 一组查询及对应的SQIT示意图。图4 SQIT上的复杂查本文档来自技高网
...

【技术保护点】
一种XML压缩数据的多查询处理方法,该方法步骤是: a,对原始的XML文档进行压缩; b,采用SQIT构造算法,建立结构化查询索引树SQIT; c,根据建立的构化查询索引树SQIT,进行SQIT查询算法处理。

【技术特征摘要】
1、一种XML压缩数据的多查询处理方法,该方法步骤是:a,对原始的XML文档进行压缩;b,采用SQIT构造算法,建立结构化查询索引树SQIT;c,根据建立的构化查询索引树SQIT,进行SQIT查询算法处理。2、按权利要求1所述的XML压缩数据的多查询处理方法,其中SQIT构造算法的步骤是:步骤1,输入参数Sq和R,其中,Sq是查询集合,R是查询树的根节点;步骤2,初始化循环变量qn为0,用来标记当前处理的查询;步骤3,判断条件,如果Sq中还有未被处理的查询,就执行4;否则,就执行12;步骤4,Q是Sq中正在被处理的查询,如果Q是复杂查询,就将Q转化为SXP,然后初始化循环变量sn;步骤5,针对当前每一个栈,都执行6;步骤6,如果Q包含当前栈顶元素,就执行7;否则,执行8;步骤7,把Q压入当前栈内,如果Q包含多个栈顶元素,就合并这些栈,并把Q作为栈顶元素...

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

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

1