查询任务的处理方法、装置、服务器及系统与流程

文档序号:21630915发布日期:2020-07-29 02:40阅读:315来源:国知局
本发明涉及数据处理
技术领域
:,更具体地,涉及一种查询任务的处理方法、数据库查询方法、装置、服务器、系统及计算机存储介质。
背景技术
::数据湖(datalakeanalytics)是一种无服务器(serverless)化的云上交互式查询分析服务。无需etl(extract-transform-load),使用标准结构化查询语言(structuredquerylanguage,sql)对nosql数据源、对象存储(oss)等云存储与云数据库中的数据进行查询和分析。现有技术中,数据库每次从当前查询服务队列中获取一个查询任务,并将该查询任务分配至一个计算节点进行执行。但一个计算节点的处理能力不仅限于此,这种查询任务的处理方式,不仅效率较低,且会造成系统资源的严重浪费。因此,发明人认为,有必要针对上述现有技术中存在的至少一个问题进行改进。技术实现要素:本发明实施例的一个目的是提供一种查询任务的处理的新技术方案。根据本发明实施例的第一方面,提供了一种查询任务的处理方法,所述方法包括:从当前查询服务队列中获取查询任务;将所述查询任务添加至查询下发窗口;判断所述当前查询服务队列中是否还有其他查询任务;若判断结果为是,返回执行所述从当前查询服务队列中获取查询任务的步骤;若判断结果为否,将所述查询下发窗口中的查询任务下发到计算节点进行执行。可选的,所述方法还包括:所述从当前查询服务队列中获取查询任务之前,所述方法还包括:获取当前执行的用户查询任务数列表;所述用户查询数列表中包含不同用户当前执行的查询任务数;其中,所述查询任务中至少包括用户id;相应的,所述将所述查询任务添加至查询下发窗口的步骤之前,所述方法还包括:判断将所述查询任务添加至所述查询下发窗口后,与所述用户id对应的查询任务数是否超过所述用户id对应的用户预设最大查询并发数;若未超过所述用户预设最大查询并发数,将所述查询任务添加至所述查询下发窗口;若超过所述用户预设最大查询并发数,返回执行所述从当前查询服务队列中获取查询任务的步骤。可选的,所述将所述查询任务添加至查询下发窗口的步骤之后,所述方法还包括:确定所述查询下发窗口的第一资源消耗估算值;判断所述第一资源消耗估算值与当前系统资源利用率之和是否超过预设扩容水位阈值;若未超过所述预设扩容水位阈值,执行判断所述当前查询服务队列中是否还有其他查询任务的步骤;若超过所述预设扩容水位阈值,根据计算得到的扩容节点数量进行扩容;将所述查询下发窗口中的查询任务下发到计算节点进行执行。可选的,所述判断所述当前查询服务队列中是否还有其他查询任务的步骤之后,所述方法还包括:判断所述第一资源消耗估算值与所述当前系统资源利用率之和是否小于预设缩容水位阈值;若小于所述预设缩容水位阈值,根据计算得到的缩容节点数量进行缩容;将所述查询下发窗口中的查询任务下发到计算节点进行执行;若不小于所述预设缩容水位阈值,将所述查询下发窗口中的所述查询任务下发到计算节点进行执行。可选的,所述将所述查询下发窗口中的查询任务下发到计算节点进行执行的步骤之前,所述方法还包括:确定所述查询下发窗口中的所述查询任务的共享下发分组。可选的,所述根据计算得到的扩容节点数量进行扩容的步骤之前,所述方法还包括:确定所述查询下发窗口中的所述查询任务的共享下发分组;根据确定的所述共享下发分组,确定所述查询下发窗口的第二资源消耗估算值;判断所述第二资源消耗估算值与所述当前系统资源利用率之和是否超过所述预设扩容水位阈值;若超过,执行所述根据计算得到的扩容节点数量进行扩容的步骤;若未超过,执行所述判断所述当前查询服务队列中是否还有其他查询任务的步骤。可选的,所述确定所述查询下发窗口中的所述查询任务的共享下发分组的步骤,包括:初始化所述查询下发窗口中的第一共享下发分组;获取所述查询下发窗口中的一个查询任务的执行计划树;判断所述执行计划树中是否存在与所述第一共享下发分组中各执行计划树匹配的共享算子;若存在,将所述查询任务添加到匹配的所述第一共享下发分组中;若不存在,为所述查询任务建立第二共享下发分组,并将所述查询任务添加到所述第二共享下发分组中;判断所述查询下发窗口中的查询任务是否全部完成共享算子匹配;若否,返回执行所述获取所述查询下发窗口中的一个查询任务的执行计划树的步骤;若是,确定所述查询下发窗口中的所述查询任务的共享下发分组。可选的,所述确定所述查询下发窗口的第一资源消耗估算值的步骤,包括:生成所述查询任务的查询语法树;根据所述查询语法树,生成所述查询任务的执行计划树;根据所述执行计划树对所述查询任务进行资源消耗估算,得到执行所述查询任务的资源消耗值;将执行所述查询任务的资源消耗值与所述查询下发窗口的当前资源消耗值进行累加,得到所述查询下发窗口的第一资源消耗估算值。根据本发明实施例的第二方面,提供了一种查询任务的处理装置,包括:存储器和处理器,所述存储器用于存储可执行的指令;所述处理器用于在所述指令的控制下执行根据本发明实施例的第一方面中任一项所述的查询任务的处理方法。根据本发明实施例的第三方面,提供了一种查询任务的处理装置,其特征在于,包括:获取模块,用于从当前查询服务队列中获取查询任务;添加模块,用于将所述查询任务添加至查询下发窗口;判断模块,用于判断所述当前查询服务队列中是否还有其他查询任务;若所述判断模块的判断结果为是,触发所述获取模块中的操作;下发模块,用于若所述判断模块的判断结果为否,将所述查询下发窗口中的查询任务下发到计算节点进行执行。根据本发明实施例的第四方面,提供了一种查询任务的处理系统,包括客户端设备和本发明实施例的第二方面或第三方面所述的查询任务的处理装置。根据本发明实施例的第五方面,提供了一种计算机存储介质,其上存储有计算机指令,当所述存储介质中的计算机指令由处理器执行时,实现如本发明实施例的第一方面中的任何一项所述的查询任务的处理方法中的操作。根据本发明实施例的第六方面,提供了一种数据库查询方法,所述方法包括:获取第一数据库查询请求和第二数据库查询请求;所述第一数据库查询请求中包括若干第一查询算子,所述第二数据库查询请求中包括若干第二查询算子;所述若干第一查询算子和所述若干第二查询算子中包括至少一个相同的查询算子;利用所述至少一个相同的算子执行所述第一数据库查询请求及所述第二数据库查询请求。根据本发明实施例的第七方面,提供了一种数据库查询装置,所述装置包括:获取模块,用于获取第一数据库查询请求和第二数据库查询请求;所述第一数据库查询请求中包括若干第一查询算子,所述第二数据库查询请求中包括若干第二查询算子;所述若干第一查询算子和所述若干第二查询算子中包括至少一个相同的查询算子;执行模块,用于利用所述至少一个相同的算子执行所述第一数据库查询请求及所述第二数据库查询请求。根据本发明的第八方面,提供了一种数据库查询装置,所述装置包括:存储器和处理器,所述存储器用于存储可执行的指令;所述处理器用于在所述指令的控制下执行根据本发明实施例的第六方面所述的查询任务的处理方法。根据本发明实施例的一个实施例,可以提升查询任务的处理效率,并提高系统资源利用率。通过以下参照附图对本发明的示例性实施例的详细描述,本发明的其它特征及其优点将会变得清楚。附图说明被结合在说明书中并构成说明书的一部分的附图示出了本发明的实施例,并且连同其说明一起用于解释本发明的原理。图1是可用于实现本发明实施例的查询任务的处理系统的硬件配置的框图;图2是本发明的查询任务的处理方法实施例一的示意性流程图;图3是本发明的查询任务的处理方法实施例二的示意性流程图;图4是本发明的查询任务的处理方法实施例三的示意性流程图;图5是本发明的查询任务的处理方法实施例四的示意性流程图;图6是本发明的查询任务的处理方法实施例五的示意性流程图;图7是本发明的查询任务的处理方法实施例六的示意性流程图;图8是本发明的查询任务的处理方法中确定共享下发分组步骤的示意性流程图;图9示出了根据图8的一个例子的示意图;图10为根据本发明实施例一的查询任务的处理装置的结构示意图;图11为根据本发明实施例二的查询任务的处理装置的结构示意图;图12为根据本发明实施例的查询任务的处理系统的结构示意图;图13是本发明实施例的数据库查询方法的示意性流程图;图14是本发明实施例一的数据库查询装置的示意性结构图;图15是本发明实施例二的数据库查询装置的示意性结构图。具体实施方式现在将参照附图来详细描述本发明的各种示例性实施例。应注意到:除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对布置、数字表达式和数值不限制本发明的范围。以下对至少一个示例性实施例的描述实际上仅仅是说明性的,决不作为对本发明及其应用或使用的任何限制。对于相关领域普通技术人员已知的技术、方法和设备可能不作详细讨论,但在适当情况下,所述技术、方法和设备应当被视为说明书的一部分。在这里示出和讨论的所有例子中,任何具体值应被解释为仅仅是示例性的,而不是作为限制。因此,示例性实施例的其它例子可以具有不同的值。应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步讨论。下面,参照附图描述根据本发明实施例的各个实施例和例子。<硬件配置>图1是可用于实现本发明实施例的查询任务的处理系统的硬件配置的框图。如图1所示,查询任务的处理系统100包括服务器1000和客户端设备2000。在该查询任务的处理系统100中,服务器1000与客户端设备2000通过网络3000进行通信连接。服务器1000可以是整体式服务器或是跨多计算机或计算机数据中心的分散式服务器。服务器1000可以是各种类型的,例如但不限于,网络服务器,新闻服务器,邮件服务器,消息服务器,广告服务器,文件服务器,应用服务器,交互服务器,数据库服务器,或代理服务器。在一些实施例中,每个服务器1000可以包括硬件,软件,或用于执行服务器1000所支持或实现的合适功能的内嵌逻辑组件或两个或多个此类组件的组合。例如,服务器1000例如是刀片服务器、云端服务器等,或者可以是由多台服务器组成的服务器群组,可以包括上述类型的服务器中的一种或多种等等。在一个实施例中,服务器1000可以如图1所示,包括处理器1100、存储器1200、接口装置1300、通信装置1400、显示装置1500、输入装置1600。在另外的实施例中,服务器1000还可以包括扬声器、麦克风等等,在此不做限定。处理器1100可以是专用的服务器处理器,也可以是满足性能要求的台式机处理器、移动版处理器等,在此不做限定。存储器1200例如包括rom(只读存储器)、ram(随机存取存储器)、诸如硬盘的非易失性存储器等。接口装置1300例如包括各种总线接口,例如串行总线接口(包括usb接口)、并行总线接口等。通信装置1400例如能够进行有线或无线通信,该通信装置1400至少能够基于面向连接协议进行通信,具有重传机制。显示装置1500例如是液晶显示屏、led显示屏触摸显示屏等。输入装置1600例如可以包括触摸屏、键盘等。尽管在图1中示出了服务器1000的多个装置,但是,本发明可以仅涉及其中的部分装置,例如,服务器1000只涉及存储器1200、处理器1100和通信装置1400。本实施例中,服务器1000的存储器1200用于存储指令,该指令用于控制处理器1100进行操作以执行本发明任意实施例的查询任务的处理方法。技术人员可以根据本发明所公开方案设计指令。指令如何控制处理器进行操作,这是本领域公知,故在此不再详细描述。客户端设备2000例如是手机、便携式电脑、平板电脑、掌上电脑、可穿戴设备等。如图1所示,客户端设备2000可以包括处理器2100、存储器2200、接口装置2300、通信装置2400、显示装置2500、输入装置2600、扬声器2700、麦克风2800等等。处理器2100可以是移动版处理器。存储器2200例如包括rom(只读存储器)、ram(随机存取存储器)、诸如硬盘的非易失性存储器等。接口装置2300例如包括usb接口、耳机接口等。通信装置2400例如能够进行有线或无线通信。显示装置2500例如是液晶显示屏、触摸显示屏等。输入装置2600例如可以包括触摸屏、键盘等。用户可以通过扬声器2700和麦克风2800输入/输出语音信息。尽管在图1中示出了客户端设备2000的多个装置,但是,本发明可以仅涉及其中的部分装置,例如,客户端设备2000只涉及存储器2200和处理器2100和通信装置2400。以是无线通信网络也可以是有线通信网络,可以是局域网也可以是广域网。在图1所示的查询任务的处理系统100中,服务器1000与客户端设备2000可以通过网络3000进行通信。<方法实施例>图2是本发明的查询任务的处理方法实施例一的示意性流程图。本实施例的查询任务的处理方法,具体可以由如图1中所示的服务器1000执行。如图2所示,在步骤2100,从当前查询服务队列中获取查询任务。其中,所述当前查询服务队列中的查询任务是同一时刻提交的查询任务,所述当前查询服务队列中可以有一个或多个查询任务,这些查询任务可以来自相同或不同的用户。在本实施例中,会对所述当前查询服务队列中的查询任务依次执行下述步骤2200~步骤2400。在步骤2200,将所述查询任务添加至查询下发窗口。步骤2300,判断所述当前查询服务队列中是否还有其他查询任务。若判断结果为是,返回执行上述步骤2100。若判断结果为否,进入步骤2400,将所述查询下发窗口中的查询任务下发到计算节点进行执行。本实施例的查询任务的处理方法,可以对同一时刻提交的查询任务同时调度,下发到计算节点进行执行,从而提高了查询任务的处理效率和系统资源的利用率。在一个实施例中,如图3所示,在上述步骤2100之前,本实施例的查询任务的处理方法进一步还可以包括:步骤3100,获取当前执行的用户查询任务数列表;所述用户查询数列表中包含不同用户当前执行的查询任务数量。其中,所述查询任务中至少包括用户id。本步骤中,对当前执行的查询任务,按照不同的用户id分别进行数量统计,得到包含不同用户当前执行的查询任务数量的用户查询数列表。相应的,上述步骤2100之后,且步骤2200之前可以包括:步骤3200,判断将所述查询任务添加至所述查询下发窗口后,与所述用户id对应的查询任务数是否超过所述用户id对应的用户预设最大查询并发数。考虑到用户查询响应的公平性,在本步骤中,对所述查询下发窗口中的每个查询任务,判断若将该用户的查询任务添加至所述查询下发窗口,是否会导致该用户的用户id对应的查询任务数超过用户预设最大查询并发数,若不超过,则执行上述步骤2200,即,将该查询任务添加至所述查询下发窗口。若超过,则在本次调度中,暂不调度该用户的查询任务,返回执行上述步骤2100,重新从当前查询服务队列中获取查询任务。在本实施例中,可以实现对来自不同用户的查询任务的轮询调度,保证了用户查询响应的公平性。在一个实施例中,考虑到系统资源利用率及计算节点的计算能力,如图4所示,在上述步骤2200之后,本实施例的方法还可以包括:步骤4100,确定所述查询下发窗口的第一资源消耗估算值。具体的,在确定所述查询下发窗口的第一资源消耗估算值时,可以包括如下步骤4100-1至步骤4100-4:步骤4100-1,生成所述查询任务的查询语法树。具体的,可以调用查询语法解析器生成所述查询任务的查询语法树。步骤4100-2,根据所述查询语法树,生成所述查询任务的执行计划树。步骤4100-3,根据所述执行计划树对所述查询任务进行资源消耗估算,得到执行所述查询任务的资源消耗值。在步骤4100-2和步骤4100-3中,具体可以通过调用查询优化器,根据所述查询任务的查询语法树生成执行计划树,并对所述执行计划树进行资源消耗估算,从而得到执行所述查询任务的资源消耗值。即,通过估算得到如果执行所述查询任务,将对cpu、内存等资源消耗的增量数据。步骤4100-4,将执行所述查询任务的资源消耗值与所述查询下发窗口的当前资源消耗值进行累加,得到所述查询下发窗口的第一资源消耗估算值。步骤4200,判断所述第一资源消耗估算值与当前系统资源利用率之和是否超过预设扩容水位阈值。若所述第一资源消耗估算值与当前系统资源利用率之和超过预设扩容水位阈值,表明当前系统资源及计算节点的计算能力不足以处理所述查询下发窗口内的查询任务,需要对系统进行扩容,此时,执行步骤4300。若所述第一资源消耗估算值与当前系统资源利用率之和未超过预设扩容水位阈值,表明当前系统资源及计算节点的计算能力可以处理所述查询下发窗口内的查询任务,不需要对系统进行扩容,此时,可以返回执行步骤2300。在步骤4300,根据计算得到的扩容节点数量进行扩容。在本步骤之后,执行上述步骤2400:将所述查询下发窗口中的查询任务下发到计算节点进行执行。在本实施例中,通过确定所述查询下发窗口的第一资源消耗估算值,然后判断所述第一资源消耗估算值与所述当前系统资源利用率之和是否超过预设扩容水位阈值,并在判断所述第一资源消耗估算值与当前系统资源利用率之和超过所述预设扩容水位阈值时,触发计算节点的扩容计算,从而实现弹性扩容,合理利用系统资源。在一个实施例中,考虑到系统资源利用率及计算节点的计算能力,如图5所示,在上述步骤2300之后,若判断所述当前查询服务队列中没有其他查询任务,本实施例的方法还可以包括:步骤5100,判断所述第一资源消耗估算值与所述当前系统资源利用率之和是否小于预设缩容水位阈值。若所述第一资源消耗估算值与当前系统资源利用率之和小于预设缩容水位阈值,表明当前系统资源及计算节点的计算能力超过处理所述查询下发窗口内的查询任务所需消耗的资源,需要对系统进行缩容,从而避免将查询任务下发到计算节点后,占用过多的系统资源,造成系统资源浪费,此时,执行步骤5200。若所述第一资源消耗估算值与当前系统资源利用率之和不小于预设缩容水位阈值,表明当前系统资源及计算节点的计算能力可以处理所述查询下发窗口内的查询任务,将查询任务下发到计算节点后,不会浪费系统资源,因此不需要对系统进行缩容,此时,可以执行步骤2400。步骤5200,根据计算得到的缩容节点数量进行缩容。具体的,缩容量可以按照新增资源消耗估算后,以预设缩容水位阈值的差值换算出的结果进行。在本步骤之后,执行上述步骤2400:将所述查询下发窗口中的查询任务下发到计算节点进行执行。在本实施例中,在判断所述当前查询服务队列中没有其他查询任务后,判断所述第一资源消耗估算值与所述当前系统资源利用率之和是否小于预设缩容水位阈值,并在判断所述第一资源消耗估算值与当前系统资源利用率之和小于所述预设缩容水位阈值时,触发计算节点的缩容计算,从而实现弹性缩容,合理利用系统资源。在一个实施例中,为了对扩容的估算更准确,如图6所示,在上述步骤4300之前,还可以包括步骤6100~步骤6300。步骤6100,确定所述查询下发窗口中的所述查询任务的共享下发分组。本步骤是在根据上述步骤4200判断所述第一资源消耗估算值与当前系统资源利用率之和超过所述预设扩容水位阈值后,且在上述步骤4300根据计算得到的扩容节点数量进行扩容之前执行的。本实施例中,是在查询下发窗口界定前对所述查询下发窗口中的查询任务进行共享下发分组,将具有共享算子的查询任务分为一组,可以节省系统资源,进一步提升系统资源利用率。步骤6200,根据确定的所述共享下发分组,确定所述查询下发窗口的第二资源消耗估算值。本步骤中,由于对所述查询任务进行了共享下发分组,在需要重新对所述查询下发窗口的资源消耗进行估算。具体的估算步骤可以参照上述步骤4100-1至步骤4100-4的描述,在此不再赘述。步骤6300,判断所述第二资源消耗估算值与所述当前系统资源利用率之和是否超过所述预设扩容水位阈值。若超过,触发计算节点扩容计算,执行上述步骤4300,根据计算得到的扩容节点数量进行扩容;具体的,扩容量按照新增资源消耗估算与计算节点换算出的结果进行计算。本步骤可以异步执行。若未超过,执行上述步骤2300:判断所述当前查询服务队列中是否还有其他查询任务,直至判断结果为否。在本实施例中,在判断所述第一资源消耗估算值与当前系统资源利用率之和超过所述预设扩容水位阈值后,对查询下发窗口中的查询任务进行共享下发分组,将具有共享算子的查询任务分为一组后,在查询下发窗口内计算扩容量,对扩容的估算更准确,从而实现节省系统资源,提升系统资源利用率。在一个实施例中,为了减少查询任务的响应延时,如图7所示,在上述步骤2400之前,还可以包括步骤7100:确定所述查询下发窗口中的所述查询任务的共享下发分组。在本实施例中,在判断所述第一资源消耗估算值与所述当前系统资源利用率之和不小于预设缩容水位阈值之后,对查询下发窗口中的查询任务进行共享下发分组,将具有共享算子的查询任务分为一组,然后将所述查询下发窗口中的所述查询任务下发到计算节点进行执行,在节省系统资源,提升系统资源利用率的同时,还可以缩短查询任务的响应延时。在一个实施例中,如图8所示,上述步骤6100或上述步骤7100中,确定所述查询下发窗口中的所述查询任务的共享下发分组的步骤,具体可以包括如下步骤8100~步骤8700:在步骤8100,初始化所述查询下发窗口中的第一共享下发分组。步骤8200,获取所述查询下发窗口中的一个查询任务的执行计划树。步骤8300,判断所述执行计划树中是否存在与所述第一共享下发分组中各执行计划树匹配的共享算子。例如,在获取所述查询下发窗口中的一个查询任务的执行计划树后,从该执行计划树的tablescan(表扫描)算子开始,与所述第一共享下发分组中各执行计划树中的算子进行匹配,由此判断所述执行计划树中是否存在于所述第一共享下发分组中各执行计划树匹配的共享算子。若本步骤中,判断结果是存在所述共享算子,执行步骤8400;若判断结果是不存在所述共享算子,执行步骤8500。步骤8400,将所述查询任务添加到匹配的所述第一共享下发分组中。若存在共享算子,则将所述查询任务添加至对应的第一共享下发分组中,并相应的调整该查询任务的执行计划树。步骤8500,为所述查询任务建立第二共享下发分组,并将所述查询任务添加到所述第二共享下发分组中。若不存在所述共享算子,即,没有匹配到可以共享的算子,则为所述查询任务建立新的共享下发分组,即所述第二共享下发分组,并将所述查询任务添加到所述第二共享下发分组中。在执行完上述步骤8400或步骤8500之后,进入步骤8600,判断所述查询下发窗口中的查询任务是否全部完成共享算子匹配。若判断结果为否,返回执行上述步骤8200:所述获取所述查询下发窗口中的一个查询任务的执行计划树,直至判断出所述查询下发窗口中的查询任务全部完成共享算子的匹配操作。若判断结果为是,执行步骤8700。步骤8700,确定所述查询下发窗口中的所述查询任务的共享下发分组。在一个例子中,如图9所示,有五个查询任务(query)。其中,query1为:select*fromainnerjoindona.id=d.idwherea.name=’abc’andd.key=‘123’orderbya.id;query2为:select*fromainnerjoinbona.id=b.idwherea.name=’abc’andb.sex=‘male’orderbya.idlimit100;query3为:selectc.age,count(a.id)fromainnerjoinbona.id=b.idinnerjoinconb.name=c.namewherea.name=’abc’andb.sex=‘male’groupbyc.ageorderbya.idlimit100;query4为:select*fromcorderbyc.agelimit10;query5为:selecte.age,count(*)fromegroupbye.ageorderbye.age。其中,query1、2、3、4共享join算子,被分配至共享分组1,query5中没有与query1、2、3、4匹配的共享算子,为query5建立新的共享分组2。本实施例中,通过确定所述查询下发窗口中的所述查询任务的共享下发分组,将具有共享算子的查询任务进行分组,同一时间内,使得对于同一数据集的访问被共享,节省了计算资源消耗,进而提升了系统资源利用率。<装置实施例>图10为根据本发明实施例一的查询任务的处理装置的结构示意图。如图10所示,本实施例的查询任务的处理装置100可以包括:获取模块101,添加模块102,判断模块103以及下发模块104。其中,获取模块101用于从当前查询服务队列中获取查询任务。添加模块102,用于将所述查询任务添加至查询下发窗口。判断模块103,用于判断所述当前查询服务队列中是否还有其他查询任务。若所述判断模块103的判断结果为是,触发所述获取模块101中的操作。下发模块104,用于若所述判断模块103的判断结果为否,将所述查询下发窗口中的查询任务下发到计算节点进行执行。所述获取模块101还可以用于获取当前执行的用户查询任务数列表;所述用户查询数列表中包含不同用户当前执行的查询任务数量;其中,所述查询任务中至少包括用户id。相应的,所述判断模块103还用于判断将所述查询任务添加至所述查询下发窗口后,与所述用户id对应的查询任务数是否超过所述用户id对应的用户预设最大查询并发数。若未超过所述用户预设最大查询并发数,将所述查询任务添加至所述查询下发窗口。若超过所述用户预设最大查询并发数,触发所述获取模块101中的操作。本实施例的查询任务的处理装置100还可以包括确定模块(图中未示出),用于确定所述查询下发窗口的第一资源消耗估算值。所述判断模块103还用于判断所述第一资源消耗估算值与当前系统资源利用率之和是否超过预设扩容水位阈值。若所述判断模块103的判断结果是未超过所述预设扩容水位阈值,触发所述判断模块103判断所述当前查询服务队列中是否还有其他查询任务的操作;所述查询任务的处理装置100还可以包括扩容模块(图中未示出),用于若所述判断模块103的判断结果是超过所述预设扩容水位阈值,根据计算得到的扩容节点数量进行扩容;触发所述下发模块104将所述查询下发窗口中的查询任务下发到计算节点进行执行的操作。进一步的,所述判断模块103还可以用于判断所述第一资源消耗估算值与所述当前系统资源利用率之和是否小于预设缩容水位阈值。所述查询任务的处理装置100还可以包括缩容模块(图中未示出),用于若所述判断模块103的判断结果是小于所述预设缩容水位阈值,根据计算得到的缩容节点数量进行缩容;并触发所述下发模块104将所述查询下发窗口中的查询任务下发到计算节点进行执行的操作;若所述判断模块103的判断结果是不小于所述预设缩容水位阈值,触发所述下发模块104将所述查询下发窗口中的查询任务下发到计算节点进行执行的操作。进一步的,在一个例子中,所述确定模块还可以用于确定所述查询下发窗口中的所述查询任务的共享下发分组后,触发所述下发模块104将所述查询下发窗口中的查询任务下发到计算节点进行执行的操作。在另一个例子中,所述确定模块还可以用于确定所述查询下发窗口中的所述查询任务的共享下发分组;根据确定的所述共享下发分组,确定所述查询下发窗口的第二资源消耗估算值。所述判断模块103还可以用于判断所述第二资源消耗估算值与所述当前系统资源利用率之和是否超过所述预设扩容水位阈值。若所述判断模块103的判断结果是超过,触发所述扩容模块根据计算得到的扩容节点数量进行扩容的操作;若所述判断模块103的判断结果是未超过,触发所述判断模块103判断所述当前查询服务队列中是否还有其他查询任务的操作。进一步的,所述确定模块在确定所述查询下发窗口中的所述查询任务的共享下发分组时,具体用于:初始化所述查询下发窗口中的第一共享下发分组;获取所述查询下发窗口中的一个查询任务的执行计划树;判断所述执行计划树中是否存在与所述第一共享下发分组中各执行计划树匹配的共享算子;若存在,将所述查询任务添加到匹配的所述第一共享下发分组中;若不存在,为所述查询任务建立第二共享下发分组,并将所述查询任务添加到所述第二共享下发分组中;判断所述查询下发窗口中的查询任务是否全部完成共享算子匹配;若否,返回执行所述获取所述查询下发窗口中的一个查询任务的执行计划树;若是,确定所述查询下发窗口中的所述查询任务的共享下发分组。进一步的,所述确定模块在确定所述查询下发窗口的第一资源消耗估算值时,具体用于:生成所述查询任务的查询语法树;根据所述查询语法树,生成所述查询任务的执行计划树;根据所述执行计划树对所述查询任务进行资源消耗估算,得到执行所述查询任务的资源消耗值;将执行所述查询任务的资源消耗值与所述查询下发窗口的当前资源消耗值进行累加,得到所述查询下发窗口的第一资源消耗估算值。图11为根据本发明实施例二的查询任务的处理装置的结构示意图。如图11所示,本实施例的查询任务的处理装置110可以包括存储器112和处理器111。存储器112用于存储指令,该指令用于控制处理器111进行操作以执行本发明任意实施例的查询任务的处理方法。技术人员可以根据本发明所公开方案设计指令。指令如何控制处理器进行操作,这是本领域公知,故在此不再详细描述。<系统>在本实施例中,查询任务的处理系统可以包括如图1所示的客户端设备,以及上述实施例中的查询任务的处理装置100或110。在一个例子中,本实施例的查询任务的处理系统也可以如图12所示,包括:查询服务队列(queryqueue),用于接收不同用户发到服务器上的查询任务请求。查询语法解析器(queryparser),用于生成查询语法树。查询优化器(queryoptimizer),用于根据查询语法树、统计信息,生成执行计划树,并能对执行计划树进行资源消耗预估。用于存储系统所有相关的元数据信息metastore,以及查询任务的处理装置9000,可以用于外部调用弹性扩缩容服务进行扩缩容,调用查询引擎(queryexecution)进行查询任务下发。其中,queryexecution将进行共享下发分组后的查询任务下发到分布式计算节点集群进行执行。<计算机存储介质>在本实施例中,还提供一种计算机存储介质,其上存储有计算机指令,当所述存储介质中的计算机指令由处理器执行时,实现上述实施例提供的任意一种查询任务的处理方法中。<数据库查询方法>图13是本发明实施例的数据库查询方法的示意性流程图。如图13所示,本实施例的数据库查询方法可以包括:步骤130,获取第一数据库查询请求和第二数据库查询请求;所述第一数据库查询请求中包括若干第一查询算子,所述第二数据库查询请求中包括若干第二查询算子;所述若干第一查询算子和所述若干第二查询算子中包括至少一个相同的查询算子。具体的,在获取到第一数据库查询请求和第二数据库查询请求后,通过将所述第一数据库查询请求中的若干第一查询算子,与所述第二数据库查询请求中的若干第二查询算子进行匹配,得到所述若干第一查询算子和所述若干第二查询算子中包括的至少一个相同的查询算子,该至少一个相同的查询算子被作为执行所述第一数据库查询请求和第二数据库查询请求时的共享算子。步骤131,利用所述至少一个相同的算子执行所述第一数据库查询请求及所述第二数据库查询请求。本实施例中,通过对利用第一数据库查询请求和第二数据库查询请求中的至少一个相同的查询算子执行所述第一数据库查询请求和第二数据库查询请求,使得同一时间内,对于同一数据集的访问被共享,节省了计算资源消耗,进而提升了系统资源利用率。<数据库查询方法>图14是本发明实施例一的数据库查询装置的示意性结构图。如图14所示,所述数据库查询装置140包括:获取模块141和执行模块142。获取模块141,用于获取第一数据库查询请求和第二数据库查询请求;所述第一数据库查询请求中包括若干第一查询算子,所述第二数据库查询请求中包括若干第二查询算子;所述若干第一查询算子和所述若干第二查询算子中包括至少一个相同的查询算子。执行模块142,用于利用所述至少一个相同的算子执行所述第一数据库查询请求及所述第二数据库查询请求。本实施例的数据库查询装置,可用于执行上述方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。图15是本发明实施例二的数据库查询装置的示意性结构图。如图15所示,本实施例的数据库查询装置150包括:存储器151和处理器152,所述存储器151用于存储可执行的指令;所述处理器152用于在所述指令的控制下执行上述查询任务的处理方法。本领域技术人员公知的是,随着诸如大规模集成电路技术的电子信息技术的发展和软件硬件化的趋势,要明确划分计算机系统软、硬件界限已经显得比较困难了。因为,任何操作可以软件来实现,也可以由硬件来实现。任何指令的执行可以由硬件完成,同样也可以由软件来完成。对于某一机器功能采用硬件实现方案还是软件实现方案,取决于价格、速度、可靠性、存储容量、变更周期等非技术性因素。对于技术人员来说,软件实现方式和硬件实现方式是等同的。技术人员可以根据需要选择软件或硬件来实现上述方案。因此,这里不对具体的软件或硬件进行限制。本发明可以是设备、方法和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于使处理器实现本发明的各个方面的计算机可读程序指令。计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是――但不限于――电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、静态随机存取存储器(sram)、便携式压缩盘只读存储器(cd-rom)、数字多功能盘(dvd)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。用于执行本发明操作的计算机程序指令可以是汇编指令、指令集架构(isa)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言—诸如smalltalk、c++等,以及常规的过程式编程语言—诸如“c”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(lan)或广域网(wan)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(fpga)或可编程逻辑阵列(pla),该电子电路可以执行计算机可读程序指令,从而实现本发明的各个方面。这里参照根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本发明的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。对于本领域技术人员来说公知的是,通过硬件方式实现、通过软件方式实现以及通过软件和硬件结合的方式实现都是等价的。以上已经描述了本发明的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本
技术领域
:的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术改进,或者使本
技术领域
:的其它普通技术人员能理解本文披露的各实施例。本发明的范围由所附权利要求来限定。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1