数据库管理方法及装置、设备、存储介质转让专利

申请号 : CN202011473260.2

文献号 : CN112286911B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 陈学平时家幸李莉

申请人 : 中移(苏州)软件技术有限公司

摘要 :

本申请实施例公开了一种数据库管理方法及装置、设备、存储介质,所述方法包括:确定所述第一服务器上部署的至少两个转发接口实例;在每一所述转发接口实例启动的情况下,向第二服务器发送每一所述转发接口实例的网络标识;接收终端发送的数据库访问请求;其中,所述数据库访问请求至少携带目标网络标识;所述目标网络标识为所述第二服务器通过检测所述至少两个转发接口实例并按照特定的转发策略从检测结果中确定的;所述特定的转发策略用于平衡不同转发接口实例之间的负载;根据所述目标网络标识,确定对应的目标转发接口实例;通过所述目标转发接口实例,将所述数据库访问请求发送到目标数据库;接收所述目标数据库的反馈数据。

权利要求 :

1.一种数据库管理方法,其特征在于,应用于第一服务器,所述方法包括:确定所述第一服务器上部署的至少两个转发接口实例;

在每一所述转发接口实例启动的情况下,向第二服务器发送每一所述转发接口实例的网络标识;所述网络标识包括所述转发接口实例的IP地址和端口号;

接收终端发送的数据库访问请求;其中,所述数据库访问请求至少携带目标网络标识;

所述目标网络标识为所述第二服务器通过检测所述至少两个转发接口实例并按照特定的转发策略从检测结果中确定的;所述特定的转发策略用于平衡不同转发接口实例之间的负载;

根据所述目标网络标识,确定对应的目标转发接口实例;

通过所述目标转发接口实例,将所述数据库访问请求发送到目标数据库;

接收所述目标数据库的反馈数据;

其中,所述转发策略包括以下之一:根据哈希算法的计算结果确定所述目标转发接口实例、或者根据连接数确定所述目标转发接口实例、或者从候选转发接口实例集合中随机选择或轮询确定所述目标转发接口实例。

2.如权利要求1所述的方法,其特征在于,所述数据库访问请求还包括对所述目标数据库的操作指令,所述通过所述目标转发接口实例,将所述数据库访问请求发送到目标数据库,包括:

通过所述目标转发接口实例,按照所述操作指令对所述目标数据库进行数据操作。

3.如权利要求1或2所述的方法,其特征在于,所述数据库访问请求中包括所述目标数据库的连接敏感信息,所述接收终端发送的数据库访问请求之后,所述方法还包括:按照约定的密钥对所述数据库访问请求进行解密;

相应地,通过所述目标转发接口实例,将解密后的数据库访问请求发送到所述目标数据库。

4.一种数据库管理方法,其特征在于,应用于第二服务器,所述方法包括:根据第一服务器发送的至少两个网络标识,确定每一所述网络标识对应的转发接口实例;其中,每一所述网络标识为在每一所述转发接口实例启动的情况下由所述第一服务器向所述第二服务器发送的;

通过对每一所述转发接口实例进行心跳检测,确定候选转发接口实例集合;

响应终端发送的实例地址请求,按照特定的转发策略,从所述候选转发接口实例集合中确定目标转发接口实例;所述特定的转发策略用于平衡不同转发接口实例之间的负载;

向所述终端返回所述目标转发接口实例的目标网络标识;

其中,所述转发策略包括以下之一:根据哈希算法的计算结果确定所述目标转发接口实例、或者根据连接数确定所述目标转发接口实例、或者从候选转发接口实例集合中随机选择或轮询确定所述目标转发接口实例。

5.如权利要求4所述的方法,其特征在于,所述通过对每一所述转发接口实例进行心跳检测,确定候选转发接口实例集合,包括:通过定时对每一所述转发接口实例进行心跳检测,将满足特定服务状态的每一所述转发接口实例作为候选转发接口实例集合;其中,所述特定服务状态表征所述转发接口实例的负载未超过最大阈值。

6.如权利要求4或5所述的方法,其特征在于,所述按照特定的转发策略,从所述候选转发接口实例集合中确定目标转发接口实例,包括:按照所述实例地址请求的源网络地址,分别通过哈希算法计算所述候选转发接口实例集合中每一所述候选转发接口实例的结果;

根据所述结果,确定所述目标转发接口实例。

7.如权利要求4或5所述的方法,其特征在于,所述按照特定的转发策略,从所述候选转发接口实例集合中确定目标转发接口实例,包括:确定每一所述候选转发接口实例当前的连接数量;

将当前的连接数量最小的候选转发接口实例,作为所述目标转发接口实例。

8.如权利要求4或5所述的方法,其特征在于,所述按照特定的转发策略,从所述候选转发接口实例集合中确定目标转发接口实例,包括:从所述候选转发接口实例集合中轮流选择一个实例作为所述目标转发接口实例;或者从所述候选转发接口实例集合中随机选择一个实例作为所述目标转发接口实例。

9.一种数据库管理方法,其特征在于,所述方法包括:第一服务器确定所述第一服务器上部署的至少两个转发接口实例;

所述第一服务器在每一所述转发接口实例启动的情况下,向第二服务器发送每一所述转发接口实例的网络标识;所述网络标识包括所述转发接口实例的IP地址和端口号;

所述第二服务器根据所述第一服务器发送的至少两个网络标识,确定每一所述网络标识对应的转发接口实例;

所述第二服务器通过对每一所述转发接口实例进行心跳检测,确定候选转发接口实例集合;

终端响应于接收的数据库操作指令,向所述第二服务器发送实例地址请求;

所述第二服务器响应终端发送的实例地址请求,按照特定的转发策略,从所述候选转发接口实例集合中确定目标转发接口实例;所述特定的转发策略用于平衡不同转发接口实例之间的负载;

所述第二服务器向所述终端返回所述目标转发接口实例的目标网络标识;

所述终端接收所述第二服务器返回的目标网络标识;

所述终端根据所述数据库操作指令和所述目标网络标识,生成数据库访问请求;

所述终端向所述第一服务器发送所述数据库访问请求;

所述第一服务器接收终端发送的数据库访问请求;其中,所述数据库访问请求至少携带目标网络标识;

所述第一服务器根据所述目标网络标识,确定对应的目标转发接口实例;

所述第一服务器通过所述目标转发接口实例,将所述数据库访问请求发送到目标数据库;

所述第一服务器接收所述目标数据库的反馈数据;

其中,所述转发策略包括以下之一:根据哈希算法的计算结果确定所述目标转发接口实例、或者根据连接数确定所述目标转发接口实例、或者从候选转发接口实例集合中随机选择或轮询确定所述目标转发接口实例。

10.如权利要求9所述的方法,其特征在于,在所述终端接收到所述数据库操作指令之后,所述方法还包括:

所述终端通过缓存系统检查当前用户访问所述目标数据库的访问限制信息;

在所述访问限制信息满足特定条件的情况下,所述终端向所述第二服务器发送所述实例地址请求。

11.如权利要求10所述的方法,其特征在于,所述访问限制信息至少包括:访问总次数、每秒访问次数和访问数据量,

所述在所述访问限制信息满足特定条件的情况下,所述终端向所述第二服务器发送所述实例地址请求,包括:

在所述访问总次数未达到第一阈值、所述每秒访问次数未达到第二阈值且所述访问数据量未达到第三阈值的情况下,所述终端向所述第二服务器发送所述实例地址请求。

12.如权利要求11所述的方法,其特征在于,所述方法还包括:在所述访问总次数达到第一阈值、所述每秒访问次数达到第二阈值或所述访问数据量达到第三阈值的情况下,所述终端不向所述第二服务器发送所述实例地址请求。

13.如权利要求9至12任一项所述的方法,其特征在于,在所述终端接收到所述数据库操作指令之后,所述方法还包括:

所述终端通过脚本语言对所述操作指令进行校验过滤;

所述终端在所述操作指令校验通过后,向所述第二服务器发送所述实例地址请求。

14.如权利要求13所述的方法,其特征在于,所述操作指令为结构化查询语言SQL语句,所述终端通过脚本语言对所述操作指令进行校验过滤,包括:所述终端对所述SQL语句进行语法校验;

所述终端删除所述校验后的SQL语句中的高危命令和全量操作命令。

15.如权利要求9至12任一项所述的方法,其特征在于,所述数据库操作指令中包括目标数据库的连接敏感信息,在所述终端接收到所述数据库操作指令之后,所述方法还包括:所述终端通过对称加密方式对所述连接敏感信息进行加密。

16.一种数据库管理装置,其特征在于,应用于第一服务器,所述装置包括:第一确定模块,用于确定所述第一服务器上部署的至少两个转发接口实例;

第一发送模块,用于在每一所述转发接口实例启动的情况下,向第二服务器发送每一所述转发接口实例的网络标识;所述网络标识包括所述转发接口实例的IP地址和端口号;

第一接收模块,用于接收终端发送的数据库访问请求;其中,所述数据库访问请求至少携带目标网络标识;所述目标网络标识为所述第二服务器通过检测所述至少两个转发接口实例并按照特定的转发策略从检测结果中确定的;所述特定的转发策略用于平衡不同转发接口实例之间的负载;

第二确定模块,用于根据所述目标网络标识,确定对应的目标转发接口实例;

第二发送模块,用于通过所述目标转发接口实例,将所述数据库访问请求发送到目标数据库;

第二接收模块,用于接收所述目标数据库的反馈数据;

其中,所述转发策略包括以下之一:根据哈希算法的计算结果确定所述目标转发接口实例、或者根据连接数确定所述目标转发接口实例、或者从候选转发接口实例集合中随机选择或轮询确定所述目标转发接口实例。

17.一种数据库管理装置,其特征在于,应用于第二服务器,所述装置包括:第三确定模块,用于根据第一服务器发送的至少两个网络标识,确定每一所述网络标识对应的转发接口实例;

第四确定模块,用于通过对每一所述转发接口实例进行心跳检测,确定候选转发接口实例集合;

第五确定模块,用于响应终端发送的实例地址请求,按照特定的转发策略,从所述候选转发接口实例集合中确定目标转发接口实例;所述特定的转发策略用于平衡不同转发接口实例之间的负载;

第三发送模块,用于向所述终端返回所述目标转发接口实例的目标网络标识;

其中,所述转发策略包括以下之一:根据哈希算法的计算结果确定所述目标转发接口实例、或者根据连接数确定所述目标转发接口实例、或者从候选转发接口实例集合中随机选择或轮询确定所述目标转发接口实例。

18.一种数据库管理系统,包括第一服务器、第二服务器和终端,其中:所述第一服务器,用于确定所述第一服务器上部署的至少两个转发接口实例;在每一所述转发接口实例启动的情况下,向所述第二服务器发送每一所述转发接口实例的网络标识;所述网络标识包括所述转发接口实例的IP地址和端口号;接收所述终端发送的数据库访问请求;其中,所述数据库访问请求至少携带目标网络标识;所述目标网络标识为所述第二服务器通过检测所述至少两个转发接口实例并按照特定的转发策略从检测结果中确定的;根据所述目标网络标识,确定对应的目标转发接口实例;通过所述目标转发接口实例,将所述数据库访问请求发送到目标数据库;接收所述目标数据库的反馈数据;所述特定的转发策略用于平衡不同转发接口实例之间的负载;

所述第二服务器,用于根据所述第一服务器发送的至少两个网络标识,确定每一所述网络标识对应的转发接口实例;通过对每一所述转发接口实例进行心跳检测,确定候选转发接口实例集合;响应所述终端发送的实例地址请求,按照特定的转发策略,从所述候选转发接口实例集合中确定目标转发接口实例;向所述终端返回所述目标转发接口实例的目标网络标识;

所述终端,用于响应于接收的数据库操作指令,向所述第二服务器发送实例地址请求;

接收所述第二服务器返回的目标网络标识;根据所述数据库操作指令和所述目标网络标识,生成数据库访问请求;向所述第一服务器发送所述数据库访问请求;

其中,所述转发策略包括以下之一:根据哈希算法的计算结果确定所述目标转发接口实例、或者根据连接数确定所述目标转发接口实例、或者从候选转发接口实例集合中随机选择或轮询确定所述目标转发接口实例。

19.一种数据库管理设备,包括存储器和处理器,所述存储器存储有可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现权利要求1至3任一项所述方法中的步骤,或者,所述处理器执行所述程序时实现权利要求4至8任一项所述方法中的步骤。

20.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该计算机程序被处理器执行时实现权利要求1至3中任一项所述方法中的步骤,或者,该计算机程序被处理器执行时实现权利要求4至8中任一项所述方法中的步骤。

说明书 :

数据库管理方法及装置、设备、存储介质

技术领域

[0001] 本申请涉及计算机数据处理技术领域,涉及但不限定于数据库管理方法及装置、设备、存储介质。

背景技术

[0002] 相关技术中提出的数据库管理方法,通过引入数据库转发接口,对终端的操作命令进行了解析和转发,完成对数据库的访问操作。但是该方案为单实例服务,存在性能瓶
颈。整个数据库管理系统的扩展性、鲁棒性、可用性较差,不能够支持高并发场景下用户的
数据库访问。

发明内容

[0003] 有鉴于此,本申请为解决相关技术中单实例服务存在性能瓶颈的问题,本申请实施例提供一种数据库管理方法及装置、设备、存储介质,能够在支持高并发场景下用户的数
据库访问,从而整个数据库管理系统的扩展性、鲁棒性、可用性。
[0004] 本申请实施例的技术方案是这样实现的:
[0005] 第一方面,本申请实施例提供一种数据库管理方法,应用于第一服务器,所述方法包括:
[0006] 确定所述第一服务器上部署的至少两个转发接口实例;
[0007] 在每一所述转发接口实例启动的情况下,向第二服务器发送每一所述转发接口实例的网络标识;
[0008] 接收终端发送的数据库访问请求;其中,所述数据库访问请求至少携带目标网络标识;所述目标网络标识为所述第二服务器通过检测所述至少两个转发接口实例并按照特
定的转发策略从检测结果中确定的;所述特定的转发策略用于平衡不同转发接口实例之间
的负载;
[0009] 根据所述目标网络标识,确定对应的目标转发接口实例;
[0010] 通过所述目标转发接口实例,将所述数据库访问请求发送到目标数据库;
[0011] 接收所述目标数据库的反馈数据。
[0012] 第二方面,本申请实施例提供一种数据库管理方法,应用于第二服务器,所述方法包括:
[0013] 根据第一服务器发送的至少两个网络标识,确定每一所述网络标识对应的转发接口实例;其中,每一所述网络标识为在每一所述转发接口实例启动的情况下由所述第一服
务器向所述第二服务器发送的;
[0014] 通过对每一所述转发接口实例进行检测,确定候选转发接口实例集合;
[0015] 响应终端发送的实例地址请求,按照特定的转发策略,从所述候选转发接口实例集合中确定目标转发接口实例;所述特定的转发策略用于平衡不同转发接口实例之间的负
载;
[0016] 向所述终端返回所述目标转发接口实例的目标网络标识。
[0017] 第三方面,本申请实施例提供一种数据库管理方法,所述方法包括:
[0018] 第一服务器确定所述第一服务器上部署的至少两个转发接口实例;
[0019] 所述第一服务器在每一所述转发接口实例启动的情况下,向第二服务器发送每一所述转发接口实例的网络标识;
[0020] 所述第二服务器根据所述第一服务器发送的至少两个网络标识,确定每一所述网络标识对应的转发接口实例;
[0021] 所述第二服务器通过对每一所述转发接口实例进行检测,确定候选转发接口实例集合;
[0022] 终端响应于接收的数据库操作指令,向所述第二服务器发送实例地址请求;
[0023] 所述第二服务器响应终端发送的实例地址请求,按照特定的转发策略,从所述候选转发接口实例集合中确定目标转发接口实例;所述特定的转发策略用于平衡不同转发接
口实例之间的负载;
[0024] 所述第二服务器向所述终端返回所述目标转发接口实例的目标网络标识;
[0025] 所述终端接收所述第二服务器返回的目标网络标识;
[0026] 所述终端根据所述数据库操作指令和所述目标网络标识,生成数据库访问请求;
[0027] 所述终端向所述第一服务器发送所述数据库访问请求;
[0028] 所述第一服务器接收终端发送的数据库访问请求;其中,所述数据库访问请求至少携带目标网络标识;
[0029] 所述第一服务器根据所述目标网络标识,确定对应的目标转发接口实例;
[0030] 所述第一服务器通过所述目标转发接口实例,将所述数据库访问请求发送到目标数据库;
[0031] 所述第一服务器接收所述目标数据库的反馈数据。
[0032] 第四方面,本申请实施例提供一种数据库管理装置,应用于第一服务器,所述装置包括:
[0033] 第一确定模块,用于确定所述第一服务器上部署的至少两个转发接口实例;
[0034] 第一发送模块,用于在每一所述转发接口实例启动的情况下,向第二服务器发送每一所述转发接口实例的网络标识;
[0035] 第一接收模块,用于接收终端发送的数据库访问请求;其中,所述数据库访问请求至少携带目标网络标识;所述目标网络标识为所述第二服务器通过检测所述至少两个转发
接口实例并按照特定的转发策略从检测结果中确定的;所述特定的转发策略用于平衡不同
转发接口实例之间的负载;
[0036] 第二确定模块,用于根据所述目标网络标识,确定对应的目标转发接口实例;
[0037] 第二发送模块,用于通过所述目标转发接口实例,将所述数据库访问请求发送到目标数据库;
[0038] 第二接收模块,用于接收所述目标数据库的反馈数据。
[0039] 第五方面,本申请实施例提供一种数据库管理装置,应用于第二服务器,所述装置包括:
[0040] 第三确定模块,用于根据第一服务器发送的至少两个网络标识,确定每一所述网络标识对应的转发接口实例;
[0041] 第四确定模块,用于通过对每一所述转发接口实例进行检测,确定候选转发接口实例集合;
[0042] 第五确定模块,用于响应终端发送的实例地址请求,按照特定的转发策略,从所述候选转发接口实例集合中确定目标转发接口实例;所述特定的转发策略用于平衡不同转发
接口实例之间的负载;
[0043] 第三发送模块,用于向所述终端返回所述目标转发接口实例的目标网络标识。
[0044] 第六方面,本申请实施例提供一种数据库管理系统,包括第一服务器、第二服务器和终端,其中:
[0045] 所述第一服务器,用于确定所述第一服务器上部署的至少两个转发接口实例;在每一所述转发接口实例启动的情况下,向所述第二服务器发送每一所述转发接口实例的网
络标识;接收所述终端发送的数据库访问请求;其中,所述数据库访问请求至少携带目标网
络标识;所述目标网络标识为所述第二服务器通过检测所述至少两个转发接口实例并按照
特定的转发策略从检测结果中确定的;根据所述目标网络标识,确定对应的目标转发接口
实例;通过所述目标转发接口实例,将所述数据库访问请求发送到目标数据库;接收所述目
标数据库的反馈数据;所述特定的转发策略用于平衡不同转发接口实例之间的负载;
[0046] 所述第二服务器,用于根据所述第一服务器发送的至少两个网络标识,确定每一所述网络标识对应的转发接口实例;通过对每一所述转发接口实例进行检测,确定候选转
发接口实例集合;响应所述终端发送的实例地址请求,按照特定的转发策略,从所述候选转
发接口实例集合中确定目标转发接口实例;向所述终端返回所述目标转发接口实例的目标
网络标识;
[0047] 所述终端,用于响应于接收的数据库操作指令,向所述第二服务器发送实例地址请求;接收所述第二服务器返回的目标网络标识;根据所述数据库操作指令和所述目标网
络标识,生成数据库访问请求;向所述第一服务器发送所述数据库访问请求。
[0048] 第七方面,本申请实施例提供一种数据库管理设备,包括存储器和处理器,所述存储器存储有可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述第一服
务器侧数据库管理方法中的步骤,或者,所述处理器执行所述程序时实现上述第二服务器
侧数据库管理方法中的步骤。
[0049] 第八方面,本申请实施例提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述第一服务器侧数据库管理方法中的步骤,或者,该
计算机程序被处理器执行时实现上述第二服务器侧数据库管理方法中的步骤。
[0050] 本申请实施例提供的技术方案带来的有益效果至少包括:
[0051] 在本申请实施例中,首先,第一服务器接收终端发送的携带目标网络标识的访问请求,其中所述目标网络标识为第二服务器通过检测部署在所述第一服务器上的至少两个
转发接口实例并按照特定的转发策略从检测结果中确定的;然后,根据所述目标网络标识,
确定对应的目标转发接口实例;再通过所述目标转发接口实例,将所述数据库访问请求发
送到目标数据库;最后,接收所述目标数据库的反馈数据;如此,通过第一服务器部署多个
转发接口实例,在终端需要访问数据库的时候,通过第二服务器获取目标网络标识,以通过
对应的目标转发接口实例将数据库访问请求转发,实现了一种基于B/S(Browser/Server,
浏览器/服务器)架构的分布式、可扩展、多实例的数据库管理技术。整个系统的扩展性、鲁
棒性、可用性都有了显著的提高,能够支持高并发场景下用户的数据库访问。

附图说明

[0052] 为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于
本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它
的附图,其中:
[0053] 图1为本申请实施例提供的一种数据库管理方法的流程示意图;
[0054] 图2为本申请实施例提供的另一种数据库管理方法的流程示意图;
[0055] 图3为本申请实施例提供的又一种数据库管理方法的流程示意图;
[0056] 图4A为本申请提供的数据库管理方法的系统框图;
[0057] 图4B为本申请实施例提供的数据库管理方法的实现流程图;
[0058] 图5为本申请实施例提供的一种数据库管理装置的组成结构示意图;
[0059] 图6为本申请实施例提供的另一种数据库管理装置的组成结构示意图;
[0060] 图7为本申请实施例提供的又一种数据库管理装置的组成结构示意图;
[0061] 图8为本申请实施例提供的一种数据库管理设备的硬件实体示意图。

具体实施方式

[0062] 为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是
本申请一部分实施例,而不是全部的实施例。以下实施例用于说明本申请,但不用来限制本
申请的范围。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下
所获得的所有其他实施例,都属于本申请保护的范围。
[0063] 在以下的描述中,涉及到“一些实施例”,其描述了所有可能实施例的子集,但是可以理解,“一些实施例”可以是所有可能实施例的相同子集或不同子集,并且可以在不冲突
的情况下相互结合。
[0064] 需要指出,本申请实施例所涉及的术语“第一\第二\第三”仅仅是区别类似的对象,不代表针对对象的特定排序,可以理解地,“第一\第二\第三”在允许的情况下可以互换
特定的顺序或先后次序,以使这里描述的本申请实施例能够以除了在这里图示或描述的以
外的顺序实施。
[0065] 本技术领域技术人员可以理解,除非另外定义,这里使用的所有术语(包括技术术语和科学术语),具有与本申请实施例所属领域中的普通技术人员的一般理解相同的意义。
还应该理解的是,诸如通用字典中定义的那些术语,应该被理解为具有与现有技术的上下
文中的意义一致的意义,并且除非像这里一样被特定定义,否则不会用理想化或过于正式
的含义来解释。
[0066] 相关技术中提出了一种数据库管理方法和装置,通过引入数据库转发接口,对终端的操作命令进行了解析和转发,完成对数据库的访问操作。相比用户直接访问数据库,该
方式通过引入转发接口,增加了终端调用的灵活性。但是,该方法存在以下缺陷:
[0067] 1、该方案的数据库转发接口为单例的,在用户访问量低时尚能够正常工作。当用户访问量增大时,由于单机的CPU、内存、带宽都比较有限,所以该接口很容易成为瓶颈,造
成用户访问缓慢,甚至服务瘫痪。
[0068] 2、根据该数据库转发接口的传入参数,从用户终端到转发接口传输的过程中,重要参数如用户名和密码没有进行加密,皆为明文传输。因此该传输过程容易被拦截攻击,造
成敏感信息泄露,目标数据库存在安全隐患。
[0069] 3、转发接口没有对SQL(Structured Query Language,结构化查询语言)语句进行基本的校验。当用户执行如删除数据库、删除表、截断表等高危命令以及全量操作时,很容
易造成数据丢失、数据篡改、数据库压力增大等问题。
[0070] 4、该方案中,没有对用户的数据库访问进行隔离。在多个用户同时对一个数据库进行操作时,如果其中某些用户访问次数过多、访问频次太高、访问数据量过大,均容易对
其他用户的访问产生影响,也容易加大数据库的负载。
[0071] 相关技术中还提出了一种基于C/S(Client/Server,客户端/服务器)架构的实时数据库管理系统,多实例数据库访问方法和装置,在数据库启动时向服务端注册信息。数据
库实例与服务端保持定期同步,并同步存入缓存中,客户端请求时,从缓存中拉取可用实例
信息,由此完成数据访问。通过分析,其主要的缺陷在于:
[0072] 1、由于为C/S架构,每台用户使用的主机上必须首先安装客户端。
[0073] 2、由于客户端中封装了转发接口,因此在网络策略层面,每台客户端所在主机必须能够连接到所有需要访问的数据库。
[0074] 由此分析,该技术方案一般局限于内网环境(如省公司访问各市公司的数据库),如果是外网用户,即使安装了客户端,也无法访问内网数据库。也就是说该技术方案的使用
场景比较有限。
[0075] 本申请实施例提供一种数据库管理方法,应用于第一服务器,所述第一服务可以为个人计算机、智能手机、ATM(Asynchronous Transfer Mode,异步传输模式)等终端甚至
是电力系统等大型设备。该方法所实现的功能可以通过设备中的处理器调用程序代码来实
现,当然程序代码可以保存在计算机存储介质中,可见,该设备至少包括处理器和存储介
质。处理器可以用于进行功耗分析的过程的处理,存储器可以用于存储进行功耗分析的过
程中需要的数据以及产生的数据。
[0076] 图1为本申请实施例提供的一种数据库管理方法的流程示意图,应用于第一服务器,如图1所示,所述方法至少包括以下步骤:
[0077] 步骤S110,确定所述第一服务器上部署的至少两个转发接口实例。
[0078] 这里,每个转发接口实例封装数据库访问接口,提供数据库连接、数据查询、数据处理等功能。多实例的转发接口实例,能够提供更多的数据库连接和更强的数据处理能力。
[0079] 步骤S120,在每一所述转发接口实例启动的情况下,向第二服务器发送每一所述转发接口实例的网络标识。
[0080] 这里,当第一服务器上的每一转发接口实例启动时,自动向第二服务器注册自己的IP地址和端口号,便于第二服务器进行统一管理。
[0081] 值得注意的是,这里第一服务器和第二服务器可以是不同的服务器,也可以是同一个服务器中的两个不同的程序模块,本申请实施例对此不作限定。
[0082] 步骤S130,接收终端发送的数据库访问请求。
[0083] 这里,所述数据库访问请求至少携带目标网络标识;所述目标网络标识为第二服务器通过检测部署在所述第一服务器上的至少两个转发接口实例并按照特定的转发策略
从检测结果中确定的。其中,特定的转发策略用于平衡不同转发接口实例之间的负载。
[0084] 这里,每个数据库转发接口部署在一台服务器中,称之为一个实例。所述第一服务器可以为一个或者多个,第一服务器为一个的情况下,第一服务器首先部署至少两个转发
接口实例,并向第二服务器注册每一转发接口实例的网络标识,从而通过引入第二服务器
对多实例进行管理,实现在终端需要访问数据库的时候通过第二服务器获取目标网络标
识。
[0085] 需要说明的是,第一服务器为多个的情况下,也可以在每个第一服务器上部署一个数据转发接口,从而实现数据转发接口的多实例部署。
[0086] 可以理解的是,第一服务器接收终端发送的数据库访问请求中还包括数据库操作指令,该数据库操作指令用于访问目标数据库。其中,不同的数据库操作指令,对应的不同
的SQL语句。数据库操作指令可以包括数据库查询指令、数据库修改指令、数据库删除指令
和数据库增加指令。在实施过程中数据库操作指令为根据实际需要设置好的操作指令,对
数据库执行相关操作。本申请实施例对此不作限定。
[0087] 步骤S140,根据所述目标网络标识,确定对应的目标转发接口实例。
[0088] 这里,所述目标网络标识可以为目标转发接口实例的IP(Internet Protocol,国际协议)地址和端口号。
[0089] 步骤S150,通过所述目标转发接口实例,将所述数据库访问请求发送到目标数据库。
[0090] 这里,通过目标转发接口实例即特定的数据库转发接口对终端的数据库访问请求进行转发,完成对数据库的操作,增加了数据库系统的调用灵活性,提高了工作效率。
[0091] 可以理解的是,转发过程不仅仅是转发,还需要封装数据库对象、开发控制层、业务层、持久层逻辑,要能够灵活支持参数拓展,本申请实施例对此不做限定。
[0092] 需要说明的是,第一服务器在数据转发接口与目标数据库之间建立网络连接。支持在转发的同时操作数据库中数据的增加、删除、查询、修改和存储过程。
[0093] 步骤S160,接收所述目标数据库的反馈数据。
[0094] 这里,第一服务器接收目标数据库的反馈数据。将反馈数据转发至终端。
[0095] 需要说明的是,多个由不同数据转发接口实例发送的数据库指令可以同时进行。例如,第一服务器同时从多个用户的终端接收到多个数据库操作指令,那么第一服务器可
以发起了对不同(或者同一个)目标数据库的增加、删除、查询、修改和存储操作,每个操作
都能同时进行。实现了对数据库的访问,完成对数据库的操作,增加了系统的调用灵活性,
提高了工作效率。
[0096] 在本申请实施例中,首先,第一服务器接收终端发送的携带目标网络标识的访问请求,其中所述目标网络标识为第二服务器通过检测部署在所述第一服务器上的至少两个
转发接口实例并按照特定的转发策略从检测结果中确定的;然后,根据所述目标网络标识,
确定对应的目标转发接口实例;再通过所述目标转发接口实例,将所述数据库访问请求发
送到目标数据库;最后,接收所述目标数据库的反馈数据;如此,通过第一服务器部署多个
转发接口实例,在终端需要访问数据库的时候,通过第二服务器获取目标网络标识,以通过
对应的目标转发接口实例将数据库访问请求转发,实现了一种基于B/S架构的分布式、可扩
展、多实例的数据库管理技术。整个系统的扩展性、鲁棒性、可用性都有了显著地提高,能够
支持高并发场景下用户的数据库访问。
[0097] 图2为本申请实施例提供的另一种数据库管理方法的流程示意图,如图2所述,所述方法至少包括以下步骤:
[0098] 步骤S201,第一服务器确定部署的至少两个转发接口实例。
[0099] 这里,每个转发接口实例封装数据库访问接口,提供数据库连接、数据查询、数据处理等功能。多实例的转发接口实例,能够提供更多的数据库连接和更强的数据处理能力。
[0100] 步骤S202,在每一转发接口实例启动的情况下,向第二服务器发送每一转发接口实例的网络标识。
[0101] 这里,当第一服务器上的每一转发接口实例启动时,自动向第二服务器注册自己的IP地址和端口号,便于第二服务器进行统一管理。
[0102] 值得注意的是,这里第一服务器和第二服务器可以是不同的服务器,也可以是同一个服务器中的两个不同的程序模块,本申请实施例对此不作限定。
[0103] 步骤S203,第二服务器根据第一服务器发送的至少两个网络标识,确定每一所述网络标识对应的转发接口实例。
[0104] 这里,每一所述网络标识为在每一所述转发接口实例启动的情况下由所述第一服务器向所述第二服务器发送的。
[0105] 步骤S204,第二服务器通过对每一所述转发接口实例进行检测,确定候选转发接口实例集合。
[0106] 这里,第二服务器会定时对每一所述转发接口实例进行心跳检测,将满足特定服务状态的每一所述转发接口实例作为候选转发接口实例集合,其中,所述特定服务状态表
征所述转发接口实例的负载未超过最大阈值,表示实例可用,不存在进程卡死等情况。如果
某一实例不满足特定服务状态,第二服务器将该实例标记为失败。失败的实例节点在分配
时不会被选中。这样,第二服务器就维护了一个可用的实例列表地址即候选转发接口实例
集合。
[0107] 步骤S205,终端接收数据库操作指令。
[0108] 这里,用户在浏览器发起对数据库的操作指令,如SELECT * FROM TABLE A LIMIT 10(从表A中选择前10个数据)。
[0109] 步骤S206,终端通过脚本语言对所述操作指令进行校验过滤。
[0110] 这里,浏览器前端通过脚本语言(如JavaScript高级编程语言)首先会对用户SQL语句进行基本的校验,提前过滤一些不符合语法规范的SQL语句、高危命令和全量操作命
令。其中高危命令可以包括删除库、删除表、修改关键信息、查看敏感信息等容易引起数据
丢失或敏感信息泄露的命令。
[0111] 步骤S207,终端通过缓存系统检查当前用户访问所述目标数据库的访问限制信息。
[0112] 这里,访问限制信息包括访问总次数、每秒访问次数、访问数据量等,也称为配额指标。其中,访问总次数用来控制定时器每个重置间隔内,用户可以总共请求多少次;每秒
访问次数防止用户在短时间内发起大量请求,造成资源利用率和系统压力急剧上升的情
况;访问数据量主要指从数据库中获取的数据条数,该条数会在数据库返回后进行计算,并
从配额指标中进行扣减。
[0113] 需要说明的是,当SQL语句通过校验过滤后,终端向缓存系统发起请求,检查用户的配额指标是否足够。通过引入缓存系统对每个用户的配额指标进行预置,并通过定时器
定时重置(如每天重置一次)。在实现用户配额管理的同时,能够有效地提高访问并发量,并
减轻数据库的压力。
[0114] 值得注意的是,这里的缓存系统可以部署在不同于第一服务器和第二服务器的另外的服务器上,一般通过外置的服务器如Redis(Remote Dictionary Server,远程字典服
务)实现。
[0115] 步骤S208,在访问限制信息满足特定条件的情况下,终端向第二服务器发送实例地址请求。
[0116] 这里,当用户的访问限制信息即配额指标充足时,终端向第二服务器请求一个可用的实例地址,用来为用户的数据库访问请求服务。
[0117] 在所述访问总次数达到第一阈值、所述每秒访问总次数达到第二阈值或所述访问数据量达到第三阈值的情况下,不向所述第二服务器发送所述实例地址请求。其中,第一阈
值、第二阈值和第三阈值为根据实际网络情况设定。
[0118] 步骤S209,第二服务器按照特定的转发策略,从候选转发接口实例集合中确定目标转发接口实例。
[0119] 这里,第二服务器通过定时检查部署在第一服务器上的多个转发接口实例各自的服务状态,从而维护了一个服务可用的候选转发接口实例集合。然后按照特定的转发策略
选择目标转发接口实例。其中,转发策略可以为根据哈希算法的计算结果选择最优的转发
接口实例、或者根据连接数最小的转发接口实例、或者从候选转发接口实例集合中随机选
择或轮询选择一个转发接口实例。
[0120] 步骤S210,第二服务器向终端返回目标转发接口实例的目标网络标识。
[0121] 这里,第二服务器在接收到终端的实例地址请求后,采用特定的转发策略,选择一个可用实例地址进行返回。
[0122] 步骤S211,终端根据所述数据库操作指令和所述目标网络标识,生成数据库访问请求。
[0123] 步骤S212,终端通过对称加密方式对数据库访问请求中的连接敏感信息进行加密。
[0124] 这里,加密采用常见的对称加密方式,对称加密方式有着计算量小,加密效率高等优点。
[0125] 步骤S213,终端向第一服务器发送数据库访问请求。
[0126] 这里,终端将用户发送的数据库连接敏感信息(如用户名、密码)加密后,向该第一服务器发送数据库访问请求。
[0127] 步骤S214,第一服务器按照约定的密钥对所述数据库访问请求进行解密。
[0128] 步骤S215,第一服务器根据目标网络标识,确定对应的目标转发接口实例。
[0129] 步骤S216,第一服务器通过目标转发接口实例,按照数据库操作指令对目标数据库进行数据操作。
[0130] 这里,该目标转发接口实例收到请求后,根据约定的密钥进行解密,然后转发到相应数据库进行数据操作。
[0131] 步骤S217,目标转发接口实例接收所述目标数据库的反馈数据。
[0132] 在本申请实施例中,基于B/S架构提出了分布式、可扩展、多实例的数据库管理方案,在高并发场景下有显著的性能优势;对传输过程中的数据库访问敏感信息进行了加密,
减少了信息被劫持、数据库被攻击的风险;通过SQL校验机制,对SQL进行了基本语法、高危
命令和全量操作命令的校验,提前过滤了不符合规范的SQL,减少了数据库连接操作,降低
了用户误操作带来的严重后果;通过数据库访问配额模型,对用户访问进行了限制,降低了
用户资源抢占的风险,减少了数据库的压力;通过引入缓存系统,既达到了配额管理的目
的,又不对现有系统造成更大的负载。
[0133] 图3为本申请实施例提供的又一种数据库管理方法的流程示意图,如图3所示,上述步骤S209“按照特定的转发策略,从候选转发接口实例集合中确定目标转发接口实例”可
以包括以下步骤S310至步骤S340至少之一:
[0134] 步骤S310,按照实例地址请求的源网络地址,分别通过哈希算法计算候选转发接口实例集合中每一候选转发接口实例的结果;根据结果,确定目标转发接口实例。
[0135] 这里,按照用户请求的来源IP,根据哈希算法的计算结果将请求分配到其中一台可用实例上。
[0136] 步骤S320,确定每一候选转发接口实例当前的连接数量;将当前的连接数量最小的候选转发接口实例,作为目标转发接口实例。
[0137] 这里,第二服务器会维护每个转发接口实例当前处理的连接数量,当新的请求过来时,从可用实例列表中选取当前连接数量最小的转发接口实例进行服务,这样能够更好
地平衡各个实例之间的负载。
[0138] 步骤S330,从候选转发接口实例集合中轮流选择一个实例作为目标转发接口实例。
[0139] 这里,从所有可用实例列表中轮流选择一台进行分配。
[0140] 步骤S340,从候选转发接口实例集合中随机选择一个实例作为目标转发接口实例。
[0141] 这里,从所有可用实例列表中随机选择一台进行分配。
[0142] 下面结合一个具体实施例对上述数据库管理方法进行说明,然而值得注意的是,该具体实施例仅是为了更好地说明本申请,并不构成对本申请的不当限定。
[0143] 本申请实施例基于B/S架构,提出一种多实例的数据库管理方式,扩大了使用场景,支持外网用户访问。主要原理为引入微服务理念,支持转发接口的多实例部署,并通过
注册中心完成各实例的服务注册和发现。同时,针对敏感信息泄露问题,使用对称加密算法
对传输过程进行了加密,降低了敏感数据泄露的风险。随后,针对几种主要的SQL使用场景,
进行了SQL的基本校验,防范了SQL执行风险,并减轻了数据库压力。最后,提出了一种用户
访问数据库的配额模型。该模型配合缓存系统,对每个用户的请求配额进行了控制,有效进
行了访问隔离。针对现有方案的不足,从以下几点进行了改进:
[0144] 1)本申请实施例支持在第一服务器上进行转发接口的多实例部署,以分布式的方式,解决单实例服务性能瓶颈的问题。为了方便管理多实例,引入了注册中心。该注册中心
部署在上述第二服务器上,或者,在一些极端的情况下也可以部署在第一服务器的另一部
分进程模块中。
[0145] 当每个实例启动时,会将实例的IP地址和端口号注册到注册中心。当用户需要访问时,首先访问注册中心,注册中心根据某些算法从可用列表选择一个实例节点。请求会被
转发至该实例节点,然后进行处理。这样每个实例节点均有一定几率被分配到请求,解决了
性能瓶颈的问题。
[0146] 2)本申请实施例在转发接口实例中加入了对称密钥算法。任何转发到转发接口实例的请求,对于请求中的敏感信息均统一进行了加密。转发接口接收到请求后,通过密钥进
行解密,再转发到数据库进行操作。通过用户浏览器和转发接口实例约定相同的密钥,可以
实现传输过程中的加解密操作。该过程保障了敏感信息不被窃取,有效防止了潜在的数据
泄露问题。
[0147] 3)针对高危命令或者全量操作命令,本申请实施例首先对SQL语法进行了必要的语法检查。随后根据主要SQL场景,提出了一系列校验规则,对高危命令或者全量操作命令
进行了限制,防范了用户误操作带来的问题。通过提前校验过滤,也在一定程度上减少了数
据库连接,降低了数据库压力。
[0148] 4)针对现有技术方案无法解决访问隔离的问题,本申请实施例提出了一种用户访问数据库的配额模型,并引入了缓存系统。通过预置用户的访问总次数、每秒访问次数、访
问数据量,有效地对用户的请求进行了控制。每次用户访问时,需要在缓存系统中扣除相应
配额。当上述配额指标任意一项为0时,系统拒绝该用户访问,从而在一定程度上避免了资
源抢占的问题。
[0149] 5)整体基于B/S架构,在保障系统高可用、多实例、可扩展的同时,通过引入转发接口,支持外网用户的访问。相比现有C/S架构,用户无需安装客户端,也无需开通网络策略,
仅需保证能连接到转发接口实例就能够访问数据库。
[0150] 图4A为本申请提供的数据库管理方法的系统框图。如图4A所示,该系统包括浏览器41、缓存系统42、注册中心43、转发接口实例44和数据库45,其中:
[0151] 浏览器41,为用户终端的浏览器,用于接收用户的数据库访问请求,同时浏览器前端通过JS(JavaScript,高级编程语言)脚本提供基本的SQL校验。
[0152] 缓存系统42,用于提供用户配额管理。一般部署在其他服务器上如Redis服务器。
[0153] 注册中心43,部署在第二服务器上,用于管理所有转发接口实例的IP地址和端口号,并提供健康检查。
[0154] 转发接口实例44,部署在第一服务器上,用于封装数据库访问接口,提供数据库连接、数据查询、数据处理等功能,启动时会注册到注册中心43。这里可以将多个转发接口实
例44部署中第一服务器上,也可以设置多个第一服务器,每个第一服务器中部署一个转发
接口实例44。通过部署多实例的转发接口实例,能够提供更多的数据库连接和更强的数据
处理能力。
[0155] 数据库45为需要查询的数据库实例,执行用户输入的数据库访问请求,并返回结果。
[0156] 图4B为本申请实施例提供的数据库管理方法的实现流程图。如图4B所示,所述方法包括以下步骤:
[0157] 步骤S401,转发接口实例44向注册中心43注册。
[0158] 每个数据库转发接口部署在一台服务器中,称之为一个实例。当每一转发接口实例启动时,自动向注册中心注册自己的IP地址和端口号,便于注册中心统一管理。
[0159] 步骤S402,注册中心43检测所有转发接口实例44的服务状态。
[0160] 注册中心会定时对每个实例进行健康检查和心跳检测,当实例服务不可用时,注册中心将该实例标记为失败。失败的实例节点在分配时不会被选中。这样,注册中心就维护
了一个可用的实例列表地址,例如:
[0161] 10.139.8.214 失败(Failed);
[0162] 10.139.8.215 成功(OK);
[0163] 10.139.8.216 成功(OK);
[0164] 10.139.8.217成功(OK)。
[0165] 步骤S403,用户在浏览器41发起对数据库45的操作指令。
[0166] 用户在浏览器前端页面输入访问数据库的操作指令,如SQL语句“SELECT * FROM TABLE A LIMIT 10(从表A中选择前10个数据)”。
[0167] 浏览器前端通过JS脚本首先会对用户SQL进行以下基本的校验,能够提前过滤一些不符合语法规范的SQL、高危命令和全量操作命令,如:
[0168] 1)SQL语法校验,该SQL是否符合基本的SQL语法规范,如不符合,则直接丢弃,并返回错误信息。
[0169] 2)检查DROP DATABASE(删除数据库)、DROP TABLE(删除表)、TRUNCATE TABLE(截断表)等高危命令。
[0170] 3)SELECT(选择)操作必须强制加上WHERE条件或者LIMIT以限制查询返回条数。
[0171] 4)DELETE(删除)、UPDATE(更新)操作必须强制加上WHERE 条件以防止数据全量删除或全量修改。
[0172] 步骤S404,浏览器41向缓存系统42请求检测用户配额。
[0173] 当基本SQL校验通过后,浏览器会向缓存系统中发起请求,检查用户配额是否足够。其中,用户配额主要包括三个配额指标:访问总次数、每秒访问次数、访问数据量。每个
用户的配额会事先在缓存系统中进行预置,并通过定时器定时重置(如每天重置一次)。
[0174] 配额指标的数据模型如下:
[0175] {
[0176] "users" : [{
[0177] "user" : ''xiaoming", // 用户名
[0178] "totalQuota" : 100, // 访问总次数
[0179] "visitRate" : 2, // 每秒访问次数
[0180] "totalData" : 100000, // 访问数据量
[0181] },
[0182] {
[0183] "user" : xiaogang",
[0184] "totalQuota" : 300,
[0185] "visitRate" : 5,
[0186] "totalData" : 200000
[0187] }],
[0188] "refreshTime" : 24 // 多久重置配额
[0189] }
[0190] 其中,相应地配额指标的定义如下:
[0191] 1)访问总次数:用来控制定时器每个重置间隔内,用户可以总共请求多少次。例如每个用户每天访问总次数为100次。这样就避免了用户频繁访问数据库、黑客恶意攻击等场
景,减轻了系统的压力。
[0192] 2)每秒访问次数:防止用户在短时间内发起大量请求,造成资源利用率和系统压力急剧上升的情况。通过控制每秒访问次数,可以使用户的访问变得更加平滑和均匀,更好
地分摊整个系统的负载,达到流量削峰的目的。
[0193] 3)访问数据量:主要指从数据库中获取的数据条数,该条数会在数据库返回后进行计算,并从配额中进行扣减。当用户访问数据量过大且超过配额时,系统也会拒绝服务。
该指标能够防止用户一次访问大量数据,造成转发接口内存溢出、网络带宽占满、数据库服
务卡死等严重后果。
[0194] 需要说明的是,refreshTime指系统重置配额的间隔。每当到达下一刷新间隔时,不管当前配额是否用完,都会重置配额。这里主要指访问总次数和访问数据量,而每秒访问
次数是每秒都会重置的。
[0195] 步骤S405,缓存系统42返回检查结果。
[0196] 如果上述配额指标中有任意一项的配额不足,缓存系统则直接拒绝用户的访问请求。如果配额充足,则在配额中扣除相应的部分,并转发请求。
[0197] 使用缓存系统的优势在于,当用户访问量增大时,可以直接在内存中对配额进行检查和扣减,不用访问数据库。在实现用户配额管理的同时,能够有效地提高访问并发量,
并减轻数据库的压力。
[0198] 步骤S406,浏览器41向注册中心43请求实例地址。
[0199] 当用户配额充足时,浏览器向注册中心请求一个可用的实例地址,用来为用户的请求服务。注册中心本身是集群化、高可用的,以避免注册中心成为整个系统的瓶颈。
[0200] 步骤S407,注册中心43根据策略返回有效的实例地址。
[0201] 注册中心根据当前情况,采用特定的转发策略,选择一个可用实例地址进行返回。下面是几种常见的转发策略:
[0202] IP(Internet Protocol,网际协议) HASH(哈希):按照用户请求的来源IP地址,根据哈希算法的计算结果,将请求分配到其中一台可用实例上。
[0203] 随机选择:从所有可用实例列表中随机选择一台进行分配。
[0204] 轮询:从所有可用实例列表中轮流选择一台进行分配。
[0205] 最小连接数:注册中心会维护每个实例当前处理的连接数量,当新的请求过来时,从可用实例列表中选取当前连接数最小的实例进行服务,这样能够更好地平衡实例之间的
负载。
[0206] 步骤S408,浏览器41对接收的数据库操作指令进行加密,并发送给转发接口实例44。
[0207] 浏览器将用户发送的数据库连接敏感信息(如用户名、密码)加密后,向该注册中心返回的有效实例地址发送数据库访问请求。
[0208] 在此加密采用常见的对称加密方式,对称加密方式有着计算量小,加密效率高等优点。其中,AES(Advanced Encryption Standard,高级加密标准)具有比较好的安全性、效
率、灵活性,是目前最安全的对称加密算法之一。
[0209] 步骤S409,转发接口实例44对接收的数据库操作指令进行解密,并转发到相应数据库45。
[0210] 上述有效的实例地址收到数据库操作指令后,根据约定的密钥进行解密,得到未加密的数据库操作指令如“SELECT * FROM TABLE A LIMIT 10”,然后对数据库进行相应的
数据操作。
[0211] 本申请实施例提出了一种分布式、可扩展、多实例的数据库管理技术。解决了现有技术方案下单实例服务存在性能瓶颈的问题。通过引入注册中心,对多实例进行了管理。相
比现有技术方案,整个系统的扩展性、鲁棒性、可用性都有了显著的提高,能够支持高并发
场景下用户的数据库访问。
[0212] 本申请实施例基于B/S架构,无需安装客户端。对外网用户进行了支持,不局限于内网如一个省市公司内部的访问。用户所在主机不用直接连接数据库,而是通过连接转发
接口实例,由实例去连接数据库来完成数据访问。在保障内网数据库安全的前提下,支持外
网用户对内网数据库的管理和访问。
[0213] 本申请实施例的数据库管理技术基于B/S架构,是分布式、可扩展、多实例的,相比现有技术方案的单实例,在高并发场景下有显著的性能优势;对传输过程中的数据库访问
敏感信息进行了加密,减少了信息被劫持、数据库被攻击的风险;通过SQL校验机制,对SQL
进行了基本语法、高危命令和全量操作命令的校验,提前过滤了不符合规范的SQL,减少了
数据库连接操作,降低了用户误操作带来的严重后果;通过数据库访问配额模型,对用户访
问进行了限制,降低了用户资源抢占的风险,减少了数据库的压力;通过引入缓存系统,既
达到了配额管理的目的,又不对现有系统造成更大的负载。
[0214]  基于前述的实施例,本申请实施例再提供一种数据库管理装置,应用于第一服务器,所述装置包括所包括的各模块、以及各模块所包括的各单元,可以通过第一服务器中的
处理器来实现;当然也可通过具体的逻辑电路实现;在实施的过程中,处理器可以为中央处
理器(Central Processing Unit,CPU)、微处理器(Micro Processing Unit,MPU)、数字信
号处理器(Digital Signal Processor,DSP)或现场可编程门阵列(Field Programmable 
Gate Array,FPGA)等。
[0215] 图5为本申请实施例提供的一种数据库管理装置的组成结构示意图,如图5所示,所述装置500包括第一确定模块510、第一发送模块520、第一接收模块530、第二确定模块
540、第二发送模块550和第二接收模块560,其中:
[0216] 所述第一确定模块510,用于确定所述第一服务器上部署的至少两个转发接口实例;
[0217] 所述第一发送模块520,用于在每一所述转发接口实例启动的情况下,向第二服务器发送每一所述转发接口实例的网络标识;
[0218] 所述第一接收模块530,用于接收终端发送的数据库访问请求;其中,所述数据库访问请求至少携带目标网络标识;所述目标网络标识为第二服务器通过检测部署在所述第
一服务器上的至少两个转发接口实例并按照特定的转发策略从检测结果中确定的;
[0219] 所述第二确定模块540,用于根据所述目标网络标识,确定对应的目标转发接口实例;
[0220] 所述第二发送模块550,用于通过所述目标转发接口实例,将所述数据库访问请求发送到目标数据库;
[0221] 所述第二接收模块560,用于接收所述目标数据库的反馈数据。
[0222] 在一些可能的实施例中,所述数据库访问请求还包括对所述目标数据库的操作指令,所述第二发送模块550还用于通过所述目标转发接口实例,按照所述操作指令对所述目
标数据库进行数据操作。
[0223] 在一些可能的实施例中,所述数据库访问请求中包括所述目标数据库的连接敏感信息,所述装置500还包括解密模块,用于按照约定的密钥对所述数据库访问请求进行解
密;相应地,所述第二发送模块550还用于通过所述目标转发接口实例,将解密后的数据库
访问请求发送到所述目标数据库。
[0224] 这里需要指出的是:以上装置实施例的描述,与上述方法实施例的描述是类似的,具有同方法实施例相似的有益效果。对于本申请装置实施例中未披露的技术细节,请参照
本申请方法实施例的描述而理解。
[0225] 基于前述的实施例,本申请实施例再提供一种数据库管理装置,应用于第二服务器,所述装置包括所包括的各模块、以及各模块所包括的各单元,可以通过第二服务器中的
处理器来实现;当然也可通过具体的逻辑电路实现;在实施的过程中,处理器可以为中央处
理器、微处理器、数字信号处理器或现场可编程门阵列等。
[0226] 图6为本申请实施例提供的另一种数据库管理装置的组成结构示意图,如图6所示,所述装置600包括第三确定模块610、第四确定模块620、第五确定模块630和第三发送模
块640,其中:
[0227] 所述第三确定模块610,用于根据第一服务器发送的至少两个网络标识,确定每一所述网络标识对应的转发接口实例;
[0228] 所述第四确定模块620,用于通过对每一所述转发接口实例进行检测,确定候选转发接口实例集合;
[0229] 所述第五确定模块630,用于响应终端发送的实例地址请求,按照特定的转发策略,从所述候选转发接口实例集合中确定目标转发接口实例;所述特定的转发策略用于平
衡不同转发接口实例之间的负载;
[0230] 所述第三发送模块640,用于向所述终端返回所述目标转发接口实例的目标网络标识。
[0231] 在一些可能的实施例中,所述第四确定模块620,还用于通过定时对每一所述转发接口实例进行心跳检测,将满足特定服务状态的每一所述转发接口实例作为候选转发接口
实例集合。
[0232] 在一些可能的实施例中,所述第五确定模块630包括计算单元和第一确定单元,其中:所述计算单元,用于按照所述实例地址请求的源网络地址,分别通过哈希算法计算所述
候选转发接口实例集合中每一所述候选转发接口实例的结果;所述第一确定单元,用于根
据所述结果,确定所述目标转发接口实例。
[0233] 在一些可能的实施例中,所述第五确定模块630包括第二确定单元和第三确定单元,其中:所述第二确定单元,用于确定每一所述候选转发接口实例当前的连接数量;所述
第三确定单元,用于将当前的连接数量最小的候选转发接口实例,作为所述目标转发接口
实例。
[0234] 在一些可能的实施例中,所述第五确定模块630还用于从所述候选转发接口实例集合中轮流选择一个实例作为所述目标转发接口实例;或者还用于从所述候选转发接口实
例集合中随机选择一个实例作为所述目标转发接口实例。
[0235] 这里需要指出的是:以上装置实施例的描述,与上述方法实施例的描述是类似的,具有同方法实施例相似的有益效果。对于本申请装置实施例中未披露的技术细节,请参照
本申请方法实施例的描述而理解。
[0236] 基于前述的实施例,本申请实施例再提供一种数据库管理装置,应用于终端,所述装置包括所包括的各模块、以及各模块所包括的各单元,可以通过终端中的处理器来实现;
当然也可通过具体的逻辑电路实现;在实施的过程中,处理器可以为中央处理器、微处理
器、数字信号处理器或现场可编程门阵列等。
[0237] 图7为本申请实施例提供的又一种数据库管理装置的组成结构示意图,如图7所示,所述装置700包括第四发送模块710、第三接收模块720、生成模块730和第五发送模块
740,其中:
[0238] 所述第四发送模块710,用于响应于接收的数据库操作指令,向第二服务器发送实例地址请求;
[0239] 所述第三接收模块720,用于接收所述第二服务器返回的目标网络标识;其中,所述目标网络标识为所述第二服务器通过检测所述至少两个转发接口实例,并按照特定的转
发策略从检测结果中确定的;所述特定的转发策略用于平衡不同转发接口实例之间的负
载;
[0240] 所述生成模块730,用于根据所述数据库操作指令和所述目标网络标识,生成数据库访问请求;
[0241] 所述第五发送模块740,用于向所述第一服务器发送所述数据库访问请求,以通过所述第一服务器上部署的目标转发接口实例将所述数据库访问请求发送到目标数据库。
[0242] 在一些可能的实施例中,所述装置700还包括检查模块和第六发送模块,其中:所述检查模块,用于在接收到所述数据库操作指令之后,通过缓存系统检查当前用户访问所
述目标数据库的访问限制信息;所述第六发送模块,用于在所述访问限制信息满足特定条
件的情况下,向所述第二服务器发送所述实例地址请求。
[0243] 在一些可能的实施例中,所述访问限制信息至少包括:访问总次数、每秒访问次数和访问数据量,所述第六发送模块还用于在所述访问总次数未达到第一阈值、所述每秒访
问总次数未达到第二阈值且所述访问数据量未达到第三阈值的情况下,向所述第二服务器
发送所述实例地址请求。
[0244] 在一些可能的实施例中,所述装置700还包括拒绝模块,用于在所述访问总次数达到第一阈值、所述每秒访问总次数达到第二阈值或所述访问数据量达到第三阈值的情况
下,不向所述第二服务器发送所述实例地址请求。
[0245] 在一些可能的实施例中,所述装置700还包括校验过滤模块和第七发送模块,其中:所述校验过滤模块,用于通过脚本语言JS对所述操作指令进行校验过滤;所述第七发送
模块,用于在所述操作指令校验通过后,向所述第二服务器发送所述实例地址请求。
[0246] 在一些可能的实施例中,所述数据库操作指令中包括目标数据库的连接敏感信息,所述装置700还包括加密模块,用于在接收到所述数据库操作指令之后,通过对称加密
方式对所述连接敏感信息进行加密。
[0247] 这里需要指出的是:以上装置实施例的描述,与上述方法实施例的描述是类似的,具有同方法实施例相似的有益效果。对于本申请装置实施例中未披露的技术细节,请参照
本申请方法实施例的描述而理解。
[0248] 需要说明的是,本申请实施例中,如果以软件功能模块的形式实现上述数据库管理方法,并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基
于这样的理解,本申请实施例的技术方案本质上或者说对相关技术做出贡献的部分可以以
软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以
使得设备执行本申请各个实施例所述方法的全部或部分。而前述的存储介质包括:U盘、移
动硬盘、只读存储器(Read Only Memory,ROM)、磁碟或者光盘等各种可以存储程序代码的
介质。这样,本申请实施例不限制于任何特定的硬件和软件结合。
[0249] 对应地,本申请实施例提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述实施例中任一所述数据库管理方法中的步骤。
[0250] 对应地,本申请实施例中,还提供了一种芯片,所述芯片包括可编程逻辑电路和/或程序指令,当所述芯片运行时,用于实现上述实施例中任一所述数据库管理方法中的步
骤。
[0251] 对应地,本申请实施例中,还提供了一种计算机程序产品,当该计算机程序产品被数据库管理设备的处理器执行时,其用于实现上述实施例中任一所述数据库管理方法中的
步骤。
[0252] 基于同一技术构思,本申请实施例提供一种数据库管理设备,用于实施上述第一服务器侧、第二服务器侧或者终端侧方法实施例记载的数据库管理方法。图8为本申请实施
例提供的一种数据库管理设备的硬件实体示意图,如图8所示,所述设备800包括存储器810
和处理器820,所述存储器810存储有可在处理器820上运行的计算机程序,所述处理器820
执行所述程序时实现本申请实施例任一所述数据库管理方法中的步骤。
[0253] 存储器810配置为存储由处理器820可执行的指令和应用,还可以缓存待处理器820以及设备中各模块待处理或已经处理的数据,可以通过闪存(FLASH)或随机访问存储器
(Random Access Memory,RAM)实现。
[0254] 处理器820执行程序时实现上述任一项的数据库管理方法的步骤。处理器820通常控制设备800的总体操作。
[0255] 上述处理器可以为特定用途集成电路(Application Specific Integrated Circuit,ASIC)、数字信号处理器(Digital Signal Processor,DSP)、数字信号处理装置
(Digital Signal Processing Device,DSPD)、可编程逻辑装置(Programmable Logic 
Device,PLD)、现场可编程门阵列(Field Programmable Gate Array,FPGA)、中央处理器
(Central Processing Unit,CPU)、控制器、微控制器、微处理器中的至少一种。可以理解
地,实现上述处理器功能的电子器件还可以为其它,本申请实施例不作具体限定。
[0256] 上述计算机存储介质/存储器可以是只读存储器(Read Only Memory,ROM)、可编程只读存储器(Programmable Read‑Only Memory,PROM)、可擦除可编程只读存储器
(Erasable Programmable Read‑Only Memory,EPROM)、电可擦除可编程只读存储器
(Electrically Erasable Programmable Read‑Only Memory,EEPROM)、磁性随机存取存储
器(Ferromagnetic Random Access Memory,FRAM)、快闪存储器(Flash Memory)、磁表面存
储器、光盘、或只读光盘(Compact Disc Read‑Only Memory,CD‑ROM)等存储器;也可以是包
括上述存储器之一或任意组合的各种设备,如移动电话、计算机、平板设备、个人数字助理
等。
[0257] 这里需要指出的是:以上存储介质和设备实施例的描述,与上述方法实施例的描述是类似的,具有同方法实施例相似的有益效果。对于本申请存储介质和设备实施例中未
披露的技术细节,请参照本申请方法实施例的描述而理解。
[0258] 应理解,说明书通篇中提到的“一个实施例”或“一实施例”意味着与实施例有关的特定特征、结构或特性包括在本申请的至少一个实施例中。因此,在整个说明书各处出现的
“在一个实施例中”或“在一实施例中”未必一定指相同的实施例。此外,这些特定的特征、结
构或特性可以任意适合的方式结合在一个或多个实施例中。应理解,在本申请的各种实施
例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功
能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。上述本申请实施例
序号仅仅为了描述,不代表实施例的优劣。
[0259] 需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而
且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有
的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该
要素的过程、方法、物品或者装置中还存在另外的相同要素。
[0260] 在本申请所提供的几个实施例中,应该理解到,所揭露的设备和方法,可以通过其它的方式实现。以上所描述的设备实施例仅仅是示意性的,例如,所述单元的划分,仅仅为
一种逻辑功能划分,实际实现时可以有另外的划分方式,如:多个单元或组件可以结合,或
可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的各组成部
分相互之间的耦合、或直接耦合、或通信连接可以是通过一些接口,设备或单元的间接耦合
或通信连接,可以是电性的、机械的或其它形式的。上述作为分离部件说明的单元可以是、
或也可以不是物理上分开的,作为单元显示的部件可以是、或也可以不是物理单元;既可以
位于一个地方,也可以分布到多个网络单元上;可以根据实际的需要选择其中的部分或全
部单元来实现本申请实施例方案的目的。
[0261] 另外,在本申请各实施例中的各功能单元可以全部集成在一个处理单元中,也可以是各单元分别单独作为一个单元,也可以两个或两个以上单元集成在一个单元中;上述
集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。或
者,本申请上述集成的单元如果以软件功能模块的形式实现并作为独立的产品销售或使用
时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实施例的技术方
案本质上或者说对相关技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软
件产品存储在一个存储介质中,包括若干指令用以使得设备自动测试线执行本申请各个实
施例所述方法的全部或部分。而前述的存储介质包括:移动存储设备、ROM、磁碟或者光盘等
各种可以存储程序代码的介质。
[0262] 本申请所提供的几个方法实施例中所揭露的方法,在不冲突的情况下可以任意组合,得到新的方法实施例。本申请所提供的几个方法或设备实施例中所揭露的特征,在不冲
突的情况下可以任意组合,得到新的方法实施例或设备实施例。
[0263] 以上所述,仅为本申请的实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在
本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。