一种基于索引的xml文档查询优化方法

文档序号:8299146阅读:106来源:国知局
一种基于索引的xml文档查询优化方法
【技术领域】
[0001]本发明涉及面向XML文档数据的查询优化方法,尤其涉及一种基于索引的XML文档查询优化方法。
【背景技术】
[0002]XML是一种应用广泛的数据表示与传输标准,随着越来越多的基于XML的文档出现,对XML文档数据进行管理成为一种迫切的需求。近年来,原生XML数据库技术得到快速发展,针对XML数据模型特点研发了新型的存储、索引、查询等技术。
[0003]XPath是一种标准的XML查询语言,是XQuery的子集,是操作XML文档的核心,经常用于从XML文档中定位数据片段,测试XML文档是否满足需求等。XPath的实现技术得到了广泛关注,典型的实现技术包括基于自动机的方法、基于Twig的整体匹配方法等。然而,在数据库的背景下,当数据量变得越来越大时,现有技术方法对于高效的XPath查询应答具有一定的局限性,一方面由于数据本身的复杂性,XML数据是一种层次嵌套的结构,并不是平面化的数据模型,另外XPath还需要考虑文档序;另一方面是因为查询算法的复杂性,通常需要构建复杂的数据结构,进行代价高昂的迭代和排序操作。
[0004]索引是一种特殊的数据结构,对管理的数据进行特殊编排,以实现快速访问所需要数据的目标。专利申请号为“CN103177120A”的专利描述了一种基于索引的XPath查询模式树匹配方法,将XPath查询转换为模式树匹配问题,再通过访问所涉及的模式树节点的索引数据,利用整体匹配的Twig算法,完成XPath的求值,该方法在一定程度上解决了XPath查询海量数据的问题,但当数据规模持续增长,算法本身的开销越来越大,使得该方法的可用性下降。

【发明内容】

[0005]为解决上述技术问题,本发明的目的是提供一种基于索引的XML文档查询优化方法,该方法针对应用XPath对文档进行匹配过滤的场景(典型的应用包括信息检索、SQL/XML中的XMLExists等),提取了一个XPath子集,通过改进的索引结构,可以通过简单的集合运算实现对XPsth筛选的应答,既提升了查询性能,又提高了索引的空间性能。
[0006]本发明的目的通过以下的技术方案来实现:
[0007]一种基于索引的XML文档查询优化方法,该方法包括:
[0008]构建XPath查询所需路径的索引;
[0009]将XPath表示为树形的查询形式;
[0010]对树形表示的查询中的任意节点,根据索引获取相应文档标识集合,通过集合运算对文档是否匹配XPath进行筛选。
[0011]与现有技术相比,本发明的一个或多个实施例可以具有如下优点:
[0012]本发明通过利用简单的集合运算,借助索引的优势,避免了不必要的数据访问和操作,以及复杂的数据结构的构造与销毁,从而使基于XPath匹配的筛选在实际性能上得到大大提升,增强了其可用性。
【附图说明】
[0013]图1是基于索引的XML文档查询优化方法流程图。
【具体实施方式】
[0014]为使本发明的目的、技术方案和优点更加清楚,下面将结合实施例及附图对本发明作进一步详细的描述。
[0015]如图1所示,为基于索引的XML文档查询优化方法,该方法包括以下步骤:
[0016]步骤10构建XPath查询所需路径的索引;
[0017]对于任意符合上文语法要求的XPath查询,将XPath表示为树结构,其中谓词和逻辑连接符会引入分支。针对这样的一种树形表示的查询,对于从根到任意叶节点的路径,都需要在与之对应的路径上创建索引,其中索引的键为对应的数据内容,索引的值为对应的文档标识。
[0018]步骤20将XPath表示为树形的查询形式;
[0019]对XPath进行解析,经词法、语法分析,构成语法树,即树形表示的XPath查询。
[0020]步骤30对树形表示的查询中的任意节点,根据索引获取相应文档标识集合,通过集合运算,对文档是否匹配XPath进行筛选。
[0021]对树形表示的查询的中间节点,“or”操作按集合交运算处理,其他按集合并处理。对树形表示的查询进行自底向上的求值,当计算完根节点后,便得到了最终匹配的文档标识集合,即对应满足XPath的文档集合。
[0022]上述实施例适用的XPath语句是XPath的一个真子集,涵盖了常用的XPath表达式及功能,具体语法形式如下:
[0023]<0Path>:: = <RootFork> ? <NonForkPath>
[0024]<RootFork>:: = /<RootElemNameXPosPred> ? <LPred>*
[0025]〈RootElemName〉:: = nameTest|*
[0026]<PosPred>:: = [num] | [<PosFunXCmp>num]
[0027]<PosFun>:: = posit1n ()
[0028]<LPred>:: = <Pred><LogicComXLPred> | not ?LPred?
[0029]<NonForkPath>:: = //<relPath>|/<relPath>
[0030]<relPath>:: = <simplePath>|<simplePath><PosPred>|<simplePath><Pred>
[0031]〈simplePath〉:: = 〈step〉|<simplePath>/〈step>|<simplePath>//〈step>
[0032]〈step〉:: = nametTestI?nameTestI * 1.
[0033]<Pred>:: = [<simplePath>]|[<PathPred>]
[0034]<PathPred>:: = <simplePath><Cmp>value
[0035]<Cmp>:: = < I < = I = I > = I > I !=
[0036]<LogicCom>:: = and | or
[0037]num整数值
[0038]value 类型值
[0039]nameTest QName 类型名称
[0040]直观上,本发明所支持的XPath真子集对应于一种只在根的位置进行分叉的查询,其思想是确保不同简单路径相交处在文档中是唯一的,从而可以通过整个文档标识的交集替换复杂的结构连接。原则上,只要能确保查询的中间节点在文档中的唯一性,便可放宽语法限制,采用本方法进行处理。因此,在模式可知的情况下,本实施例有进一步改进的空间。
[0041]虽然本发明所揭露的实施方式如上,但所述的内容只是为了便于理解本发明而采用的实施方式,并非用以限定本发明。任何本发明所属技术领域内的技术人员,在不脱离本发明所揭露的精神和范围的前提下,可以在实施的形式上及细节上作任何的修改与变化,但本发明的专利保护范围,仍须以所附的权利要求书所界定的范围为准。
【主权项】
1.一种基于索引的XML文档查询优化方法,其特征在于,所述方法包括: 构建XPath查询所需路径的索引; 将XPath表示为树形的查询形式; 对树形表示的查询中的任意节点,根据索引获取相应文档标识集合,通过集合运算对文档是否匹配XPath进行筛选。
2.如权利要求1所述的基于索引的XML文档查询优化方法,其特征在于,所述步骤A具体包括:根据XML数据模式和拟支持的XPath查询,创建路径索引。
3.如权利要求1所述的基于索引的XML文档查询优化方法,其特征在于,所述步骤B具体包括:对XPath进行解析,经词法、语法分析,构成语法树。
4.如权利要求1所述的基于索引的XML文档查询优化方法,其特征在于,所述步骤C具体包括:通过索引获取语法树上叶节点对应的文档标识集合,自底向上,通过集合运算进行求值,最终得到满足XPath的文档标识集合。
5.如权利要求1所述的基于索引的XML文档查询优化方法,其特征在于,对路径索引的键为对应的数据内容,索引的值为对应的文档标识。
6.如权利要求1所述的基于索引的XML文档查询优化方法,其特征在于,对树形表示的查询的中间节点,“or”操作按集合交运算处理,其他中间节点按集合交运算。
【专利摘要】本发明公开了一种基于索引的XML文档查询优化方法,所述方法包括:构建XPath查询所需路径的索引;将XPath表示为树形的查询形式;对树形表示的查询中的任意节点,根据索引获取相应文档标识集合,通过集合运算对文档是否匹配XPath进行筛选本发明通过利用简单的集合运算,借助索引的优势,避免了不必要的数据访问和操作,以及复杂的数据结构的构造与销毁,从而使基于XPath匹配的筛选在实际性能上得到大大提升,增强了其可用性。
【IPC分类】G06F17-30
【公开号】CN104615720
【申请号】CN201510061947
【发明人】陈琳, 张学伟, 陈海涛, 黄新波, 汤汨宝, 房亚为
【申请人】同方知网(北京)技术有限公司, 《中国学术期刊(光盘版)》电子杂志社有限公司
【公开日】2015年5月13日
【申请日】2015年2月5日
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1