数据查询方法、装置、服务器及存储介质
文献发布时间:2023-06-19 12:13:22
技术领域
本公开涉及数据分析查询技术领域,尤其涉及一种数据查询方法、装置、服务器、存储介质及计算机程序产品。
背景技术
在OLAP(Online analytical processing,联机分析处理)分析场景中,需要查询不同数据引擎的数据,并对查询得到的数据进行处理。
相关技术中,目前的数据查询方法,一般是将多源OLAP数据引擎对应的数据导入到一个支持存储的OLAP数据引擎中,以间接支持多源OLAP数据引擎的查询分析需求;但是,在数据查询处理时,实际只利用了一个主引擎,而主引擎中不同数据引擎中的数据的查询方式不一样,导致数据查询处理过程较为繁琐,从而降低了数据查询处理效率。
发明内容
本公开提供一种数据查询方法、装置、服务器、存储介质及计算机程序产品,以至少解决相关技术中数据查询处理效率较低的问题。本公开的技术方案如下:
根据本公开实施例的第一方面,提供一种数据查询方法,包括:
对接收到的数据查询请求进行转换,得到转换后的数据查询请求;所述接收到的数据查询请求为针对至少两个数据维度的数据查询请求;
生成与所述转换后的数据查询请求对应的处理操作组合;所述处理操作组合由多个依序排列的处理操作所组成;
确定与各个所述处理操作对应的查询执行器;
按照与各个所述处理操作对应的查询执行器,执行各个所述处理操作,得到与所述接收到的数据查询请求对应的数据查询结果;各个所述查询执行器中的至少两个查询执行器用于从至少两个数据库中查询对应的元数据。
在一示例性实施例中,所述生成与所述转换后的数据查询请求对应的处理操作组合,包括:
对所述转换后的数据查询请求进行解析,得到对应的数据查询结构;所述数据查询结构用于表征所述转换后的数据查询请求的处理信息;
对所述数据查询结构中的冗余信息进行调整处理,得到目标数据查询结构;所述冗余信息用于表征所述数据查询结构中的重复信息;
生成与所述目标数据查询结构对应的处理操作组合,作为与所述转换后的数据查询请求对应的处理操作组合。
在一示例性实施例中,所述生成与所述目标数据查询结构对应的处理操作组合,包括:
对所述目标数据查询结构中的各种信息进行识别,得到所述目标数据查询结构对应的各个处理操作;
确定各个所述处理操作的执行顺序;
按照所述执行顺序,将各个所述处理操作进行组合,得到与所述目标数据查询结构对应的处理操作组合。
在一示例性实施例中,所述确定与各个所述处理操作对应的查询执行器,包括,包括:
获取各个所述处理操作对应的操作标识信息;
根据所述操作标识信息,查询预设的操作标识信息与查询执行器的对应关系,得到与各个所述处理操作对应的查询执行器。
在一示例性实施例中,所述根据所述操作标识信息,查询预设的操作标识信息与查询执行器的对应关系,得到与各个所述处理操作对应的查询执行器,包括:
获取所述接收到的数据查询请求的优先级;
根据所述操作标识信息,查询预设的操作标识信息与所述优先级的查询执行器的对应关系,得到与各个所述处理操作对应的查询执行器。
在一示例性实施例中,所述按照与各个所述处理操作对应的查询执行器,执行各个所述处理操作,得到与所述接收到的数据查询请求对应的数据查询结果,包括:
通过各个所述查询执行器中的至少两个查询执行器,对对应的至少两个数据库执行对应的至少两个处理操作,得到与所述接收到的数据查询请求对应的元数据;
通过各个所述查询执行器中除所述至少两个查询执行器之外的查询执行器,对所述元数据执行对应的处理操作,得到与所述接收到的数据查询请求对应的数据查询结果。
在一示例性实施例中,所述方法还包括:
从各个所述处理操作中,获取执行失败的处理操作;
重新按照与所述执行失败的处理操作对应的查询执行器,执行所述执行失败的处理操作。
根据本公开实施例的第二方面,提供一种数据查询装置,包括:
转换单元,被配置为执行对接收到的数据查询请求进行转换,得到转换后的数据查询请求;所述接收到的数据查询请求为针对至少两个数据维度的数据查询请求;
生成单元,被配置为执行生成与所述转换后的数据查询请求对应的处理操作组合;所述处理操作组合由多个依序排列的处理操作所组成;
确定单元,被配置为执行确定与各个所述处理操作对应的查询执行器;
查询单元,被配置为执行按照与各个所述处理操作对应的查询执行器,执行各个所述处理操作,得到与所述接收到的数据查询请求对应的数据查询结果;各个所述查询执行器中的至少两个查询执行器用于从至少两个数据库中查询对应的元数据。
在一示例性实施例中,所述生成单元,还被配置为执行对所述转换后的数据查询请求进行解析,得到对应的数据查询结构;所述数据查询结构用于表征所述转换后的数据查询请求的处理信息;对所述数据查询结构中的冗余信息进行调整处理,得到目标数据查询结构;所述冗余信息用于表征所述数据查询结构中的重复信息;生成与所述目标数据查询结构对应的处理操作组合,作为与所述转换后的数据查询请求对应的处理操作组合。
在一示例性实施例中,所述生成单元,还被配置为执行对所述目标数据查询结构中的各种信息进行识别,得到所述目标数据查询结构对应的各个处理操作;确定各个所述处理操作的执行顺序;按照所述执行顺序,将各个所述处理操作进行组合,得到与所述目标数据查询结构对应的处理操作组合。
在一示例性实施例中,所述确定单元,还被配置为执行获取各个所述处理操作对应的操作信息;根据所述操作信息,查询预设的操作信息与查询执行器的对应关系,得到与各个所述处理操作对应的查询执行器。
在一示例性实施例中,所述确定单元,还被配置为执行获取所述接收到的数据查询请求的优先级;根据所述操作信息,查询预设的操作信息与所述优先级的查询执行器的对应关系,得到与各个所述处理操作对应的查询执行器。
在一示例性实施例中,所述查询单元,还被配置为执行通过各个所述查询执行器中的至少两个查询执行器,对对应的至少两个数据库执行对应的至少两个处理操作,得到与所述接收到的数据查询请求对应的元数据;通过各个所述查询执行器中除所述至少两个查询执行器之外的查询执行器,对所述元数据执行对应的处理操作,得到与所述接收到的数据查询请求对应的数据查询结果。
在一示例性实施例中,所述装置还包括获取单元,被配置为执行从各个所述处理操作中,获取执行失败的处理操作;重新按照与所述执行失败的处理操作对应的查询执行器,执行所述执行失败的处理操作。
根据本公开实施例的第三方面,提供一种服务器,包括:处理器;用于存储所述处理器可执行指令的存储器;其中,所述处理器被配置为执行所述指令,以实现如第一方面的任一项实施例中所述的数据查询方法。
根据本公开实施例的第四方面,提供一种计算机可读存储介质,包括:当所述计算机可读存储介质中的指令由服务器的处理器执行时,使得所述服务器能够执行第一方面的任一项实施例中所述的数据查询方法。
根据本公开实施例的第五方面,提供一种计算机程序产品,所述计算机程序产品包括计算机程序,所述计算机程序存储在计算机可读存储介质中,设备的至少一个处理器从所述计算机可读存储介质读取并执行所述计算机程序,使得设备执行第一方面的任一项实施例中所述的数据查询方法。
本公开的实施例提供的技术方案至少带来以下有益效果:
通过对接收到的数据查询请求进行转换,得到转换后的数据查询请求;接收到的数据查询请求为针对至少两个数据维度的数据查询请求;接着生成与转换后的数据查询请求对应的处理操作组合;处理操作组合由多个依序排列的处理操作所组成;然后确定与各个处理操作对应的查询执行器;最后按照与各个处理操作对应的查询执行器,执行各个处理操作,得到与接收到的数据查询请求对应的数据查询结果;各个查询执行器中的至少两个查询执行器用于从至少两个数据库中查询对应的元数据;这样,实现了利用与转换后的数据查询请求中的各个处理操作所对应的查询执行器,得到与接收到的数据查询请求对应的数据查询结果,保证了在针对多个数据维度的数据查询请求时,综合利用多个查询执行器,避免了将多源OLAP数据引擎对应的数据导入到一个支持存储的OLAP数据引擎中,导致在数据查询处理时,实际只利用了一个主引擎,而该主引擎中不同数据引擎中的数据的查询方式不一样,导致数据查询处理效率较低的缺陷,从而提高了数据查询处理效率。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理,并不构成对本公开的不当限定。
图1是根据一示例性实施例示出的一种数据查询方法的应用环境图。
图2是根据一示例性实施例示出的一种数据查询方法的流程图。
图3是根据一示例性实施例示出的另一种数据查询方法的流程图。
图4是根据一示例性实施例示出的一种数据查询系统的框图。
图5是根据一示例性实施例示出的一种数据查询装置的框图。
图6是根据一示例性实施例示出的一种服务器的框图。
具体实施方式
为了使本领域普通人员更好地理解本公开的技术方案,下面将结合附图,对本公开实施例中的技术方案进行清楚、完整地描述。
需要说明的是,本公开的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本公开的实施例能够以除了在这里图示或描述的那些以外的顺序实施。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。
本公开所提供的数据查询方法,可以应用于如图1所示的应用环境中。其中,终端110通过网络与服务器120进行交互。参考图1,终端110响应终端帐户的数据查询操作,生成数据查询请求,并将数据查询请求发送至对应的服务器120;服务器120对接收到的数据查询请求进行转换,得到转换后的数据查询请求;接收到的数据查询请求为针对至少两个数据维度的数据查询请求;生成与转换后的数据查询请求对应的处理操作组合;处理操作组合由多个依序排列的处理操作所组成;确定与各个处理操作对应的查询执行器;按照与各个处理操作对应的查询执行器,执行各个处理操作,得到与接收到的数据查询请求对应的数据查询结果;各个查询执行器中的至少两个查询执行器用于从至少两个数据库中查询对应的元数据。其中,终端110可以是但不限于各种智能手机、平板电脑或笔记本电脑等,服务器120可以用独立的服务器或者是多个服务器组成的服务器集群来实现。
图2是根据一示例性实施例示出的一种数据查询方法的流程图,如图2所示,数据查询方法用于如图1所示的服务器中,包括以下步骤:
在步骤S210中,对接收到的数据查询请求进行转换,得到转换后的数据查询请求;接收到的数据查询请求为针对至少两个数据维度的数据查询请求。
其中,针对至少两个数据维度的数据查询请求,是指多维度数据查询请求,具体是指对不同维度的数据的综合查询分析请求,比如跨多OLAP数据引擎的数据查询请求;在实际场景中,接收到的数据查询请求可以是指通过API(Application ProgrammingInterface,应用程序接口)或者CLI(command-line interface,命令行界面)发起的数据查询请求,比如针对2020年第一季度,A区域B产品C类型的销售额的查询请求、针对同时拥有A证件和B物品的用户中,按照用户姓氏排列后,选出前100位用户的查询请求。
需要说明的是,OLAP是指联机分析处理,支持复杂的分析操作,侧重决策支持,并且提供直观易懂的查询结果。常见的OLAP数据处理方式包括:上卷、下钻、切片、切块、旋转等;常见的OLAP数据引擎包括:MySQL、Presto、Apache Impala、Druid、ClickHouse等;不同数据引擎的查询方式不一样,如MySQL、Presto、ClickHouse支持SQL(Structured QueryLanguage,结构化查询语言)标准,Druid需要通过API的方式查询。
其中,转换后的数据查询请求是指抽象成的统一数据查询请求,比如统一的KwaiBI QL(KwaiBI Query Language,自定义的查询语句)。
具体地,服务器获取预设的请求转换指令,根据预设的请求转换指令,对接收到的数据查询请求进行转换处理,得到转换后的数据查询请求;其中,预设的请求转换指令是一种能够将接收到的数据查询请求抽象成统一的数据查询请求的指令。这样,通过将接收到的数据查询请求抽象成统一的数据查询请求,避免了数据查询请求不规范,导致后续的查询处理效率较低的缺陷。
在步骤S220中,生成与转换后的数据查询请求对应的处理操作组合;处理操作组合由多个依序排列的处理操作所组成。
其中,处理操作组合由多个处理操作所组成,具体是指执行节点图;执行节点图是指由多个执行节点依序连接而成的节点图,比如DAG(有向无环图,Directed acyclicgraph)。处理操作是指查询、排序、合并、同环比计算、分组占比计算等。需要说明的是,不同数据查询请求,对应的处理操作组合不一样。
具体地,服务器对转换后的数据查询请求进行分析,得到转换后的数据查询请求中包括的各个处理操作;按照各个处理操作的执行顺序,将各个处理操作进行组合,得到与转换后的数据查询请求对应的处理操作组合。
举例说明,服务器获取转换后的数据查询请求中包括的各个处理操作,然后将每个处理操作当作一个执行节点进行依序连接,得到执行节点图,作为与转换后的数据查询请求对应的执行节点图。
在步骤S230中,确定与各个处理操作对应的查询执行器。
其中,查询执行器是指执行处理操作的最小单元,每个处理操作,都由对应的查询执行器处理,比如处理操作A由查询执行器A1处理,处理操作B由查询执行器B1处理,等等。
具体地,服务器根据各个处理操作,查询处理操作与查询执行器的对应关系,得到与各个处理操作对应的查询执行器。
在步骤S240中,按照与各个处理操作对应的查询执行器,执行各个处理操作,得到与接收到的数据查询请求对应的数据查询结果;各个查询执行器中的至少两个查询执行器用于从至少两个数据库中查询对应的元数据。
其中,各个查询执行器中的至少两个查询执行器用于从相应的数据库中查询对应的元数据,用于表征接收到的数据查询请求是一种跨多OLAP数据引擎的数据查询请求。
具体地,服务器先通过各个查询执行器中的至少两个查询执行器,从相应的数据库中查询对应的元数据;然后通过各个查询执行器中除至少两个查询执行器之外的查询执行器,对查询得到的元数据进行处理,得到与接收到的数据查询请求对应的数据查询结果。这样,避免了将其他数据引擎的数据导入到一个主引擎的过程中,当在数据分析时发现导入后的数据不满足需求,又不得不再次导入数据,导致操作时间过长,容易返工,进而造成数据查询处理效率较低的缺陷。
进一步地,在得到与接收到的数据查询请求对应的数据查询结果之后,还包括:服务器将数据查询结果,按照接收到的数据查询请求存储至缓存数据库中;若接收到的新的数据查询请求与该数据查询请求匹配,则从缓存数据库中获取该数据查询请求的数据查询结果,作为与新的数据查询请求对应的数据查询结果。需要说明的是,缓存数据库中存储的数据查询结果会进行定期更新。
进一步地,服务器还可以统计执行处理操作的相关指标,比如调用次数、响应时间、结果集大小、执行节点CPU(central processing unit,中央处理器)/内存、执行队列资源负载等;根据执行处理操作的相关指标,确定接收到的数据查询请求的执行情况。
上述数据查询方法中,通过对接收到的数据查询请求进行转换,得到转换后的数据查询请求;接收到的数据查询请求为针对至少两个数据维度的数据查询请求;接着生成与转换后的数据查询请求对应的处理操作组合;处理操作组合由多个依序排列的处理操作所组成;然后确定与各个处理操作对应的查询执行器;最后按照与各个处理操作对应的查询执行器,执行各个处理操作,得到与接收到的数据查询请求对应的数据查询结果;各个查询执行器中的至少两个查询执行器用于从至少两个数据库中查询对应的元数据;这样,实现了利用与转换后的数据查询请求中的各个处理操作所对应的查询执行器,得到与接收到的数据查询请求对应的数据查询结果,保证了在针对多个数据维度的数据查询请求时,综合利用多个查询执行器,避免了将多源OLAP数据引擎对应的数据导入到一个支持存储的OLAP数据引擎中,导致在数据查询处理时,实际只利用了一个主引擎,而该主引擎中不同数据引擎中的数据的查询方式不一样,导致数据查询处理效率较低的缺陷,从而提高了数据查询处理效率。
在一示例性实施例中,在步骤S220中,生成与转换后的数据查询请求对应的处理操作组合,包括:对转换后的数据查询请求进行解析,得到对应的数据查询结构;数据查询结构用于表征转换后的数据查询请求的处理信息;对数据查询结构中的冗余信息进行调整处理,得到目标数据查询结构;冗余信息用于表征数据查询结构中的重复信息;生成与目标数据查询结构对应的处理操作组合,作为与转换后的数据查询请求对应的处理操作组合。
其中,数据查询结构是一种用于表征转换后的数据查询请求的处理信息的结构,比如语法树;转换后的数据查询请求的处理信息用于表征转换后的数据查询请求的具体执行过程,可以是指查询、过滤、排序、组合等。需要说明的是,转换后的数据查询请求的处理信息为多个。
其中,冗余信息用于表征数据查询结构中的重复信息,比如查询的重复列;当然,冗余信息还用于表征数据查询结构中的待优化信息,比如待优化查询操作;对数据查询结构中的冗余信息进行调整处理,是指对数据查询结构进行优化处理,具体是指对语法树进行优化处理,比如去除查询的重复列、使用配置的维表对待优化查询进行修改等。
其中,目标数据查询结构是指调整处理后的数据查询结构,比如优化后的语法树;与目标数据查询结构对应的处理操作组合,由与目标数据查询结构对应的多个处理操作依序组成。
具体地,服务器获取预设的请求解析指令,请求解析指令是一种用于对转换后的数据查询请求进行解析的指令;根据预设的请求解析指令,对转换后的数据查询请求进行解析,得到对应的数据查询结构;根据冗余信息确定指令,确定数据查询结构中的冗余信息;对数据查询结构中的冗余信息进行调整处理,得到调整后的数据查询结构,作为目标数据查询结构;确定与目标数据查询结构对应的多个处理操作,并依序将与目标数据查询结构对应的多个处理操作进行组合,得到与目标数据查询结构对应的处理操作组合,作为与转换后的数据查询请求对应的处理操作组合。
举例说明,服务器根据预设的请求解析指令,基于预设的多个高阶函数,比如留存计算、同环比计算、分组占比、分组TOPN等,对转换后的数据查询请求进行解析处理,得到对应的语法树;对语法树中的节点信息进行优化处理,得到优化处理后的语法树,作为目标语法树;通过节点图生成指令,对目标语法树中的节点信息进行分析处理,生成与目标语法树对应的执行节点图,作为与转换后的数据查询请求对应的执行节点图;将与转换后的数据查询请求对应的执行节点图,识别为与转换后的数据查询请求对应的处理操作组合。
本公开实施例提供的技术方案,通过生成与转换后的数据查询请求对应的处理操作组合,有利于后续按照与处理操作组合中各个处理操作对应的查询执行器,执行各个处理操作,得到与接收到的数据查询请求对应的数据查询结果,保证了在针对多个数据维度的数据查询请求时,综合利用多个查询执行器来实现高效查询的目的,避免了只利用一个数据引擎的查询能力,导致数据查询处理效率较低的缺陷。
在一示例性实施例中,生成与目标数据查询结构对应的处理操作组合,包括:对目标数据查询结构中的各种信息进行识别,得到目标数据查询结构对应的各个处理操作;确定各个处理操作的执行顺序;按照执行顺序,将各个处理操作进行组合,得到与目标数据查询结构对应的处理操作组合。
其中,各个处理操作的执行顺序,是指各个处理操作的先后执行顺序,比如先执行处理操作A,再执行处理操作B,最后执行处理操作C。
具体地,服务器获取预设的处理操作识别指令,预设的处理操作识别指令是一种用于识别出目标数据查询结构对应的处理操作的指令;根据预设的处理操作识别指令,对目标数据查询结构中的各种处理信息进行识别,得到各种处理信息对应的处理操作,作为目标数据查询结构对应的各个处理操作;根据目标数据查询结构中的各种处理信息的先后执行顺序,得到各个处理操作的执行顺序;按照各个处理操作的执行顺序,将各个处理操作进行组合,得到与目标数据查询结构对应的处理操作组合。
举例说明,服务器根据预设的节点信息识别指令,对目标语法树中的节点信息进行识别,得到目标语法树对应的各个处理操作;根据目标语法树中的节点信息,对目标语法树对应的各个处理操作进行分析处理,得到各个处理操作的执行顺序;按照各个处理操作的执行顺序,将各个处理操作当作执行节点进行连接,得到一个执行节点图,作为与目标语法树对应的执行节点图。
本公开实施例提供的技术方案,通过生成与目标数据查询结构对应的处理操作组合,有利于后续按照与处理操作组合中各个处理操作对应的查询执行器,执行各个处理操作,得到与接收到的数据查询请求对应的数据查询结果,进而提高了数据查询处理效率。
在一示例性实施例中,在步骤S230中,确定与各个处理操作对应的查询执行器,包括:获取各个处理操作对应的操作标识信息;根据操作标识信息,查询预设的操作标识信息与查询执行器的对应关系,得到与各个处理操作对应的查询执行器。
其中,处理操作对应的操作标识信息用于标识处理操作,比如操作名称,不同处理操作对应的操作标识信息不一样;预设的操作标识信息与查询执行器的对应关系,用于表征不同处理操作对应的查询执行器不一样。
具体地,服务器根据操作标识信息获取指令,得到各个处理操作对应的操作标识信息;操作标识信息获取指令是一种用于自动获取处理操作的操作标识信息的指令;获取预设的操作标识信息与查询执行器的对应关系,并根据各个处理操作对应的操作标识信息,查询预设的操作标识信息与查询执行器的对应关系,得到各个处理操作的操作标识信息所对应的查询执行器,对应作为与各个处理操作对应的查询执行器。
例如,假设处理操作A对应的操作标识信息为A1,而操作标识信息A1对应的查询执行器为B,说明处理操作A对应的查询执行器为B。
本公开实施例提供的技术方案,通过确定与各个处理操作对应的查询执行器,有利于后续按照与处理操作组合中各个处理操作对应的查询执行器,执行各个处理操作,得到与接收到的数据查询请求对应的数据查询结果,避免了将多源OLAP数据引擎对应的数据导入到一个支持存储的OLAP数据引擎中,导致在数据查询处理时,实际只利用了一个主引擎,而该主引擎中不同数据引擎中的数据的查询方式不一样,导致数据查询处理效率较低的缺陷,从而提高了数据查询处理效率。
在一示例性实施例中,根据操作标识信息,查询预设的操作标识信息与查询执行器的对应关系,得到与各个处理操作对应的查询执行器,包括:获取接收到的数据查询请求的优先级;根据操作标识信息,查询预设的操作标识信息与优先级的查询执行器的对应关系,得到与各个处理操作对应的查询执行器。
其中,优先级是指数据查询请求对应的优先级别,高优先级的数据查询请求,需要的执行资源更多,则对应的查询执行器的查询效率更高。需要说明的是,不同优先级的查询执行器在执行效率上会有所不同,高优先级的查询执行器,能获得更多的执行资源来加速查询。
其中,预设的操作标识信息与优先级的查询执行器的对应关系,用于表征同一个操作标识信息,对应多个优先级的查询执行器,具体根据接收到的数据查询请求的优先级,来确定处理操作对应哪个优先级的查询执行器。
具体地,服务器获取数据查询请求与优先级的对应关系,并根据接收到的数据查询请求,查询数据查询请求与优先级的对应关系,得到接收到的数据查询请求的优先级,作为目标优先级;从预设的操作标识信息与各个优先级的查询执行器的对应关系中,获取预设的操作标识信息与目标优先级的查询执行器的对应关系;根据各个处理操作对应的操作标识信息,查询预设的操作标识信息与目标优先级的查询执行器的对应关系,得到各个处理操作的操作标识信息所对应的查询执行器,对应作为与各个处理操作对应的查询执行器。
举例说明,假设处理操作A对应的操作标识信息为A1,而操作标识信息A1对应三个优先级的查询执行器,分别是第一优先级的查询执行器B1、第二优先级的查询执行器B2和第三优先级的查询执行器B3,且接收到的数据查询请求的优先级为第一优先级,则说明处理操作A对应的查询执行器为B1。
本公开实施例提供的技术方案,综合考虑接收到的数据查询请求的优先级,使得各个处理操作对应的查询执行器与接收到的数据查询请求的优先级相适配,有利于进一步提高高优先级的数据查询请求的数据查询处理效率。
在一示例性实施例中,按照与各个处理操作对应的查询执行器,执行各个处理操作,得到与接收到的数据查询请求对应的数据查询结果,包括:通过各个查询执行器中的至少两个查询执行器,对对应的至少两个数据库执行对应的至少两个处理操作,得到与接收到的数据查询请求对应的元数据;通过各个查询执行器中除至少两个查询执行器之外的查询执行器,对元数据执行对应的处理操作,得到与接收到的数据查询请求对应的数据查询结果。
其中,各个处理操作中包括至少两个元数据获取操作。
具体地,服务器从与各个处理操作对应的查询执行器中,筛选出与元数据获取操作对应的至少两个查询执行器,作为各个查询执行器中的至少两个查询执行器;通过用于对元数据获取操作进行转换处理的查询适配器,对至少两个查询执行器所要执行的元数据获取操作进行转换处理,得到与相应的数据库相适配的元数据获取操作,作为至少两个查询执行器所要执行的目标元数据获取操作;通过至少两个查询执行器,对对应的至少两个数据库执行对应的目标元数据获取操作,得到与每个数据库对应的元数据;将与每个数据库对应的元数据进行组合,得到与接收到的数据查询请求对应的元数据;通过各个查询执行器中除至少两个查询执行器之外的查询执行器,对该元数据执行对应的处理操作,得到与接收到的数据查询请求对应的数据查询结果。
例如,假设执行节点图中有4个执行节点,分别是执行节点A、执行节点B、执行节点C和执行节点D,执行节点A对应元数据A1获取操作,执行节点B对应元数据B1获取操作,执行节点C对应过滤操作,执行节点D对应排序操作;服务器通过执行节点A对应的查询执行器a,对第一数据库执行对应的元数据A1获取操作,得到元数据A1,同时通过执行节点B对应的查询执行器b,对第二数据库执行对应的元数据B1获取操作,得到元数据B1;接着,通过执行节点C对应的查询执行器c,对元数据A1和元数据B1执行对应的过滤操作,得到数据C1;最后,通过执行节点D对应的查询执行器d,对数据C1执行对应的排序操作,得到数据D1,作为与接收到的数据查询请求对应的数据查询结果。
本公开实施例提供的技术方案,利用与转换后的数据查询请求中的各个处理操作所对应的查询执行器,得到与接收到的数据查询请求对应的数据查询结果,保证了在针对多个数据维度的数据查询请求时,综合利用多个查询执行器,避免了将多源OLAP数据引擎对应的数据导入到一个支持存储的OLAP数据引擎中,导致在数据查询处理时,实际只利用了一个主引擎,导致数据查询处理效率较低的缺陷,从而提高了数据查询处理效率。
在一示例性实施例中,本申请提供的数据查询方法还包括对执行失败的处理操作进行重试的步骤,包括:从各个处理操作中,获取执行失败的处理操作;重新按照与执行失败的处理操作对应的查询执行器,执行执行失败的处理操作。
具体地,服务器获取用于记录处理操作的处理情况的数据查询日志,通过数据查询日志,从各个处理操作中,获取执行失败的处理操作;按照与执行失败的处理操作对应的查询执行器,对执行失败的处理操作进行重新执行。
进一步地,服务器还可以对各个处理操作进行实时检测,若检测到某个处理操作执行失败,则对该执行失败的处理操作进行报错或者读取缓存的相关静态数据,得到与该执行失败的处理操作对应的处理结果。
本公开实施例提供的技术方案,通过获取执行失败的处理操作,并对执行失败的处理操作进行重新执行,有利于保证数据查询处理的顺利进行,从而提高了数据查询处理的成功率。
图3是根据一示例性实施例示出的另一种数据查询方法的流程图,如图3所示,该数据查询方法用于如图1所示的服务器中,包括以下步骤:
在步骤S310中,对接收到的数据查询请求进行转换,得到转换后的数据查询请求;接收到的数据查询请求为针对至少两个数据维度的数据查询请求。
在步骤S320中,对转换后的数据查询请求进行解析,得到对应的数据查询结构;数据查询结构用于表征转换后的数据查询请求的处理信息。
在步骤S330中,对数据查询结构中的冗余信息进行调整处理,得到目标数据查询结构;冗余信息用于表征数据查询结构中的重复信息。
在步骤S340中,对目标数据查询结构中的各种信息进行识别,得到目标数据查询结构对应的各个处理操作;确定各个处理操作的执行顺序;按照执行顺序,将各个处理操作进行组合,得到与目标数据查询结构对应的处理操作组合。
在步骤S350中,获取各个处理操作对应的操作标识信息;获取接收到的数据查询请求的优先级。
在步骤S360中,根据操作标识信息,查询预设的操作标识信息与优先级的查询执行器的对应关系,得到与各个处理操作对应的查询执行器。
在步骤S370中,通过各个查询执行器中的至少两个查询执行器,对对应的至少两个数据库执行对应的至少两个处理操作,得到与接收到的数据查询请求对应的元数据。
在步骤S380中,通过各个查询执行器中除至少两个查询执行器之外的查询执行器,对元数据执行对应的处理操作,得到与接收到的数据查询请求对应的数据查询结果。
上述数据查询方法中,实现了利用与转换后的数据查询请求中的各个处理操作所对应的查询执行器,得到与接收到的数据查询请求对应的数据查询结果,保证了在针对多个数据维度的数据查询请求时,综合利用多个查询执行器,避免了将多源OLAP数据引擎对应的数据导入到一个支持存储的OLAP数据引擎中,导致在数据查询处理时,实际只利用了一个主引擎,而该主引擎中不同数据引擎中的数据的查询方式不一样,导致数据查询处理效率较低的缺陷,从而提高了数据查询处理效率。
图4是根据一示例性实施例示出的一种数据查询系统的框图,如图4所示,该数据查询系统包括:
(1)API/SQL CLI:对上层调用方提供API与CLI的方式进行查询;API查询支持可视化通过接口查询;SQL CLI支持即席查询系统调用,对于导入到系统中的数据模型可以在即席查询系统中查询。
(2)SQL Client(SQL客户端):对API、CLI提供统一的SQL查询方式,并且将请求下发给查询解释器执行。
(3)查询解释器,包括UDF Register、SQL Parser、Optimizer、SQL Planner和Cache;UDF Register是指UDF(Userdefined function,用户自定义函数)注册器,将预先设置的分析类UDF(比如留存计算、同环比计算、分组占比、分组TOPN)注册到SQL Parser中;SQL Parser是指SQL解析器,用于解析具体的SQL,将SQL解析成格式化的AST树(抽象语法树);Optimizer是指查询优化器,用于对SQL Parser解析后的AST树进行优化,比如去除查询的重复列、使用配置的维表对查询进行修改等方式进行优化;SQL Planner是指执行计划生成器,用于对优化后的AST树进行分析,生成对应的执行计划;Cache是指缓存层,用于对查询的结果数据进行缓存,包含缓存策略以及淘汰策略,缓存策略指定了缓存的方式以及缓存时长等,其中,缓存方式包含时序方式缓存与整体结果缓存,淘汰策略包含定时、手动、接收消息淘汰等方式。
(4)Execute Plan是指执行计划,具体是指数据查询时的具体执行过程,使用DAG来表示,DAG中包括排序、合并、同环比计算、分组占比计算、查询等具体单元,在每个具体单元中定义了执行逻辑,通过不同的执行单元组合查询出最终的分析结果。需要说明的是,Querier表示查询单元,Merger表示合并单元,Sorter表示分类单元,Combiner表示组合单元。
(5)优先级队列为资源分配器,根据不同优先级将查询下发给不同的执行器,不同优先级的执行器在执行效率上会有不同,高优先级的查询能获得更多的执行资源来加速查询。
(6)Query Manager为查询管理器,SQL Planner生成计划后会交给查询管理器执行真正的查询,查询管理器根据不同的优先级将查询计划中的执行单元在优先级队列中申请资源并创建Query Worker(查询执行器)。
(7)Query Worker为最小粒度的查询执行器,在查询执行器中会执行ExecutePlan中对应节点的内容;比如,数据查询单元会调用查询Adapter(查询适配器)执行具体的引擎查询;合并单元会从引擎中加载数据,并将数据放到分布式内存数据库中,在内存数据库中进行数据合并与二次查询分析。需要说明的是,Query Worker N表示第N个查询执行器。
(8)Memory DB为系统中的分布式内存数据库,分布式内存数据库支持数据的合并与二次查询分析。需要说明的是,Memory DB N表示表示第N个分布式内存数据库。
(9)查询Adapter为查询适配器,包含元数据适配器与查询适配器;其中,元数据适配器查询引擎中的元数据信息,包括库、表、字段等,查询适配器用来从引擎查询分析数据。需要说明的是,通过模板方法、适配器模式支持不同的数据引擎查询,在Adapter(适配器)层定义了通用接口,使得接入更多的引擎更加简单。
(10)数据引擎,包括:MySQL、Druid、ClickHouse、HBase、Kudu、支持查询的API/RPC(Remote Procedure Call,远程过程调用)接口。
(11)Statistics:统计组件,统计组件用来统计系统的相关指标,包括:调用次数、响应时间、结果集大小、执行节点CPU/内存、执行队列资源负载等;Failover:容错组件,容错组件用来执行调用失败时的操作,包括:重试、读取缓存静态数据、报错等;Meta Data:元数据组件,整合了各个数据引擎上的元数据与预先配置的相关元数据,包括:集群、库、表、字段、执行策略等数据。
上述数据查询系统,在数据分析场景下,支持用户选择使用不同的数据引擎存储数据,通过扩展关系数据模型,统一抽象了各类引擎的查询逻辑,定义OLAP分析常用的高阶函数,实现多引擎数据的查询并且可以支持复杂的数据分析需求,有效利用不同数据引擎的计算能力,并且将整个过程简单化、流程化,帮助数据分析人员更好的处理数据并做相应的分析。
应该理解的是,虽然图2-3的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图2-3中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
图5是根据一示例性实施例示出的一种数据查询装置的框图。参照图5,该装置包括转换单元510,生成单元520,确定单元530和查询单元540。
转换单元510,被配置为执行对接收到的数据查询请求进行转换,得到转换后的数据查询请求;接收到的数据查询请求为针对至少两个数据维度的数据查询请求。
生成单元520,被配置为执行生成与转换后的数据查询请求对应的处理操作组合;处理操作组合由多个依序排列的处理操作所组成。
确定单元530,被配置为执行确定与各个处理操作对应的查询执行器。
查询单元540,被配置为执行按照与各个处理操作对应的查询执行器,执行各个处理操作,得到与接收到的数据查询请求对应的数据查询结果;各个查询执行器中的至少两个查询执行器用于从至少两个数据库中查询对应的元数据。
在一示例性实施例中,生成单元520,还被配置为执行对转换后的数据查询请求进行解析,得到对应的数据查询结构;数据查询结构用于表征转换后的数据查询请求的处理信息;对数据查询结构中的冗余信息进行调整处理,得到目标数据查询结构;冗余信息用于表征数据查询结构中的重复信息;生成与目标数据查询结构对应的处理操作组合,作为与转换后的数据查询请求对应的处理操作组合。
在一示例性实施例中,生成单元520,还被配置为执行对目标数据查询结构中的各种信息进行识别,得到目标数据查询结构对应的各个处理操作;确定各个处理操作的执行顺序;按照执行顺序,将各个处理操作进行组合,得到与目标数据查询结构对应的处理操作组合。
在一示例性实施例中,确定单元530,还被配置为执行获取各个处理操作对应的操作标识信息;根据操作标识信息,查询预设的操作标识信息与查询执行器的对应关系,得到与各个处理操作对应的查询执行器。
在一示例性实施例中,确定单元530,还被配置为执行获取接收到的数据查询请求的优先级;根据操作标识信息,查询预设的操作标识信息与优先级的查询执行器的对应关系,得到与各个处理操作对应的查询执行器。
在一示例性实施例中,查询单元540,还被配置为执行通过各个查询执行器中的至少两个查询执行器,对对应的至少两个数据库执行对应的至少两个处理操作,得到与接收到的数据查询请求对应的元数据;通过各个查询执行器中除至少两个查询执行器之外的查询执行器,对元数据执行对应的处理操作,得到与接收到的数据查询请求对应的数据查询结果。
在一示例性实施例中,本公开提供的数据查询装置还包括获取单元,被配置为执行从各个处理操作中,获取执行失败的处理操作;重新按照与执行失败的处理操作对应的查询执行器,执行执行失败的处理操作。
关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
图6是根据一示例性实施例示出的一种用于执行上述数据查询方法的设备600的框图。例如,设备600可以为一服务器。参照图6,设备600包括处理组件620,其进一步包括一个或多个处理器,以及由存储器622所代表的存储器资源,用于存储可由处理组件620的执行的指令,例如应用程序。存储器622中存储的应用程序可以包括一个或一个以上的每一个对应于一组指令的模块。此外,处理组件620被配置为执行指令,以执行上述数据查询方法。
设备600还可以包括一个电源组件624,被配置为执行设备600的电源管理,一个有线或无线网络接口626被配置为将设备600连接到网络,和一个输入输出(I/O)接口628。设备600可以操作基于存储在存储器622的操作系统,例如Windows ServerTM,Mac OS XTM,UnixTM,LinuxTM,FreeBSDTM或类似。
在示例性实施例中,还提供了一种包括指令的计算机可读存储介质,例如包括指令的存储器622,上述指令可由设备600的处理器执行以完成上述方法。例如,计算机可读存储介质可以是ROM、随机存取存储器(RAM)、CD-ROM、磁带、软盘和光数据存储设备等。
在示例性实施例中,还提供一种计算机程序产品,该计算机程序产品包括计算机程序,该计算机程序存储在计算机可读存储介质中,设备的至少一个处理器从该计算机可读存储介质读取并执行该计算机程序,使得设备执行本公开的任一项实施例中所述的数据查询方法。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本公开旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由权利要求指出。
应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。
- 数据存储设备、数据查询方法、装置、服务器及存储介质
- 数据查询方法、装置、服务器、系统及存储介质