数据库动态切换方法、装置、计算机设备和存储介质
技术领域
本申请涉及数据库技术领域,特别是涉及一种数据库动态切换方法、装置、计算机设备和存储介质。
背景技术
在使用JAVA开发的WEB项目时常常使用关系型数据库,在开发复杂的项目的过程中,由于常常需要维护不同的数据,或者引入第三方数据等,所以需要多个数据库协同工作。传统数据库之间的切换需要研发人员手动对数据库进行指定,且需要事先配置多套配置文件,无法自动便捷地对数据库进行切换。
发明内容
基于此,有必要针对上述技术问题,提供一种能够自动便捷地对数据库进行切换的数据库动态切换方法、装置、计算机设备和存储介质。
一种数据库动态切换方法,所述方法包括:
接收终端发送的数据库访问请求,对所述数据库访问请求进行拦截,获取与所述数据库访问请求对应的目标方法;
检测所述目标方法中是否存在方法注解信息;
当检测到所述目标方法中存在方法注解信息时,获取所述方法注解信息中的第一目标数据库参数信息;
遍历预先建立的映射关系表,查找与所述第一目标数据库参数信息对应的第一目标数据库的第一目标标识;
获取所述终端当前连接的第一数据库的第一标识;
将所述第一标识与所述第一目标标识进行比对,当对比不一致时,将所述终端当前连接的数据库由所述第一数据库切换为所述第一目标数据库。
在其中一个实施例中,在所述遍历预先建立的映射关系表之前,所述方法还包括:
接收与各个数据库对应的数据库参数信息,建立并存储所述数据库的标识与所述数据库参数信息的映射关系表。
在其中一个实施例中,所述获取与所述数据库访问请求对应的目标方法,包括:
获取与所述数据库访问请求对应的目标方法和所述目标方法对应的目标类;
在检测所述目标方法中是否存在方法注解信息之后,还包括:
当检测到所述目标方法中不存在方法注解信息时,检测所述目标类中是否存在类注解信息;
当所述目标类中存在类注解信息时,获取所述类注解信息中的第二目标数据库参数信息;
遍历所述预先建立的映射关系表,查找与所述第二目标数据库参数信息对应的第二目标数据库的第二目标标识;
获取所述终端当前连接的第二数据库的第二标识;
将所述第二标识与所述第二目标标识进行比对,当对比不一致时,将所述终端当前连接的数据库由所述第二数据库切换为所述第二目标数据库。
在其中一个实施例中,在检测所述目标类中是否存在类注解信息之后,还包括:
当检测到所述目标类中不存在类注解信息时,获取参考方法集合,计算所述目标方法与所述参考方法集合中各个参考方法之间的相似度,将相似度超过预设阈值的参考方法确定为目标参考方法;
获取与所述目标参考方法对应的参考数据库的参考标识;
获取所述终端当前连接的第三数据库的第三标识;
将所述第三标识与所述参考标识进行比对,当对比不一致时,将所述终端当前连接的数据库由所述第三数据库切换为所述参考数据库。
在其中一个实施例中,在所述将所述终端当前连接的数据库由所述第一数据库切换为所述第一目标数据库之前,包括:
获取所述数据库访问请求携带的权限信息;
所述将所述终端当前连接的数据库由所述第一数据库切换为所述第一目标数据库,包括:
当所述权限信息满足所述第一目标数据库对应的预设权限要求时,将所述终端当前连接的数据库由所述第一数据库切换为所述第一目标数据库。
在其中一个实施例中,所述将所述终端当前连接的数据库由所述第一数据库切换为所述第一目标数据库,包括:
调用预先配置的数据库连接组件,根据所述数据库连接组件将所述终端当前连接的数据库由所述第一数据库切换为所述第一目标数据库。
一种数据库动态切换装置,所述装置包括:
数据库访问请求接收模块,用于接收终端发送的数据库访问请求,对所述数据库访问请求进行拦截,获取与所述数据库访问请求对应的目标方法;
第一目标数据库参数信息获取模块,用于检测所述目标方法中是否存在方法注解信息;当检测到所述目标方法中存在方法注解信息时,获取所述方法注解信息中的第一目标数据库参数信息;
第一目标数据库查找模块,用于遍历预先建立的映射关系表,查找与所述第一目标数据库参数信息对应的第一目标数据库的第一目标标识;
第一切换模块,用于获取所述终端当前连接的第一数据库的第一标识;将所述第一标识与所述第一目标标识进行比对,当对比不一致时,将所述终端当前连接的数据库由所述第一数据库切换为所述第一目标数据库。
在其中一个实施例中,所述数据库访问请求接收模块还用于获取与所述数据库访问请求对应的目标方法和目标类;所述装置还包括第二切换模块,所述第二切换模块用于当检测到所述目标方法中不存在方法注解信息时,检测所述目标类中是否存在类注解信息;当所述目标类中存在类注解信息时,获取所述类注解信息中的第二目标数据库参数信息;遍历所述预先建立的映射关系表,查找与所述第二目标数据库参数信息对应的第二目标数据库的第二目标标识;获取所述终端当前连接的第二数据库的第二标识;将所述第二标识与所述第二目标标识进行比对,当对比不一致时,将所述终端当前连接的数据库由所述第二数据库切换为所述第二目标数据库。
一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现上述任意实施例所述方法的步骤。
一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述任意实施例所述方法的步骤。
上述数据库动态切换方法中,由于预先建立了映射关系表,当接收到终端发送的数据库访问请求时,就可以获取与数据库访问请求对应的目标方法,并进一步提取目标方法中的数据库参数信息,根据数据库参数信遍历映射关系表,就可以确定终端当前想要访问的目标数据库,将与终端连接的数据库切换为该目标数据库,从而实现了对数据库自动便捷地进行切换。
附图说明
图1为一个实施例中数据库动态切换方法的应用场景图;
图2为一个实施例中数据库动态切换方法的流程示意图;
图3为另一个实施例中数据库动态切换方法的流程示意图;
图4为一个实施例中数据库动态切换装置的结构框图;
图5为一个实施例中计算机设备的内部结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
本申请提供的数据库动态切换方法,可以应用于如图1所示的应用环境中。其中,终端102通过网络与服务器104进行通信,该服务器104上可部署多个数据库。服务器104在接收到终端102发送的数据库访问请求时,对数据库访问请求进行拦截,获取与数据库访问请求对应的目标方法,检测目标方法中是否存在方法注解信息,若存在,则从方法注解信息中获取目标数据库参数信息,进一步,服务器可以遍历预先建立的映射关系表,查找与目标数据库参数信息对应的目标数据库的标识,将该标识与终端当前连接的第一数据库的标识进行比对,当比对不一致时,将终端当前连接的数据库由第一数据库切换为目标数据库。
其中,终端102可以但不限于是各种个人计算机、笔记本电脑、智能手机、平板电脑和便携式可穿戴设备,服务器104可以用独立的服务器或者是多个服务器组成的服务器集群来实现。
在一个实施例中,如图2所示,提供了一种数据库动态切换方法,以该方法应用于图1中的服务器为例进行说明,包括以下步骤:
步骤S202,接收终端发送的数据库访问请求,对数据库访问请求进行拦截,获取与数据库访问请求对应的目标方法。
其中,数据库访问请求是终端发送至服务器的用于接入数据库的请求,包括对数据库中数据的查询、修改、删除、或插入等的数据操作请求,可以为HTTP请求,也可以为其他协议的请求。
具体地,本实施例中,服务器可采用切面拦截技术对数据库访问请求进行拦截,切面拦截技术是指借助spring的切面编程技术,可增加自定义的切面拦截器,当接收到终端发送的数据库访问请求时,通过拦截器对数据库访问请求进行拦截,并获取数据库访问请求对应的目标方法。其中,数据库访问请求对应的目标方法指的是数据库访问请求中携带的对数据库进行访问的方法,该方法可以是用于对数据库进行查询的方法、对数据库进行修改的方法、对数据库进行删除的方法以及对数据库进行插入操作方法中的至少一种。
步骤S204,检测目标方法中是否存在方法注解信息,当检测到目标方法中存在方法注解信息时,获取方法注解信息中的第一目标数据库参数信息。
其中,注解是指对一个类/方法的一个扩展的模版,每个类/方法按照注解类中的规则,来为类/方法注解不同的参数,在注解中可以得到不同的类/方法中注解的各种参数与值。目标数据库参数信息指的是目标数据库对应的参数信息,不同的数据库参数信息对应不同的数据库。
在一个实施例中,目标数据库参数信息可以是数据库名称或者数据库的标识或者数据库所存储的数据类型。
在一个实施例中,可采用自定义的注解形式@DataSource("xxx"),其中,XXX为数据库参数信息,例如:
@DataSource(DataSource.db1)
@DataSource(DataSource.db2)
@DataSource(DataSource.db3)
其中,@DataSource(DataSource.db1)指向数据库1,@DataSource(DataSource.db2)指向数据库2,@DataSource(DataSource.db3)指向数据库3。服务器在获取到目标方法后,检测目标方法中是否存在方法注解信息,当目标方法中存在方法注解信息时,服务器可以对方法注解信息进行解析以获取目标数据库参数信息。
步骤S206,遍历预先建立的映射关系表,查找与第一目标数据库参数信息对应的第一目标数据库的第一目标标识。
其中,映射关系表指的对各个数据库的标识与其对应的数据库参数信息之间建立映射关系的数据表。
具体地,服务器在获取到了目标数据库参数信息后,可以遍历预先建立的映射关系表,从映射关系表中查找与第一目标数据库参数信息对应的数据库标识,将该数据库标识确定为第一目标标识,第一目标标识用于对第一目标数据库进行标识。可以理解的是,这里的第一目标数据库指的是当前数据库访问请求所需要访问的数据库。
步骤S208,获取终端当前连接的第一数据库的第一标识,将第一标识与第一目标标识进行比对,当对比不一致时,将终端当前连接的数据库由第一数据库切换为第一目标数据库。
服务器在确定了第一目标标识后,获取终端连接的第一数据库的第一标识,将该第一标识与第一目标标识进行比对,若比对一致则进行数据库切换,若比对一致则不进行数据库切换,可以理解的是,这里的第一数据库指的是服务器在接收到终端的数据库访问请求时终端当前已经连接上的数据库。服务器在判断出第一标识与第一标识不一致时,将终端当前连接的数据库由第一数据库切换为第一目标数据库,即断开终端与第一数据库的连接,并且建立终端与第一目标数据库之间的连接,此时,终端可对第一目标数据库执行对应的数据操作。
上述数据库动态切换方法中,由于预先建立了映射关系表,当接收到终端发送的数据库访问请求时,就可以获取与数据库访问请求对应的目标方法,并进一步提取目标方法中的数据库参数信息,根据数据库参数信遍历映射关系表,就可以确定终端当前想要访问的目标数据库,将与终端连接的数据库切换为该目标数据库,从而实现了对数据库自动便捷地进行切换。
在一个实施例中,在遍历预先建立的映射关系表之前,上述方法还包括:接收与各个数据库对应的数据库参数信息,建立并存储数据库的标识与数据库参数信息的映射关系表。
本实施例中,开发人员可以事先在各个数据库的访问层配置参数信息,在配置好参数信息后,开发人员可通过开发终端,将各个数据库对应的已配置的参数信息发送至服务器,服务器根据各个数据库的标识与数据库参数信息建立映射关系表,即,将数据库的标识与其对应的数据库参数信息进行关联存储。在一个实施例中,这里的数据库的标识例如可以是数据库编号或者按照预设规则命名的数据库名称。服务器通过预先接收各个数据库对应的数据库参数信息,建立并存储数据库的标识与数据库参数信息的映射关系表,能够快速地根据映射关系表找到对应的目标数据库。
在一个实施例中,如图3所示,提供了一种数据库动态切换方法,包括以下步骤:
步骤S302,接收终端发送的数据库访问请求,对数据库访问请求进行拦截,获取与数据库访问请求对应的目标方法和目标方法对应的目标类;
步骤S304,检测目标方法中是否存在方法注解信息;若是,则进入步骤S306,若否,则进入步骤S312;
步骤S306,获取方法注解信息中的第一目标数据库参数信息;
步骤S308,遍历预先建立的映射关系表,查找与第一目标数据库参数信息对应的第一目标数据库的第一目标标识;
步骤S310,获取终端当前连接的第一数据库的第一标识;将第一标识与第一目标标识进行比对,当对比不一致时,将终端当前连接的数据库由第一数据库切换为第一目标数据库;
步骤S312,检测目标类中是否存在类注解信息;若是,则进入步骤S314。
类注解信息指的是当目标方法中无注解信息时,将类之内的所有注解信息确定为类的注解信息,这些注解信息可以包括对类的注解信息以及类对应的属性的注解信息,方法注解信息是具体业务场景的数据库访问方法对应的注解信息,类注解信息是该类中所有方法通用的注解信息,因此当目标方法中没有注解信息时,可以根据目标类对应的注解信息来确定数据库访问请求对应的目标数据库。
步骤S314,获取类注解信息中的第二目标数据库参数信息;
步骤S316,遍历预先建立的映射关系表,查找与第二目标数据库参数信息对应的第二目标数据库的第二目标标识;
步骤S318,获取终端当前连接的第二数据库的第二标识,将第二标识与第二目标标识进行比对,当对比不一致时,将终端当前连接的数据库由第二数据库切换为第二目标数据库。
服务器在判断出第二标识与第二目标标识不一致时,将终端当前连接的数据库由第二数据库切换为第二目标数据库,即断开终端与第二数据库的连接,并且建立终端与第二目标数据库之间的连接,此时,终端可对第二目标数据库执行对应的数据操作。可以理解的是,此处的第二数据库与上述的第一数据库为相同的数据库,指的是服务器在接收到终端的数据库访问请求时终端当前已经连接上的数据库。
上述实施例中,服务器在接收到数据库访问请求后,分别获取数据库访问请求对应的目标方法和目标类,优先检测目标方法中是否存在方法注解信息,当目标方法中存在方法注解信息时,直接根据方法注解信息中的数据库参数信息进行数据库切换,当目标方法中不存在方法注解信息时,获取目标类对应的类注解信息,并进一步根据类注解信息中的数据库参数信息进行数据库切换,由于优先考虑目标方法中的注解信息,可以实现数据库的精准切换。
在一个实施例中,当目标类和目标方法中均不存在注解信息时,为避免出现切换出现错误,可以略过此次数据库切换,使用当前默认的数据库。
在一个实施例中,在检测目标类中是否存在类注解信息之后,上述方法还包括:当检测到目标类中不存在类注解信息时,获取参考方法集合,计算目标方法与参考方法集合中各个参考方法之间的相似度,将相似度超过预设阈值的参考方法确定为目标参考方法;获取与目标参考方法对应的参考数据库的参考标识;获取终端当前连接的第三数据库的第三标识;将第三标识与参考标识进行比对,当对比不一致时,将终端当前连接的数据库由第三数据库切换为参考数据库。
其中,参考方法是指已经成功查找并切换过数据库的方法,当目标方法中不存在方法注解信息时,服务器可以获取参考方法集合,将目标方法与参考方法进行相似度匹配,由于参考方法为至少一个,选取相似度高于预设阈值的参考方法确定为目标参考方法,因为相似度越高,说明该参考方法与目标方法的相似度越大,其访问的数据库为相同数据库的可能性也越大。进一步,服务器确定该目标参考方法进行切换时选择的数据库,将该数据库确定为参考数据库,并将该参考方法对应的参考标识与终端当前连接的第三数据库的第三标识进行比对,当比对不一致时,进行数据库切换,否则,不进行数据库切换。在进行数据库切换时,服务器断开终端与第三数据库的连接,建立终端与参考数据库的连接。可以理解的是,预设阈值可以由开发人员根据业务需求进行配置和修改;第三数据库与上述的第一数据库为相同的数据库,指的是服务器在接收到终端的数据库访问请求时终端当前已经连接上的数据库。
在一个实施例中,计算目标方法与参考方法的相似度可通过计算目标方法对应的代码与参考方案对应的代码之间的字符串相似度。具体来说,首先目标方法对应的代码与参考方法对应的代码之间的编辑距离,其中,编辑距离指的是从一个字符串修改到另一个字符串时,其中编辑单个字符(比如修改、插入、删除)所需要的最少次数。然后根据编辑距离计算目标方法对应的代码与参考方法对应的代码之间的字符串相似度,公式为:
similarity=[max(x,y)-levenshtein]/max(x,y)
其中,x为目标方法对应的代码对应的字符串长度,y为参考方法集中的参考方法对应的代码所对应的字符串长度,levenshtein为编辑距离。
上述服务器通过将目标方法与参考方法进行相似度匹配,得到相似度高于预设阈值的目标参考方法,并获取与目标参考方法对应的参考数据库,将当前数据库切换到参考数据库,能够降低由于注解信息的不存在,而导致数据库切换发生错误的概率。
在一个实施例中,在将终端当前连接的数据库由第一数据库切换为第一目标数据库之前,包括:获取数据库访问请求携带的权限信息;将终端当前连接的数据库由第一数据库切换为第一目标数据库,包括:当权限信息满足第一目标数据库对应的预设权限要求,将终端当前连接的数据库由第一数据库切换为第一目标数据库。
其中,数据库访问请求中携带的权限信息是指与终端对应的身份信息,权限信息包括但不限于账号密码信息等。服务器获取数据库访问请求携带的权限信息后,判断该权限信息是否满足第一目标数据库的预设权限要求,若满足,则表示验证成功时,服务器可以将终端当前连接的数据库由第一数据库切换为第一目标数据库。可以理解的是,数据库的权限要求可根据需要进行配置和修改,不同的数据库可能对应不同的权限信息。本实施例中,通过对权限进行验证能够可以提高在数据库切换时的安全性。
在一个实施例中,将终端当前连接的数据库由第一数据库切换为第一目标数据库,包括:调用预先配置的数据库连接组件,根据数据库连接组件将终端当前连接的数据库由第一数据库切换为第一目标数据库。
服务器上预先配置了数据库连接组件,数据库连接组件具有连接多个数据库的属性。由于在数据库连接组件中,改变了现有的只能连接一个数据库的属性,因而通过调用数据库连接组件,能够将连接切换到目标数据库。例如,数据库连接组件可以连接第一数据库或第二数据库,当目标数据库为第一数据库时,数据连接组件将连接切换到第一数据库,当目标数据库为第二数据库时,数据库连接组件将连接切换到第二数据库。由于数据库连接组件已经将连接切换到目标数据库,因此数据库访问请求可以对目标数据库执行相应的数据操作,数据操作可以是数据的插入、删除和更改等。通过预先配置的数据库连接组件,能够更加便捷地进行数据库间的切换。
应该理解的是,虽然图2-3的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图2-3中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
在一个实施例中,如图4所示,提供了一种数据库动态切换装置400,包括:
数据库访问请求接收模块402,用于接收终端发送的数据库访问请求,对数据库访问请求进行拦截,获取与数据库访问请求对应的目标方法;
第一目标数据库参数信息获取模块404,用于检测目标方法中是否存在方法注解信息,当检测到目标方法中存在方法注解信息时当目标方法中存在方法注解信息时,获取方法注解信息中的第一目标数据库参数信息;
第一目标数据库查找模块406,用于遍历预先建立的映射关系表,查找与第一目标数据库参数信息对应的第一目标数据库的第一目标标识;
第一切换模块408,用于获取终端当前连接的第一数据库的第一标识,将第一标识与第一目标标识进行比对,当对比不一致时,将终端当前连接的数据库由第一数据库切换为第一目标数据库。
在一个实施例中,上述装置还包括映射关系表建立模块,用于接收与各个数据库对应的数据库参数信息,建立并存储数据库的标识与数据库参数信息的映射关系表。
在一个实施例中,数据库访问请求接收模块还用于获取与数据库访问请求对应的目标方法和目标方法对应的目标类;上述装置还包括第二切换模块,第二切换模块用于当检测到目标方法中不存在方法注解信息时,检测目标类中是否存在类注解信息;当目标类中存在类注解信息时,获取类注解信息中的第二目标数据库参数信息;遍历预先建立的映射关系表,查找与第二目标数据库参数信息对应的第二目标数据库的第二目标标识;获取终端当前连接的第二数据库的第二标识;将第二标识与第二目标标识进行比对,当对比不一致时,将终端当前连接的数据库由第二数据库切换为第二目标数据库。
在一个实施例中,上述装置还包括第三切换模块,用于当检测到目标类中不存在类注解信息时,获取参考方法集合,计算目标方法与参考方法集合中各个参考方法之间的相似度,将相似度超过预设阈值的参考方法确定为目标参考方法;获取与目标参考方法对应的参考数据库的参考标识;获取终端当前连接的第三数据库的第三标识;将第三标识与参考标识进行比对,当对比不一致时,将终端当前连接的数据库由第三数据库切换为参考数据库。
在一个实施例中,上述装置还包括权限信息获取模块,用于获取数据库访问请求携带的权限信息;第一切换模块还用于当权限信息满足第一目标数据库对应的预设权限要求,将终端当前连接的数据库由第一数据库切换为第一目标数据库。
在一个实施例中,第一切换模块还用于调用预先配置的数据库连接组件,根据数据库连接组件将终端当前连接的数据库由第一数据库切换为第一目标数据库。
关于数据库动态切换装置的具体限定可以参见上文中对于数据库动态切换方法的限定,在此不再赘述。上述数据库动态切换装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图5所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口和数据库。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储业务数据。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种数据库动态切换方法。
本领域技术人员可以理解,图5中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,提供了一种计算机设备,包括存储器和处理器,该存储器存储有计算机程序,该处理器执行计算机程序时实现以下步骤:接收终端发送的数据库访问请求,对数据库访问请求进行拦截,获取与数据库访问请求对应的目标方法;检测目标方法中是否存在方法注解信息;当检测到目标方法中存在方法注解信息时,获取方法注解信息中的第一目标数据库参数信息;遍历预先建立的映射关系表,查找与第一目标数据库参数信息对应的第一目标数据库的第一目标标识;获取终端当前连接的第一数据库的第一标识;将第一标识与第一目标标识进行比对,当对比不一致时,将终端当前连接的数据库由第一数据库切换为第一目标数据库。
在一个实施例中,在遍历预先建立的映射关系表之前,该处理器执行计算机程序时实现以下步骤:接收与各个数据库对应的数据库参数信息,建立并存储数据库的标识与数据库参数信息的映射关系表。
在一个实施例中,获取与数据库访问请求对应的目标方法,包括:获取与数据库访问请求对应的目标方法和目标方法对应的目标类;在检测目标方法中是否存在方法注解信息之后,该处理器执行计算机程序时实现以下步骤:当检测到目标方法中不存在方法注解信息时,检测目标类中是否存在类注解信息;当目标类中存在类注解信息时,获取类注解信息中的第二目标数据库参数信息;遍历预先建立的映射关系表,查找与第二目标数据库参数信息对应的第二目标数据库的第二目标标识;获取终端当前连接的第二数据库的第二标识;将第二标识与第二目标标识进行比对,当对比不一致时,将终端当前连接的数据库由第二数据库切换为第二目标数据库。
在一个实施例中,在检测目标类中是否存在类注解信息之后,该处理器执行计算机程序时实现以下步骤:当检测到目标类中不存在类注解信息时,获取参考方法集合,计算目标方法与参考方法集合中各个参考方法之间的相似度,将相似度超过预设阈值的参考方法确定为目标参考方法;获取与目标参考方法对应的参考数据库的参考标识;获取终端当前连接的第三数据库的第三标识;将第三标识与参考标识进行比对,当对比不一致时,将终端当前连接的数据库由第三数据库切换为参考数据库。
在一个实施例中,在将终端当前连接的数据库由第一数据库切换为第一目标数据库之前,该处理器执行计算机程序时实现以下步骤:获取数据库访问请求携带的权限信息;将终端当前连接的数据库由第一数据库切换为第一目标数据库,包括:当权限信息满足第一目标数据库对应的预设权限要求,将终端当前连接的数据库由第一数据库切换为第一目标数据库。
在一个实施例中,将终端当前连接的数据库由第一数据库切换为第一目标数据库,包括:调用预先配置的数据库连接组件,根据数据库连接组件将终端当前连接的数据库由第一数据库切换为第一目标数据库。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:接收终端发送的数据库访问请求,对数据库访问请求进行拦截,获取与数据库访问请求对应的目标方法;检测目标方法中是否存在方法注解信息;当检测到目标方法中存在方法注解信息时,获取方法注解信息中的第一目标数据库参数信息;遍历预先建立的映射关系表,查找与第一目标数据库参数信息对应的第一目标数据库的第一目标标识;获取终端当前连接的第一数据库的第一标识;将第一标识与第一目标标识进行比对,当对比不一致时,将终端当前连接的数据库由第一数据库切换为第一目标数据库。
在一个实施例中,在遍历预先建立的映射关系表之前,计算机程序被处理器执行时还实现以下步骤:接收与各个数据库对应的数据库参数信息,建立并存储数据库的标识与数据库参数信息的映射关系表。
在一个实施例中,获取与数据库访问请求对应的目标方法,包括:获取与数据库访问请求对应的目标方法和目标方法对应的目标类;在检测目标方法中是否存在方法注解信息之后,计算机程序被处理器执行时还实现以下步骤:当检测到目标方法中不存在方法注解信息时,检测目标类中是否存在类注解信息;当目标类中存在类注解信息时,获取类注解信息中的第二目标数据库参数信息;遍历预先建立的映射关系表,查找与第二目标数据库参数信息对应的第二目标数据库的第二目标标识;获取终端当前连接的第二数据库的第二标识;将第二标识与第二目标标识进行比对,当对比不一致时,将终端当前连接的数据库由第二数据库切换为第二目标数据库。
在一个实施例中,在检测目标类中是否存在类注解信息之后,计算机程序被处理器执行时还实现以下步骤:当检测到目标类中不存在类注解信息时,获取参考方法集合,计算目标方法与参考方法集合中各个参考方法之间的相似度,将相似度超过预设阈值的参考方法确定为目标参考方法;获取与目标参考方法对应的参考数据库的参考标识;获取终端当前连接的第三数据库的第三标识;将第三标识与参考标识进行比对,当对比不一致时,将终端当前连接的数据库由第三数据库切换为参考数据库。
在一个实施例中,将在将终端当前连接的数据库由第一数据库切换为第一目标数据库之前,计算机程序被处理器执行时还实现以下步骤:获取数据库访问请求携带的权限信息;将终端当前连接的数据库由第一数据库切换为第一目标数据库,包括:当权限信息满足第一目标数据库对应的预设权限要求,将终端当前连接的数据库由第一数据库切换为第一目标数据库。
在一个实施例中,将终端当前连接的数据库由第一数据库切换为第一目标数据库,包括:调用预先配置的数据库连接组件,根据数据库连接组件将终端当前连接的数据库由第一数据库切换为第一目标数据库。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。