掌桥专利:专业的专利平台
掌桥专利
首页

数据库的连接池转换方法、装置、设备及存储介质

文献发布时间:2023-06-19 11:39:06


数据库的连接池转换方法、装置、设备及存储介质

技术领域

本发明涉及数据连接领域,尤其涉及一种数据库的连接池转换方法、装置、设备及存储介质。

背景技术

在MPP分布式数据库中,通常由协调节点和一个数据节点集群组成,协调节点负责客户端接入,每个客户端连接协调节点后都会创建一个会话。会话维护则会话信息,负责接收客户端的SQL、生成执行计划并下发到数据节点执行。为了提升性能,协调节点往往采用连接池的方式来管理与数据节点集群之间的连接。在普通连接池中,连接与会话之间是没有关联关系的,但是对于某些操作和事务,需要保证一个会话事务中所有操作都在相同的一批节点连接中执行。这些管理操作普通连接池无法提供,需要上层自己管理连接。但是,MPP分布式数据库中协调节点需要很频繁的与节点集群之间进行通信,通常情况下都使用连接池的方式来管理与节点之间的连接以提升性能。普通连接池通常情况下都没办法感知会话与连接之间的关系。某些操作和事务需要保证会话中所有操作都在相同一批节点连接执行的逻辑,不能每次执行都从连接池中获取链接,因为每次获取到的都可能是不同的连接。通常情况下需要在事务开启时在会话上下文中保存所有执行的节点连接对象,之后的操作都通过这些节点连接来执行,直到事务提交或终止才可归还这部分连接到连接池中。

在事务的执行过程中,还存在一部分非事务主流程的操作,比如数据重分布、日志记录等,这些操作通常需要与事务主流程分离开,不能在会话中保存的这批节点连接中执行,而是需要通过从连接池中获取连接来执行。上层繁琐的连接管理带来系统极大的负担,因此需要上层自己处理连接与会话的关联关系并根据不同的逻辑选择不同的执行方式的技术。

发明内容

本发明的主要目的在于解决数据连接池中在执行会话事务任务进程中连接繁琐导致服务器资源占用过大的技术问题。

本发明第一方面提供了一种数据库的连接池转换方法,包括步骤:

接收所述数据节点集群中第一数据节点的连接请求;

判断所述第一数据节点是否存在会话绑定设置;

若否,则基于预置全局连接池,将所述第一数据节点连接至所述连接请求对应的第二数据节点;

若是,则根据预置特定连接算法,将所述第一数据节点连接至所述连接请求对应的第二数据节点。

可选的,在本发明第一方面的第一种实现方式中,所述判断所述第一数据节点是否存在会话绑定设置包括:

根据预置传输协议和所述连接请求,生成空的ThreadLocalPool;

判断所述第一数据节点的连接请求是否设置为会话绑定设置。

可选的,在本发明第一方面的第二种实现方式中,所述基于预置全局连接池,将所述第一数据节点连接至所述连接请求对应的第二数据节点包括:

创建所述第一数据节点与预置全局连接池的第一链路连接;

创建所述连接请求对应第二数据节点与所述全局连接池的第二链路连接;

根据所述第一链路连接与所述第二链路连接,所述第一数据节点连接至所述连接请求对应的第二数据节点,并清空所述ThreadLocalPool。

可选的,在本发明第一方面的第三种实现方式中,所述根据预置特定连接算法,将所述第一数据节点连接至所述连接请求对应的第二数据节点包括:

建立所述第一数据节点与所述ThreadLocalPool的第三链路连接;

建立所述连接请求对应第二数据节点与所述ThreadLocalPool的第四链路连接;

根据所述第三链路连接与所述第四链路连接,进行所述第一数据节点与所述第二数据节点传输测试处理,得到连接测试结果;

根据所述连接测试结果,将所述第一数据节点连接至所述连接请求对应的第二数据节点。

可选的,在本发明第一方面的第四种实现方式中,所述根据所述连接测试结果,将所述第一数据节点连接至所述连接请求对应的第二数据节点包括:

判断所述连接测试结果是否为连接通畅;

若为连接通畅,则通过所述第三链路连接与所述第四链路连接,确立所述第一数据与所述第二数据节点的连接拓扑结构;

若不为连接通畅,则创建所述第一数据节点与预置全局连接池的第一链路连接,以及创建所述连接请求对应第二数据节点与所述全局连接池的第二链路连接;

根据所述第一链路连接与所述第二链路连接,所述第一数据节点连接至所述连接请求对应的第二数据节点,并清空所述ThreadLocalPool。

可选的,在本发明第一方面的第五种实现方式中,在所述通过所述第三链路连接与所述第四链路连接,确立所述第一数据与所述第二数据节点的连接拓扑结构之后,还包括:

接收所述第一数据的连接断开请求;

判断所述连接断开请求是否设置为归还至所述ThreadLocalPool;

若是,则删除所述第三链路连接,并保存所述第四链路连接和所述ThreadLocalPool;

若否,则链路链路删除所述第三链路连接和所述第四链路连接,清空所述ThreadLocalPool,并将所述连接拓扑结构保存至所述全局连接池中。

可选的,在本发明第一方面的第六种实现方式中,在所述接收所述数据节点集群中第一数据节点的连接请求之后,在所述判断所述第一数据节点是否存在会话绑定设置之前,还包括:

判断所述第一数据节点在预置时间区间中的请求次数是否超过访问阈值;

若是,则停止执行所述连接请求;

若否,则执行所述连接请求。

本发明第二方面提供了一种数据库的连接池转换装置,包括:

接收模块,用于接收所述数据节点集群中第一数据节点的连接请求;

判断模块,用于判断所述第一数据节点是否存在会话绑定设置;

第一连接模块,用于若否,则基于预置全局连接池,将所述第一数据节点连接至所述连接请求对应的第二数据节点;

第二连接模块,用于若是,则根据预置特定连接算法,将所述第一数据节点连接至所述连接请求对应的第二数据节点。

本发明第三方面提供了一种数据库的连接池转换设备,包括:存储器和至少一个处理器,所述存储器中存储有指令,所述存储器和所述至少一个处理器通过线路互连;所述至少一个处理器调用所述存储器中的所述指令,以使得所述数据库的连接池转换设备执行上述的数据库的连接池转换方法。

本发明的第四方面提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述的数据库的连接池转换方法。

在本发明实施例中,使用threadlocal机制,将连接池划分为本地连接池和全局连接池,通过在数据连接池中开辟新的锁定传输连接池,将分布式数据库中的连接请求进行锁定,使得会话任务时不需要重复不断的去连接,降低了服务器中负载,也提高了整个传输过程的连接效率,简化数据连接池中在执行会话事务任务进程中连接过程。

附图说明

图1为本发明实施例中数据库的连接池转换方法的第一个实施例示意图;

图2为本发明实施例中数据库的连接池转换方法的第二个实施例示意图;

图3为本发明实施例中数据库的连接池转换装置的一个实施例示意图;

图4为本发明实施例中数据库的连接池转换装置的另一个实施例示意图;

图5为本发明实施例中数据库的连接池转换设备的一个实施例示意图。

具体实施方式

本发明实施例提供了一种数据库的连接池转换方法、装置、设备及存储介质。

本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”或“具有”及其任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。

为便于理解,下面对本发明实施例的具体流程进行描述,请参阅图1,本发明实施例中数据库的连接池转换方法的一个实施例包括:

101、接收数据节点集群中第一数据节点的连接请求;

102、判断第一数据节点是否存在会话绑定设置;

103、若否,则基于预置全局连接池,将第一数据节点连接至连接请求对应的第二数据节点;

104、若是,则根据预置特定连接算法,将第一数据节点连接至连接请求对应的第二数据节点。

在本实施例中,连接池架构示整体上由两个Pool组成,分别是ThreadLocalPool和全局连接池。每个连接池内部分别实现连接管理功能,提供相应接口来获取和归还连接。它们的主要区别在于ThreadLocalPool采用本地线程数据的方式实现。利用本地线程数据可以实现在ConnectionPerThread线程模型中,每创建一个会话时自动的创建一个ThreadLocalPool,会话退出时自动的销毁对应的ThreadLocalPool。

从连接池获取连接过程中,由于threadlocal的特性,在创建新会话时会自动生成一个新的空ThreadLocalPool,上层使用连接池获取连接时,需要区分是获取会话绑定的连接还是获取全局连接,若是获取会话绑定的连接则连接池内部会不加锁的从ThreadLocalPool从获取连接,并返回。若此时ThreadLocalPool刚创建无连接可用,则会先从全局连接池获取。

归还连接池的流程中,首先判断归还的是会话绑定的连接还是全局连接,对于会话绑定的连接,将其归还到ThreadLocalPool,待下次被重用。若归还的时全局连接,则将其归还到全局连接池。同时还存在一种特殊的归还方式,在会话退出时ThreadLocalPool会自动销毁,此时ThreadLocalPool中保留的连接将自动归还到全局连接池中待下次被重用。

在本发明实施例中,通过在数据连接池中开辟新的锁定传输连接池,使得分布式数据库中的连接请求进行锁定,使得会话任务时不需要重复不断的去连接,降低了服务器中负载,也提高了整个传输过程的连接效率,简化数据连接池中在执行会话事务任务进程中连接过程。

请参阅图2,本发明实施例中数据库的连接池转换方法的第二个实施例包括:

201、接收数据节点集群中第一数据节点的连接请求;

202、判断第一数据节点在预置时间区间中的请求次数是否超过访问阈值;

203、若是,则停止执行连接请求;

204、若否,则执行连接请求;

202-204实施例中,对第一数据节点连接请求的次数在一定时间范围内进行统计,由于数据库集群中有众多的数据节点,为了控制每个节点不会占用其他节点的连接资源,设置一个访问控制。例如,限制数据节点在1小时内不能访问连接请求次数超过50次。

205、根据预置传输协议和连接请求,生成空的ThreadLocalPool;

206、判断第一数据节点的连接请求是否设置为会话绑定设置;

205-206实施例中,在得到连接请求后,会立即创建一个空的本地连接池,在创建完成本地连接池后,就分析第一数据节点的连接请求中是否是需要实现会话绑定,即本次请求是否正在执行事务等这类需要将连接绑定到会话的请求。

207、若否,则创建第一数据节点与预置全局连接池的第一链路连接;

208、创建连接请求对应第二数据节点与全局连接池的第二链路连接;

209、根据第一链路连接与第二链路连接,第一数据节点连接至连接请求对应的第二数据节点,并清空ThreadLocalPool;

207-209实施例中,建立出第一数据节点与全局连接池的链路,而全局连接池根据请求建立出与第二数据节点的链路,全局连接池作为中间连接拓扑点,完成第一数据节点与第二数据节点的连接,之后清空本地连接池。

210、若是,则建立第一数据节点与ThreadLocalPool的第三链路连接;

211、建立连接请求对应第二数据节点与ThreadLocalPool的第四链路连接;

212、根据第三链路连接与第四链路连接,进行第一数据节点与第二数据节点传输测试处理,得到连接测试结果;

210-212实施例中,将第一数据节点与本地连接池连接,再将本地连接池与第二数据节点连接,测试第一数据节点与第二数据节点之间是否正常通信,如果通信正常则说明完成锁定连接。

213、判断连接测试结果是否为连接通畅;

214、若为连接通畅,则通过第三链路连接与第四链路连接,确立第一数据与第二数据节点的连接拓扑结构;

213-214实施例中,检测结果需进行判断,数据连接通畅则记录本次拓扑连接结构,作为下次第一数据节点与第二数据节点数据访问之间的固定网络传输路径。

215、接收第一数据的连接断开请求;

216、判断连接断开请求是否设置为归还至ThreadLocalPool;

217、若是,则删除第三链路连接,并保存第四链路连接和ThreadLocalPool;

218、若否,则删除第三链路连接和第四链路连接,清空ThreadLocalPool,并将连接拓扑结构保存至全局连接池中;

215-218实施例中,获取到归还指令,若是归还至本地连接池,则不清空本地连接池,若不是归还本地连接池,则需要将本地连接池清空,然后将本次连接的拓扑结构归归还到全局连接池中。

219、若不为连接通畅,则创建第一数据节点与预置全局连接池的第一链路连接,以及创建连接请求对应第二数据节点与全局连接池的第二链路连接;

220、根据第一链路连接与第二链路连接,第一数据节点连接至连接请求对应的第二数据节点,并清空ThreadLocalPool。

219-220实施例中,连接不通畅则认为本地连接池不能进行连接,需要将本地连接池删除,将第一数据节点与第二数据节点通过全局连接池连接。在实现数据连接过程中,连接不通畅可以设置一个数据传输速率阈值,测试时数据传输速率没有达到设置的阈值则可以认为并不是通畅。

在本发明实施例中,通过在数据连接池中开辟新的锁定传输连接池,使得分布式数据库中的连接请求进行锁定,使得会话任务时不需要重复不断的去连接,降低了服务器中负载,也提高了整个传输过程的连接效率,简化数据连接池中在执行会话事务任务进程中连接过程。

上面对本发明实施例中数据库的连接池转换方法进行了描述,下面对本发明实施例中数据库的连接池转换装置进行描述,请参阅图3,本发明实施例中数据库的连接池转换装置一个实施例包括:

接收模块301,用于接收所述数据节点集群中第一数据节点的连接请求;

判断模块302,用于判断所述第一数据节点是否存在会话绑定设置;

第一连接模块303,用于若否,则基于预置全局连接池,将所述第一数据节点连接至所述连接请求对应的第二数据节点;

第二连接模块304,用于若是,则根据预置特定连接算法,将所述第一数据节点连接至所述连接请求对应的第二数据节点。

在本发明实施例中,通过在数据连接池中开辟新的锁定传输连接池,使得分布式数据库中的连接请求进行锁定,使得会话任务时不需要重复不断的去连接,降低了服务器中负载,也提高了整个传输过程的连接效率,简化数据连接池中在执行会话事务任务进程中连接过程。

请参阅图4,本发明实施例中数据库的连接池转换装置的另一个实施例包括:

接收模块301,用于接收所述数据节点集群中第一数据节点的连接请求;

判断模块302,用于判断所述第一数据节点是否存在会话绑定设置;

第一连接模块303,用于若否,则基于预置全局连接池,将所述第一数据节点连接至所述连接请求对应的第二数据节点;

第二连接模块304,用于若是,则根据预置特定连接算法,将所述第一数据节点连接至所述连接请求对应的第二数据节点。

其中,所述判断模块302具体用于:

根据预置传输协议和所述连接请求,生成空的ThreadLocalPool;

判断所述第一数据节点的连接请求是否设置为会话绑定设置。

其中,所述第一连接模块303具体用于:

创建所述第一数据节点与预置全局连接池的第一链路连接;

创建所述连接请求对应第二数据节点与所述全局连接池的第二链路连接;

根据所述第一链路连接与所述第二链路连接,所述第一数据节点连接至所述连接请求对应的第二数据节点,并清空所述ThreadLocalPool。

其中,所述第二连接模块304具体用于:

第一链路建立单元3041,用于建立所述第一数据节点与所述ThreadLocalPool的第三链路连接;

第二链路建立单元3042,用于建立所述连接请求对应第二数据节点与所述ThreadLocalPool的第四链路连接;

测试单元3043,用于根据所述第三链路连接与所述第四链路连接,进行所述第一数据节点与所述第二数据节点传输测试处理,得到连接测试结果;

连接单元3044,用于根据所述连接测试结果,将所述第一数据节点连接至所述连接请求对应的第二数据节点。

其中,所述连接单元3044具体用于:

判断所述连接测试结果是否为连接通畅;

若为连接通畅,则通过所述第三链路连接与所述第四链路连接,确立所述第一数据与所述第二数据节点的连接拓扑结构;

若不为连接通畅,则创建所述第一数据节点与预置全局连接池的第一链路连接,以及创建所述连接请求对应第二数据节点与所述全局连接池的第二链路连接;

据所述第一链路连接与所述第二链路连接,所述第一数据节点连接至所述连接请求对应的第二数据节点,并清空所述ThreadLocalPool。

其中,所述数据库的连接池转换装置具体包括归还模块305,所述归还模块305具体用于:

接收所述第一数据的连接断开请求;

判断所述连接断开请求是否设置为归还至所述ThreadLocalPool;

若是,则删除所述第三链路连接,并保存所述第四链路连接和所述ThreadLocalPool;

若否,则链路链路删除所述第三链路连接和所述第四链路连接,清空所述ThreadLocalPool,并将所述连接拓扑结构保存至所述全局连接池中。

其中,所述数据库的连接池转换装置还包括频率检测模块306,所述频率检测模块306具体用于:

判断所述第一数据节点在预置时间区间中的请求次数是否超过访问阈值;

若是,则停止执行所述连接请求;

若否,则执行所述连接请求。

在本发明实施例中,通过在数据连接池中开辟新的锁定传输连接池,使得分布式数据库中的连接请求进行锁定,使得会话任务时不需要重复不断的去连接,降低了服务器中负载,也提高了整个传输过程的连接效率,简化数据连接池中在执行会话事务任务进程中连接过程。

上面图3和图4从模块化功能实体的角度对本发明实施例中的数据库的连接池转换装置进行详细描述,下面从硬件处理的角度对本发明实施例中数据库的连接池转换设备进行详细描述。

图5是本发明实施例提供的一种数据库的连接池转换设备的结构示意图,该数据库的连接池转换设备500可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上处理器(central processing units,CPU)510(例如,一个或一个以上处理器)和存储器520,一个或一个以上存储应用程序533或数据532的存储介质530(例如一个或一个以上海量存储设备)。其中,存储器520和存储介质530可以是短暂存储或持久存储。存储在存储介质530的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对数据库的连接池转换设备500中的一系列指令操作。更进一步地,处理器510可以设置为与存储介质530通信,在数据库的连接池转换设备500上执行存储介质530中的一系列指令操作。

基于数据库的连接池转换设备500还可以包括一个或一个以上电源540,一个或一个以上有线或无线网络接口550,一个或一个以上输入输出接口560,和/或,一个或一个以上操作系统531,例如Windows Serve,Mac OS X,Unix,Linux,FreeBSD等等。本领域技术人员可以理解,图5示出的数据库的连接池转换设备结构并不构成对基于数据库的连接池转换设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。

本发明还提供一种计算机可读存储介质,该计算机可读存储介质可以为非易失性计算机可读存储介质,该计算机可读存储介质也可以为易失性计算机可读存储介质,所述计算机可读存储介质中存储有指令,当所述指令在计算机上运行时,使得计算机执行所述数据库的连接池转换方法的步骤。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统或装置、单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(read-only memory,ROM)、随机存取存储器(random access memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。

以上所述,以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

相关技术
  • 数据库的连接池转换方法、装置、设备及存储介质
  • 数据库操作指令转换方法、装置、设备及存储介质
技术分类

06120113008125