CN115374083A - 数据源的切换方法、装置、电子设备及存储介质 - Google Patents

数据源的切换方法、装置、电子设备及存储介质 Download PDF

Info

Publication number
CN115374083A
CN115374083A CN202211006544.XA CN202211006544A CN115374083A CN 115374083 A CN115374083 A CN 115374083A CN 202211006544 A CN202211006544 A CN 202211006544A CN 115374083 A CN115374083 A CN 115374083A
Authority
CN
China
Prior art keywords
data source
target
switching
data
database
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202211006544.XA
Other languages
English (en)
Inventor
何辉
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Ping An E Wallet Electronic Commerce Co Ltd
Original Assignee
Ping An E Wallet Electronic Commerce Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Ping An E Wallet Electronic Commerce Co Ltd filed Critical Ping An E Wallet Electronic Commerce Co Ltd
Priority to CN202211006544.XA priority Critical patent/CN115374083A/zh
Publication of CN115374083A publication Critical patent/CN115374083A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/21Design, administration or maintenance of databases
    • G06F16/214Database migration support
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/25Integrating or interfacing systems involving database management systems
    • G06F16/252Integrating or interfacing systems involving database management systems between a Database Management System and a front-end application
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/28Databases characterised by their database models, e.g. relational or object models
    • G06F16/284Relational databases

Landscapes

  • Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请涉及数据库访问技术领域,公开了一种数据源的切换方法、装置、电子设备及存储介质,包括:响应于数据源的切换指令,加载目标插件,切换指令携带有目标数据源的标识信息;根据目标插件的操作指令拦截数据持久层的业务逻辑对应的目标类文件,目标类文件具有OperationDAO类的注解信息;按照目标数据源的标识信息对应的配置文件执行目标类文件,以将访问从原数据源切换为目标数据源,其中,配置文件用于指示目标数据源的方法和属性。本申请的方法,能够在切换过中避免了大量代码的修改,而且增强了数据源切换的灵活性,有助于降低数据源切换的成本。

Description

数据源的切换方法、装置、电子设备及存储介质
技术领域
本申请涉及数据库访问技术领域,尤其是涉及到一种数据源的切换方法、装置、电子设备及存储介质。
背景技术
现阶段互联网应用产品的使用越发频繁,越来越多的机构选择依托互联网产品解决日常工作或产品推广等,同类行业、同类业务的产品需求量也不断在提升。越来越多的互联网产品趋于成熟,产品化程度已经能够覆盖更加广泛的客户群。数据源,是物理数据库连接参数的描述。Oracle数据库作为如今主流的数据库,虽然功能强大,但兼容性较差,需要成本较高。
目前,通过“去O”的方式,也即将Oracle数据库中的数据迁移到其他较为简单的开源数据库中,来降低运营成本的趋势已势不可挡。但在实际应用中,数据迁移方案大多数由项目开发人员编码实现,这将导致开发人员新增大量的代码改动工作,容易引入不必要的错误,而且仅支持一种产品本身为目的源的迁移方案,迁移配置不够灵活,缺乏对不同的数据库的兼容和支持,不利于推广和应用。
发明内容
有鉴于此,本申请提供了一种数据源的切换方法、装置、电子设备及存储介质,以解决数据源切换过程中开发人员编程工作量高,配置不够灵活,且影响***工程代码中功能运行的问题。
第一方面,提供了一种数据源的切换方法,包括:
响应于数据源的切换指令,加载目标插件,切换指令携带有目标数据源的标识信息;
根据目标插件的操作指令拦截数据持久层的业务逻辑对应的目标类文件,目标类文件具有OperationDAO类的注解信息;
按照目标数据源的标识信息对应的配置文件执行目标类文件,以将访问从原数据源切换为目标数据源,其中,配置文件用于指示目标数据源的方法和属性。
进一步地,根据目标插件的操作指令拦截数据持久层的业务逻辑对应的目标类文件,包括:
确定数据持久层的业务逻辑的运行信息;
若运行信息为待执行状态,拦截待执行的数据持久层的业务逻辑对应的目标类文件;
若运行信息为执行状态,延迟拦截数据持久层的业务逻辑对应的目标类文件。
进一步地,根据目标插件的操作指令拦截原数据源中数据持久层的业务逻辑对应的目标类文件,包括:
获取***流量数据;
若***流量数据小于或等于预设流量数据,根据目标插件的操作指令拦截数据持久层的业务逻辑对应的目标类文件。
进一步地,按照目标数据源的标识信息对应的配置文件执行目标类文件之后,数据源的切换方法包括:
调用检测业务接口执行切换检测任务;
若切换检测任务执行过程中目标数据源不存在检测任务对应的数据更新,输出切换失败信息。
进一步地,数据源的切换方法还包括:
响应于输入操作,根据输入操作指示的目标数据源的标识信息生成切换指令。
进一步地,数据源的切换方法还包括:
若检测到原数据源失效,根据预设数据源列表中任一数据源的标识信息生成切换指令。
进一步地,数据源的切换方法还包括:
若未配置目标数据源的标识信息对应的配置文件,发送配置请求;
根据配置请求反馈的配置信息,创建配置文件。
进一步地,目标数据源包括关系型数据库或非关系型数据库;关系型数据库包括以下至少一种:Mysql数据库、SQLServer数据库、DB2数据库;非关系型数据库包括以下至少一种:mongodb数据库、cassandra数据库、redis数据库、hbase数据库、neo4j数据库。
第二方面,提供了一种数据源的切换装置,包括:
加载模块,用于响应于数据源的切换指令,加载目标插件,切换指令携带有目标数据源的标识信息;
拦截模块,用于根据目标插件的操作指令拦截数据持久层的业务逻辑对应的目标类文件,目标类文件具有OperationDAO类的注解信息;
切换模块,用于按照目标数据源的标识信息对应的配置文件执行目标类文件,以将访问从原数据源切换为目标数据源,其中,配置文件用于指示目标数据源的方法和属性。
进一步地,数据源的切换装置,还包括:
确定模块,用于确定数据持久层的业务逻辑的运行信息;
拦截模块,具体用于若运行信息为待执行状态,拦截待执行的数据持久层的业务逻辑对应的目标类文件;若运行信息为执行状态,延迟拦截数据持久层的业务逻辑对应的目标类文件。
进一步地,数据源的切换装置,还包括:
获取模块,用于获取***流量数据;
拦截模块,具体用于若***流量数据小于或等于预设流量数据,根据目标插件的操作指令拦截原数据源中数据持久层的业务逻辑对应的目标类文件。
进一步地,数据源的切换装置,还包括:
检测模块,用于调用检测业务接口执行切换检测任务;若切换检测任务执行过程中目标数据源不存在检测任务对应的数据更新,输出切换失败信息。
进一步地,数据源的切换装置,还包括:
指令生成模块,用于响应于输入操作,根据输入操作指示的目标数据源的标识信息生成切换指令;或,若检测到原数据源失效,根据预设数据源列表中任一数据源的标识信息生成切换指令。
进一步地,数据源的切换装置,还包括:
通信模块,用于若未配置目标数据源的标识信息对应的配置文件,发送配置请求;
调用模块,用于根据配置请求反馈的配置信息,创建配置文件。
进一步地,目标数据源包括关系型数据库或非关系型数据库;关系型数据库包括以下至少一种:Mysql数据库、SQLServer数据库、DB2数据库;非关系型数据库包括以下至少一种:mongodb数据库、cassandra数据库、redis数据库、hbase数据库、neo4j数据库。
第三方面,提供了一种电子设备,包括存储器、处理器以及存储在存储器中并可在处理器上运行的计算机程序,处理器执行计算机程序时实现上述数据源的切换方法的步骤。
第四方面,提供了一种计算机可读存储介质,计算机可读存储介质存储有计算机程序,计算机程序被处理器执行时实现上述数据源的切换方法的步骤。
上述数据源的切换方法、装置、电子设备及存储介质所实现的方案中,在数据库数据迁移之前,预先编写切换所需的目标插件。当***检测到数据源的切换指令,***工程代码引用该目标插件。***加载目标插件后,启动目标插件,并解析出目标插件的操作指令。扫描所有的Java文件,从中查找DAO层的业务逻辑中具有OperationDAO类注解信息的目标类文件,并通过操作指令对目标类文件进行拦截,从而拦截所有Java代码里面编写的interface关键字操作SQL的代理类文件。然后,调用目标数据源的标识信息对应的配置文件。由于代理类里面含有数据源,那么在执行该代理类的方法时,按照配置文件中方法和属性执行代理类文件,即可将***的访问从原数据源切换为目标数据源从而可以在目标数据源运行对应的功能。由此,在切换过中避免了大量代码的修改,而且增强了数据源切换的灵活性,有助于降低数据源切换的成本。
上述说明仅是本申请技术方案的概述,为了能够更清楚了解本申请的技术手段,而可依照说明书的内容予以实施,并且为了让本申请的上述和其它目的、特征和优点能够更明显易懂,以下特举本申请的具体实施方式。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对本申请实施例的描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本申请中数据源的切换方法的流程示意图之一;
图2是本申请中数据源的切换方法的流程示意图之二;
图3是本申请中数据源的切换方法的流程示意图之三;
图4是本申请中数据源的切换方法的流程示意图之四;
图5是本申请中数据源的切换示意图之一;
图6是本申请中数据源的切换装置的结构示意图;
图7是本申请中电子设备的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
请参阅图1所示,图1为本申请实施例提供的数据源的切换方法的一个流程示意图,包括如下步骤:
S10:响应于数据源的切换指令,加载目标插件;
其中,切换指令携带有目标数据源的标识信息,标识信息用于区分不同的数据库。目标插件用于以较为低侵入性的且改动非常小的方式将Oracle数据库中的数据迁移至目标数据源。目标插件可以是插件数据包,例如jar包,且插件可命名为iswitch-proxy.jar。
在该实施例中,在数据库数据迁移之前,预先编写切换所需的目标插件。当***检测到数据源的切换指令,***工程代码引用该目标插件,并放置在***主框架的插件目录中。通过目标插件统一管理起数据源,做到组织有纪律的管理切换的整个操作。不仅能够支持不同类型的不断扩展,增强数据源切换的灵活性,而且省去了大量的人力开发成本,有利于大规模的***数据源切换。
在具体应用场景中,目标数据源包括关系型数据库或非关系型数据库;关系型数据库可以是Mysql数据库、SQLServer数据库或DB2数据库等;非关系型数据库可以是mongodb数据库、cassandra数据库、redis数据库、hbase数据库或neo4j数据库等。
进一步地,在本申请的一些实施例中,获取数据源的切换指令包括如下方式:
方式一,响应于输入操作,根据输入操作指示的目标数据源的标识信息生成切换指令。
在该实施例中,***管理者可按需主动触发数据源的切换。具体地,通过输入操作设定需要切换的目标数据源。***根据目标数据源的标识信息生成切换指令。
方式二,若检测到原数据源失效,根据预设数据源列表中任一数据源的标识信息生成切换指令。
在该实施例中,预先获取***预存的能够进行转换的预设数据源列表。当检测到当前访问的原数据源失效后,原数据源已经不可用,需要自动切换数据源则从预设数据源列表中随机选取一个数据源作为目标数据源,并利用该数据源的标识信息生成切换指令。从而能够在主数据源出现问题的时候自动切换备用数据源,并且多数据源数据实时同步,提高***的可靠性,真正的做到高可用。
可以理解的是,原数据源失效是指在单位时间内对原数据源进行增、删、查、改操作时出现错误的次数超过阈值。另外,在优选实施例中,还可以根据当前业务逻辑对应的服务数据请求数量自动调整该阈值的大小。例如,在访问高峰期的时候,由于流量冲击,数据源出现问题的可能性增大,该匹配出较大的阈值。
S20:根据目标插件的操作指令拦截数据持久层的业务逻辑对应的目标类文件;
其中,目标类文件具有OperationDAO类的注解信息。
具体地,基于MVC框架的***包括业务模型层(model)、控制层(controller)和视图层(view)。业务模型层用于完成业务处理,业务模型层包括业务逻辑层(Service)和数据持久层(Data Access Object,DAO),Service层可调用DAO层来完成业务实现,DAO层是Service层与数据库层之间的中间层,业务逻辑代码通过调用DAO文件来实现与数据库的交互。
在该实施例中,考虑到***代码工程肯定有很多未知的代码在使用数据源进行操作,为此,在***加载目标插件后,启动目标插件,并解析出目标插件的操作指令。扫描所有的Java文件,从中查找DAO层的业务逻辑中具有OperationDAO类注解信息的目标类文件,并通过操作指令对目标类文件进行拦截,从而拦截所有Java代码里面编写的接口(interface)关键字操作结构化查询语言(Structured Query Language,SQL)的代理类文件,以拦截所有使用原数据源的代码。由此,可按照配置文件中方法和属性执行文件执行该代理类文件,即可将***的访问从原数据源切换为目标数据源。使得开发人员无需逐句修改切换所用的代码,不仅降低了的人为出错的可能,而且提升了数据源切换效率,实现灵活切换多个数据源的效果。
在本申请的一些实施例中,如图2所示,提供了一种具体地实体对齐方案,S20中,也即根据目标插件的操作指令拦截数据持久层的业务逻辑对应的目标类文件,具体包括如下步骤:
S21:获取***流量数据;
具体地,将***与Cat(Central Application Tracking)监控平台对接,Cat是基于Java开发的实时分布式应用监控平台。当***的接口被调用时,***就会把调用的操作异步发送给Cat监控平台,然后从Cat监控平台获取***流量数据。
S22:若***流量数据小于或等于预设流量数据,根据目标插件的操作指令拦截数据持久层的业务逻辑对应的目标类文件。
在该实施例中,在接收到数据源的切换指令后,实时检测***的流量数据。在***流量数据小于或等于预设流量数据的情况下,说明此时用户访问量较低,即使切换数据源也不会对影响大量用户使用,则对业务逻辑中具有OperationDAO类的注解信息的代理类文件进行拦截,并执行后续的切换操作。从而在***流量相对低峰时期进行数据源切换,进一步降低切换数据源带来的影响,提升用户的使用体验。
在本申请的一些实施例中,如图3所示,提供了一种具体地实体对齐方案,S20或S22中,也即根据目标插件的操作指令拦截数据持久层的业务逻辑对应的目标类文件,具体包括如下步骤:
S221:确定数据持久层的业务逻辑的运行信息;
S222:运行信息是否为待执行状态,若是,进入S223,若否,进入S224;
S223:拦截待执行的数据持久层的业务逻辑对应的目标类文件;
S224:延迟拦截数据持久层的业务逻辑对应的目标类文件。
其中,延迟的时长可以是指定的时长,例如,业务逻辑运行过程中可能的时长;或者,为业务逻辑运行结束的时刻对应的时长,也即等待业务逻辑释放后再延迟拦截数据持久层的业务逻辑对应的目标类文件。
在该实施例中,扫描***中所有的数据访问对象,并是检测数据访问对象业务逻辑的运行信息。若运行信息为待执行状态,也即***当前并未使用该业务逻辑下的方法和属性,则直接对待执行的数据持久层的业务逻辑对应的目标类文件进行拦截。若运行信息为执行状态,说明***正在执行该业务逻辑的功能,为了避免服务中断,等待业务逻辑运行完毕后再对其中的目标类文件进行拦截。从而在切换过程中保留了正在运行的功能,使得数据迁移的时候不会停服务,保证了操作数据源的一致性,有效减少了对业务***的影响。
S30:按照目标数据源的标识信息对应的配置文件执行目标类文件。
其中,配置文件用于指示目标数据源的方法和属性。
在该实施例中,调用***中目标数据源的标识信息对应的配置文件,以确定目标数据源的方法和属性替换原数据源的方法和属性。再按照配置文件中方法和属性执行目标类文件,以按照代理类和目标数据源的方法和属性来操作目标数据库,达到将***的访问从原数据源切换为目标数据源的目的,并可以在目标数据源运行对应的功能,实现了流畅的数据源切换。从而省去了开发人员改写代码文件进行if…else的操作,而直接动态生成代理类,通过代理类操作不同的数据库,无需进行切换数据源时可读可写的问题考虑,避免了大量代码的修改,增强数据源切换的灵活性,有助于降低数据源切换的成本。
例如,如图5所示,从Oracle数据库切换至Mysql数据库时,在***A的代码工程的pom文件里面引用这个iswitch-proxy.jar插件,具体引入方式如下:
<dependency>
<groupId>com.iswitch</groupId>
<artifactId>iswitch-proxy</artifactId>
<version>1.0.0</version>
</dependency>
在***A的pom文件引用插件之后,启动***A启动,***A就自然会加载这个插件的文件。当iswitch-proxy.jar插件感知到Dao层接口被调用,也即JDK代理了类,识别执行的方法所在的类文件是否有@OperationDAO注解。若有@OperationDAO注解,对其进行拦截,迁移过程中保持Oracle可读可写。然后,查看切换指令中指示的Mysql数据库的标识信息,通过该标识信息拿到***中对应的Mysql数据库的配置文件,并对Mysql数据库进行绑定,以完成数据源的切换,一旦迁移完成Oracle变为只读。绑定Mysql数据库完成后,再触发执行最底层的Dao文件的方法,保持Mysql的可读可写。
需要说明的是,在进行数据源切换时,需要在***中与预存有目标数据源的标识信息对应的配置文件,以保证***在新的数据源环境可以使用的。例如,***中存储有mappers、mappersmysql两个文件夹,mappers文件夹即Oracle类型的SQL文件所在的位置,mappersmysql文件夹即Mysql类型的SQL文件所在的位置。此时,可以***允许进行从Oracle到Mysql的切换。
本申请实施例提出的方法适用于电子设备,电子设备可以包括各种具有无线通信功能的手持设备、车载设备、可穿戴设备、计算设备或连接到无线调制解调器的其他处理设备,以及各种形式的用户设备(user equipment,UE),移动台(mobile station,MS),终端设备(terminaldevice)等等。为方便描述,上面提到的设备统称为电子设备。
在本申请的一些实施例中,如图4所示,提供了一种具体地实体对齐方案,S30,也即按照目标数据源的标识信息对应的配置文件执行目标类文件之后,还包括如下步骤:
S40:调用检测业务接口执行切换检测任务;
S50:若切换检测任务执行过程中目标数据源不存在检测任务对应的数据更新,输出切换失败信息。
在该实施例中,在操作检测业务接口,以执行至少一项新的功能(切换检测任务)。执行切换检测任务过程中,查询目标数据源是否有对应新增的数据。如果有,则说明以成功访问目标数据库,表明本次目标数据源的切换成功且检测业务执行成功。如果没有,则说明切换失败,此时,输出切换失败信息,以提示数据源切换失败,需要重新进行切换步骤。从而通过调用检测业务接口能够及时对检测数据源切换是否完成,有效防止切换时各种未知异常导致造成的影响,保证业务稳定平滑的切换。
在本申请的一些实施例中,提供了一种具体地实体对齐方案,S30前,数据源的切换方法还包括如下步骤:若未配置目标数据源的标识信息对应的配置文件,发送配置请求;根据配置请求反馈的配置信息,创建配置文件。
在该实施例中,考虑到数据源切换时,需保证***能够支持目标数据源对应的SQL类型的文件。当***未配置目标数据源的标识信息对应的配置文件,说明当前***的数据源环境不支持目标数据源,则向外部设备发送目标数据源的配置请求。当***接收到基于配置请求反馈的配置信息,根据该配置信息创建目标数据源的配置文件。从而避免因配置文件确实导致的切换报错,提升数据源切换的成功率。
其中,外部设备可以是服务器或终端。
具体举例来说,***要支持redis非关系型数据库的支持的话,通过外部设备在***内新增一个mapperredis的文件夹,然后在mapperredis文件夹内实现对应的操作redis的语法内容即可。
应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。
在一实施例中,提供一种数据源的切换装置,该数据源的切换装置与上述实施例中数据源的切换方法一一对应。如图6所示,该数据源的切换装置包括加载模块601、拦截模块602、切换模块603。各功能模块详细说明如下:
加载模块601,用于响应于数据源的切换指令,加载目标插件,切换指令携带有目标数据源的标识信息;
拦截模块602,用于根据目标插件的操作指令拦截数据持久层的业务逻辑对应的目标类文件,目标类文件具有OperationDAO类的注解信息;
切换模块603,用于按照目标数据源的标识信息对应的配置文件执行目标类文件,以将访问从原数据源切换为目标数据源,其中,配置文件用于指示目标数据源的方法和属性。
在一实施例中,数据源的切换装置,还包括:确定模块(图中未示出),确定模块用于确定数据持久层的业务逻辑的运行信息;拦截模块602,具体用于若运行信息为待执行状态,拦截待执行的数据持久层的业务逻辑对应的目标类文件;若运行信息为执行状态,延迟拦截数据持久层的业务逻辑对应的目标类文件。
在一实施例中,数据源的切换装置,还包括:获取模块(图中未示出),获取模块用于获取***流量数据;拦截模块602,具体用于若***流量数据小于或等于预设流量数据,根据目标插件的操作指令拦截原数据源中数据持久层的业务逻辑对应的目标类文件。
在一实施例中,数据源的切换装置,还包括:检测模块(图中未示出),检测模块用于调用检测业务接口执行切换检测任务;若切换检测任务执行过程中目标数据源不存在检测任务对应的数据更新,输出切换失败信息。
在一实施例中,数据源的切换装置,还包括:指令生成模块(图中未示出),指令生成模块用于响应于输入操作,根据输入操作指示的目标数据源的标识信息生成切换指令;或,若检测到原数据源失效,根据预设数据源列表中任一数据源的标识信息生成切换指令。
在一实施例中,数据源的切换装置,还包括:通信模块(图中未示出),通信模块用于若未配置目标数据源的标识信息对应的配置文件,发送配置请求;调用模块(图中未示出),调用模块用于根据配置请求反馈的配置信息,创建配置文件。
在一实施例中,目标数据源包括关系型数据库或非关系型数据库;关系型数据库包括以下至少一种:Mysql数据库、SQLServer数据库、DB2数据库;非关系型数据库包括以下至少一种:mongodb数据库、cassandra数据库、redis数据库、hbase数据库、neo4j数据库。
本申请提供了一种数据源的切换装置,在数据库数据迁移之前,预先编写切换所需的目标插件。当***检测到数据源的切换指令,***工程代码引用该目标插件。***加载目标插件后,启动目标插件,并解析出目标插件的操作指令。扫描所有的Java文件,从中查找DAO层的业务逻辑中具有OperationDAO类注解信息的目标类文件,并通过操作指令对目标类文件进行拦截,从而拦截所有Java代码里面编写的interface关键字操作SQL的代理类文件。然后,调用目标数据源的标识信息对应的配置文件。由于代理类里面含有数据源,那么在执行该代理类的方法时,按照配置文件中方法和属性执行代理类文件,即可将***的访问从原数据源切换为目标数据源从而可以在目标数据源运行对应的功能。由此,在切换过中避免了大量代码的修改,而且增强了数据源切换的灵活性,有助于降低数据源切换的成本。
关于数据源的切换装置的具体限定可以参见上文中对于数据源的切换方法的限定,在此不再赘述。上述数据源的切换装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于电子设备中的处理器中,也可以以软件形式存储于电子设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现以下步骤:响应于数据源的切换指令,加载目标插件,切换指令携带有目标数据源的标识信息;根据目标插件的操作指令拦截数据持久层的业务逻辑对应的目标类文件,目标类文件具有OperationDAO类的注解信息;按照目标数据源的标识信息对应的配置文件执行目标类文件,以将访问从原数据源切换为目标数据源,其中,配置文件用于指示目标数据源的方法和属性。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:响应于数据源的切换指令,加载目标插件,切换指令携带有目标数据源的标识信息;根据目标插件的操作指令拦截数据持久层的业务逻辑对应的目标类文件,目标类文件具有OperationDAO类的注解信息;按照目标数据源的标识信息对应的配置文件执行目标类文件,以将访问从原数据源切换为目标数据源,其中,配置文件用于指示目标数据源的方法和属性。
在一个实施例中,提供了一种电子设备,该电子设备可以是客户端,其内部结构图如图7所示。该电子设备包括通过***总线连接的处理器、存储器、网络接口、显示屏和输入装置。其中,该电子设备的处理器用于提供计算和控制能力。该电子设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作***和计算机程序。该内存储器为非易失性存储介质中的操作***和计算机程序的运行提供环境。该电子设备的网络接口用于与外部服务器通过网络连接通信。该计算机程序被处理器执行时以实现一种数据源的切换方法的功能或步骤。
需要说明的是,上述关于计算机可读存储介质或电子设备所能实现的功能或步骤,可对应参阅前述方法实施例中,数据源的切换方法的相关描述,为避免重复,这里不再一一描述。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据源或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(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)等。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将所述装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。
以上所述实施例仅用以说明本发明的技术方案,而非对其限制,尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解,其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围,均应包含在本发明的保护范围之内。

Claims (10)

1.一种数据源的切换方法,其特征在于,包括:
响应于数据源的切换指令,加载目标插件,所述切换指令携带有目标数据源的标识信息;
根据所述目标插件的操作指令拦截数据持久层的业务逻辑对应的目标类文件,所述目标类文件具有OperationDAO类的注解信息;
按照所述目标数据源的标识信息对应的配置文件执行所述目标类文件,以将访问从原数据源切换为所述目标数据源,其中,所述配置文件用于指示所述目标数据源的方法和属性。
2.根据权利要求1所述的数据源的切换方法,其特征在于,所述根据所述目标插件的操作指令拦截数据持久层的业务逻辑对应的目标类文件,包括:
确定所述数据持久层的业务逻辑的运行信息;
若所述运行信息为待执行状态,拦截待执行的所述数据持久层的业务逻辑对应的目标类文件;
若所述运行信息为执行状态,延迟拦截所述数据持久层的业务逻辑对应的目标类文件。
3.根据权利要求1所述的数据源的切换方法,其特征在于,所述根据所述目标插件的操作指令拦截原数据源中数据持久层的业务逻辑对应的目标类文件,包括:
获取***流量数据;
若所述***流量数据小于或等于预设流量数据,根据所述目标插件的操作指令拦截原数据源中数据持久层的业务逻辑对应的目标类文件。
4.根据权利要求1所述的数据源的切换方法,其特征在于,所述按照所述目标数据源的标识信息对应的配置文件,执行所述目标类文件之后,所述方法包括:
调用检测业务接口执行切换检测任务;
若所述切换检测任务执行过程中所述目标数据源不存在所述检测任务对应的数据更新,输出切换失败信息。
5.根据权利要求1至4中任一项所述的数据源的切换方法,其特征在于,所述方法还包括:
响应于输入操作,根据所述输入操作指示的所述目标数据源的标识信息生成所述切换指令;或,
若检测到所述原数据源失效,根据预设数据源列表中任一数据源的标识信息生成所述切换指令。
6.根据权利要求1至4中任一项所述的数据源的切换方法,其特征在于,所述方法还包括:
若未配置所述目标数据源的标识信息对应的配置文件,发送配置请求;
根据所述配置请求反馈的配置信息,创建所述配置文件。
7.根据权利要求1至4中任一项所述的数据源的切换方法,其特征在于,
所述目标数据源包括关系型数据库或非关系型数据库;
所述关系型数据库包括以下至少一种:Mysql数据库、SQLServer数据库、DB2数据库;
所述非关系型数据库包括以下至少一种:mongodb数据库、cassandra数据库、redis数据库、hbase数据库、neo4j数据库。
8.一种数据源的切换装置,其特征在于,包括:
加载模块,用于响应于数据源的切换指令,加载目标插件,所述切换指令携带有目标数据源的标识信息;
拦截模块,用于根据所述目标插件的操作指令拦截数据持久层的业务逻辑对应的目标类文件,所述目标类文件具有OperationDAO类的注解信息;
切换模块,用于按照所述目标数据源的标识信息对应的配置文件执行所述目标类文件,以将访问从原数据源切换为所述目标数据源,其中,所述配置文件用于指示所述目标数据源的方法和属性。
9.一种电子设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1至7任一项所述数据源的切换方法的步骤。
10.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至7任一项所述数据源的切换方法的步骤。
CN202211006544.XA 2022-08-22 2022-08-22 数据源的切换方法、装置、电子设备及存储介质 Pending CN115374083A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202211006544.XA CN115374083A (zh) 2022-08-22 2022-08-22 数据源的切换方法、装置、电子设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211006544.XA CN115374083A (zh) 2022-08-22 2022-08-22 数据源的切换方法、装置、电子设备及存储介质

Publications (1)

Publication Number Publication Date
CN115374083A true CN115374083A (zh) 2022-11-22

Family

ID=84068022

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211006544.XA Pending CN115374083A (zh) 2022-08-22 2022-08-22 数据源的切换方法、装置、电子设备及存储介质

Country Status (1)

Country Link
CN (1) CN115374083A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117493378A (zh) * 2024-01-03 2024-02-02 成都数之联科技股份有限公司 一种多数据源切换的方法及***

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117493378A (zh) * 2024-01-03 2024-02-02 成都数之联科技股份有限公司 一种多数据源切换的方法及***
CN117493378B (zh) * 2024-01-03 2024-03-08 成都数之联科技股份有限公司 一种多数据源切换的方法及***

Similar Documents

Publication Publication Date Title
EP3128421B1 (en) Method, device, and system for achieving java application installation by cloud compilation
CN109032631A (zh) 应用程序补丁包获取方法、装置、计算机设备及存储介质
CN114661580A (zh) 流量录制回放方法、装置、计算机设备及存储介质
CN113986402A (zh) 函数调用方法、装置、电子设备及存储介质
CN115374083A (zh) 数据源的切换方法、装置、电子设备及存储介质
CN113608742A (zh) 检测方法、代码包处理方法、运行控制方法及计算设备
CN111400256B (zh) 一种应用程序调用资源文件的方法及装置
CN113791809B (zh) 应用异常处理方法、装置以及计算机可读存储介质
CN112947956B (zh) 一种应用软件升级方法
CN112988132B (zh) 数据接口的自动生成方法、装置、计算机设备及存储介质
CN115129348A (zh) 应用程序的资源更新方法、装置、设备及可读存储介质
CN115758424A (zh) 数据处理方法、装置、电子设备及计算机可读存储介质
CN117441157A (zh) 软件更新器
CN111949301B (zh) 应用程序热更新方法、装置和计算机可读存储介质
CN114860202A (zh) 项目运行方法、装置、服务器及存储介质
CN109857380B (zh) 一种工作流文件编译方法及装置
CN113495723A (zh) 一种调用功能组件的方法、装置及存储介质
CN114579167A (zh) 一种下载应用升级文件的方法、装置及存储介质
CN112015478B (zh) 内核加载方法、服务器、设备、计算机设备及存储介质
CN115080276B (zh) 应用程序功能动态开关方法、装置、存储介质及电子设备
CN115242874B (zh) 应用开发阶段的网络请求代理优化方法、***、设备及存储介质
CN113268267B (zh) 一种数据包生成方法、装置、计算机设备及存储介质
CN111897534B (zh) 一种访问sslvpn的方法、装置、电子设备及存储介质
CN116302710A (zh) 应用版本回滚方法、装置、计算机设备和存储介质
CN111177718A (zh) 命令的执行方法及装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination