一种基于索引的XML文档查询优化方法技术

技术编号:11453156 阅读:77 留言:0更新日期:2015-05-14 02:22
本发明专利技术公开了一种基于索引的XML文档查询优化方法,所述方法包括:构建XPath查询所需路径的索引;将XPath表示为树形的查询形式;对树形表示的查询中的任意节点,根据索引获取相应文档标识集合,通过集合运算对文档是否匹配XPath进行筛选本发明专利技术通过利用简单的集合运算,借助索引的优势,避免了不必要的数据访问和操作,以及复杂的数据结构的构造与销毁,从而使基于XPath匹配的筛选在实际性能上得到大大提升,增强了其可用性。

【技术实现步骤摘要】
一种基于索引的XML文档查询优化方法
本专利技术涉及面向XML文档数据的查询优化方法,尤其涉及一种基于索引的XML文档查询优化方法。
技术介绍
XML是一种应用广泛的数据表示与传输标准,随着越来越多的基于XML的文档出现,对XML文档数据进行管理成为一种迫切的需求。近年来,原生XML数据库技术得到快速发展,针对XML数据模型特点研发了新型的存储、索引、查询等技术。XPath是一种标准的XML查询语言,是XQuery的子集,是操作XML文档的核心,经常用于从XML文档中定位数据片段,测试XML文档是否满足需求等。XPath的实现技术得到了广泛关注,典型的实现技术包括基于自动机的方法、基于Twig的整体匹配方法等。然而,在数据库的背景下,当数据量变得越来越大时,现有技术方法对于高效的XPath查询应答具有一定的局限性,一方面由于数据本身的复杂性,XML数据是一种层次嵌套的结构,并不是平面化的数据模型,另外XPath还需要考虑文档序;另一方面是因为查询算法的复杂性,通常需要构建复杂的数据结构,进行代价高昂的迭代和排序操作。索引是一种特殊的数据结构,对管理的数据进行特殊编排,以实现快速访问所需要数据的目标。专利申请号为“CN103177120A”的专利描述了一种基于索引的XPath查询模式树匹配方法,将XPath查询转换为模式树匹配问题,再通过访问所涉及的模式树节点的索引数据,利用整体匹配的Twig算法,完成XPath的求值,该方法在一定程度上解决了XPath查询海量数据的问题,但当数据规模持续增长,算法本身的开销越来越大,使得该方法的可用性下降。
技术实现思路
为解决上述技术问题,本专利技术的目的是提供一种基于索引的XML文档查询优化方法,该方法针对应用XPath对文档进行匹配过滤的场景(典型的应用包括信息检索、SQL/XML中的XMLExists等),提取了一个XPath子集,通过改进的索引结构,可以通过简单的集合运算实现对XPsth筛选的应答,既提升了查询性能,又提高了索引的空间性能。本专利技术的目的通过以下的技术方案来实现:一种基于索引的XML文档查询优化方法,该方法包括:构建XPath查询所需路径的索引;将XPath表示为树形的查询形式;对树形表示的查询中的任意节点,根据索引获取相应文档标识集合,通过集合运算对文档是否匹配XPath进行筛选。与现有技术相比,本专利技术的一个或多个实施例可以具有如下优点:本专利技术通过利用简单的集合运算,借助索引的优势,避免了不必要的数据访问和操作,以及复杂的数据结构的构造与销毁,从而使基于XPath匹配的筛选在实际性能上得到大大提升,增强了其可用性。附图说明图1是基于索引的XML文档查询优化方法流程图。具体实施方式为使本专利技术的目的、技术方案和优点更加清楚,下面将结合实施例及附图对本专利技术作进一步详细的描述。如图1所示,为基于索引的XML文档查询优化方法,该方法包括以下步骤:步骤10构建XPath查询所需路径的索引;对于任意符合上文语法要求的XPath查询,将XPath表示为树结构,其中谓词和逻辑连接符会引入分支。针对这样的一种树形表示的查询,对于从根到任意叶节点的路径,都需要在与之对应的路径上创建索引,其中索引的键为对应的数据内容,索引的值为对应的文档标识。步骤20将XPath表示为树形的查询形式;对XPath进行解析,经词法、语法分析,构成语法树,即树形表示的XPath查询。步骤30对树形表示的查询中的任意节点,根据索引获取相应文档标识集合,通过集合运算,对文档是否匹配XPath进行筛选。对树形表示的查询的中间节点,“or”操作引入的中间节点按集合并运算处理,其他中间节点按集合交运算处理。对树形表示的查询进行自底向上的求值,当计算完根节点后,便得到了最终匹配的文档标识集合,即对应满足XPath的文档集合。上述实施例适用的XPath语句是XPath的一个真子集,涵盖了常用的XPath表达式及功能,具体语法形式如下:<OPath>::=<RootFork>?<NonForkPath><RootFork>::=/<RootElemName><PosPred>?<LPred>*<RootElemName>::=nameTest|*<PosPred>::=[num]|[<PosFun><Cmp>num]<PosFun>::=position()<LPred>::=<Pred><LogicCom><LPred>|not(<LPred>)<NonForkPath>::=//<relPath>|/<relPath><relPath>::=<simplePath>|<simplePath><PosPred>|<simplePath><Pred><simplePath>::=<step>|<simplePath>/<step>|<simplePath>//<step><step>::=nametTest|@nameTest|*|.<Pred>::=[<simplePath>]|[<PathPred>]<PathPred>::=<simplePath><Cmp>value<Cmp>::=<|<=|=|>=|>|!=<LogicCom>::=and|ornum整数值value类型值nameTestQName类型名称直观上,本专利技术所支持的XPath真子集对应于一种只在根的位置进行分叉的查询,其思想是确保不同简单路径相交处在文档中是唯一的,从而可以通过整个文档标识的交集替换复杂的结构连接。原则上,只要能确保查询的中间节点在文档中的唯一性,便可放宽语法限制,采用本方法进行处理。因此,在模式可知的情况下,本实施例有进一步改进的空间。虽然本专利技术所揭露的实施方式如上,但所述的内容只是为了便于理解本专利技术而采用的实施方式,并非用以限定本文档来自技高网...
一种基于索引的XML文档查询优化方法

【技术保护点】
一种基于索引的XML文档查询优化方法,其特征在于,所述方法包括:构建XPath查询所需路径的索引;将XPath表示为树形的查询形式;对树形表示的查询中的任意节点,根据索引获取相应文档标识集合,通过集合运算对文档是否匹配XPath进行筛选。

【技术特征摘要】
1.一种基于索引的XML文档查询优化方法,其特征在于,所述方法包括:构建XPath查询所需路径的索引;将XPath表示为树形的查询形式;对树形表示的查询中的任意节点,根据索引获取相应文档标识集合,通过集合运算对文档是否匹配XPath进行筛选;对树形表示的查询的中间节点,“or”操作引入的中间节点按集合并运算处理,其他中间节点按集合交运算处理;通过索引获取语法树上叶节点对应的文档标识集合,对树形表示的查询进行自底向上的求值,当计算完根节点后,便得到了最终匹配的文档标识集合,即对应满足...

【专利技术属性】
技术研发人员:陈琳张学伟陈海涛黄新波汤汨宝房亚为
申请(专利权)人:同方知网北京技术有限公司中国学术期刊光盘版电子杂志社有限公司
类型:发明
国别省市:北京;11

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

1