一种基于索引的XPath查询模式树匹配方法

文档序号:6401923阅读:269来源:国知局
专利名称:一种基于索引的XPath查询模式树匹配方法
技术领域
本发明涉及数据库查询领域,尤其涉及一种在XML数据库中基于索引的XPath查询模式树匹配方法。
背景技术
随着信息技术的迅猛发展,XML已经逐渐成为数据表达和数据交换的标准和载体,在电子商务,网络服务和数字图书馆等诸多重要领域都得到了大规模的应用。对日益增长的海量XML数据进行高性能查询处理也成为了一个重要的问题。XPath是一种对XML文件中的节点进行定位的查询语言,它之于XML数据库的关系就相当于SQL之于关系数据库。XPath的核心语法表示形式是路径表达式,一个路径表达式是从XML文件中的一个节点到另一个节点或一个节点集合的一组步骤,这些步骤以“/”字符分隔,每个步骤包括三个构成组件:轴(axis),它用于以最直接的方式,依靠节点间的结构关系(例如祖先,后代),从上下文节点定位到下一节点集合;节点测试(nodetest),它依据节点名称,节点类型或处理指令类型,对轴定位的节点集进行筛选;一个或多个谓词(predicate)的语法形式为:[表达式],用于对节点测试筛选后的节点集进一步过滤,根据表达式筛除掉一些不符合表达式要求的节点。一个XPath查询语句通常可建模为一棵树状结构的查询模式树。XML数据库查询的核心操作就是根据查询模式树所表示的结构和内容特征,在XML数据空间中进行搜索,提取与之相匹配的数据。目前查询模式树匹配的主流方案可分为以下三类:第一类方法基于导航的思想,通过在XML文档中导航来匹配查询模式,缺点是处理大文档时效率很低,并且只适用于线性模式查询,不适用于带分支的树模式查询。第二类方法基于整体匹配的思想,将XML数据的文档树和查询模式树映射成特定的序列,然后基于序列进行匹配,通常做法是映射到字符串序列,这种方法虽然简洁,但也有其缺陷,对字符串的大量连接和匹配操作,使得性能开销加大,对数据的大量扫描也增加了 I/o的负担。第三类方法基于先分解再连接的思想,将查询模式分解成若干个片段,分别求出每个片段的查询结果然后进行合并,这类方法的缺陷在于分解粒度过细,导致连接和中间结果的数目太多。此外,现有方案的主要关注点是结构和内容的模式匹配。而在实际应用中,用户不仅关注XML文档的结构和内容信息,也关注XML文档节点的位置信息,例如,用户可能想查询文档集合中所有论文的名为“张三”的第一作者,对应的XPath语句为//paper/author [I][.=,张三’]。对于此类位置查询,或位置与内容相结合的查询,现有的模式匹配方法做的尝试较少,解决方法也不够高效
发明内容
为解决上述中存在的问题与缺陷,本发明提供了一种基于索引的XPath查询模式树匹配方法。所述技术方案如下:
一种基于索引的XPath查询模式树匹配方法,包括:
对XML数据库中的文档集合建立索引;
解析XPath查询语句,并构建查询语句对应的查询模式树;
将查询模式树拆分成若干个子查询,并通过索引获取子查询结果;
恢复子查询获取的结果节点流数据,并对节点流数据进行模式树匹配。
本发明提供的技术方案的有益效果是:
1、有效支持多类型查询的索引方法,尤其是支持位置查询的索引方法。该方法在索引方面提供了位置索引和值索引,在一定范围内解决了位置查询及位置和内容相结合的查询问题;在索引数据内容组织方面,以XML文档的结构信息作为索引的数据项,有利于结构模式匹配和数据恢复,以B树为数据组织形式,为高效处理海量数据的查询提供了可靠支持。
2、以路径为粒度进行子查询分解,减少了中间结果的数目。
3、基于索引查询得到的路径末端节点数据流,文档树的叶子节点向文档树的根节点方向恢复,其索引查询只需返回路径的末端模式节点对应的数据节点,优化了模式树匹配处理的数据集规模,减少了 I/o开销,提高了查询性能。


图1是基于索引的XPath查询模式树匹配方法流程图2是恢复节点流数据及对节点流数据进行模式树匹配的流程图3是基于索引的XPath查询模式树查询示例图4是索引数据组织示例图5是数据结构示例图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述:
本实施例提供了一种基于索引的XPath查询模式树匹配方法,如图1所示,该方法包括:
步骤10对XML数据库中的文档集合建立索引;
根据用户的需求,对XML数据库中的某个XML文档集合,建立用户指定类型的索弓丨,将建立成功的索引存储到外存物理设备中。所述索引包括值索引、路径索引和位置索弓丨,具体包括:
建立文档集合的文档数据中的所有模式路径对应的路径索引,其中每条模式路径对应一个简单路径表达式,将索引数据存储到外存物理设备;
优选地,根据指定的简单路径表达式和值的类型,为对应的路径建立相应的值索弓I,辅助实现值查询功能;
优选地,根据用户指定的简单路径表达式,为对应的路径建立位置索引,辅助实现位置查询功能;上述值索引、路径索引和位置索引存储的数据以节点为粒度,存储的是与简单路径表达式相匹配的数据中,与路径末端模式节点相匹配的数据节点信息。索引包括值索引、路径索引、位置索引,其中值索引的类型又分为字符串索引、整数索引、浮点数索弓1、日期索弓丨、日期-时间表索引,以满足用户的精确查询需求。索引的数据组织形式基于B树,它是一种高性能的外存树状数据结构,具有平衡,树层数较少等优点,适用于大规模数据的磁盘存储和查找。针对不同类型的索引,B树存储的数据项和数据项键值也有所不同。值索引存储的数据项以节点文本值为键,数据项内容为〈节点文本值,节点的树结构编码,节点的路径结构编码 > ;位置索引存储的数据项以位置为键,数据项内容为〈位置,节点的树结构编码,节点的路径结构编码〉;节点测试索引存储的数据项以节点的路径结构编码为键,数据项内容为〈节点的路径结构编码,节点的树结构编码〉。节点的树结构编码反映的是它在文档树中的整体位置,节点的路径结构编码反映的是它属于文档树中的哪一条路径模式。例如图4就是图3文档对应的路径索引的数据组织图。
步骤20解析XPath查询语句,并构建查询语句对应的查询模式树;将用户输入的XPath查询语句进行解析,在内存中构建查询语句对应的查询模式树。对用户输入的XPath查询语句,进行词法解析,语法解析和静态类型检查,构建该语句对应的抽象语法树;基于该抽象语法树进行优化,构建查询模式树,模式树中的模式节点包括三类:查询节点、谓词节点和逻辑运算符节点;查询节点用于表示XPath中每步的节点测试,谓词节点表示值查询约束或者位置范围约束,逻辑运算符节点表示逻辑运算符AND和OR0如图3中的XPath查询语句//a[.//b]//c[l] [.>4and.〈8]被建模为图3中的模式树,三类模式节点用三类不同的图形组件表示,圆形节点表示的是查询节点,方形节点表示的是谓词节点,例如图中的c就有三个子孙谓词节点,表示c需要满足位置为1,值大于4,且值小于8这三个条件。菱形节点表示的是逻辑运算符节点,例如图中的c的两个值约束谓词的父节点为AND,表示c需要同时满足这两个条件。步骤30将查询模式树拆分成若干个子查询,并通过索引获取子查询结果;将查询模式树进行优化,拆分成若干个子查询,分析子查询的查询类型,使用对应类型的索引获取子查询结果。从查询模式树的根节点开始,按先序对树进行递归周游,将查询树分解成一个或多个XPath路径查询单元,寻找路径查询单元的策略是:如果访问到一个叶子节点,则找到了从查询模式树的根节点到叶子节点的一条路径,该路径对应着一个XPath路径查询单元。图3中的查询语句可以分解为三个XPath路径查询单元,如下表所示:表权利要求
1.一种基于索引的XPath查询模式树匹配方法,其特征在于,所述方法包括: A对XML数据库中的文档集合建立索引; B解析XPath查询语句,并构建查询语句对应的查询模式树; C将查询模式树拆分成若干个子查询,并通过索引获取子查询结果; D恢复子查询获取的结果节点流数据,并对节点流数据进行模式树匹配。
2.根据权利要求1所述的基于索引的XPath查询模式树匹配方法,其特征在于,所述文档集合建立的索引包括文档树数据中的所有模式路径对应的路径索引、对应路径建立的值索引和位置索引。
3.根据权利要求1所述的基于索引的XPath查询模式树匹配方法,其特征在于,查询模式树中的模式节点包括三类:查询节点、谓词节点和逻辑运算符节点。
4.根据权利要求1所述的基于索引的XPath查询模式树匹配方法,其特征在于,所述步骤D具体包括: 映射模式树到模式节点线性表,对模式节点进行区间编码,并记录模式节点包含的结构信息和位置信息; 对数据节点流进行排序; 取数据节点流中第一节点,根据所述节点判断当前堆栈与模式树局部子树数据节点的匹配性,并将相匹配的节点弹出堆栈放入对应的线性表; 根据节点流中第一节点,从文档树的叶子节点向文档树的根节点方向恢复数据; 取出恢复的数据节点,标记数据节点在模式树中的后代在中间结果线性表中对应的结果区间的开始位置,并放入数据中间栈中;继续从数据节点流中取当前第一节点进行处理; 处理完数据节点流后,自文档树的根节点向文档树的叶子节点方向枚举模式数匹配的最终结果。
全文摘要
本发明公开了一种基于索引的XPath查询模式树匹配方法,包括对XML数据库中的文档集合建立索引;解析XPath查询语句,并构建查询语句对应的查询模式树;将查询模式树拆分成若干个子查询,并通过索引获取子查询结果;恢复子查询获取的结果节点流数据,并对节点流数据进行模式树匹配。本发明基于索引结合数据恢复的方法,优化了模式树匹配要处理的数据规模,减少了I/O开销,提高了匹配性能,此外,本发明提出了配合位置索引进行模式树匹配的方法,有效地解决了位置查询的问题。
文档编号G06F17/30GK103177120SQ20131012597
公开日2013年6月26日 申请日期2013年4月12日 优先权日2013年4月12日
发明者陈琳, 符文君, 陈海涛, 程燕, 王奎 申请人:同方知网(北京)技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1