数据库访问方法和装置、计算设备和计算机程序产品与流程

文档序号:33955133发布日期:2023-04-26 14:48阅读:54来源:国知局
数据库访问方法和装置、计算设备和计算机程序产品与流程

本技术涉及数据库领域,尤其涉及数据库访问方法、数据库访问发起模块、数据库访问服务引擎、数据库访问调度模块、计算设备和计算机程序产品。


背景技术:

1、现有技术中,数据库连接池部署在应用内部。一个数据库连接池只为一个应用提供访问数据库实例的服务。

2、另外,单个应用可以分布式地部署在多个服务器上。每个服务器上部署该应用的数据库连接池,每个数据库连接池中的所有连接用于连接同一个数据库实例。换句话说,如果该个应用需要通过每个服务器连接多个数据库实例,则在每个服务器上均需要针对每个数据库实例部署一个连接池。但是,单个应用在不同服务器上用于访问同一数据库实例的数据库连接池,也不能在不同服务器之间共享。

3、另外,现有技术中,在建立连接池中的连接来访问数据库实例时,是使用数据库实例的网络之间互连的协议(internet protocol,ip)地址和端口(port)号)来建立该连接。


技术实现思路

1、有鉴于此,本技术提供了一种数据库访问方法、数据库访问发起模块、数据库访问服务引擎、计算设备和计算机程序产品,避免暴漏数据库实例的ip地址和端口来建立用于访问该数据库实例的连接。

2、第一方面,在本技术提供的数据库访问方法中,数据库访问调度模块使用数据库访问服务引擎的标识(例如数据库访问服务引擎的ip地址)与该数据库访问服务引擎建立通信连接。后续,该数据库访问调度模块接收该数据库访问服务引擎发送的访问请求,该访问请求携带有数据库实例的标识。该数据库访问调度模块向所述数据库实例发送所述访问请求。

3、这样,基于数据库访问调度模块主动与数据库访问服务引擎建立的通信连接,该数据库访问服务引擎接收到应用的访问请求时,可以通过该数据库访问调度模块向所述数据库实例发送所述访问请求。

4、第一方面的一种可能设计,在数据库访问调度模块向所述数据库访问服务引擎发送建立所述通信连接的请求时,在该请求中携带所述数据库访问服务引擎的标识和所述数据库访问服务引擎的公钥。这样,所述数据库访问引擎可以基于该数据库访问服务引擎的公钥对是否同意与该数据库访问调度模块建立通信连接进行鉴权。

5、第一方面的一种可能设计,在所述数据库访问调度模块从所述数据库访问服务引擎接收的所述访问请求为基于所述数据库访问调度模块的公钥加密的访问请求时,所述数据库访问调度模块使用所述数据库访问调度模块的私钥从加密的访问请求中解密出访问请求,以便向所述数据库实例发送解密的访问请求。

6、第一方面的一种可能设计,数据库实例处理该访问请求并得到处理结果,并将该处理结果发送数据库访问调度模块。该数据库访问调度模块接收该数据库实例发送的该处理结果。然后,该数据库访问调度模块向该数据库访问服务引擎发送所述处理结果。这样,数据库访问服务引擎通过该访问请求实现了对该数据库实例的访问。

7、可选地,数据库访问调度模块使用所述数据库访问服务引擎的公钥对所述处理结果加密,以便所述数据库访问调度模块向所述数据库访问服务引擎发送加密的所述处理结果。

8、第二方面,在本技术提供的数据库访问方法中,如果应用需要访问数据库实例,则该应用向数据库访问发起模块发送应用的访问请求,该访问请求携带数据库实例的标识。

9、该数据库访问发起模块在接收到该访问请求时,确定用于访问该数据库实例的数据库访问服务引擎,向确定的数据库访问服务引擎发送所述访问请求。该数据库访问服务引擎是独立于该应用部署的。

10、该数据库访问服务引擎可以与数据库访问实现模块(例如数据库实例,例如数据库访问调度模块)建立连接。

11、如果该连接是建立在数据库访问服务引擎与数据库实例之间的,则该数据库访问服务引擎可以通过该连接向该数据库实例发送该访问请求,该数据库实例处理该访问请求。

12、如果该连接是建立在数据库访问服务引擎与数据库访问调度模块之间的,则该数据库访问服务引擎可以通过该连接向该数据库访问调度模块发送该访问请求。这样,该数据库访问调度模块可以将该访问请求发送至该数据库实例,从而该数据库实例可以处理该访问请求。

13、相比于现有技术是使用应用内部的连接池提供的连接来访问数据库实例,本技术是通过独立于应用的数据库访问服务引擎来实现对数据库实例的访问。另外,用于访问数据库实例的连接是访问服务引擎建立的,并非应用维护的,从而减少了应用的负载。

14、第二方面的一种可能设计,该数据库访问发起模块在接收到该访问请求时,数据库访问发起模块从多个数据库访问服务引擎中选择一个数据库访问服务引擎,向选择的数据库访问服务引擎发送该访问请求。这样,多个数据库访问服务引擎可以分担转发多个访问请求的压力。

15、第二方面的一种可能设计,该数据库访问发起模块在接收到该访问请求时,数据库访问发起模块根据多个数据库访问服务引擎的负载,从所述多个数据库访问服务引擎中选择一个数据库访问服务引擎。这样,可以在多个数据库访问服务引擎实现负载分担。

16、可选地,每个数据库访问服务引擎的负载,是指该个数据库访问服务引擎与数据库访问实现模块(例如数据库实例,例如数据库访问调度模块)建立的连接的条数。条数越多,则该个数据库访问服务引擎的负载越大;反之,条数越少,则该个数据库访问服务引擎的负载越小。

17、第二方面的一种可能设计,该数据库访问发起模块在接收到该访问请求时,数据库访问发起模块从多个数据库访问服务引擎中选择负载最小的数据库访问服务引擎。可选地,每个数据库访问服务引擎的负载,是指该个数据库访问服务引擎与数据库访问实现模块(例如数据库实例,例如数据库访问调度模块)建立的连接的条数。

18、第二方面的一种可能设计,该数据库访问发起模块在接收到该访问请求时,如果该访问请求携带所述数据库实例的标识,并且已存在与该数据库实例建立了连接的数据库访问服务引擎,则确定与所述数据库实例的标识绑定的数据库访问服务引擎。

19、第二方面的一种可能设计,该数据库访问发起模块在接收到该访问请求时,如果所述访问请求携带的数据库访问调度模块的标识,并且已存在与该数据库访问调度模块建立了连接的数据库访问服务引擎,确定与所述数据库访问调度模块绑定的数据库访问服务引擎。这样,该数据库访问发起模块向该数据库访问服务引擎发送该访问请求,从而所述数据库访问调度模块才会从所述数据库访问服务引擎接收到所述访问请求。由于该访问请求指定的数据库实例是与该数据库访问调度模块关联的,待该数据库访问调度模块接收到该访问请求,该数据库访问调度模块才能够转发该访问请求至该访问请求指定的数据库实例。

20、第二方面的一种可能设计,所述数据库访问服务引擎在接收到该访问请求时,该数据库访问服务引擎根据所述数据库实例的标识建立所述数据库访问服务引擎与所述数据库实例的连接。这样,基于该连接,在所述数据库访问服务引擎与所述数据库实例之间可以传输数据,例如数据库访问服务引擎向数据库实例发送该访问请求,例如该数据库实例向该数据库访问服务引擎发送该访问请求对应的处理结果。

21、第二方面的一种可能设计,所述数据库访问服务引擎在接收到该访问请求时,如果所述访问请求携带了标识连接的关键字,使用所述关键字标识的在所述数据库访问服务引擎与所述数据库实例之间已建立的连接,向所述数据库实例发送所述访问请求。这样,如果该关键字是应用指定的,该应用可以基于该关键字来实现使用同一连接访问同一数据库实例。

22、第二方面的一种可能设计,所述数据库访问服务引擎在接收到该访问请求时,如果所述访问请求没有携带用于标识连接的关键字,该数据库访问服务引擎根据所述数据库实例的标识建立所述数据库访问服务引擎与所述数据库实例的连接。由于该访问请求没有携带用于标识连接的关键字,即使存在所述数据库访问服务引擎与所述数据库实例之间的已有连接,该数据库访问服务引擎仍需要新建一条连接,使用新建的连接来在所述数据库访问服务引擎与所述数据库实例之间传输该访问请求相关的数据(例如该访问请求或者该访问请求对应的处理结果)。

23、第二方面的一种可能设计,所述数据库访问服务引擎在接收到该访问请求时,如果所述访问请求携带有数据库访问调度模块的标识,数据库访问服务引擎向所述数据库访问调度模块发送所述访问请求。

24、举例说明,在该数据库访问服务引擎与该数据库访问调度模块之间已经建立了通信连接的情况下,应用可以在访问请求中指定数据库访问调度模块的标识。这样,数据库访问服务引擎可以基于数据库访问调度模块的标识,确定该通信连接;从而,数据库访问服务引擎可以继续使用该通信连接,来实现向该数据库访问调度模块发送访问请求。

25、如果是多个应用分别在自己的访问请求中指定了相同的数据库访问调度模块的标识,则可以共用数据库访问服务引擎、在该数据库访问服务引擎与该数据库访问调度模块之间的通信连接和该数据库访问调度模块来实现这些访问请求的相关数据的传输。

26、第二方面的一种可能设计,在数据库实例处理访问请求并生成该访问请求对应的处理结果之后,如果该数据库实例是直接与数据库访问服务引擎连接的,则该数据库实例向数据库访问服务引擎发送该处理结果;如果该数据库实例是与数据库访问调度模块连接的,则该数据库实例向该数据库访问调度模块发送该处理结果,以便,该数据库访问调度模块将该处理结果转发至数据库访问服务引擎。

27、该数据库访问服务引擎向该数据库访问发起模块发送该处理结果。相应地,该数据库访问发起模块向该应用发送该处理结果。

28、这样,应用可以通过访问请求实现对该数据库实例的访问,并得到该访问请求的处理结果。

29、第三方面,本技术提供一种数据库访问装置。该装置包括的功能模块,用于实现第一方面或第一方面的任意可能设计提供的方中由数据库访问发起模块执行的步骤,或者用于实现第二方面或第二方面的任意可能设计提供的方中由数据库访问发起模块执行的步骤。

30、本技术提供另一种数据库访问装置。该装置包括的功能模块,用于实现第一方面或第一方面的任意可能设计提供的方中由数据库访问服务引擎执行的步骤,或者用于实现第二方面或第二方面的任意可能设计提供的方法中由该数据库访问服务引擎执行的步骤。

31、本技术提供另一种数据库访问装置。该装置包括的功能模块,用于实现第一方面或第一方面的任意可能设计提供的方中由数据库访问实现模块(例如数据库实例,例如数据库访问调度模块)执行的步骤,或者用于实现第二方面或第二方面的任意可能设计提供的方法中由该数据库访问实现模块(例如数据库实例,例如数据库访问调度模块)执行的步骤。

32、第三方面,本技术提供一种计算设备,该计算设备包括处理器和存储器。该存储器存储计算机指令;该处理器执行该存储器存储的计算机指令,使得该计算设备执行上述第一方面或者第一方面的各种可能设计提供的方法中由数据库访问发起模块执行的步骤,或者使得该计算设备执行上述第一方面或者第一方面的各种可能设计提供的方法中由该数据库访问服务引擎执行的步骤,或者使得该计算设备执行上述第一方面或者第一方面的各种可能设计提供的方法中由该数据库访问实现模块(例如数据库实例,例如数据库访问调度模块)执行的步骤,或者使得该计算设备执行上述第二方面或者第二方面的各种可能设计提供的方法中由数据库访问发起模块执行的步骤,或者使得该计算设备执行上述第二方面或者第二方面的各种可能设计提供的方法中由该数据库访问服务引擎执行的步骤,或者使得该计算设备执行上述第二方面或者第二方面的各种可能设计提供的方法中由该数据库访问实现模块(例如数据库实例,例如数据库访问调度模块)执行的步骤。

33、第四方面,本技术提供一种计算机可读存储介质,该计算机可读存储介质中存储有计算机指令,当计算设备的处理器执行该计算机指令时,该计算设备执行上述第一方面或者第一方面的各种可能设计提供的方法中由数据库访问发起模块执行的步骤,或者该计算设备执行上述第一方面或者第一方面的各种可能设计提供的方法中由该数据库访问服务引擎执行的步骤,或者该计算设备执行上述第一方面或者第一方面的各种可能设计提供的方法中由该数据库访问实现模块(例如数据库实例,例如数据库访问调度模块)执行的步骤,或者该计算设备执行上述第二方面或者第二方面的各种可能设计提供的方法中由数据库访问发起模块执行的步骤,或者该计算设备执行上述第二方面或者第二方面的各种可能设计提供的方法中由该数据库访问服务引擎执行的步骤,或者该计算设备执行上述第二方面或者第二方面的各种可能设计提供的方法中由该数据库访问实现模块(例如数据库实例,例如数据库访问调度模块)执行的步骤。

34、第五方面,本技术提供一种计算机程序产品,该计算机程序产品包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算设备的处理器可以从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算设备执行上述第一方面或者第一方面的各种可能设计提供的方法中由数据库访问发起模块执行的步骤,或者使得该计算设备执行上述第一方面或者第一方面的各种可能设计提供的方法中由该数据库访问服务引擎执行的步骤,或者使得该计算设备执行上述第一方面或者第一方面的各种可能设计提供的方法中由该数据库访问实现模块(例如数据库实例,例如数据库访问调度模块)执行的步骤,或者使得该计算设备执行上述第二方面或者第二方面的各种可能设计提供的方法中由数据库访问发起模块执行的步骤,或者使得该计算设备执行上述第二方面或者第二方面的各种可能设计提供的方法中由该数据库访问服务引擎执行的步骤,或者使得该计算设备执行上述第二方面或者第二方面的各种可能设计提供的方法中由该数据库访问实现模块(例如数据库实例,例如数据库访问调度模块)执行的步骤。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1