著录项信息
专利名称 | 一种查询处理方法、装置及系统 |
申请号 | CN201310728889.0 | 申请日期 | 2013-12-25 |
法律状态 | 授权 | 申报国家 | 中国 |
公开/公告日 | 2015-07-01 | 公开/公告号 | CN104750690A |
优先权 | 暂无 | 优先权号 | 暂无 |
主分类号 | G06F17/30 | IPC分类号 | G;0;6;F;1;7;/;3;0查看分类表>
|
申请人 | 中国移动通信集团公司 | 申请人地址 | 北京市西城区金融大街29号
变更
专利地址、主体等相关变化,请及时变更,防止失效 |
权利人 | 中国移动通信集团公司 | 当前权利人 | 中国移动通信集团公司 |
发明人 | 齐骥;钱岭;高丹;邓展成;李光瑞 |
代理机构 | 北京同达信恒知识产权代理有限公司 | 代理人 | 郭润湘 |
摘要
本发明公开了一种查询处理方法、装置及系统,包括:查询路由器将待处理的查询请求发送给多个查询引擎;接收每个查询引擎发送的对该查询请求进行处理的预判响应时间,该预判响应时间为查询引擎根据自身对应的存储引擎中存储的数据表的属性信息,预判的通过扫描该数据表对该查询请求进行处理所需的时间;向预判响应时间最小的查询引擎发送对该查询请求的处理指令。采用本发明实施例提供的方案,相比现有技术,提高了对查询的处理效率。
1.一种查询处理方法,其特征在于,包括:
查询路由器将待处理的查询请求发送给多个查询引擎;
接收每个所述查询引擎发送的对所述查询请求进行处理的预判响应时间,所述预判响应时间为查询引擎根据自身对应的存储引擎中存储的数据表的属性信息,预判的通过扫描所述数据表对所述查询请求进行处理所需的时间,其中,每一查询引擎对应至少一种类型的存储引擎;
向预判响应时间最小的查询引擎发送对所述查询请求的处理指令。
2.如权利要求1所述的方法,其特征在于,将待处理的查询请求发送给多个查询引擎,具体为:
通过待处理的查询请求的查询类型与每个查询引擎可处理查询的类型进行比对,将所述查询请求发送给可处理该查询请求的多个查询引擎。
3.如权利要求1所述的方法,其特征在于,将待处理的查询请求发送给多个查询引擎,具体为:
将根据预设查询请求优先策略确定的优先级最高的待处理查询请求发送给多个查询引擎。
4.如权利要求1所述的方法,其特征在于,在向预判响应时间最小的查询引擎发送对所述查询请求的处理指令之后,还包括:
记录所述查询请求与处理该查询请求的查询引擎的对应关系。
5.如权利要求1所述的方法,其特征在于,在向预判响应时间最小的查询引擎发送对所述查询请求的处理指令之后,还包括:
当接收到该查询引擎发送的表征该查询引擎处理所述查询请求的资源不足的消息时,按照预判响应时间从小到大的顺序,从所述多个查询引擎中除该查询引擎之外的查询引擎中,向预判响应时间最小的查询引擎发送对所述查询请求的处理指令。
6.一种查询处理方法,其特征在于,包括:
查询引擎接收查询路由器发送的查询请求;
根据自身对应的存储引擎中存储的数据表的属性信息,预判通过扫描所述数据表对所述查询请求进行处理所需的时间,作为自身对所述查询请求进行处理的预判响应时间,其中,所述查询引擎对应至少一种类型的存储引擎;
将所述预判响应时间发送给所述查询路由器;
当接收到所述查询路由器发送的对所述查询请求的处理指令时,采用自身的资源对所述查询请求进行处理。
7.如权利要求6所述的方法,其特征在于,当接收到所述查询路由器发送的对所述查询请求的处理指令时,采用自身的资源对所述查询请求进行处理,具体包括:
当接收到所述查询路由器发送的对所述查询请求的处理指令时,根据与自身对应的存储引擎中存储的数据表的属性信息,确定通过扫描所述数据表对所述查询请求进行处理所需的资源;
当确定自身的空闲资源不小于对所述查询请求进行处理所需的资源时,采用自身的空闲资源对所述查询请求进行处理。
8.如权利要求6所述的方法,其特征在于,采用自身的空闲资源对所述查询请求进行处理,具体包括:
在自身的多个资源队列中,根据预设资源队列选择策略选择一个资源队列对所述查询请求进行处理。
9.如权利要求7所述的方法,其特征在于,还包括:
当确定自身的空闲资源小于对所述查询请求进行处理所需的资源时,向所述查询路由器发送表征自身处理所述查询请求的资源不足的消息。
10.一种查询处理装置,其特征在于,包括:
查询请求发送单元,用于将待处理的查询请求发送给多个查询引擎;
接收单元,用于接收每个所述查询引擎发送的对所述查询请求进行处理的预判响应时间,所述预判响应时间为查询引擎根据自身对应的存储引擎中存储的数据表的属性信息,预判的通过扫描所述数据表对所述查询请求进行处理所需的时间,其中,每一查询引擎对应至少一种类型的存储引擎;
第一处理指令发送单元,用于向预判响应时间最小的查询引擎发送对所述查询请求的处理指令。
11.如权利要求10所述的装置,其特征在于,所述查询请求发送单元,具体用于通过待处理的查询请求的查询类型与每个查询引擎可处理查询的类型进行比对,将所述查询请求发送给可处理该查询请求的多个查询引擎。
12.如权利要求10所述的装置,其特征在于,所述查询请求发送单元,具体用于将根据预设查询请求优先策略确定的优先级最高的待处理查询请求发送给多个查询引擎。
13.如权利要求10所述的装置,其特征在于,还包括:
记录单元,用于在向预判响应时间最小的查询引擎发送对所述查询请求的处理指令之后,记录所述查询请求与处理该查询请求的查询引擎的对应关系。
14.如权利要求10所述的装置,其特征在于,还包括:
第二处理指令发送单元,用于当接收到该查询引擎发送的表征该查询引擎处理所述查询请求的资源不足的消息时,按照预判响应时间从小到大的顺序,从所述多个查询引擎中除该查询引擎之外的查询引擎中,向预判响应时间最小的查询引擎发送对所述查询请求的处理指令。
15.一种查询处理装置,其特征在于,设置在查询引擎中,所述装置包括:
接收单元,用于接收查询路由器发送的查询请求;
响应时间预判单元,用于根据自身对应的存储引擎中存储的数据表的属性信息,预判通过扫描所述数据表对所述查询请求进行处理所需的时间,作为自身对所述查询请求进行处理的预判响应时间,其中,所述查询引擎对应至少一种类型的存储引擎;
第一发送单元,用于将所述预判响应时间发送给所述查询路由器;
处理单元,用于当接收到所述查询路由器发送的对所述查询请求的处理指令时,采用自身的资源对所述查询请求进行处理。
16.如权利要求15所述的装置,其特征在于,所述处理单元,具体用于当接收到所述查询路由器发送的对所述查询请求的处理指令时,根据与自身对应的存储引擎中存储的数据表的属性信息,确定通过扫描所述数据表对所述查询请求进行处理所需的资源;当确定自身的空闲资源不小于对所述查询请求进行处理所需的资源时,采用自身的空闲资源对所述查询请求进行处理。
17.如权利要求15所述的装置,其特征在于,所述处理单元,具体用于在自身的多个资源队列中,根据预设资源队列选择策略选择一个资源队列对所述查询请求进行处理。
18.如权利要求15所述的装置,其特征在于,还包括:
第二发送单元,用于当确定自身的空闲资源小于对所述查询请求进行处理所需的资源时,向所述查询路由器发送表征自身处理所述查询请求的资源不足的消息。
19.一种查询处理系统,其特征在于,包括:查询路由器和多个查询引擎,其中:
所述查询路由器,用于将待处理的查询请求发送给多个查询引擎;接收每个所述查询引擎发送的对所述查询请求进行处理的预判响应时间,所述预判响应时间为查询引擎根据自身对应的存储引擎中存储的数据表的属性信息,预判的通过扫描所述数据表对所述查询请求进行处理所需的时间,其中,每一查询引擎对应至少一种类型的存储引擎;向预判响应时间最小的查询引擎发送对所述查询请求的处理指令;
所述查询引擎,用于接收查询路由器发送的查询请求;根据自身对应的存储引擎中存储的数据表的属性信息,预判通过扫描所述数据表对所述查询请求进行处理所需的时间,作为自身对所述查询请求进行处理的预判响应时间;将所述预判响应时间发送给所述查询路由器;当接收到所述查询路由器发送的对所述查询请求的处理指令时,采用自身的资源对所述查询请求进行处理。
一种查询处理方法、装置及系统\n技术领域\n[0001] 本发明涉及数据库技术领域,尤其涉及一种查询处理方法、装置及系统。\n背景技术\n[0002] 目前,数据库在提供查询时,一般通过单一的查询引擎入口处理用户的查询请求。\n数据库将资源划分为多个队列,每个队列被分配了一定比例的计算或存储资源。当数据库接收查询请求时,根据查询请求的查询类型,将该查询请求提交到该查询请求的查询类型对应的资源队列中,由查询引擎使用该资源队列的资源对该查询请求进行处理,例如,可以根据执行查询的时间将资源队列进行划分:执行时间短暂的交互类查询或者交易类操作被指定使用第一个资源队列中的资源执行查询;执行时间较长,资源占用较多的复杂批处理任务被指定使用第二个资源队列中的资源执行查询;剩余的其他任务被指定使用第三个资源队列中的资源执行查询。\n[0003] 上述现有的在数据库中对查询请求进行处理的方法,由于采用固定的查询规则对处理查询请求的资源进行资源调度,当某一类查询请求需要的资源较多时,可能由于对该类查询进行处理的资源队列的资源不足,无法对该查询请求进行高效处理,导致对该类查询的处理效率低。\n发明内容\n[0004] 本发明实施例提供一种查询处理方法、装置及系统,用以解决现有技术中存在的在数据库中对查询进行处理的效率低的问题。\n[0005] 本发明实施例提供一种查询处理方法,包括:\n[0006] 查询路由器将待处理的查询请求发送给多个查询引擎;\n[0007] 接收每个所述查询引擎发送的对所述查询请求进行处理的预判响应时间,所述预判响应时间为查询引擎根据自身对应的存储引擎中存储的数据表的属性信息,预判的通过扫描所述数据表对所述查询请求进行处理所需的时间;\n[0008] 向预判响应时间最小的查询引擎发送对所述查询请求的处理指令。\n[0009] 采用本发明实施例提供的方法,由于采用数据库中多个查询引擎中执行查询请求的预判响应时间最小的查询引擎中的资源对查询请求进行处理,可以动态的为查询请求分配查询引擎,采用所分配的查询引擎中的资源对查询请求进行处理,不需要使用查询引擎中固定的资源队列中的资源对查询请求进行处理,提高了对查询的处理效率。\n[0010] 进一步的,将待处理的查询请求发送给多个查询引擎,具体为:\n[0011] 通过待处理的查询请求的查询类型与每个查询引擎可处理查询的类型进行比对,将所述查询请求发送给可处理该查询请求的多个查询引擎。\n[0012] 进一步的,将待处理的查询请求发送给多个查询引擎,具体为:\n[0013] 将根据预设查询请求优先策略确定的优先级最高的待处理查询请求发送给多个查询引擎。\n[0014] 进一步的,上述方法,还包括:\n[0015] 在向预判响应时间最小的查询引擎发送对所述查询请求的处理指令之后,记录所述查询请求与处理该查询请求的查询引擎的对应关系。\n[0016] 进一步的,上述方法,还包括:\n[0017] 在向预判响应时间最小的查询引擎发送对所述查询请求的处理指令之后,当接收到该查询引擎发送的表征该查询引擎处理所述查询请求的资源不足的消息时,按照预判响应时间从小到大的顺序,从所述多个查询引擎中除该查询引擎之外的查询引擎中,向预判响应时间最小的查询引擎发送对所述查询请求的处理指令。\n[0018] 本发明实施例提供一种查询处理方法,包括:\n[0019] 查询引擎接收查询路由器发送的查询请求;\n[0020] 根据自身对应的存储引擎中存储的数据表的属性信息,预判通过扫描所述数据表对所述查询请求进行处理所需的时间,作为自身对所述查询请求进行处理的预判响应时间;\n[0021] 将所述预判响应时间发送给所述查询路由器;\n[0022] 当接收到所述查询路由器发送的对所述查询请求的处理指令时,采用自身的资源对所述查询请求进行处理。\n[0023] 采用本发明实施例提供的方法,由于采用数据库中多个查询引擎中执行查询请求的预判响应时间最小的查询引擎中的资源对查询请求进行处理,可以动态的为查询请求分配查询引擎,采用所分配的查询引擎中的资源对查询请求进行处理,不需要使用查询引擎中固定的资源队列中的资源对查询请求进行处理,提高了对查询的处理效率。\n[0024] 进一步的,当接收到所述查询路由器发送的对所述查询请求的处理指令时,采用自身的资源对所述查询请求进行处理,具体包括:\n[0025] 当接收到所述查询路由器发送的对所述查询请求的处理指令时,根据与自身对应的存储引擎中存储的数据表的属性信息,确定通过扫描所述数据表对所述查询请求进行处理所需的资源;\n[0026] 当确定自身的空闲资源不小于对所述查询请求进行处理所需的资源时,采用自身的空闲资源对所述查询请求进行处理。\n[0027] 进一步的,采用自身的空闲资源对所述查询请求进行处理,具体包括:\n[0028] 在自身的多个资源队列中,根据预设资源队列选择策略选择一个资源队列对所述查询请求进行处理。\n[0029] 进一步的,上述方法,还包括:\n[0030] 当确定自身的空闲资源小于对所述查询请求进行处理所需的资源时,向所述查询路由器发送表征自身处理所述查询请求的资源不足的消息。\n[0031] 本发明实施例还提供了一种查询处理装置,包括:\n[0032] 查询请求发送单元,用于将待处理的查询请求发送给多个查询引擎;\n[0033] 接收单元,用于接收每个所述查询引擎发送的对所述查询请求进行处理的预判响应时间,所述预判响应时间为查询引擎根据自身对应的存储引擎中存储的数据表的属性信息,预判的通过扫描所述数据表对所述查询请求进行处理所需的时间;\n[0034] 第一处理指令发送单元,用于向预判响应时间最小的查询引擎发送对所述查询请求的处理指令。\n[0035] 采用本发明实施例提供的装置,由于采用数据库中多个查询引擎中执行查询请求的预判响应时间最小的查询引擎中的资源对查询请求进行处理,可以动态的为查询请求分配查询引擎,采用所分配的查询引擎中的资源对查询请求进行处理,不需要使用查询引擎中固定的资源队列中的资源对查询请求进行处理,提高了对查询的处理效率。\n[0036] 进一步的,所述查询请求发送单元,具体用于通过待处理的查询请求的查询类型与每个查询引擎可处理查询的类型进行比对,将所述查询请求发送给可处理该查询请求的多个查询引擎。\n[0037] 进一步的,所述查询请求发送单元,具体用于将根据预设查询请求优先策略确定的优先级最高的待处理查询请求发送给多个查询引擎。\n[0038] 进一步的,上述装置,还包括:\n[0039] 记录单元,用于在向预判响应时间最小的查询引擎发送对所述查询请求的处理指令之后,记录所述查询请求与处理该查询请求的查询引擎的对应关系。\n[0040] 进一步的,上述装置,还包括:\n[0041] 第二处理指令发送单元,用于当接收到该查询引擎发送的表征该查询引擎处理所述查询请求的资源不足的消息时,按照预判响应时间从小到大的顺序,从所述多个查询引擎中除该查询引擎之外的查询引擎中,向预判响应时间最小的查询引擎发送对所述查询请求的处理指令。\n[0042] 本发明实施例还提供了一种查询处理装置,包括:\n[0043] 接收单元,用于接收查询路由器发送的查询请求;\n[0044] 响应时间预判单元,用于根据自身对应的存储引擎中存储的数据表的属性信息,预判通过扫描所述数据表对所述查询请求进行处理所需的时间,作为自身对所述查询请求进行处理的预判响应时间;\n[0045] 第一发送单元,用于将所述预判响应时间发送给所述查询路由器;\n[0046] 处理单元,用于当接收到所述查询路由器发送的对所述查询请求的处理指令时,采用自身的资源对所述查询请求进行处理。\n[0047] 采用本发明实施例提供的装置,由于采用数据库中多个查询引擎中执行查询请求的预判响应时间最小的查询引擎中的资源对查询请求进行处理,可以动态的为查询请求分配查询引擎,采用所分配的查询引擎中的资源对查询请求进行处理,不需要使用查询引擎中固定的资源队列中的资源对查询请求进行处理,提高了对查询的处理效率。\n[0048] 进一步的,所述处理单元,具体用于当接收到所述查询路由器发送的对所述查询请求的处理指令时,根据与自身对应的存储引擎中存储的数据表的属性信息,确定通过扫描所述数据表对所述查询请求进行处理所需的资源;当确定自身的空闲资源不小于对所述查询请求进行处理所需的资源时,采用自身的空闲资源对所述查询请求进行处理。\n[0049] 进一步的,所述处理单元,具体用于在自身的多个资源队列中,根据预设资源队列选择策略选择一个资源队列对所述查询请求进行处理。\n[0050] 进一步的,上述装置,还包括:\n[0051] 第二发送单元,用于当确定自身的空闲资源小于对所述查询请求进行处理所需的资源时,向所述查询路由器发送表征自身处理所述查询请求的资源不足的消息。\n[0052] 本发明实施例还提供了一种查询处理系统,包括:查询路由器和多个查询引擎,其中:\n[0053] 所述查询路由器,用于将待处理的查询请求发送给多个查询引擎;接收每个所述查询引擎发送的对所述查询请求进行处理的预判响应时间,所述预判响应时间为查询引擎根据自身对应的存储引擎中存储的数据表的属性信息,预判的通过扫描所述数据表对所述查询请求进行处理所需的时间;向预判响应时间最小的查询引擎发送对所述查询请求的处理指令;\n[0054] 所述查询引擎,用于接收查询路由器发送的查询请求;根据自身对应的存储引擎中存储的数据表的属性信息,预判通过扫描所述数据表对所述查询请求进行处理所需的时间,作为自身对所述查询请求进行处理的预判响应时间;将所述预判响应时间发送给所述查询路由器;当接收到所述查询路由器发送的对所述查询请求的处理指令时,采用自身的资源对所述查询请求进行处理。\n[0055] 采用本发明实施例提供的系统,由于采用数据库中多个查询引擎中执行查询请求的预判响应时间最小的查询引擎中的资源对查询请求进行处理,可以动态的为查询请求分配查询引擎,采用所分配的查询引擎中的资源对查询请求进行处理,不需要使用查询引擎中固定的资源队列中的资源对查询请求进行处理,提高了对查询的处理效率。\n[0056] 本申请的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本申请而了解。本申请的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。\n附图说明\n[0057] 附图用来提供对本发明的进一步理解,并且构成说明书的一部分,与本发明实施例一起用于解释本发明,并不构成对本发明的限制。在附图中:\n[0058] 图1为本发明实施例提供的查询处理方法的流程图之一;\n[0059] 图2为本发明实施例提供的查询处理方法的流程图之二;\n[0060] 图3为本发明实施例1提供的查询处理方法的流程图;\n[0061] 图4为本发明实施例2提供的查询处理方法的流程图;\n[0062] 图5为本发明实施例3提供的查询处理装置的结构示意图;\n[0063] 图6为本发明实施例4提供的查询处理装置的结构示意图;\n[0064] 图7为本发明实施例5提供的查询处理系统的结构示意图。\n具体实施方式\n[0065] 为了给出提高在数据库中对查询的处理效率的实现方案,本发明实施例提供了一种查询处理方法、装置及系统,以下结合说明书附图对本发明的优选实施例进行说明,应当理解,此处所描述的优选实施例仅用于说明和解释本发明,并不用于限定本发明。并且在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。\n[0066] 本发明实施例提供一种查询处理方法,如图1所示,包括:\n[0067] 步骤101、查询路由器将待处理的查询请求发送给多个查询引擎。\n[0068] 步骤102、接收每个查询引擎发送的对该查询请求进行处理的预判响应时间,该预判响应时间为查询引擎根据自身对应的存储引擎中存储的数据表的属性信息,预判的通过扫描该数据表对该查询请求进行处理所需的时间。\n[0069] 步骤103、向预判响应时间最小的查询引擎发送对该查询请求的处理指令。\n[0070] 本发明实施例上述图1提供的方法中,在数据库中的每个查询引擎对应的存储引擎可以为多个,各个存储引擎的类型可以为分布式文件系统(HDFS,Hadoop Distributed File System)存储引擎、分布式Key-Value Store存储引擎和关系型数据库存储引擎等,也可以为基于本地文件系统的数据库存储引擎,例如:关联数据库管理系统(MySQL)的InnoDB和MyISAM存储引擎等,还可以为基于HDFS的存储引擎,例如Hfile,RCFile,SequenceFile和TextFile等存储引擎。存储引擎中存储的数据可以以数据表为基本存储单位,一般在创建数据表的时候可以指定该数据表对应的存储引擎。在电信运营商的业务系统中,可以将同样的数据表存储在多种存储引擎上,以满足不同应用的需求。存储引擎中存储的数据表的属性信息可以存储在数据库的元数据中,例如:可以将数据表的行数和列数,数据分布信息等存储在元数据中。\n[0071] 本发明实施例中,系统管理员可在对数据库进行初始化时设置查询引擎可处理查询的类型,动态加载查询引擎支持的存储引擎,还可以配置查询引擎的资源队列,不同的查询引擎可配置相同的资源队列。\n[0072] 相应的,本发明实施例还提供了一种查询处理方法,如图2所示,包括:\n[0073] 步骤201、查询引擎接收查询路由器发送的查询请求。\n[0074] 步骤202、根据自身对应的存储引擎中存储的数据表的属性信息,预判通过扫描该数据表对该查询请求进行处理所需的时间,作为自身对该查询请求进行处理的预判响应时间。\n[0075] 步骤203、将该预判响应时间发送给该查询路由器。\n[0076] 步骤204、当接收到该查询路由器发送的对该查询请求的处理指令时,采用自身的资源对该查询请求进行处理。\n[0077] 下面以查询路由器向数据库中的多个查询引擎发送查询请求为例,用具体实施例对本发明提供的方法及装置和相应系统进行详细描述。\n[0078] 实施例1:\n[0079] 图3为本发明实施例1提供的一种查询处理方法的流程图,具体包括如下处理步骤:\n[0080] 步骤301、查询路由器将待处理的查询请求发送给多个查询引擎。\n[0081] 步骤302、每个查询引擎在接收该查询路由器发送的查询请求后,根据自身对应的存储引擎中存储的数据表的属性信息,预判通过扫描该数据表对该查询请求进行处理所需的时间,作为自身对该查询请求进行处理的预判响应时间。\n[0082] 步骤303、每个查询引擎将各自的预判响应时间发送给该查询路由器。\n[0083] 步骤304、当该查询路由器接收到每个查询引擎发送的对该查询请求进行处理的预判响应时间后,确定预判响应时间最小的查询引擎。\n[0084] 步骤305、该查询路由器向预判响应时间最小的查询引擎发送对该查询请求的处理指令。\n[0085] 步骤306、当该预判响应时间最小的查询引擎接收到该查询路由器发送的对该查询请求的处理指令时,采用自身的资源对该查询请求进行处理。\n[0086] 实施例2:\n[0087] 图4为本发明实施例2提供的一种一种查询处理方法的流程图,具体包括如下处理步骤:\n[0088] 步骤401、查询路由器根据预设查询请求优先策略,在待处理查询请求队列中确定优先级最高的待处理查询请求。\n[0089] 本步骤中,该查询请求队列中为用户输入的各种查询请求,可以为一个用户,也可以为多个用户,当查询路由器启动后,根据预设查询请求优先策略,在查询请求队列中选择优先级最高的待处理查询请求,该预设查询请求优先策略可以根据实际经验和需要进行灵活设置。\n[0090] 步骤402、该查询路由器通过待处理的查询请求的查询类型与每个查询引擎可处理查询的类型进行比对,将该查询请求发送给可处理该查询请求的多个查询引擎。\n[0091] 步骤403、每个查询引擎在接收该查询路由器发送的查询请求后,根据自身对应的存储引擎中存储的数据表的属性信息,预判通过扫描数据表对该查询请求进行处理所需的时间,作为自身对该查询请求进行处理的预判响应时间。\n[0092] 本步骤中,数据库的元数据记录了每个查询引擎对应的存储引擎中存储的数据表的行列信息等信息,每个查询引擎可以根据自身对应的存储引擎中存储的数据表的行列信息,预先估算出通过扫描数据表对该查询请求进行处理所需的时间,作为自身对该查询请求进行处理的预判响应时间,该预判响应时间相当于查询引擎对该查询请求进行处理的代价,代价越小,查询引擎对该查询请求进行处理使用的资源越小。\n[0093] 步骤404、每个查询引擎将各自的预判响应时间发送给该查询路由器。\n[0094] 步骤405、当该查询路由器接收到每个查询引擎发送的对该查询请求进行处理的预判响应时间后,确定预判响应时间最小的查询引擎。\n[0095] 本步骤中,当该查询路由器接收到每个查询引擎发送的对该查询请求进行处理的预判响应时间后,按照预判响应时间从小到大的顺序对多个查询引擎进行排序,确定预判响应时间最小的查询引擎。\n[0096] 步骤406、该查询路由器向预判响应时间最小的查询引擎发送对该查询请求的处理指令。\n[0097] 步骤407、当该预判响应时间最小的查询引擎接收到该查询路由器发送的对该查询请求的处理指令时,根据与自身对应的存储引擎中存储的数据表的属性信息,确定通过扫描所述数据表对该查询请求进行处理所需的资源。\n[0098] 步骤408、该查询引擎将确定的对所述查询请求进行处理所需的资源与自身的空闲资源进行比较,确定自身的空闲资源是否不小于对该查询请求进行处理所需的资源,如果是,进入步骤409,如果否,进入步骤412。\n[0099] 步骤409、当确定自身的空闲资源不小于对该查询请求进行处理所需的资源时,该查询引擎在自身的多个资源队列中,根据预设资源队列选择策略选择一个资源队列对该查询请求进行处理。\n[0100] 本步骤中,该查询引擎中可以有多个资源队列,资源队列可以按照系统内的资源进行划分,可以通过一定格式的配置文件进行配置,例如资源队列的格式可以为:CPU占用率,内存占用率和缓存占用率。预设资源队列选择策略可以为随机选择资源队列,也可以选择剩余CPU资源最多的资源队列,也可以选择剩余内存最多的资源队列。\n[0101] 进一步的,当该查询引擎在自身的多个资源队列中,根据预设资源队列选择策略选择一个资源队列对该查询请求进行处理时,如果当前选择的资源队列中的空闲资源不小于对该查询请求进行处理所需的资源时,采用当前选择的资源队列中的空闲资源对该查询请求进行处理,并向该查询路由器发送处理完成消息;如果当前选择的资源队列中的空闲资源小于对该查询请求进行处理所需的资源时,该查询引擎在自身的多个资源队列中除已选择的资源队列之外的查询引擎中,根据预设资源队列选择策略选择一个资源队列对该查询请求进行处理,重复此过程直到该查询引擎的最后一个资源队列,当该查询引擎中所有的资源队列都不能对该查询请求进行处理时,该查询引擎不能对该查询请求进行处理。\n[0102] 步骤410、该查询引擎向该查询路由器发送处理完成消息。\n[0103] 本步骤中,该查询引擎向该查询路由器发送处理完成消息时,可以将处理结果同时发送给该查询路由器,也可以将查询结果分批次分别发送给该查询路由器。\n[0104] 步骤411、当该查询路由器接收到该处理完成消息时,记录该查询请求与处理该查询请求的查询引擎的对应关系。\n[0105] 本步骤中,可以将该查询请求与处理该查询请求的查询引擎的对应关系作为查询路由器计划。\n[0106] 进一步的,当查询队列中优先级最高的待处理查询请求在查询路由器计划中有记录时,可以采用查找到的与该查询请求对应的查询引擎对该查询请求进行处理。\n[0107] 步骤412、当确定自身的空闲资源小于对该查询请求进行处理所需的资源时,该查询引擎向该查询路由器发送表征自身处理该查询请求的资源不足的消息。\n[0108] 步骤413、当该查询路由器接收到该查询引擎发送的表征该查询引擎处理所述查询请求的资源不足的消息时,按照预判响应时间从小到大的顺序,从该多个查询引擎中除该查询引擎之外的查询引擎中,向预判响应时间最小的查询引擎发送对该查询请求的处理指令,并返回步骤407。\n[0109] 进一步的,当每一个查询引擎都不能对该查询请求进行处理时,该查询路由器向用户返回表示查询请求失败的消息。\n[0110] 通过本发明上述实施例1和2提供的方法,由于采用数据库中多个查询引擎中执行查询请求的预判响应时间最小的查询引擎中的资源对查询请求进行处理,可以动态的为查询请求分配查询引擎,采用所分配的查询引擎中的资源对查询请求进行处理,不需要使用查询引擎中固定的资源队列中的资源对查询请求进行处理,提高了对查询的处理效率。\n[0111] 实施例3:\n[0112] 基于同一发明构思,根据本发明上述实施例提供的查询处理方法,相应地,本发明实施例3还提供了一种查询处理装置,其结构示意图如图5所示,具体包括:\n[0113] 查询请求发送单元501,用于将待处理的查询请求发送给多个查询引擎;\n[0114] 接收单元502,用于接收每个所述查询引擎发送的对所述查询请求进行处理的预判响应时间,所述预判响应时间为查询引擎根据自身对应的存储引擎中存储的数据表的属性信息,预判的通过扫描所述数据表对所述查询请求进行处理所需的时间;\n[0115] 第一处理指令发送单元503,用于向预判响应时间最小的查询引擎发送对所述查询请求的处理指令。\n[0116] 进一步的,查询请求发送单元501,具体用于通过待处理的查询请求的查询类型与每个查询引擎可处理查询的类型进行比对,将所述查询请求发送给可处理该查询请求的多个查询引擎。\n[0117] 进一步的,查询请求发送单元501,具体用于将根据预设查询请求优先策略确定的优先级最高的待处理查询请求发送给多个查询引擎。\n[0118] 进一步的,上述装置,还包括:\n[0119] 记录单元504,用于在向预判响应时间最小的查询引擎发送对所述查询请求的处理指令之后,记录所述查询请求与处理该查询请求的查询引擎的对应关系。\n[0120] 进一步的,上述装置,还包括:\n[0121] 第二处理指令发送单元505,用于当接收到该查询引擎发送的表征该查询引擎处理所述查询请求的资源不足的消息时,按照预判响应时间从小到大的顺序,从所述多个查询引擎中除该查询引擎之外的查询引擎中,向预判响应时间最小的查询引擎发送对所述查询请求的处理指令。\n[0122] 上述各单元的功能可对应于图1、图3和图4所示流程中的相应处理步骤,在此不再赘述。\n[0123] 实施例4:\n[0124] 基于同一发明构思,根据本发明上述实施例提供的查询处理方法,相应地,本发明实施例4还提供了一种查询处理装置,其结构示意图如图6所示,具体包括:\n[0125] 接收单元601,用于接收查询路由器发送的查询请求;\n[0126] 响应时间预判单元602,用于根据自身对应的存储引擎中存储的数据表的属性信息,预判通过扫描所述数据表对所述查询请求进行处理所需的时间,作为自身对所述查询请求进行处理的预判响应时间;\n[0127] 第一发送单元603,用于将所述预判响应时间发送给所述查询路由器;\n[0128] 处理单元604,用于当接收到所述查询路由器发送的对所述查询请求的处理指令时,采用自身的资源对所述查询请求进行处理。\n[0129] 进一步的,处理单元604,具体用于当接收到所述查询路由器发送的对所述查询请求的处理指令时,根据与自身对应的存储引擎中存储的数据表的属性信息,确定通过扫描所述数据表对所述查询请求进行处理所需的资源;当确定自身的空闲资源不小于对所述查询请求进行处理所需的资源时,采用自身的空闲资源对所述查询请求进行处理。\n[0130] 进一步的,处理单元604,具体用于在自身的多个资源队列中,根据预设资源队列选择策略选择一个资源队列对所述查询请求进行处理。\n[0131] 进一步的,上述装置,还包括:\n[0132] 第二发送单元605,用于当确定自身的空闲资源小于对所述查询请求进行处理所需的资源时,向所述查询路由器发送表征自身处理所述查询请求的资源不足的消息。\n[0133] 上述各单元的功能可对应于图2、图3和图4所示流程中的相应处理步骤,在此不再赘述。\n[0134] 实施例5:\n[0135] 基于同一发明构思,根据本发明上述实施例提供的查询处理方法,相应地,本发明实施例5还提供了一种查询处理系统,其结构示意图如图7所示,包括:查询路由器701和多个查询引擎702,其中:\n[0136] 所述查询路由器701,用于将待处理的查询请求发送给多个查询引擎;接收每个所述查询引擎发送的对所述查询请求进行处理的预判响应时间,所述预判响应时间为查询引擎根据自身对应的存储引擎中存储的数据表的属性信息,预判的通过扫描所述数据表对所述查询请求进行处理所需的时间;向预判响应时间最小的查询引擎发送对所述查询请求的处理指令;\n[0137] 所述查询引擎702,用于接收查询路由器发送的查询请求;根据自身对应的存储引擎中存储的数据表的属性信息,预判通过扫描所述数据表对所述查询请求进行处理所需的时间,作为自身对所述查询请求进行处理的预判响应时间;将所述预判响应时间发送给所述查询路由器;当接收到所述查询路由器发送的对所述查询请求的处理指令时,采用自身的资源对所述查询请求进行处理。\n[0138] 综上所述,本发明实施例提供的方案,包括:查询路由器将待处理的查询请求发送给多个查询引擎;接收每个查询引擎发送的对该查询请求进行处理的预判响应时间,该预判响应时间为查询引擎根据自身对应的存储引擎中存储的数据表的属性信息,预判的通过扫描所述数据表对所述查询请求进行处理所需的时间;向预判响应时间最小的查询引擎发送对该查询请求的处理指令。采用本发明实施例提供的方案,相比现有技术,提高了对查询的处理效率。\n[0139] 本申请的实施例所提供的查询处理装置和系统可通过计算机程序实现。本领域技术人员应该能够理解,上述的模块划分方式仅是众多模块划分方式中的一种,如果划分为其他模块或不划分模块,只要查询处理装置和系统具有上述功能,都应该在本申请的保护范围之内。\n[0140] 本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。\n[0141] 这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。\n[0142] 这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。\n[0143] 显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
法律信息
- 2018-03-23
- 2015-07-29
实质审查的生效
IPC(主分类): G06F 17/30
专利申请号: 201310728889.0
申请日: 2013.12.25
- 2015-07-01
引用专利(该专利引用了哪些专利)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 | 该专利没有引用任何外部专利数据! |
被引用专利(该专利被哪些专利引用)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 | 该专利没有被任何外部专利所引用! |