一种数据查询方法、装置及系统制造方法及图纸

技术编号:12953789 阅读:58 留言:0更新日期:2016-03-02 13:17
实施例中提供了一种数据查询方法、装置及系统,在该方法中通过对查询请求进行语法分析之后,得到查询请求对应的关系树,确定该关系树所对应的类型,再确定出关系树的类型对应的执行函数模板,最后通过执行确定出的执行函数模板得到最终的查询结果。这样可以将一个完整的查询请求对应成一个执行函数模板,在该执行函数模板中包含了对应类型的关系树上各节点对应的执行函数,从而避免了查询过程中反复的调用执行函数所带来的信令开销,提升了数据查询的速度。

【技术实现步骤摘要】
【国外来华专利技术】一种数据查询方法、装置及系统
本专利技术涉及计算机
,尤其涉及一种数据查询方法、装置及系统。
技术介绍
当前,在数据仓库与在线联机分析处理(英文:OnlineAnalyticalProcessing,简称:OLPA)领域来讲,数据的查询速度尤为重要。在OLAP领域,数据库查询过程需要遍历较大的数据量才能完成查询,在如此大的数据量下,若还需要数据库查询有较快的响应,这样就对数据库处理性能提出很大挑战。当前的数据库查询方式一般都是基于结构化查询语言(英文:StructuredQueryLanguage,简称:SQL)进行查询,查询的执行过程为:SQL查询请求进入数据库系统后,数据库系统先将SQL查询请求通过语法分析后转换成关系树,通过关系树在数据库中得到原始数据,比如说数据库中存在表A、表B、表C以及表D,通过关系树中确定出需要在表A和表B中查询数据,此时就将表A和表B从数据库中调取出来作为原始数据。再通过调用关系树上关系节点对应的执行函数,最后按照次序执行关系节点对应的执行函数在原始数据中查询出需要的查询结果。现有的基于SQL的数据库查询的执行方式主要有火山模型引擎与列式数据执行引擎。其中,火山模型执行过程如图1所示,其查询模式为执行了关系树上的一个关系节点对应的执行函数之后,将调用一次next函数,从而执行下一个节点上的执行函数,直至最后一个关系节点上的执行函数被执行完毕为止,最后在原始数据中得到查询结果。这样在关系树上的关系节点较多时,依次调用各个关系节点上的执行函数,使得调用开销将非常大,查询速度较慢。列式数据查询引擎执行过程如图2所示,数据库系统接收到SQL查询请求后,经过语法解析将SQL查询请求转换成关系树,关系树的结构如图2所示,执行查询的过程为:首先调取关系树中第一个关系节点上的执行函数,来执行basetable操作,从而在数据库中筛选出a列数据和b列数据,对a列数据进行select操作,从而得到符合条件的a’列数据,并将符合条件的a’列数据暂时保存在缓存中;然后进入下一个关系节点,调取并执行该节点上的执行函数,以将符合条件的a’列数据与b列数据进行fetchjoin操作获得符合条件的b’列数据,将符合条件的b’列数据暂时保存在缓存中;然后再进入下一个关系节点,调取并执行该节点上的执行函数,以将符合条件的a’列数据与符合条件的b’列数据进行group聚集操作得出查询结果。这种列式数据查询引擎执行方式的主要缺点为:要分别调取每一个关系节点上的执行函数,并且将执行每个执行函数得到的符合条件的列数据都会在内存中进行缓存,这样不仅导致了查询速度较慢,并且会占用大量的内存。所以不管使用火山模型执行引擎或者是列式数据执行引擎都存在数据查询速度较慢的问题。
技术实现思路
本专利技术实施例提供了一种数据查询方法、装置及系统,用以解决当前在数据库中查询数据速度较慢的问题。其具体的技术方案如下:本专利技术实施例第一方面提供了一种数据查询方法,包括:获取用于在数据库中查询数据的查询请求;将所述查询请求转换为对应的查询关系树,并在预存的关系树集合中确定出与所述查询关系树匹配的关系树,所述预存的关系树集合中包括对不同查询请求转换得到的不同关系树;根据关系树与关系树类型之间的对应关系,确定与所述匹配的关系树对应关系树类型;根据关系树类型与执行函数模板之间的对应关系,调取与确定的关系树类型对应的执行函数模板,其中,所述执行函数模板中包含了对应类型的关系树中各关系节点上用于查询数据的执行函数;针对所述数据库执行调取出的执行函数模板对应的执行函数,得到查询结果。结合第一方面,在第一种可能的实现方式中,在预存的关系树集合中确定出与所述查询关系树匹配的关系树,包括:确定所述查询关系树中各关系节点的节点位置,以及各关系节点的类型;遍历预存的关系树集合中与确定的各关系节点的节点位置以及各关系节点的类型相匹配的关系树,作为与所述查询关系树匹配的关系树。结合第一方面中的第一种可能的实现方式,在第二种可能的实现方式中,在遍历预存的关系树集合中与确定的各关系节点的节点位置以及各关系节点的类型相匹配的关系树前,还包括:在所述查询关系树中确定出关系节点总数;在预存的关系树集合中筛选出关系节点总数与确定的关系节点总数相等的关系树;将筛选出的关系树,作为要遍历的预存的关系树集合。结合第一方面,第三种可能的实现方式中,在预存的关系树集合中确定出与所述查询关系树匹配的关系树,包括:对所述查询关系树进行哈希计算,得到所述查询关系树对应的哈希值;在预存的关系树与关系树对应的哈希值的对应关系中,确定出哈希值与得到的查询关系树的哈希值相同的关系树,作为与所述查询关系树匹配的关系树。结合第一方面或者第一方面中的第一种可能的实现方式或者第一方面中第二种可能的实现方式或者第一方面中第三种可能的实现方式,在第四种可能的实现方式中,针对所述数据库执行调取出的执行函数模板对应的执行函数,包括:在针对所述数据库执行调取出的执行函数模板对应的执行函数时,在所述数据库确定出原始数据,所述原始数据为未被所述执行函数模板执行的数据;获取用以表征所述原始数据的数据量大小的数据特征;根据数据特征与执行函数模板之间的对应关系,在调取出的执行函数模板中确定出所述数据特征对应的执行函数模板,并针对所述原始数据执行所述数据特征对应的执行函数模板对应的执行函数。本专利技术实施例第二方面提供了一种数据查询装置,包括:获取模块,用于获取用于在数据库中查询数据的查询请求;转换模块,用于将所述查询请求转换为对应的查询关系树,并在预存的关系树集合中确定出与所述查询关系树匹配的关系树,所述预存的关系树集合中包括对不同的查询请求转换得到的不同关系树;确定模块,用于根据关系树与关系树类型之间的对应关系,确定与所述匹配的关系树对应的关系树类型;调取模块,用于根据关系树类型与执行函数模板之间的对应关系,调取与确定的关系树类型对应的执行函数模板,其中,所述执行函数模板中包含了对应类型的关系树中各关系节点上用于查询数据的执行函数;执行模块,用于针对所述数据库执行调取出的执行函数模板对应的执行函数,得到查询结果。结合第二方面,在第一种可能的实现方式中,所述转换模块,包括:确定单元,用于确定所述查询关系树中各关系节点的节点位置,以及各关系节点的类型;查询单元,用于遍历预存的关系树集合中与确定的各关系节点的节点位置以及各关系节点的类型相匹配的关系树,作为与所述查询关系树匹配的关系树。结合第二方面中的第一种可能的实现方式,在第二种可能的实现方式中,所述转换模块,还包括:筛选单元,用于在查询单元遍历预存的关系树集合中与确定的各关系节点的节点位置以及各关系节点的类型相匹配的关系树前,在所述查询关系树中确定出关系节点总数,在预存的关系树集合中筛选出关系节点总数与确定的关系节点总数相等的关系树,将筛选出的关系树,作为要遍历的预存的关系树集合。结合第二方面,第三种可能的实现方式中,所述确定模块,具体用于对所述查询关系树进行哈希计算,得到所述查询关系树对应的哈希值,在预存的关系树与关系树对应的哈希值的对应关系中,确定出哈希值与得到的查询关系树的哈希值相同的关系树,作为与所述查询关系树匹配的关系树。结合第二方面或者第二方面中的第一种可能的本文档来自技高网
...

【技术保护点】
PCT国内申请,权利要求书已公开。

【技术特征摘要】
【国外来华专利技术】1.一种数据查询方法,其特征在于,包括:获取用于在数据库中查询数据的查询请求;将所述查询请求转换为对应的查询关系树,并在预存的关系树集合中确定出与所述查询关系树匹配的关系树,所述预存的关系树集合中包括对不同查询请求转换得到的不同关系树;根据关系树与关系树类型之间的对应关系,确定与所述匹配的关系树对应关系树类型;根据关系树类型与执行函数模板之间的对应关系,调取与确定的关系树类型对应的执行函数模板,其中,所述执行函数模板中包含了对应类型的关系树中各关系节点上用于查询数据的执行函数;针对所述数据库执行调取出的执行函数模板对应的执行函数,得到查询结果。2.如权利要求1所述的方法,其特征在于,在预存的关系树集合中确定出与所述查询关系树匹配的关系树,包括:确定所述查询关系树中各关系节点的节点位置,以及各关系节点的类型;遍历预存的关系树集合中与确定的各关系节点的节点位置以及各关系节点的类型相匹配的关系树,作为与所述查询关系树匹配的关系树。3.如权利要求2所述的方法,其特征在于,在遍历预存的关系树集合中与确定的各关系节点的节点位置以及各关系节点的类型相匹配的关系树前,还包括:在所述查询关系树中确定出关系节点总数;在预存的关系树集合中筛选出关系节点总数与确定的关系节点总数相等的关系树;将筛选出的关系树,作为要遍历的预存的关系树集合。4.如权利要求1所述的方法,其特征在于,在预存的关系树集合中确定出与所述查询关系树匹配的关系树,包括:对所述查询关系树进行哈希计算,得到所述查询关系树对应的哈希值;在预存的关系树与关系树对应的哈希值的对应关系中,确定出哈希值与得到的查询关系树的哈希值相同的关系树,作为与所述查询关系树匹配的关系树。5.如权利要求1~4中任一项所述的方法,其特征在于,针对所述数据库执行调取出的执行函数模板对应的执行函数,包括:在针对所述数据库执行调取出的执行函数模板对应的执行函数时,在所述数据库确定出原始数据,所述原始数据为未被所述执行函数模板执行的数据;获取用以表征所述原始数据的数据量大小的数据特征;根据数据特征与执行函数模板之间的对应关系,在调取出的执行函数模板中确定出所述数据特征对应的执行函数模板,并针对所述原始数据执行所述数据特征对应的执行函数模板对应的执行函数。6.一种数据查询装置,其特征在于,包括:获取模块,用于获取用于在数据库中查询数据的查询请求;转换模块,用于将所述查询请求转换为对应的查询关系树,并在预存的关系树集合中确定出与所述查询关系树匹配的关系树,所述预存的关系树集合中包括对不同的查询请求转换得到的不同关系树;确定模块,用于根据关系树与关系树类型之间的对应关系,确定与所述匹配的关系树对应的关系树类型;调取模块,用于根据关系树类型与执行函数模板之间的对应关系,调取与确定的关系树类型对应的执行函数模板,其中,所述执行函数模板中包含了对应类型的关系树中各关系节点上用于查询数据的执行函数;执行模块,用于针对所述数据库执行调取出的执行函数模板对应的执行函数,得到查询结果。7.如权利要求6所述的装置,其特征在于,所述转换模块,包括:确定单元,用于确定所述查询关系树中各关系节点的节点位置,以及各关系节点的类型;查询单元,用于遍历预存的关系树集合中与确定的各关系节点的节点位置以及各关系节点的类型相匹配的关系树,作为与所述查询关系树匹配的关系树。8.如权利要求7所述的装置,其特征在于,所述转换模块,还包括:筛选单...

【专利技术属性】
技术研发人员:施会华李俊方帆
申请(专利权)人:华为技术有限公司
类型:发明
国别省市:广东;44

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

1