CN102929996A - XPath查询优化方法及系统 - Google Patents
XPath查询优化方法及系统 Download PDFInfo
- Publication number
- CN102929996A CN102929996A CN201210411505.8A CN201210411505A CN102929996A CN 102929996 A CN102929996 A CN 102929996A CN 201210411505 A CN201210411505 A CN 201210411505A CN 102929996 A CN102929996 A CN 102929996A
- Authority
- CN
- China
- Prior art keywords
- cost
- path
- query
- predicate
- xpath
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 61
- 238000005457 optimization Methods 0.000 title claims abstract description 47
- 239000011159 matrix material Substances 0.000 claims abstract description 45
- 238000012545 processing Methods 0.000 claims abstract description 21
- 238000004422 calculation algorithm Methods 0.000 claims abstract description 19
- 230000008569 process Effects 0.000 claims description 19
- 238000013138 pruning Methods 0.000 claims description 14
- 230000008859 change Effects 0.000 claims description 11
- 230000004048 modification Effects 0.000 claims description 7
- 238000012986 modification Methods 0.000 claims description 7
- 238000002203 pretreatment Methods 0.000 claims description 7
- 238000011157 data evaluation Methods 0.000 claims description 6
- 230000009471 action Effects 0.000 claims description 4
- 238000010276 construction Methods 0.000 claims description 4
- 238000004364 calculation method Methods 0.000 claims description 3
- 238000007616 round robin method Methods 0.000 claims description 3
- 230000011218 segmentation Effects 0.000 claims description 3
- 238000012360 testing method Methods 0.000 claims description 3
- 230000006872 improvement Effects 0.000 description 4
- 238000007619 statistical method Methods 0.000 description 3
- 238000010586 diagram Methods 0.000 description 2
- 238000005538 encapsulation Methods 0.000 description 2
- 239000000284 extract Substances 0.000 description 2
- 239000012634 fragment Substances 0.000 description 2
- 238000010606 normalization Methods 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 238000013480 data collection Methods 0.000 description 1
- 238000013499 data model Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 239000002245 particle Substances 0.000 description 1
- 230000037361 pathway Effects 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种XPath查询优化方法及系统。方法包括,用层次编码对XML文档的结构概要信息进行统计,用值-编码直方图和RPST对值概要信息进行统计,以及利用以上统计信息对XPath路径表达式进行查询优化的优化算法。查询优化算法包括,S101-S102:初始化数据结构和处理单步路径;S103:判断是否存在未估算路径;S104:判断路径类型;S105-S109:在长路径所有可能的连接中估算出代价最小的连接,用相应数据更新代价矩阵和结果集矩阵;S110-S114:估算出谓词路径中代价最小的排列顺序,用相应数据更新代价矩阵和结果集矩阵,并按最优排列重排谓词;S115:重构查询计划。本发明提供的XPath查询优化方法及系统能有效地对XPath查询语句进行优化,大大提高了XPath查询语句的执行效率。
Description
技术领域
本发明涉及数据库的技术领域,特别涉及一种XPath查询优化方法及系统。
背景技术
近年来,越来越多的数据采用XML进行描述并在网络上传输和交换,XML数据量的急速膨胀给计算机科学领域带来了新的问题:如何有效地存储和快速地检索XML数据。以数据库方式对互联网上的海量XML数据进行存储和查询,是目前关于XML数据处理问题的一种主流思想。对于所有的数据库系统来说,查询处理都是其必不可少、最重要的功能之一。而作为查询处理的重要组成部分,查询优化技术往往是影响查询效率的关键因素。由于XML数据模型的复杂性和其规模越来越大,及其XML查询本身的复杂性,使得XML查询的性能往往并不理想。人们在传统的关系数据库中已经运用得相当成熟的查询优化技术,在面对XML数据的时候却遇到了不少困难,主要表现为这些针对关系数据的查询优化技术无法处理层次结构的XML数据,XML数据库的查询优化技术是目前该领域的一个研究热点。
XML数据库查询优化的物理优化部分,是通过对上一阶段生成的查询计划进行执行次序的优化。一个查询计划由不同的执行片段组成,这些片段执行顺序的不同会导致执行时间的差异。物理优化就是要通过一些方法来估算各种执行次序的执行时间,选择一个代价可能最小的执行次序来重构查询计划。
基于代价估算的XPath查询优化方法,需要对XML数据的分布情况进行数据收集并统计,在查询优化时利用对XML数据的各种统计信息来计算不同查询计划的执行代价,因此除了代价估算模型之外,这种估算方法的准确度在很大程度上依赖于统计信息的精确性。
在关系模型中,进行代价估算是基于独立性假设和均匀分布假设这两个通用的前提。而XML数据的不规则性是对传统统计信息方法的重要挑战,其数据分布情况使得一些传统的分布假设难以成立,结构的复杂性又为获得相对精确的统计信息带来存储和计算上的困难,XML数据的有序性还制约了转换规则的灵活性。所有这些问题,都使得在xml中采用传统的代价估计方法不切实际,会带来很大的误差。
发明内容
本发明的目的在于克服现有技术的缺点与不足,提供一种有效的XPath查询语句的结构连接顺序优化方法。通过对各个子路径的选择度进行快速估算,然后根据估算结果对原查询计划树进行重构,得到优化的查询计划。
本发明的另一目的在于,提供一种XPath查询优化系统。
为了达到上述第一目的,本发明采用以下技术方案:
一种XPath查询优化方法,包括下述步骤:
S101、初始化代价估算矩阵;
S102、处理单步路径;
S103、判断是否存在未估算路径,如果是,则进入步骤S104;如果否,则进入步骤S115;
S104、判断路径类型,若判断得到当前路径为长路径,则进入步骤105,若是谓词路径,则进入步骤110;
S105、判断是否存在下一种可能的连接;对于长度大于1的长路径来说,任意的路径Stepi/…/Stepj,都能将其看成由两个子路径Stepi/…/Stepk和Stepk+1/…/Stepj连接而成,其中i<=k<j,因此该路径共有j-i种连接,k初始为i,每循环一次加1,至j-1结束,若i<=k<j时下一步进入步骤S106,估算该路径在当前连接下消耗的代价;当k=j时表示已遍历完该路径所有可能的连接情况,进入步骤S109估算该路径的结果集和结果集规模;
S106、利用文档统计信息估算长路径代价;
S107、判断是否最优连接;即判断上一步骤计算所得的长路径执行代价是否小于已记录于代价估算矩阵中的最小执行代价cost,若为真则进入步骤108,记录当前连接的信息,否则无需记录任何信息,返回步骤S105;
S108、用最优连接和代价更新代价估算矩阵;进入步骤S108则表示当前路径在k处的分割为代价最小的连接方式,因此在代价估算矩阵中更新最小执行代价cost和最优连接分割点splitIndex,其中splitIndex=k;
S109、利用文档统计信息估算结果集,更新结果集矩阵;
S110、判断是否存在下一种可能的排列;
S111、利用文档统计信息估算谓词路径代价;
S112、判断是否最优排列;判断步骤S111计算所得的谓词路径执行代价是否小于已记录于代价估算矩阵中的最小执行代价cost,若为真则进入步骤S113,记录当前谓词排列顺序的信息,否则无需记录任何信息,返回步骤S110;
S113、更新代价矩阵和结果集矩阵,记录最优排列;进入步骤S108则表示当前谓词排列顺序为目前代价最小的排列方式,因此在代价估算矩阵中更新最小执行代价cost,并记录下当前的谓词排列顺序,以便后面的步骤按此顺序重新排列谓词;
S114:按步骤S113记录的谓词排列顺序来重新排列谓词;
S115:重构查询计划。
优选的,步骤S101中,初始化的具体步骤为:使用查询代价矩阵作为运行时的数据结构,在其中保存代价指标、连接位置和中间结果集的信息;查询代价矩阵中的每一个单元格s[i,j],1<=i<=j<=N,分别记录了其对应的一个部分路径SP=Stepi/…/Stepj的相关信息,用一个四元组<cost,splitIndex,hidList,rsCount>来表示,其中cost表示为完成该部分路径的查询处理,所消耗的总代价;rsCount表示该部分路径的选择度,即对该部分路径执行查询处理后的中间结果集规模;splitIndex记录该部分路径的最佳分割位置,即在该点将路径表达式分成两部分分别查询后再对两部分的结果集进行连接操作能获得最快的处理速度;hidList是完成当前子路径的查询处理后得到的结果集,即层次编码五元组列表。
优选的,步骤S102中,处理单步路径具体为:对于单步路径,不需要进行操作可直接获得目标结点集,所以将单步路径的代价cost为零;单步路径无需也无法进行连接顺序的选择,所以分割位置splitIndex设为其自身;hidList即为该标签名对应的层次编码五元组列表,rsCount即为标签对应的节点个数,通过对hidList中的nodeCount字段求和得到。
优选的,步骤S105中,判断路径类型的步骤是:定义谓词路径为只包含谓词过滤操作符,不包含其它类型操作符的路径表达式,遍历当前处理路径的操作符集合,如果存在除谓词操作符以外的其它类型的操作符,则当前处理路径为长路径,如果不存在,当前处理路径为谓词路径。
优选的,步骤S106中,估算长路径代价的方法为:长路径Stepi/…/Stepj的执行代价估算公式表示为左子路径的执行代价s[i,k].cost、上右子路径的执行代价s[k+1,j].cost、与左右子路径的连接代价joinCost(LongPath(i,k),LongPath(k+1,j))之和,其计算公式如下所示:
s[i,j].cost=s[i,k].cost+s[k+1,j].cost+joinCost(LongPath(i,k),LongPath(k+1,j))。
优选的,步骤S109中,在得出路径Stepi/…/Stepj的查询代价估计值后,需要计算该路径的选择度,以供后续的计算过程使用,为了估算路径Stepi/…/Stepj的选择度,代价估算矩阵中保存了与其关联的层次编码五元组的列表List<HidTuple>,通过嵌套循环方法对s[i,splitIndex].hidList和s[splitIndex+1,j].hidList中的层次编码使用公式Hid(Descendant)&(2length(Hid(Ancestor))–1)=Hid(Ancestor)和公式length(Hid(Child))=length(Hid(Parent))+UpLimit(㏒2(childNameNum(Parent)+1))进行结构关系测试后,得到当前路径的结果集s[i,j].hidList和s[i,j].rsCount。
优选的,步骤S110中,对谓词路径Step[Filter1][Filter2]…[FilterN]来说,其可能的谓词排列顺序共有N!种,当尚有未处理过的谓词排列顺序时,会从此步骤进入步骤S111;若已遍历完所有可能的谓词排列顺序,则下一步进入步骤114;步骤S111中,由于谓词路径的连接操作顺序是固定的,因此其执行代价可以使用下述公式递归计算得到,其公式为:
PredicatePath(1,N).cost=PredicatePath(1,N-1).cost+joinCost(PredicatePath(1,N-1),N)。
优选的,所述文档统计信息包括用层次编码对XML文档的结构概要信息进行统计,用值-编码直方图对XML文档的数值型值概要信息进行统计,用RPST对XML文档的字符串型概要统计信息进行统计,以及利用以上XML文档统计信息对XPath路径表达式进行查询优化的优化算法;
所述层次编码是一种宽度优先的编码形式,其表现为二进制串,其中父节点层次编码相同且标签名相同的XML文档节点在层次编码中对应同一个层次编码;
所述值-编码直方图用于统计数值型节点的值分布情况,对传统直方图进行了改进,在其中增加文档结构信息,即层次编码,用以区分不同路径上的同名节点;
所述RPST在PST的基础上做了两样修改,一是对剪枝添加限制条件;二是在部分被剪枝节点的父节点中保留其少量信息;RPST的字符串谓词选择率估算算法在PST的MO算法上做了两样修改:一是在RPST中查找字符串的最长前缀为空时,字符串谓词选择率为0;二是结合RPST改变获取最长重叠前缀的方法,得到更长的最长重叠前缀及其选择率。
为了达到上述第二目的,本发明采用以下技术方案:
一种XPath查询优化的系统,包括查询解析模块、查询优化模块、查询执行模块和文档加载模块;
所述查询解析模块,用于对输入的XPath查询语句进行编译解析,得到查询语句的内存表现形式,即查询计划树,构成查询计划树的节点中封装了有关操作类型和操作数等信息;
所述查询优化模块,用于对查询计息模块输入的原始查询计划树进行优化,然后将优化后的查询计划树输出到查询执行模块;
所述查询执行模块,用于接收查询优化模块输入的优化后的查询计划树,执行查询计划;从查询计划树的根节点开始递归向下进行遍历,遍历过程中从文档加载模块中取出相应信息,根据查询计划树中操作符节点的类型来执行相应结构连接操作和谓词过滤操作,并将得到的最终查询结果根据查询语句的要求进行重构,将其返回给用户;
所述文档加载模块,用于将XML文档加载到内存并解析为文档树,为其它模块访问XML文档提供支持。
优选的,所述查询优化模块,由统计信息管理器和查询语句优化器组成;其中统计信息管理器用于统计XML文档的结构信息和值信息,将其组织成一定的结构,用于支持查询路径的结果集估算;查询语句优化器实现了上述基于代价估算的XPath查询优化算法,用于对XPath路径表达式在执行中其连接操作的各种可能的执行顺序的代价进行估算,得到最优的执行连接顺序,重构查询计划。
本发明相对于现有技术具有如下的优点及效果:
1、本发明针对上述问题,提出一种XML文档概要信息的统计方法,利用该统计信息能对XPath路径表达式的结果集及其规模进行快速估算;本文针对XML查询处理过程中常见的XPath路径表达式处理,提出了一种有效的XPath查询语句的结构连接顺序优化方法和系统,通过对各个子路径的选择度进行快速估算,然后根据估算结果对原查询计划树进行重构,得到优化的查询计划。
2、XPath查询优化方法及系统能有效地对XPath查询语句进行优化,大大提高了XPath查询语句的执行效率。
附图说明
图1是本发明XPath查询优化方法的流程图;
图2是本发明XPath查询优化系统结构示意图。
具体实施方式
下面结合实施例及附图对本发明作进一步详细的描述,但本发明的实施方式不限于此。
实施例
首先介绍在本发明实施例的XPath查询优化方法中要用到的文档统计信息。文档统计信息用于在查询优化的过程中,对路径表达式的结果集和谓词路径的选择率进行估算,估算出来的结果将用于连接操作的代价估算,从而为查询优化方法选择最优查询计划提供依据。文档统计信息分为结构统计信息和值统计信息两类,下面先介绍结构统计信息。
用在本发明实施例的XPath查询优化方法中的文档结构统计信息是层次编码。层次编码是一种宽度优先的编码形式,其表现为一个二进制串,定义如下:
1、对XML文档的根节点,定义其层次编码为0,即Hid(root)=0。
2、对于文档根节点的子节点,即文档树中除根节点外的第一层节点,考虑节点的标签,若根据文档序,节点N的标签是第i个出现的标签,则定义该节点的层次编码二进制串从最低位起第i位设为1,其余位为0。
3、对于除1和2外的其余节点N,其层次编码二进制串由两部分S1和S2组成:Hid(N)=S2S1,其中S1为其父节点的层次编码,S2是这样一个二进制串:在所有与N处于同一层且具有相同父节点层次编码的节点中,若N的标签是第i个(i≥1)出现的标签,则S2为整数i的二进制表示。
通常仅对XML文档中的元素节点和属性节点计算层次编码,父节点层次编码相同且标签名相同的XML文档节点在层次编码中对应同一个层次编码。
为了能够使用层次编码来判断两个节点之间的关系,以及估算路径表达式的结果集,本发明实施例将层次编码信息扩展为五元组<Hid,nodeCount,childNameNum,textType,isElement>。其中Hid表示节点的层次编码;nodeCount表示层次编码为Hid的XML文档节点个数;childNameNum表示该层次编码的子元素所拥有的不同标签的数目;textType表示节点类型可以进一步划分为3种子类型,分别是数值类型节点、字符串类型节点和文本类型节点;isElement用来区分节点是元素节点还是属性节点。
利用层次编码可以快速地判断任意两个XML节点之间的祖先后代关系或者父子关系。给定两个节点Ancestor和Descendant以及它们对应的五元组<Hid,nodeCount,childNameNum,textType,isElement>。可以通过公式(1)来判断节点Ancestor和Descendant之间的祖先后代关系。
Hid(Descendant)&(2length(Hid(Ancestor))-1)=Hid(Ancestor)(1)
仅利用两个节点的层次编码值只能判断两个节点的祖先后代关系,对于父子关系的判断,需要用到上述五元组中的childNameNum字段来进行判断。如果孩子节点Child的层次编码长度满足公式(2),则节点Child是节点Parent的孩子节点,公式(2)如下所示,
length(Hid(Child))=length(Hid(Parent))+UpLimit(㏒2(childNameNum(Parent)+1))
UpLimit表示向上取整,公式(2)可以检验满足祖先后代关系的节点是否进一步满足父子关系。
通过公式(1)和公式(2)可以判断节点间是否满足祖先后代关系或者父子关系,从而得到XPath路径表达式A/B、A//B或A[B]的结果集。
在XPath查询中,值比较谓词如A[B>Constant]也是常见的路径表达式,需要用值统计信息来对其谓词选择率进行估算。其中数值型的值统计信息用来估算数值型的值比较谓词的选择率大小,字符串型的值统计信息用来估算字符串型的值比较谓词的选择率大小。
直方图是统计数值分布情况常用的方法,为了能使谓词路径的选择率估算结果更加准确,在本发明实施例的XPath查询优化方法中,对传统直方图进行了改进,在其中增加文档结构信息,即层次编码,用以区分不同路径上的同名节点,从而使统计信息更加精确。改进后的直方图称为值-编码直方图,用来统计数值型节点的值分布情况。建立值-编码直方图之前,在扫描整个XML文档建立结构统计信息的同时,记录下数值型节点构建直方图所需的信息,包括每个数值型节点的层次编码值、该节点的值域,以及该节点不同的取值及其对应的出现次数。在本发明实施例中,使用公式(3)和公式(4)对数值型统计数据进行归一化,并将其插入到直方图中,也可以使用其他方式来进行归一化。
bucketSize=(maxValueminValue)/(bucketCount-1)(3)
bucketNum=(int)LowLimit((V-minValue)/bucketSize)(4)
在公式(3)中,maxValue表示某数值型节点的最大取值,minValue表示该节点的最小取值,bucketCount表示直方图的桶的个数,bucketSize表示一个桶的值域。在公式(4)中,LowLimit表示向下取整。当要将某数值型节点取值V出现的次数C插入到直方图时,应当插入的桶编号bucketNum就可以通过公式(4)计算得到。值-编码直方图的一个示例如表1所示。
表1值-编码直方图示例
通过利用值-编码直方图来统计数值型节点的分布情况,在本发明实施例的XPath查询优化方法中,只需提供数值型谓词对应的节点层次编码、比较操作符以及参与比较的数值,即可通过公式(4)从值-编码直方图中获取其统计信息,从而估算出该谓词的选择率。
针对字符串型的谓词路径表达式如A[B=‘String’],本发明实施例提供RPST(extend pruned count-suffix trees,扩展剪枝计数后缀树)和基于RPST的字符串谓词选择率估算算法来解决其字符串谓词选择率的估算问题。RPST是基于PST(pruned count-suffix trees,剪枝计数后缀树)的一种改进。一个RPST的结点Ni的信息包括:一个字符串(根结点字符串为空)、一个计数、孩子指针列表、被剪枝节点信息表(简称为PNT(Ni))。RPST在PST的基础上做了两样修改。一是对剪枝添加限制条件,要求根结点及其孩子节点必须保留,因为根结点的孩子节点包含了在插入PST的所有字符串中出现过的所有字符,保留这些结点可以在估算字符串谓词选择率时,部分判断出查找的字符串是否存在;二是对于每个被剪节点N,若N的父节点Ni不被剪去,则Ni存储N的计数和N的字符串的首字母,记录到PNT(Ni)),通过PNT(Ni)可以在RPST中获取更长的字符子串的选择率。
RPST构建步骤如下:
第一步,以Λ表示从XML某个字符串型元素中提取出的字符串集合,一个Λ对应一棵RPST,顺序遍历Λ,每次取出字符串s,将s插入到RPST中,插入步骤如下:
1)s(假设s的长度为|s|)中,若计数n>0(n的初始值为|s|),则取长度为n的后缀α,以RPST的根结点作为当前结点N,转入执行步骤2);否则结束插入。
2)以Ns表示结点N的字符串,若Ns=α,则转入执行步骤6);否则转入执行步骤3);
3)若Ns是α的前缀,则转入执行步骤4),否则转入执行步骤5);
4)更新α=Ns-α,查找N是否存在一个孩子结点的字符串首字母与α首字母相同。若存在,将N更新为该孩子结点,转入执行步骤2);若不存在,新建结点N’,设置N’的字符串为α,计数为1,将N’添加到N的孩子列表中去。为s对结点N’进行标记,转入执行步骤6)。
5)结点N分裂出结点N’,新建结点N”。以Ns∩α表示Ns与α重叠的字符子串,对于结点N,字符串更新为Ns∩α,孩子结点更新为N’和N”。对于结点N’,字符串更新为Nα-Ns∩α,计数值更新为Nc,孩子结点更新为原结点N孩子结点。对于结点N”,字符串更新为α-(Ns∩α),计数更新为1,其余信息为空。为s对结点N”进行标记,转入执行步骤6)。
6)若N未被s标记,为s对该结点进行标记,并将当前结点N的计数Nc加1;否则,不做改变。最后n=n-1,转入执行步骤1)。
第二步,根据RPST对PST的两种改进,将结点计数小于等于某个特定剪枝阀值p的结点剪去。以根结点作为当前结点开始,剪枝过程如下:
1)对于当前结点N,若N的第i(i的初始值为1)个孩子结点CN存在,执行步骤2);否则结束结点N的剪枝。
2)若CN的计数值CNc>p或者CN为根结点,又或者CN是根结点的孩子结点,则对CN执行步骤1)。否则执行步骤3)
3)将CN结点的计数CNc及CN的首字母存入PNT(N),i=i+1,执行步骤1)。
RPST的字符串谓词选择率估算算法在PST的MO算法上做了两样修改:一是在RPST中查找字符串的最长前缀为空时,字符串谓词选择率为0;二是在在RPST中查找字符串的最长前缀时,结合PNT(Ni)保存的被剪枝孩子结点计数与第二层相应结点计数的关系,得到更长最长前缀以及其选择率。改进后的算法称为EMO算法,EMO算法的计算公式可以描述为:
Pr(s)≈Pr(bi)*∏Pr(bi)/Pr(bi-1∩bi),i=2…n (5)
其中,s是所要查找的字符串,Pr(s)表示s的选择率,bi表示每次在RPST中获取到的最长前缀,bi-1∩bi表示最长前缀bi-1和最长前缀bi的重叠字符子串,并且bi-1∩bi≠bi。
上述结构信息统计方法和值信息统计方法,可以有效统计XML文档的概要信息,可以帮助XPath查询优化方法快速获取相对准确的路径表达式结果集和谓词路径表达式选择率,从而为代价估算提供支持,为XPath查询优化算法选择最优查询计划提供决策依据。
然后,结合图1所示的本发明实施例提供的XPath查询优化方法进行详细说明。对于一个XPath路径表达式来说,不同的结构连接执行顺序会产生不同的执行代价,例如路径表达式A/B/C,其结构连接执行顺序可以是(A/B)/C,也可以是A/(B/C),两种连接执行顺序消耗的执行代价不同。本发明实施例在XPath查询优化方法中使用动态规划算法对XPath路径表达式的物理查询计划进行优化,以求得完成查询计划可采用的最佳结构连接顺序。算法通过计算各种可能的结构连接顺序的执行代价,然后据此进行分析得到优化结果。图1示出了本发明实施例的XPath查询优化方法的较佳实施方式流程图,该流程包括以下步骤:
步骤101:初始化代价估算矩阵。
本发明实施例的XPath查询优化方法运行时需要保存各种连接顺序下的代价指标、连接位置、中间结果集和中间结果集规模等信息,因此本发明实施例使用查询代价矩阵作为运行时的数据结构,在其中保存代价指标、连接位置和中间结果集等信息。对于任意XPath查询表达式P=Step1/Step2/…/StepN,我们定义如表2所示的矩阵:
表2查询代价矩阵
查询代价矩阵中的每一个单元格s[i,j],1<=i<=j<=N,分别记录了其对应的一个部分路径SP=Stepi/…/Stepj的相关信息,可以用一个四元组<cost,splitIndex,hidList,rsCount>来表示,其中cost表示为完成该部分路径的查询处理,所消耗的总代价;rsCount表示该部分路径的选择度,即对该部分路径执行查询处理后的中间结果集规模;splitIndex记录该部分路径的最佳分割位置,即在该点将路径表达式分成两部分分别查询后再对两部分的结果集进行连接操作能获得最快的处理速度;hidList是完成当前子路径的查询处理后得到的结果集,即层次编码五元组列表。
步骤102:处理单步路径。
对于单步路径来说,不需要进行操作可直接获得目标结点集,所以将单步路径的代价cost为零;单步路径无需也无法进行连接顺序的选择,所以分割位置splitIndex设为其自身;hidList即为该标签名对应的层次编码五元组列表,rsCount即为标签对应的节点个数,可通过对hidList中的nodeCount字段求和得到;完成此步骤后,表2中对角线的所有单元格都将被填写完毕。
步骤103:判断是否存在未估算路径。
因为估算路径Stepi/…/Stepj的代价需要用到查询代价矩阵中第i行中位于j列左侧的所有单元格的信息,以及第j列中位于i行下方的所有单元格的信息,所以要沿着对角线往右上角方向移动来处理相关路径并填写表格,直到处理完路径Step1/…/StepN并填写完查询代价矩阵的单元格s[1,N]才结束。
步骤104:判断路径类型。
在本发明实施例中,定义谓词路径为只包含谓词过滤操作符,不包含其它类型操作符的路径表达式,例如路径A[B][C=Constant][D=’String’],其中只包含谓词过滤操作符“[]”,没有包含其它类型的操作符如父子连接操作符“/”或祖先后代连接操作符“//”;定义长路径为步数大于1,且至少包含一个除谓词过滤操作符[]之外的其它类型操作符的路径表达式,例如路径A//B或A/B[C]等。
由于长路径和谓词路径在子路径连接、代价估算、以及结果集估算等方面都存在差异,因此在本步骤中要获取当前处理的路径类型,以便在后面的步骤中分情况处理。设longPathCost方法表示用长路径的处理方法来处理当前路径,predicatePathCost表示用处理谓词路径的方法来处理当前路径,则该算法可以表示如下:
若判断得到当前路径为长路径,则进入步骤105,若是谓词路径,则进入步骤110。
步骤105:判断是否存在下一种可能的连接。
对于长度大于1的长路径来说,任意的路径Stepi/.../Stepj,都可以将其看成由两个子路径Stepi/.../Stepk和Stepk+1/.../Stepj连接而成,其中i<=k<j,因此该路径共有j-i种连接,k初始为i,每循环一次加1,至j-1结束。i<=k<j时下一步进入步骤106,估算该路径在当前连接下消耗的代价;当k=j时表示已遍历完该路径所有可能的连接情况,进入步骤109估算该路径的结果集和结果集规模。
步骤106:估算长路径代价。
在上一步骤中,已经将长路径Stepi/.../Stepj分解为两个子路径Stepi/.../Stepk和Stepk+1/.../Stepj,因此长路径Stepi/.../Stepj的执行代价估算公式可以表示为左子路径的执行代价s[i,k].cost、上右子路径的执行代价s[k+1,j].cost、与左右子路径的连接代价joinCost(LongPath(i,k),LongPath(k+1,j))之和,如公式(6)所示:
s[i,j].cost=s[i,k].cost+s[k+1,j].cost+joinCost(LongPath(i,k),LongPath(k+1,j))
XPath查询中的结构连接操作与关系数据库中的表连接操作类似,能够以嵌套循环的方式进行处理,来对参与连接的两个节点集中的节点进行结构关系判断,因此结构连接的执行代价也近似于两个节点集的节点数目的乘积。但由于参与结构连接的操作数和操作符的不同,XPath查询中的结构连接操作又细分为表3所示的8种。由于每种连接操作的单位执行代价不同,因此使用时间调整系数fi(i=1,2,…7)来调整连接代价估算公式,使之更接近实际查询执行的情况。长路径的连接代价估算公式如表3所示,其中totalNodes表示所查询的XML文档中的节点总数。
表3长路径的连接代价估算公式
步骤107:判断是否最优连接。
判断上一步骤计算所得的长路径执行代价是否小于已记录于代价估算矩阵中的最小执行代价cost,若为真则进入步骤108,记录当前连接的信息,否则无需记录任何信息,返回步骤105。
步骤108:用最优连接和代价更新代价估算矩阵。
进入步骤108则表示当前路径在k处的分割为代价最小的连接方式,因此在代价估算矩阵中更新最小执行代价cost和最优连接分割点splitIndex,其中splitIndex=k。
步骤109:估算结果集,更新结果集矩阵。
在得出路径Stepi/…/Stepj的查询代价估计值后,需要计算该路径的选择度,以供后续的计算过程使用。为了估算路径Stepi/…/Stepj的选择度,代价估算矩阵中保存了与其关联的层次编码五元组的列表List<HidTuple>,通过嵌套循环方法对s[i,splitIndex].hidList和s[splitIndex+1,j].hidList中的层次编码使用公式(1)和公式(2)进行结构关系测试后,便可得到当前路径的结果集s[i,j].hidList和s[i,j].rsCount。
步骤110:判断是否存在下一种可能的排列。
对于谓词路径来说,其谓词连接操作的执行顺序是固定的,只能从左往右逐个谓词进行连接操作,例如谓词路径表达式A[B][C],其连接执行顺序只能是(A[B])[C],而不能是A([B][C])。但是在谓词路径表达式中,谓词的排列顺序是可变的,对上述例子来说,谓词的排列顺序可以是A[B][C],也可以是A[C][B]。两种谓词排列顺序的执行代价不同,因此在谓词路径中也存在谓词排列顺序优化的问题。
对谓词路径Step[Filter1][Filter2]…[FilterN]来说,其可能的谓词排列顺序共有N!种,当尚有未处理过的谓词排列顺序时,会从此步骤进入步骤111;若已遍历完所有可能的谓词排列顺序,则下一步进入步骤114。
步骤111:估算谓词路径代价。
由于谓词路径的连接操作顺序是固定的,因此其执行代价可以使用公式(7)递归计算得到。
PredicatePath(1,N).cost=PredicatePath(1,N-1).cost+joinCost(PredicatePath(1,N-1),N)(7)
根据参与谓词连接的操作数类型的不同,谓词连接操作分为如表4所示的4种类型。根据步骤110确定的谓词排列顺序,使用表4所示谓词路径的连接代价估算公式来估算在此排列顺序下该谓词路径的执行代价。其中[B=’C’]表示值比较型谓词,既可以是数值型值比较谓词也可以是字符串型值比较谓词。
表4谓词路径的连接代价估算公式
步骤112:判断是否最优排列。
判断步骤11计算所得的谓词路径执行代价是否小于已记录于代价估算矩阵中的最小执行代价cost,若为真则进入步骤113,记录当前谓词排列顺序的信息,否则无需记录任何信息,返回步骤110。
步骤113:更新代价矩阵和结果集矩阵,记录最优排列。
进入步骤108则表示当前谓词排列顺序为目前代价最小的排列方式,因此在代价估算矩阵中更新最小执行代价cost,并记录下当前的谓词排列顺序,以便后面的步骤按此顺序重新排列谓词。
步骤114:重新排列谓词。
按照步骤113记录的谓词排列顺序来重新排列谓词。
步骤115:重构查询计划。
在前面步骤所述的查询代价估算结果的基础上,利用代价估算矩阵中的四元组中的splitIndex字段的信息,对从查询解析器输入的查询计划树进行重构,然后输出重构后的优化的查询计划树。详细算法描述如下:
其次,对本发明实施例提供的XPath查询优化系统进行详细说明。图2示出了本发明实施例XPath查询优化系统的结构示意图,该系统201包括:查询解析模块202、查询优化模块203、查询执行模块204、文档加载模块205。
所述查询解析模块202,用于编译解析用户输入的XPath查询语句,得到查询语句的内存表现形式,即原始的查询计划树,将查询语句的操作类型和操作数等信息封装在查询计划树中,然后将其输出到查询优化模块203进行优化。
所述查询优化模块203,用于对查询计息模块202输入的原始查询计划树进行优化,然后将优化后的查询计划树输出到查询执行模块204。其中包括统计信息管理器和查询语句优化器两部分,统计信息管理器用于生成XML文档的结构统计信息、数值型值统计信息和字符串型值统计信息,并将数值型统计信息组织成值-编码直方图的形式,将字符串型值统计信息组织成RPST的形式,提供EMO算法,用于支持查询路径的结果集估算。查询语句优化器实现了上述XPath查询优化方法,利用XML文档统计信息,结合代价估算模型,对XPath路径表达式在执行中的各种可能的连接操作执行顺序的代价进行估算,并据此重构查询计划。
所述查询执行模块204,用于接收查询优化模块203输入的优化后的查询计划树,执行查询计划。从查询计划树的根节点开始递归向下进行遍历,遍历过程中从文档加载模块205中取出相应信息,根据查询计划树中操作符节点的类型来执行相应结构连接操作和谓词过滤操作,并将得到的最终查询结果根据查询语句的要求进行重构,将其返回给用户;
所述文档加载模块205,用于将XML文档加载到内存,并将其解析文档树,供其它模块访问XML文档使用。
本发明实施例提供的XPath查询优化系统,可以按照本发明实施例提供的XPath查询优化方法进行工作,查询解析模块202将用户输入的XPath查询语句解析为原始的查询计划树,并将查询相关的操作类型和操作数等信息封装到树节点中,并将其输出到查询优化模块203。查询优化模块203首先根据文档加载模块205提供的文档信息提取XML文档的结构统计信息和值统计信息,然后查询优化器利用文档统计信息和代价估算模型对查询语句各种可能的物理执行计划进行代价估算,并选择最优的结构连接顺序对查询计划树进行重构,然后将优化后的查询计划树输出到查询执行模块204。查询执行模块204从文档加载模块205中获取查询执行需要的文档信息,对输入的查询计划树执行查询,并将最终查询结果返回给用户。由于在查询解析模块202和查询执行模块204中间加入了查询优化模块203,对原始查询计划进行了优化重构,大大提高了XPath查询语句的执行效率。
综上所述,本发明实施例提供的XPath查询优化方法及系统能有效地对XPath查询语句进行优化,大大提高了XPath查询语句的执行效率。
上述实施例为本发明较佳的实施方式,但本发明的实施方式并不受上述实施例的限制,其他的任何未背离本发明的精神实质与原理下所作的改变、修饰、替代、组合、简化,均应为等效的置换方式,都包含在本发明的保护范围之内。
Claims (10)
1.一种XPath查询优化方法,其特征在于,包括下述步骤:
S101、初始化代价估算矩阵;
S102、处理单步路径;
S103、判断是否存在未估算路径,如果是,则进入步骤S104;如果否,则进入步骤S115;
S104、判断路径类型,若判断得到当前路径为长路径,则进入步骤105,若是谓词路径,则进入步骤110;
S105、判断是否存在下一种可能的连接;对于长度大于1的长路径来说,任意的路径Stepi/…/Stepj,都能将其看成由两个子路径Stepi/…/Stepk和Stepk+1/…/Stepj连接而成,其中i<=k<j,因此该路径共有j-i种连接,k初始为i,每循环一次加1,至j-1结束,若i<=k<j时下一步进入步骤S106,估算该路径在当前连接下消耗的代价;当k=j时表示已遍历完该路径所有可能的连接情况,进入步骤S109估算该路径的结果集和结果集规模;
S106、利用文档统计信息估算长路径代价;
S107、判断是否最优连接;即判断上一步骤计算所得的长路径执行代价是否小于已记录于代价估算矩阵中的最小执行代价cost,若为真则进入步骤108,记录当前连接的信息,否则无需记录任何信息,返回步骤S105;
S108、用最优连接和代价更新代价估算矩阵;进入步骤S108则表示当前路径在k处的分割为代价最小的连接方式,因此在代价估算矩阵中更新最小执行代价cost和最优连接分割点splitIndex,其中splitIndex=k;
S109、利用文档统计信息估算结果集,更新结果集矩阵;
S110、判断是否存在下一种可能的排列;
S111、利用文档统计信息估算谓词路径代价;
S112、判断是否最优排列;判断步骤S111计算所得的谓词路径执行代价是否小于已记录于代价估算矩阵中的最小执行代价cost,若为真则进入步骤S113,记录当前谓词排列顺序的信息,否则无需记录任何信息,返回步骤S110;
S113、更新代价矩阵和结果集矩阵,记录最优排列;进入步骤S108则表示当前谓词排列顺序为目前代价最小的排列方式,因此在代价估算矩阵中更新最小执行代价cost,并记录下当前的谓词排列顺序,以便后面的步骤按此顺序重新排列谓词;
S114:按步骤S113记录的谓词排列顺序来重新排列谓词;
S115:重构查询计划。
2.根据权利要求1所述的XPath查询优化方法,其特征在于,步骤S101中,初始化的具体步骤为:使用查询代价矩阵作为运行时的数据结构,在其中保存代价指标、连接位置和中间结果集的信息;查询代价矩阵中的每一个单元格s[i,j],1<=i<=j<=N,分别记录了其对应的一个部分路径SP=Stepi/.../Stepj的相关信息,用一个四元组<cost,splitIndex,hidList,rsCount>来表示,其中cost表示为完成该部分路径的查询处理,所消耗的总代价;rsCount表示该部分路径的选择度,即对该部分路径执行查询处理后的中间结果集规模;splitIndex记录该部分路径的最佳分割位置,即在该点将路径表达式分成两部分分别查询后再对两部分的结果集进行连接操作能获得最快的处理速度;hidList是完成当前子路径的查询处理后得到的结果集,即层次编码五元组列表。
3.根据权利要求2所述的XPath查询优化方法,其特征在于,步骤S102中,处理单步路径具体为:对于单步路径,不需要进行操作可直接获得目标结点集,所以将单步路径的代价cost为零;单步路径无需也无法进行连接顺序的选择,所以分割位置splitIndex设为其自身;hidList即为该标签名对应的层次编码五元组列表,rsCount即为标签对应的节点个数,通过对hidList中的nodeCount字段求和得到。
4.根据权利要求1所述的XPath查询优化方法,其特征在于,步骤S105中,判断路径类型的步骤是:定义谓词路径为只包含谓词过滤操作符,不包含其它类型操作符的路径表达式,遍历当前处理路径的操作符集合,如果存在除谓词操作符以外的其它类型的操作符,则当前处理路径为长路径,如果不存在,当前处理路径为谓词路径。
5.根据权利要求1所述的XPath查询优化方法,其特征在于,步骤S106中,估算长路径代价的方法为:长路径Stepi/…/Stepj的执行代价估算公式表示为左子路径的执行代价s[i,k].cost、上右子路径的执行代价s[k+1,j].cost、与左右子路径的连接代价joinCost(LongPath(i,k),LongPath(k+1,j))之和,其计算公式如下所示:
s[i,j].cost=s[i,k].cost+s[k+1,j].cost+joinCost(LongPath(i,k),LongPath(k+1,j))。
6.根据权利要求1所述的XPath查询优化方法,其特征在于,步骤S109中,在得出路径Stepi/…/Stepj的查询代价估计值后,需要计算该路径的选择度,以供后续的计算过程使用,为了估算路径Stepi/…/Stepj的选择度,代价估算矩阵中保存了与其关联的层次编码五元组的列表List<HidTuple>,通过嵌套循环方法对s[i,splitIndex].hidList和s[splitIndex+1,j].hidList中的层次编码使用公式Hid(Descendant)&(2length(Hid(Ancestor))–1)=Hid(Ancestor)和公式length(Hid(Child))=length(Hid(Parent))+UpLimit(㏒2(childNameNum(Parent)+1))进行结构关系测试后,得到当前路径的结果集s[i,j].hidList和s[i,j].rsCount。
7.根据权利要求1所述的XPath查询优化方法,其特征在于,步骤S110中,对谓词路径Step[Filter1][Filter2]…[FilterN]来说,其可能的谓词排列顺序共有N!种,当尚有未处理过的谓词排列顺序时,会从此步骤进入步骤S111;若已遍历完所有可能的谓词排列顺序,则下一步进入步骤114;
步骤S111中,由于谓词路径的连接操作顺序是固定的,因此其执行代价使用下述公式递归计算得到,其公式为:
PredicatePath(1,N).cost=PredicatePath(1,N-1).cost+joinCost(PredicatePath(1,N-1),N)。
8.根据权利要求1所述的XPath查询优化方法,其特征在于,所述文档统计信息包括用层次编码对XML文档的结构概要信息进行统计,用值-编码直方图对XML文档的数值型值概要信息进行统计,用扩展剪枝计数后缀树RPST对XML文档的字符串型概要统计信息进行统计,以及利用以上XML文档统计信息对XPath路径表达式进行查询优化的优化算法;
所述层次编码是一种宽度优先的编码形式,其表现为二进制串,其中父节点层次编码相同且标签名相同的XML文档节点在层次编码中对应同一个层次编码;
所述值-编码直方图用于统计数值型节点的值分布情况,对传统直方图进行了改进,在其中增加文档结构信息,即层次编码,用以区分不同路径上的同名节点;
所述RPST在剪枝计数后缀树PST的基础上做了两样修改,一是对剪枝添加限制条件;二是在部分被剪枝节点的父节点中保留其少量信息;RPST的字符串谓词选择率估算算法在PST的MO算法上做了两样修改:一是在RPST中查找字符串的最长前缀为空时,字符串谓词选择率为0;二是结合RPST改变获取最长重叠前缀的方法,得到更长的最长重叠前缀及其选择率。
9.一种XPath查询优化的系统,其特征在于,包括查询解析模块、查询优化模块、查询执行模块和文档加载模块;
所述查询解析模块,用于对输入的XPath查询语句进行编译解析,得到查询语句的内存表现形式,即查询计划树,构成查询计划树的节点中封装了有关操作类型和操作数的信息;
所述查询优化模块,用于对查询计息模块输入的原始查询计划树进行优化,然后将优化后的查询计划树输出到查询执行模块;
所述查询执行模块,用于接收查询优化模块输入的优化后的查询计划树,执行查询计划;从查询计划树的根节点开始递归向下进行遍历,遍历过程中从文档加载模块中取出相应信息,根据查询计划树中操作符节点的类型来执行相应结构连接操作和谓词过滤操作,并将得到的最终查询结果根据查询语句的要求进行重构,将其返回给用户;
所述文档加载模块,用于将XML文档加载到内存并解析为文档树,为其它模块访问XML文档提供支持。
10.根据权利要求9所述的XPath查询优化的系统,其特征在于,所述查询优化模块,由统计信息管理器和查询语句优化器组成;其中统计信息管理器用于统计XML文档的结构信息和值信息,将其组织成一定的结构,用于支持查询路径的结果集估算;查询语句优化器用于对XPath路径表达式在执行中其连接操作的各种可能的执行顺序的代价进行估算,得到最优的执行连接顺序,重构查询计划。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210411505.8A CN102929996B (zh) | 2012-10-24 | 2012-10-24 | XPath查询优化方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210411505.8A CN102929996B (zh) | 2012-10-24 | 2012-10-24 | XPath查询优化方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102929996A true CN102929996A (zh) | 2013-02-13 |
CN102929996B CN102929996B (zh) | 2015-06-03 |
Family
ID=47644794
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210411505.8A Expired - Fee Related CN102929996B (zh) | 2012-10-24 | 2012-10-24 | XPath查询优化方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102929996B (zh) |
Cited By (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103927346A (zh) * | 2014-03-28 | 2014-07-16 | 浙江大学 | 基于数据量的查询连接方法 |
CN103955540A (zh) * | 2014-05-20 | 2014-07-30 | 中国人民大学 | 一种溯源表达式的责任分析方法 |
CN104615720A (zh) * | 2015-02-05 | 2015-05-13 | 同方知网(北京)技术有限公司 | 一种基于索引的xml文档查询优化方法 |
CN105701128A (zh) * | 2014-11-28 | 2016-06-22 | 华为技术有限公司 | 一种查询语句的优化方法和装置 |
CN106815339A (zh) * | 2017-01-03 | 2017-06-09 | 北京华胜信泰数据技术有限公司 | 查询计划更新的方法和装置 |
CN107133281A (zh) * | 2017-04-14 | 2017-09-05 | 浙江鸿程计算机系统有限公司 | 一种基于分组的全局多查询优化方法 |
WO2017157160A1 (zh) * | 2016-03-14 | 2017-09-21 | 阿里巴巴集团控股有限公司 | 数据表连接方式处理方法及装置 |
CN107463671A (zh) * | 2017-08-03 | 2017-12-12 | 北京大学 | 路径查询的方法和装置 |
CN110084321A (zh) * | 2019-05-08 | 2019-08-02 | 牡丹江师范学院 | 一种基于k-均值聚类的软件测试目标路径选择方法 |
CN110622156A (zh) * | 2017-05-12 | 2019-12-27 | 华为技术有限公司 | 用于查询大图的增量图计算 |
CN111241127A (zh) * | 2020-01-16 | 2020-06-05 | 华南师范大学 | 基于谓语组合的sparql查询优化方法、系统、存储介质及设备 |
CN111310191A (zh) * | 2020-02-12 | 2020-06-19 | 广州大学 | 一种基于深度学习的区块链智能合约漏洞检测方法 |
CN112115302A (zh) * | 2020-09-29 | 2020-12-22 | 集美大学 | 一种XML文档的并行XPath查询方法、终端设备及存储介质 |
CN112528082A (zh) * | 2020-12-08 | 2021-03-19 | 集美大学 | 一种XML文档的流水线XPath查询方法、终端设备及存储介质 |
CN116955415A (zh) * | 2023-09-13 | 2023-10-27 | 成都融见软件科技有限公司 | 基于设计层级的数据搜索系统 |
CN117056361A (zh) * | 2023-07-03 | 2023-11-14 | 杭州拓数派科技发展有限公司 | 一种分布式数据库的数据查询方法及装置 |
CN117290626A (zh) * | 2023-11-23 | 2023-12-26 | 上海蜜度科技股份有限公司 | XPath生成方法、系统、存储介质及电子设备 |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108108406A (zh) * | 2017-12-08 | 2018-06-01 | 上海电机学院 | 一种基于xml混合模式查询处理算法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1609855A (zh) * | 2003-06-23 | 2005-04-27 | 微软公司 | 查询优化系统和方法 |
US7865502B2 (en) * | 2008-04-10 | 2011-01-04 | International Business Machines Corporation | Optimization of extensible markup language path language (XPATH) expressions in a database management system configured to accept extensible markup language (XML) queries |
-
2012
- 2012-10-24 CN CN201210411505.8A patent/CN102929996B/zh not_active Expired - Fee Related
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1609855A (zh) * | 2003-06-23 | 2005-04-27 | 微软公司 | 查询优化系统和方法 |
US7865502B2 (en) * | 2008-04-10 | 2011-01-04 | International Business Machines Corporation | Optimization of extensible markup language path language (XPATH) expressions in a database management system configured to accept extensible markup language (XML) queries |
Non-Patent Citations (2)
Title |
---|
李东等: "XPath结构连接顺序优化", 《计算机科学与探索》, no. 11, 7 December 2010 (2010-12-07), pages 1049 - 1056 * |
王宇等: "基于直方图的XPath含值谓词路径选择性代价估计", 《计算机研究与发展》, no. 2, 31 December 2006 (2006-12-31), pages 288 - 294 * |
Cited By (34)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103927346A (zh) * | 2014-03-28 | 2014-07-16 | 浙江大学 | 基于数据量的查询连接方法 |
CN103927346B (zh) * | 2014-03-28 | 2017-02-15 | 浙江大学 | 基于数据量的查询连接方法 |
CN103955540B (zh) * | 2014-05-20 | 2018-03-27 | 中国人民大学 | 一种溯源表达式的责任分析方法 |
CN103955540A (zh) * | 2014-05-20 | 2014-07-30 | 中国人民大学 | 一种溯源表达式的责任分析方法 |
CN105701128B (zh) * | 2014-11-28 | 2019-03-08 | 华为技术有限公司 | 一种查询语句的优化方法和装置 |
CN105701128A (zh) * | 2014-11-28 | 2016-06-22 | 华为技术有限公司 | 一种查询语句的优化方法和装置 |
CN104615720B (zh) * | 2015-02-05 | 2018-05-11 | 同方知网(北京)技术有限公司 | 一种基于索引的xml文档查询优化方法 |
CN104615720A (zh) * | 2015-02-05 | 2015-05-13 | 同方知网(北京)技术有限公司 | 一种基于索引的xml文档查询优化方法 |
TWI753881B (zh) * | 2016-03-14 | 2022-02-01 | 香港商阿里巴巴集團服務有限公司 | 資料表連接方式處理方法及裝置 |
US11650990B2 (en) | 2016-03-14 | 2023-05-16 | Alibaba Group Holding Limited | Method, medium, and system for joining data tables |
WO2017157160A1 (zh) * | 2016-03-14 | 2017-09-21 | 阿里巴巴集团控股有限公司 | 数据表连接方式处理方法及装置 |
CN106815339A (zh) * | 2017-01-03 | 2017-06-09 | 北京华胜信泰数据技术有限公司 | 查询计划更新的方法和装置 |
CN106815339B (zh) * | 2017-01-03 | 2020-11-03 | 北京华胜信泰数据技术有限公司 | 查询计划更新的方法和装置 |
CN107133281A (zh) * | 2017-04-14 | 2017-09-05 | 浙江鸿程计算机系统有限公司 | 一种基于分组的全局多查询优化方法 |
CN107133281B (zh) * | 2017-04-14 | 2020-12-15 | 浙江鸿程计算机系统有限公司 | 一种基于分组的全局多查询优化方法 |
CN110622156B (zh) * | 2017-05-12 | 2022-05-31 | 华为技术有限公司 | 用于查询大图的增量图计算方法及设备 |
CN110622156A (zh) * | 2017-05-12 | 2019-12-27 | 华为技术有限公司 | 用于查询大图的增量图计算 |
CN107463671A (zh) * | 2017-08-03 | 2017-12-12 | 北京大学 | 路径查询的方法和装置 |
CN107463671B (zh) * | 2017-08-03 | 2019-12-13 | 北京大学 | 路径查询的方法和装置 |
CN110084321A (zh) * | 2019-05-08 | 2019-08-02 | 牡丹江师范学院 | 一种基于k-均值聚类的软件测试目标路径选择方法 |
CN110084321B (zh) * | 2019-05-08 | 2023-01-20 | 宿迁学院 | 一种基于k-均值聚类的软件测试目标路径选择方法 |
CN111241127B (zh) * | 2020-01-16 | 2023-01-31 | 华南师范大学 | 基于谓语组合的sparql查询优化方法、系统、存储介质及设备 |
CN111241127A (zh) * | 2020-01-16 | 2020-06-05 | 华南师范大学 | 基于谓语组合的sparql查询优化方法、系统、存储介质及设备 |
CN111310191B (zh) * | 2020-02-12 | 2022-12-23 | 广州大学 | 一种基于深度学习的区块链智能合约漏洞检测方法 |
CN111310191A (zh) * | 2020-02-12 | 2020-06-19 | 广州大学 | 一种基于深度学习的区块链智能合约漏洞检测方法 |
CN112115302B (zh) * | 2020-09-29 | 2022-04-12 | 集美大学 | 一种XML文档的并行XPath查询方法、终端设备及存储介质 |
CN112115302A (zh) * | 2020-09-29 | 2020-12-22 | 集美大学 | 一种XML文档的并行XPath查询方法、终端设备及存储介质 |
CN112528082B (zh) * | 2020-12-08 | 2022-05-03 | 集美大学 | 一种XML文档的流水线XPath查询方法、终端设备及存储介质 |
CN112528082A (zh) * | 2020-12-08 | 2021-03-19 | 集美大学 | 一种XML文档的流水线XPath查询方法、终端设备及存储介质 |
CN117056361A (zh) * | 2023-07-03 | 2023-11-14 | 杭州拓数派科技发展有限公司 | 一种分布式数据库的数据查询方法及装置 |
CN116955415A (zh) * | 2023-09-13 | 2023-10-27 | 成都融见软件科技有限公司 | 基于设计层级的数据搜索系统 |
CN116955415B (zh) * | 2023-09-13 | 2024-01-23 | 成都融见软件科技有限公司 | 基于设计层级的数据搜索系统 |
CN117290626A (zh) * | 2023-11-23 | 2023-12-26 | 上海蜜度科技股份有限公司 | XPath生成方法、系统、存储介质及电子设备 |
CN117290626B (zh) * | 2023-11-23 | 2024-03-15 | 上海蜜度科技股份有限公司 | XPath生成方法、系统、存储介质及电子设备 |
Also Published As
Publication number | Publication date |
---|---|
CN102929996B (zh) | 2015-06-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102929996B (zh) | XPath查询优化方法及系统 | |
US7509311B2 (en) | Use of statistics on views in query optimization | |
Willard et al. | Adding range restriction capability to dynamic data structures | |
US7987180B2 (en) | Classification-based method and apparatus for string selectivity estimation | |
US6931418B1 (en) | Method and system for partial-order analysis of multi-dimensional data | |
CN105005606B (zh) | 基于MapReduce的XML数据查询方法和系统 | |
US20070043696A1 (en) | Method for estimating the cost of query processing | |
US20090327214A1 (en) | Query Execution Plans by Compilation-Time Execution | |
CN102033748A (zh) | 一种数据处理流程代码的生成方法 | |
Levene et al. | Computing the entropy of user navigation in the web | |
CN104937593A (zh) | 用于数据库搜索的系统和方法 | |
US20070078816A1 (en) | Common sub-expression elimination for inverse query evaluation | |
CN104504018A (zh) | 基于浓密树和自顶向下的大数据实时查询优化方法 | |
Rabbani et al. | Optimizing SPARQL queries using shape statistics | |
CN103020283A (zh) | 一种基于背景知识的动态重构的语义检索方法 | |
CN112883066B (zh) | 一种数据库上的多维范围查询基数估计方法 | |
CN112269797B (zh) | 一种卫星遥感数据在异构计算平台上的多维查询方法 | |
CN106445645A (zh) | 用于执行分布式计算任务的方法和装置 | |
Bernasconi et al. | The degree sequence of random graphs from subcritical classes | |
ÖĞÜdÜcÜ et al. | Incremental click-stream tree model: Learning from new users for web page prediction | |
CN111221864B (zh) | 一种基于mysql慢查询日志词频分析的索引智能推荐方法 | |
Mohammed et al. | Selectivity estimation of extended XML query tree patterns based on prime number labeling and synopsis modeling | |
Bajaj | A survey on query performance optimization by index recommendation | |
Gomes et al. | Adaptive optimization of join trees for multi-join queries over sensor streams | |
Sakr | Algebra‐based XQuery cardinality estimation |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20150603 |