一种XML流数据的快速查询方法技术

技术编号:16399232 阅读:15 留言:0更新日期:2017-10-17 19:38
本发明专利技术公开一种XML流数据的快速查询方法,在XML流数据中进行由多个具有复杂层次结构关系的标签路径组成的层次融合式查询,构建了解决此问题的快速查询模型——快速XML多标签路径查询(QXMTQ)。QXMTQ模型基于简洁的查询接口(QI)、查询导航PAT树数据结构模型(QGPATT)和快速查询处理引擎(QQE),其中在QI中提供要查询的标签路径,由模型自适应标签路径之间的复杂层次结构关系,支持谓词表达式参数接口(可选);QGPATT共享标签导航结构和辅助快速搜索结构PAT可以使QQE更快速、更精准地匹配目标标签、过滤无关分支、查询并获取相关的标签值。通过测试表明QXMTQ模型针对大规模XML流数据查询多个层次复杂的标签路径具有非常突出的查询时空效率。

A fast query method for XML stream data

The invention discloses a method for quickly querying XML stream data, integrated query in XML data stream in the tag path by a number of complex hierarchical structure composed of the construction level, understand the rapid query - fast XML model to solve the problem of multi label path query (QXMTQ). QXMTQ model based on simple query interface (QI), PAT navigation query tree data structure model (QGPATT) and fast query processing engine (QQE), which provides a label path to query in QI, a complex hierarchical relationship between the model of adaptive label path, support predicate expression parameter interface (optional); QGPATT share the label aided navigation structure and fast searching structure of PAT can make the QQE more quickly and more accurately match the target label, filter irrelevant branches, query and obtain the relevant tag value. Tests show that the QXMTQ model has a very prominent query space time efficiency for querying multiple hierarchical and complex tag paths for large-scale XML streaming data.

【技术实现步骤摘要】
一种XML流数据的快速查询方法
本专利技术属于信息交换和查询领域,尤其涉及一种XML流数据的快速查询方法,具体为在XML流数据中进行由多个具有复杂结构关系的标签路径组成的快速层次融合式查询,并返回二维结果值集合。
技术介绍
XML(extensiblemarkuplanguage),即可扩展的标记语言,是一套定义语义标记的规范。XML提供统一的方法来描述和交换独立于应用程序的结构化数据。随着网络应用的快速发展,使得XML类型的数据成为基于互联网数据交换的主流数据形式。XML流数据是以流的形式在线传输、实时到达,需要即时解析和处理,因此针对大规模XML流数据的快速查询处理是流查询模型的研究热点。XML格式数据具有天然的层次结构关系即树形结构关系,因此在很多应用场合下针对XML数据的查询也具有层次关系特性。在传统关系数据库中一种常见的层次数据查询应用:有条件地从不同层级的数据表中检索多个字段的数据。假定以下关系:部门(部门编号,部门名称);员工(员工编号,部门编号,员工姓名,职位,性别,年龄),部门和员工之间是一对多的关系(树状结构),对应的简写:Dept(dep_id,dep_name)和Emp(emp_id,dep_id,name,title,gender,age)。显然部门表和员工表是不同层次关系的表,后者是前者的子表,现在要检索出“年龄大于40岁的所有的员工姓名、职位和所属部门名称”,那么对应的SQL脚本语句如下:总结这种层次表联接(融合性)查询具有以下特点:1)数据的循环层次,结果集是以员工层次为中心的循环数据集而不是部门,在SQL中缺省以最低层次为循环中心;2)员工表中必须要有部门编号,标注自己所属部门,需占用员工表空间;3)连接操作体现出层次之间的关联关系同时又具有隔离性,即具有相同部门编号的员工(在员工表中)的所属部门信息(在部门表中)也相同,同时不同的部门拥有不同的员工,即使有跨部门员工,此员工信息也会出现多次(部门编号不同,一对多关系);4)要查询的字段也具有层次融合性,每个员工除了自己的专有信息外还包括所属部门的名字(部门名字在部门表中,不在员工表中)。作为数据交换的主体,XML又具有很强的层级结构自描述特性,上面的两张具有“父子关系”的数据表(部门表和员工表)可以很容易转换成二级循环(部门和员工)的XML格式数据,下层XML分支嵌套在上层的某个循环分支中,即多个员工信息(同一部门的员工)的下层分支嵌入到所属部门的上层分支中,具有天然或缺省的层次联接条件,不需要在员工层标明部门编号(部门编号作为嵌入的员工层分支的祖先节点形式存在),避免了上述特点2)节省了存储空间。基于此,针对此类XML数据提出上述的层次融合式查询需求也是很自然的事情。那么目前的针对XML的查询处理技术是不是能够很好的解决上述问题呢?XPath是一种在XML文档中查找信息的语言,是W3C推荐标准,迄今为止,学术界集中讨论的基于XML的处理都是围绕着XPath展开的。XPath借助于路径表达式来选取XML文档中的节点、节点集合、原子值、以及节点和原子值的混合。通过沿着位置路径表达式(path)或者步(steps)来选取相关节点。但是由于语法上的限制,一般情况下XPath返回的都是一维的结果集,结果集的元素之间都是兄弟关系,即使使用联合操作"|"强行合并两个表达式返回的值集合也不能得到正确的层次融合式结果集。因此单独使用XPath不能直接返回具有不同层次结构关系的多个字段(或者标签路径)的值集合。XQuery建立在XPath表达式基础之上用于XML的数据查询语言,XQuery在XPath之后成为W3C推荐标准。XQuery天生支持XPath并将其作为XQuery语法的一部分,XQuery显然能完成XPath所能完成的任何任务。由于XQuery是图灵完备的(Turing-complete),可以被看作是一种通用语言,因而很容易克服XPath的诸多局限,XQuery提供了一批重要的内置函数和运算符,而且还提供了表达对结果集进行任意转换的功能。但XQuery使用的复杂性明显增加,使用XQuery返回具有不同层次结构关系的结果集往往需要编写非常复杂多层嵌套的XQuery脚本,甚至需要编程语言的帮助下才能完成融合式的查询,而且脚本的执行在时空效率上要依赖于所选择的XQuery查询引擎。
技术实现思路
为了解决上述问题,本专利技术提供一种XML流数据的快速查询方法,采用基于XML流数据的快速层次融合式查询模型QXMTQ(QuickXMLmultipletagsquery),能够满足查询自适应性和较高时空效率的要求。为实现上述目的,本专利技术采用如下的技术方案:一种XML流数据的快速查询方法,包括以下步骤:步骤1、XMLSchema定义预处理:构建查询导航PAT树步骤101、搜索根元素并根据其元素信息创建查询树的根节点;步骤102、判断是否为Schema定义文档中的最末元素,如果是结束此预处理,否则跳转到步骤103;步骤103、通过当前元素寻找所有子元素,构建相对应的子标签节点并放入查询树中,在该子标签节点中放入此子元素标签特定的详细信息,同时在父-子标签节点中放入导航信息;步骤104、根据节点及其所有直属孩子节点构建Patriciatries辅助快速搜索结构,中间PAT节点记录“共同”部分的长度,叶子PAT节点指向对应的直属孩子标签节点;步骤2、查询参数预处理:构建谓词表达式语法计算树、查询导航PAT树步骤201、如果谓词表达式不存在的话,跳转到步骤204,如果存在,顺序执行下一步骤202;步骤202、按照表达式EBNF范式,语法分析谓词条件表达式,并把操作数作为叶子节点,相关的操作符作为其父节点,依次类推构造谓词语法计算树;步骤203、把每个条件表达式子项中的标签路径追加到查询标签路径表中;步骤204、判断是否查询标签路径列表末尾,如果不是执行步骤205,否则结束查询参数预处理;步骤205、针对每一查询标签路径,首先分拆成一个标签序列,按照顺序处理每一个标签,在查询导航PAT树结构中的对应标签节点标注为需要查询聚焦:此标签节点状态为“通过”,同时把父标签节点通向该标签节点的每一个PAT节点标注状态为“通过”,其它的PAT节点的状态为“拒绝”;然后顺序检查下一个标签,直到此标签序列结束,跳转执行步骤204;步骤3、查询处理并提供二维结果集步骤301、解析目标XML流数据文档,解析过程中根据产生的事件回调不同方法,其中事件“StartElement”执行步骤302、事件“Characters”执行步骤303、事件“EndElement”执行步骤304;步骤302、输入标签匹配搜索查询导航PAT树中从当前标签节点也就是父标签节点开始通过PAT辅助结构和其对应的快速搜索算法,能够快速检查确定是否定位到正确的孩子节点标签上,根据匹配结果更新上下文状态,包括:“接受”和“拒绝”状态;步骤303、收集本次事件对应的标签值并放入缓存中;步骤304、如果到达标注谓词计算位置的标签节点,则提取表达式中的各标签路径对应值,然后开始按照谓词表达式语法计算树结构来计算表达式,结果为真则执行步骤305,结果为假则拒绝收集以此标签节点为根节点的分支的所有标签值集本文档来自技高网
...
一种XML流数据的快速查询方法

【技术保护点】
一种XML流数据的快速查询方法,其特征在于,包括以下步骤:步骤1、XML Schema定义预处理:构建查询导航PAT树步骤101、搜索根元素并根据其元素信息创建查询树的根节点;步骤102、判断是否为Schema定义文档中的最末元素,如果是结束此预处理,否则跳转到步骤103;步骤103、通过当前元素寻找所有子元素,构建相对应的子标签节点并放入查询树中,在该子标签节点中放入此子元素标签特定的详细信息,同时在父‑子标签节点中放入导航信息;步骤104、根据节点及其所有直属孩子节点构建Patricia tries辅助快速搜索结构,中间PAT节点记录“共同”部分的长度,叶子PAT节点指向对应的直属孩子标签节点;步骤2、查询参数预处理:构建谓词表达式语法计算树、查询导航PAT树步骤201、如果谓词表达式不存在的话,跳转到步骤204,如果存在,顺序执行下一步骤202;步骤202、按照表达式EBNF范式,语法分析谓词条件表达式,并把操作数作为叶子节点,相关的操作符作为其父节点,依次类推构造谓词语法计算树;步骤203、把每个条件表达式子项中的标签路径追加到查询标签路径表中;步骤204、判断是否查询标签路径列表末尾,如果不是执行步骤205,否则结束查询参数预处理;步骤205、针对每一查询标签路径,首先分拆成一个标签序列,按照顺序处理每一个标签,在查询导航PAT树结构中的对应标签节点标注为需要查询聚焦:此标签节点状态为“通过”,同时把父标签节点通向该标签节点的每一个PAT节点标注状态为“通过”,其它的PAT节点的状态为“拒绝”;然后顺序检查下一个标签,直到此标签序列结束,跳转执行步骤204;步骤3、查询处理并提供二维结果集步骤301、解析目标XML流数据文档,解析过程中根据产生的事件回调不同方法,其中事件“StartElement”执行步骤302、事件“Characters”执行步骤303、事件“EndElement”执行步骤304;步骤302、输入标签匹配搜索查询导航PAT树中从当前标签节点也就是父标签节点开始通过PAT辅助结构和其对应的快速搜索算法,能够快速检查确定是否定位到正确的孩子节点标签上,根据匹配结果更新上下文状态,包括:“接受”和“拒绝”状态;步骤303、收集本次事件对应的标签值并放入缓存中;步骤304、如果到达标注谓词计算位置的标签节点,则提取表达式中的各标签路径对应值,然后开始按照谓词表达式语法计算树结构来计算表达式,结果为真则执行步骤305,结果为假则拒绝收集以此标签节点为根节点的分支的所有标签值集;步骤305、如果计算结果为真并且本标签节点为“接受”状态,则收集本次标签对应值并放入缓存中;步骤306、收集所有缓存中的标签对应结果集,合并组成二维标签结果集,结束查询处理,并返回二维结果集。...

【技术特征摘要】
1.一种XML流数据的快速查询方法,其特征在于,包括以下步骤:步骤1、XMLSchema定义预处理:构建查询导航PAT树步骤101、搜索根元素并根据其元素信息创建查询树的根节点;步骤102、判断是否为Schema定义文档中的最末元素,如果是结束此预处理,否则跳转到步骤103;步骤103、通过当前元素寻找所有子元素,构建相对应的子标签节点并放入查询树中,在该子标签节点中放入此子元素标签特定的详细信息,同时在父-子标签节点中放入导航信息;步骤104、根据节点及其所有直属孩子节点构建Patriciatries辅助快速搜索结构,中间PAT节点记录“共同”部分的长度,叶子PAT节点指向对应的直属孩子标签节点;步骤2、查询参数预处理:构建谓词表达式语法计算树、查询导航PAT树步骤201、如果谓词表达式不存在的话,跳转到步骤204,如果存在,顺序执行下一步骤202;步骤202、按照表达式EBNF范式,语法分析谓词条件表达式,并把操作数作为叶子节点,相关的操作符作为其父节点,依次类推构造谓词语法计算树;步骤203、把每个条件表达式子项中的标签路径追加到查询标签路径表中;步骤204、判断是否查询标签路径列表末尾,如果不是执行步骤205,否则结束查询参数预处理;步骤205、针对每一查询标签路径,首先分拆成一个标签序列,按照顺序处理每一个标签,在查询导航PAT树结构中的对应标签节点标注为需要查询聚焦:此标签节点状态为“通过”,同时把父标签节点通向该标签节点的每一个PAT节点标注状态为“通过”,其它的PAT节点的状态为“拒绝”;然后顺序检查下一个标签,直到此标签序列结束,跳转执行步骤204;步骤3、查询处理并提供二维结果集步骤301、解析目标XML流数据文档,解析过程中根据产生的事件回调不同方法,其中事件“StartElement”执行步骤302、事件“Characters”执行步骤303、事件“EndElement”执行步骤304;步骤302、输入标签匹配搜索查询导航PAT树中从当前标签节点也就是父标签节点开始通过PAT辅助结构和其对应的快速...

【专利技术属性】
技术研发人员:谷晓钢黄玲琴
申请(专利权)人:江苏师范大学
类型:发明
国别省市:江苏,32

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

1