用于数据库集群的查询实现方法和装置的制作方法

文档序号:6403140阅读:171来源:国知局
专利名称:用于数据库集群的查询实现方法和装置的制作方法
技术领域
本发明涉及通信领域,具体来说,涉及一种用于数据库集群的查询实现方法和装置。
背景技术
在大规模数据集群中,一个表的数据通常按照某种策略分布在多个数据库节点上,因此查询处理必须在多个数据库节点上同时展开,并对各节点返回的结果进行汇总或合并计算,才能得到最终的查询结果,当系统中有多个并行查询任务在执行时,由于每个数据库节点对查询任务的调度是相互独立的,因此可能造成不同节点上对多个查询任务的调度顺序的不同,通常一个并行查询 任务的完成,总是要依赖于所有参与查询处理的节点中最慢的一个。图1是相关技术中数据库集群查询调度的实例。如图1所示,节点1、节点2、节点3表示服务器,A、B、C、D表示查询任务,在图1所示的查询任务调度方式中,每个任务独立调度,因此,在每个节点上,查询任务执行的顺序是不同的,假设每个任务在单个数据库节点上的子任务的执行时间是t,则在图1中,各节点独立调度时查询任务的完成时间是:TA=4t, TB = 4t, TC = 3t, TD = 4t,平均等待时间是 3.75t。对于数据库集群,因为其存在一定的特殊性,所采用的查询方案仍旧是独立调度的方式,任务的完成受限于最慢的执行节点,导致查询的效率较低,等待时间较长。

发明内容
针对相关技术中独立调度方法导致查询任务的执行总是受限于最慢的执行节点,导致查询的等待时间较长的问题,本发明提出了一种用于数据库集群的查询实现方法和装置,其能够很好的解决多个数据库节点之间同步执行控制的问题,并且能够缩短并发查询的平均等待时间(最闻能缩短50% )。为实现上述目的,根据本发明的一个方面,提供了一种用于数据库集群的查询实现方法,包括以下步骤:在接收到查询请求后,生成与查询请求对应的唯一丨丨生查询标识,并对查询请求进行分析,确定查询子任务;对于每个查询子任务,将该查询子任务以及查询标识发送给能够执行该查询子任务的数据库节点;以及接收数据库节点返回的查询结果。其中,在接收到查询请求后,还生成与查询请求对应的参数标识,并将参数标识发送至数据库节点;并且,接收到参数标识的每个数据库节点,根据接收到的参数标识与预先设置的参数窗口调度并执行查询子任务,得到查询结果。此外,根据接收到的参数标识与预先设置的参数窗口调度并执行查询子任务包括:数据库节点采用预定参数窗口宽度对接收到的所有查询子任务进行划分,得到多个参数窗口;数据库节点根据参数标识和预定参数窗口宽度确定每个查询子任务对应的参数窗口 ;以及数据库节点依次调度并执行每个参数窗口内的查询子任务。其中,参数标识为时间标识,参数窗口为时间窗口,其中,生成与查询请求对应的参数标识包括:根据接收到查询请求的时间生成时间标识。此外,根据接收到的参数标识与预先设置的参数窗口调度并执行查询子任务包括:在每个时间窗口内,根据查询标识的大小进行排序,并根据排序结果优先调用并执行最小的查询标识所对应的查询子任务。相应地,本发明提供了一种用于数据库集群的查询实现装置,包括:处理模块,用于在接收查询请求之后,生成与查询请求对应的唯一性查询标识,并且用于对查询请求进行分析,确定查询子任务;发送模块,用于将查询子任务以及查询标识发送给能够执行该查询子任务的数据库节点;

接收模块,用于接收数据库节点返回的查询结果。其中,处理模块还用于在接收到查询请求后生成与查询请求对应的参数标识;并且,发送模块还用于将参数标识发送至数据库节点。其中,参数标识为时间标识,参数窗口为时间窗口,处理模块用于根据接收到查询请求的时间生成时间标识;参数标识用于确定在数据库节点上每个查询子任务对应的参数窗口,以便数据库节点依次调度并执行每个参数窗口内的查询子任务。此外,本发明提供了一种用于数据库集群的查询实现装置,还包括:窗口确定模块,位于数据库节点侧,用于根据预定参数窗口宽度对数据库节点所接收到的所有查询子任务进行划分,得到多个参数窗口 ;并根据参数标识和预定参数窗口宽度确定每个查询子任务对应的参数窗口。调度执行模块,位于数据库节点侧,用于根据接收到的参数标识与预先设置的参数窗口调度并执行查询子任务,得到查询结果。本发明通过采用查询标识和时间窗口进行查询实现,让所有的数据库服务器在同一时刻服务于同一查询子任务,减少了多台数据库服务器之间因调度顺序不同带来的相互等待,有效地在数据库集群中实现了协同调度查询,从而减少了查询处理的响应时间。另外,由于查询标识和时间标识都只是在处理模块统一生成的,因此本发明在调度相同任务执行时,各数据库节点之间不需要额外通讯,节省了系统内的信令开销,使得系统具有良好的扩展性能,能够实现查询的并行执行,缩短查询的等待时间,并且可以适应超大规模的数据库集群系统。


为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1是根据相关技术的查询独立调度的原理示意图;图2是根据本发明实施例的用于数据库集群的查询实现方法的流程图;图3是根据本发明实施例的各数据库节点原始查询任务序列的示意图;图4是根据本发明实施例的各数据库节点采用时间窗口划分查询任务序列的示意图;图5是根据本发明实施例的各时间窗口内划分后的查询任务序列进行排序的示意图;图6是根据本发明实施例的用于数据库集群的查询实现装置的结构示意图。
具体实施例方式下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术 人员所获得的所有其他实施例,都属于本发明保护的范围。根据本发明的实施例,提供了一种用于数据库集群的查询实现方法,如图2所示,该方法包括:步骤S201,在接收到查询请求后,生成与查询请求对应的唯一性查询标识,并对查询请求进行分析,确定查询子任务;步骤S203,对于每个查询子任务,将该查询子任务以及查询标识发送给能够执行该查询子任务的数据库节点;以及步骤S205,接收数据库节点返回的查询结果。该方法可以进一步包括:在接收到查询请求后,生成与查询请求对应的参数标识,并将参数标识发送至数据库节点;并且,接收到参数标识的每个数据库节点,根据接收到的参数标识与预先设置的参数窗口调度并执行查询子任务,得到查询结果。此外,根据接收到的参数标识与预先设置的参数窗口调度并执行查询子任务包括:数据库节点采用预定参数窗口宽度对接收到的所有查询子任务进行划分,得到多个参数窗口;数据库节点根据参数标识和预定参数窗口宽度确定每个查询子任务对应的参数窗口 ;以及数据库节点依次调度并执行每个参数窗口内的查询子任务。其中,参数标识为时间标识,参数窗口为时间窗口,其中,生成与查询请求对应的参数标识包括:根据接收到查询请求的时间生成时间标识。
此外,根据接收到的参数标识与预先设置的参数窗口调度并执行查询子任务包括:在每个时间窗口内,根据查询标识的大小进行排序,并根据排序结果优先调用并执行最小的查询标识所对应的查询子任务。并且,对于不同的时间窗口内,对应的时间窗口较早的查询子任务先执行。此外,唯一性查询标识为一个无符号整型值,取值区间为0 65535。下面通过实现原理对本发明上述用于数据库集群的查询实现方法进行说明:查询服务器主控节点在接收到客户端的查询请求之后,给每一个查询请求生成一个唯一性标识和时间标识。其中,唯一性的查询标识是由查询服务器生成的一个随机数,而
时间标识采用的是查询服务器接收到客户端请求后的查询。查询标识的数据结构如下:
typedef struct { unsigned int qid; time I qtime;
I query id;其中,qid是一个无符号整型值,采用随机生成的方式,定义其取值区间为0 65535 (2~ 16-1,也就是2的16次方再减去I)。查询服务器生成查询标识将和查询任务一起发送给各数据库节点执行,因此对于同一个查询任务的子任务,所有数据库节点得到的是相同的查询标识。`
`
时间窗口采用固定时间窗口宽度(qt_interval)对查询请求的时间qtime进行分害I]。在实现时,将查询标识和时间标识进行优先级计算,计算方法如下:Priority = tosecond(req.qtime)*65536/qt_interval+req.qid ;其中,Priority为优先级; qid为查询标识;qtime为时间标识;qt_interval为时间窗口宽度,优先级Priority的值越小,表示该查询子任务的优先级越高。其中,tosecond计算请求时间的秒数,然后除以时间窗口宽度值,就可以得到该查询子任务属于哪个时间窗口了。由于查询标识是属于0 65535之间,因此在同一个时间窗口内,查询标识较小的,其优先级一定高于查询标识较大的查询子任务,在不同的时间窗口内,窗口值较小的查询子任务,优先级一定高于窗口值较大的查询子任务。以下再通过程序以及与详细流程图(图3、4、5)对数据库节点为新到达的查询任
务进行优先级计算和调度排序的过程进行描述。Req_tmp = req_list->head; while (req_tmp != req_lisl->tail) do
window = new req->recLtime/interval; twindow = req tmp->req time/interval; if (new—window < twindow) then insert new—req before req_tmp; break;
else if ((ncw window == twindow) && (nc\/_rcq->q_id < icq tmp->q id)) then
insert new rcq before req_tmp; break;
else
req_tmp = req_tmp->next; end ii
end while
if (req tmp == req.list->tail) then add new req to the tail of req list; end if在图3、4、5中,不同的数字块表示不同的查询子任务,相同的数字块表示相同的查询子任务。各数据库节点对原始的查询任务进行窗口切分后,按照查询的优先级排序执行。这种方式能够保证在多任务并发执行时,所有的数据库节点调度任务的顺序基本相同, 同一时刻,基本保证在为同一个查询任务服务。综上所述,借助于本发明的上述技术方案,通过采用查询标识和时间窗口对所有的数据库节点进行并行查询,可以让所有的数据库服务器在同一时刻服务于同一查询子任务,从而减少了多台数据库服务器之间因调度顺序不同带来的相互等待,进而可以减小查询处理的响应时间。初步的测试结构表明,并行查询处理的响应时间可以缩短20% 40%,在并发查询任务越多时,该方法的协同效果越明显,查询的平均响应时间减小量可以达到50%o根据本发明的实施例,提供了一种用于数据库集群的查询实现装置,如图6所示,包括:处理模块61,用于在接收查询请求之后,生成与查询请求对应的唯一性查询标识,并且用于对查询请求进行分析,确定查询子任务;发送模块62,用于将查询子任务以及查询标识发送给能够执行该查询子任务的数据库节点;接收模块63,用于接收数据库节点返回的查询结果。其中,处理模块61还用于在接收到查询请求后生成与查询请求对应的参数标识;并且,发送模块62还用于将参数标识发送至数据库节点。其中,参数标识为时间标识,参数窗口为时间窗口,处理模块61用于根据接收到查询请求的时间生成时间标识;参数标识用于确定在数据库节点上每个查询子任务对应的参数窗口,以便数据库节点依次调度并执行每个参数窗口内的查询子任务。此外,本发明提供了一种用于数据库集群的查询实现装置,还包括:窗口确定模块(未示出),位于数据库节点侧,用于根据预定参数窗口宽度对数据库节点所接收到的所有查询子任务进行划分,得到多个参数窗口 ;并根据参数标识和预定参数窗口宽度确定每个查询子任务对应的参数窗口。调度执行模块(未示出),位于数据库节点侧,用于根据接收到的参数标识与预先设置的参数窗口调度并 执行查询子任务,得到查询结果。综上所述,借助于本发明的上述技术方案,由于查询标识和时间标识都只是在处理模块61统一生成的,因此本发明在调度相同任务执行时,各数据库节点之间不需要额外通讯,具有良好的扩展性能,可以适应超大规模的数据库集群系统。以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
权利要求
1.一种用于数据库集群的查询实现方法,其特征在于,包括以下步骤: 在接收到查询请求后,生成与所述查询请求对应的唯一丨丨生查询标识,并对所述查询请求进行分析,确定查询子任务; 对于每个查询子任务,将该查询子任务以及所述查询标识发送给能够执行该查询子任务的数据库节点;以及 接收数据库节点返回的查询结果。
2.根据权利要求1所述的查询实现方法,其特征在于,还包括: 在接收到所述查询请求后,生成与所述查询请求对应的参数标识,并将所述参数标识发送至数据库节点; 并且,接收到所述参数标识的每个数据库节点,根据接收到的所述参数标识与预先设置的参数窗口调度并执行查询子任务,得到查询结果。
3.根据权利要求2所述的查询实现方法,其特征在于,根据接收到的所述参数标识与预先设置的参数窗口调度并执行查询子任务包括: 数据库节点采用预定参数窗口宽度对接收到的所有查询子任务进行划分,得到多个参数窗口 ; 数据库节点根据所述参数标识和预定参数窗口宽度确定每个查询子任务对应的参数窗口 ;以及 数据库节点依次调度并执行每个参数窗口内的查询子任务。
4.根据权利要求3所述的查询实现方法,其特征在于,所述参数标识为时间标识,参数窗口为时间窗口,其中,生成与所述查询请求对应的参数标识包括: 根据接收到所述查询请求的时间生成所述时间标识。
5.根据权利要求4所述的查询实现方法,其特征在于,根据接收到的所述参数标识与预先设置的参数窗口调度并执行查询子任务包括: 在每个时间窗口内,根据查询标识的大小进行排序,并根据排序结果优先调用并执行最小的查询标识所对应的查询子任务。
6.一种用于数据库集群的查询实现装置,其特征在于,包括: 处理模块,用于在接收查询请求之后,生成与所述查询请求对应的唯一性查询标识,并且用于对所述查询请求进行分析,确定查询子任务; 发送模块,用于将所述查询子任务以及查询标识发送给能够执行该查询子任务的数据库节点; 接收模块,用于接收数据库节点返回的查询结果。
7.根据权利要求6所述的查询实现装置,其特征在于,所述处理模块还用于在接收到所述查询请求后生成与所述查询请求对应的参数标识; 并且,所述发送模块还用于将所述参数标识发送至数据库节点。
8.根据权利要求7所述的查询实现装置,其特征在于,所述参数标识为时间标识,参数窗口为时间窗口,其中,所述处理模块用于根据接收到所述查询请求的时间生成所述时间标识;其中,所述参数标识用于确定在数据库节点上每个查询子任务对应的参数窗口,以便数据库节点依次调度并执行每个参数窗口内的查询子任务。
9.根据权利要求8所述的查询实现装置,其特征在于,还包括:窗口确定模块,位于数据库节点侧,用于根据预定参数窗口宽度对数据库节点所接收到的所有查询子任务进行划分,得到多个参数窗口 ;并根据所述参数标识和预定参数窗口宽度确定每个查询子任务对应的参数窗口。
10.根据权利要求9所述的查询实现装置,其特征在于,还包括: 调度执行模块,位于数据库节点侧,用于根据接收到的所述参数标识与预先设置的参数窗口调度 并执行查询子任务,得到查询结果。
全文摘要
本发明公开了一种用于数据库集群的查询实现方法和装置,其中,查询实现方法包括以下步骤在接收到查询请求后,生成与所述查询请求对应的唯一性查询标识,并对所述查询请求进行分析,确定查询子任务;对于每个查询子任务,将该查询子任务以及所述查询标识发送给能够执行该查询子任务的数据库节点;以及接收数据库节点返回的查询结果;此外,在接收到所述查询请求后,生成与所述查询请求对应的参数标识,并将所述参数标识发送至数据库节点;并且,接收到所述参数标识的每个数据库节点,根据接收到的所述参数标识与预先设置的参数窗口调度并执行查询子任务,得到查询结果。本发明可减少多台数据库服务器之间的相互等待,减小查询处理的响应时间。
文档编号G06F17/30GK103235835SQ201310192620
公开日2013年8月7日 申请日期2013年5月22日 优先权日2013年5月22日
发明者宋怀明, 王勇, 苗艳超, 刘新春, 邵宗有 申请人:曙光信息产业(北京)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1