基于MySQL数据源的双写技术改造方法、设备及介质与流程
基于mysql数据源的双写技术改造方法、设备及介质
技术领域
1.本发明涉及信息处理技术领域,具体涉及一种基于mysql数据源的双写技术改造方法、计算机设备以及非易失性计算机可读存储介质。
背景技术:
2.目前,随着银行业务的不断深耕,业务越来越复杂,数据在业务处理中占据的地位也越来越重要。在之前大多数银行都是使用oracle(oracle database,又名oracle rdbms,是一款关系数据库管理系统)来进行数据的存储管理,但是随着行业和数据库技术的发展,oracle的诸多缺点也暴露了出来。oracle的费用太贵,使用的话需要交纳一大笔授权费,同时oracle的代码是不开源的,每年的服务费也是一笔很大的开销,而且有些业务也太小,并不需要这种重量级的数据库。因此,为了降低成本,进行oracle的替代就成了很多公司的必要项目。
3.现有技术中对于oracle的替代是通过修改原业务代码,在业务代码处增加新数据的dao方法来实现,此种实现方案改动太大,不符合代码开发的开闭原则,风险过高,无法对比业务数据在oracle被替代前后的改变,容易造成业务事故。
4.因此,现有技术还有待改进和提高。
技术实现要素:
5.鉴于上述现有技术的不足之处,本发明的目的在于提供一种可用于金融科技或其他相关领域的基于mysql数据源的双写技术改造方法、计算机设备以及非易失性计算机可读存储介质,旨在解决现有技术中oracle被替代时改动较大、风险和成本较高的问题。
6.为了达到上述目的,本发明采取了以下技术方案:
7.一种基于mysql数据源的双写技术改造方法,其中,所述方法包括步骤:
8.s10、动态配置mysql数据源;
9.s20、在dao层新增mysql的切面,创建一个注解通过spring aop实现双写或双读的操作;
10.s30、在切面逻辑中判断并行验证的类型并实现oracle和mysql的双写操作;
11.s40、在spring框架逻辑中判断验证流程的类型并根据相应验证流程的类型进行操作;
12.s50、切换不同的数据源对sequence的实现;
13.s60、实现对日志表和报表的双写;
14.s70、实现对字典表的双读;
15.s80、实现对临时表的双写读oracle或双写读mysql。
16.在进一步的技术方案中,所述的基于mysql数据源的双写技术改造方法,其中,所述步骤s30中,若是oracle和mysql并行验证,则执行oracledao逻辑,再根据oracledao获取到mysqldao,获取到mysqldao后执行对应dao逻辑,实现先oracle再mysql的双写操作。
17.在进一步的技术方案中,所述的基于mysql数据源的双写技术改造方法,其中,所述步骤s30中,若是投产的并行验证,则通过oracledao获取到mysqldao,获取到mysqldao后执行对应dao逻辑,同时执行oracledao逻辑,实现先mysql再oracle的双写操作。
18.在进一步的技术方案中,所述的基于mysql数据源的双写技术改造方法,其中,所述步骤s40中,若是并行验证和投产并行验证的验证流程,则对mysqldao的执行情况进行校验;若是正式投产的验证流程,则判断是否存在mysqldao,若存在则通过spring代理注入mysqldao实例,若不存在则注入oracledao。
19.在进一步的技术方案中,所述的基于mysql数据源的双写技术改造方法,其中,对mysqldao的执行情况进行校验包括加载遗漏告警、总加载数据验证和灰度环境验证正确性。
20.在进一步的技术方案中,所述的基于mysql数据源的双写技术改造方法,其中,所述步骤s10中,通过apollo或spring-config配置管理平台实现数据源的配置。
21.在进一步的技术方案中,所述的基于mysql数据源的双写技术改造方法,其中,所述步骤s60中,均是通过aop双写、通过apollo配置开关进行控制。
22.在进一步的技术方案中,所述的基于mysql数据源的双写技术改造方法,其中,所述步骤s70中,通过apollo配置开关控制,字典表把写oracle的数据同步到mysql中,再读mysql表;所述步骤s80中,通过apollo配置开关控制双写读mysql或双写读oracle。
23.一种计算机设备,其中,所述计算机设备包括至少一个处理器;以及,
24.与所述至少一个处理器通信连接的存储器;其中,
25.所述存储器上存储有可被所述至少一个处理器执行的计算机程序,所述计算机程序被所述至少一个处理器执行时,可实现:
26.s10、动态配置mysql数据源;
27.s20、在dao层新增mysql的切面,创建一个注解通过spring aop实现双写或双读的操作;
28.s30、在切面逻辑中判断并行验证的类型并实现oracle和mysql的双写操作;
29.s40、在spring框架逻辑中判断验证流程的类型并根据相应验证流程的类型进行操作;
30.s50、切换不同的数据源对sequence的实现;
31.s60、实现对日志表和报表的双写;
32.s70、实现对字典表的双读;
33.s80、实现对临时表的双写读oracle或双写读mysql。
34.在进一步的技术方案中,所述的计算机设备,其中,所述步骤s30中,若是oracle和mysql并行验证,则执行oracledao逻辑,再根据oracledao获取到mysqldao,获取到mysqldao后执行对应dao逻辑,实现先oracle再mysql的双写操作。
35.在进一步的技术方案中,所述的计算机设备,其中,所述步骤s30中,若是投产的并行验证,则通过oracledao获取到mysqldao,获取到mysqldao后执行对应dao逻辑,同时执行oracledao逻辑,实现先mysql再oracle的双写操作。
36.在进一步的技术方案中,所述的计算机设备,其中,所述步骤s40中,若是并行验证和投产并行验证的验证流程,则对mysqldao的执行情况进行校验;若是正式投产的验证流
程,则判断是否存在mysqldao,若存在则通过spring代理注入mysqldao实例,若不存在则注入oracledao。
37.在进一步的技术方案中,所述的计算机设备,其中,对mysqldao的执行情况进行校验包括加载遗漏告警、总加载数据验证和灰度环境验证正确性。
38.在进一步的技术方案中,所述的计算机设备,其中,所述步骤s10中,通过apollo或spring-config配置管理平台实现数据源的配置。
39.在进一步的技术方案中,所述的计算机设备,其中,所述步骤s60中,均是通过aop双写、通过apollo配置开关进行控制。
40.在进一步的技术方案中,所述的计算机设备,其中,所述步骤s70中,通过apollo配置开关控制,字典表把写oracle的数据同步到mysql中,再读mysql表;所述步骤s80中,通过apollo配置开关控制双写读mysql或双写读oracle。
41.一种非易失性计算机可读存储介质,其中,所述非易失性计算机可读存储介质存储有计算机程序,所述计算机程序被至少一个处理器执行时,可实现:
42.s10、动态配置mysql数据源;
43.s20、在dao层新增mysql的切面,创建一个注解通过spring aop实现双写或双读的操作;
44.s30、在切面逻辑中判断并行验证的类型并实现oracle和mysql的双写操作;
45.s40、在spring框架逻辑中判断验证流程的类型并根据相应验证流程的类型进行操作;
46.s50、切换不同的数据源对sequence的实现;
47.s60、实现对日志表和报表的双写;
48.s70、实现对字典表的双读;
49.s80、实现对临时表的双写读oracle或双写读mysql。
50.在进一步的技术方案中,所述的非易失性计算机可读存储介质,其中,所述步骤s30中,若是oracle和mysql并行验证,则执行oracledao逻辑,再根据oracledao获取到mysqldao,获取到mysqldao后执行对应dao逻辑,实现先oracle再mysql的双写操作。
51.在进一步的技术方案中,所述的非易失性计算机可读存储介质,其中,所述步骤s30中,若是投产的并行验证,则通过oracledao获取到mysqldao,获取到mysqldao后执行对应dao逻辑,同时执行oracledao逻辑,实现先mysql再oracle的双写操作。
52.在进一步的技术方案中,所述的非易失性计算机可读存储介质,其中,所述步骤s40中,若是并行验证和投产并行验证的验证流程,则对mysqldao的执行情况进行校验;若是正式投产的验证流程,则判断是否存在mysqldao,若存在则通过spring代理注入mysqldao实例,若不存在则注入oracledao。
53.在进一步的技术方案中,所述的非易失性计算机可读存储介质,其中,对mysqldao的执行情况进行校验包括加载遗漏告警、总加载数据验证和灰度环境验证正确性。
54.在进一步的技术方案中,所述的非易失性计算机可读存储介质,其中,所述步骤s10中,通过apollo或spring-config配置管理平台实现数据源的配置。
55.在进一步的技术方案中,所述的非易失性计算机可读存储介质,其中,所述步骤s60中,均是通过aop双写、通过apollo配置开关进行控制。
56.在进一步的技术方案中,所述的非易失性计算机可读存储介质,其中,所述步骤s70中,通过apollo配置开关控制,字典表把写oracle的数据同步到mysql中,再读mysql表;所述步骤s80中,通过apollo配置开关控制双写读mysql或双写读oracle。
57.相较于现有技术,本发明提供了一种基于mysql数据源的双写技术改造方法、设备及介质,其中,所述方法包括:动态配置mysql数据源;在dao层新增mysql的切面,创建一个注解通过spring aop实现双写或双读的操作;在切面逻辑中判断并行验证的类型并实现oracle和mysql的双写操作;在spring框架逻辑中判断验证流程的类型并根据相应验证流程的类型进行操作;切换不同的数据源对sequence的实现;实现对日志表和报表的双写;实现对字典表的双读;实现对临时表的双写读oracle或双写读mysql。通过本发明的方法可解决现有技术中oracle被替代时改动较大、风险和成本较高的问题。
附图说明
58.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
59.图1为本发明实施例提供的基于mysql数据源的双写技术改造方法的流程示意图。
60.图2为本发明实施例提供的实现sequence的流程示意图。
61.图3为本发明实施例提供的实现日志表双写的流程示意图。
62.图4为本发明实施例提供的实现报表双写的流程示意图。
63.图5为本发明实施例提供的实现字典表双读的流程示意图。
64.图6为本发明实施例提供的实现临时表双写读oracle的流程示意图。
65.图7为本发明实施例提供的实现临时表双写读mysql的流程示意图。
66.图8为本发明实施例提供的所述计算机设备的硬件结构示意图。
具体实施方式
67.为使本发明的目的、技术方案及效果更加清楚、明确,以下参照附图并举实施例对本发明进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
68.在本发明的描述中,所使用的“包含”、“包括”、“具有”、“含有”等,均为开放性的用语,即意指包含但不限于。参考术语“一个实施例”、“一个具体实施例”、“一些实施例”、“例如”等的描述意指结合该实施例或示例描述的具体特征、结构或者特点包含于本技术的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。各实施例中涉及的步骤顺序用于示意性说明本技术的实施,其中的步骤顺序不作限定,可根据需要作适当调整。
69.下面结合附图,详细说明本发明的各种非限制性实施方式。
70.请参阅图1,本发明实施例提供了一种基于mysql数据源的双写技术改造方法,其中,所述方法包括步骤:
71.s10、动态配置mysql数据源;
72.具体地,本实施例中,可以通过apollo或者spring-config等市面上其他成熟的配置管理平台来实现。
73.s20、在dao层新增mysql的切面,创建一个注解通过spring aop实现双写或双读的操作;
74.具体地,本实施例中,通过spring aop实现双写或双读,能保证所有的代码修改都在aop的代码中进行,与实际业务代码进行解耦。
75.s30、在切面逻辑中判断并行验证的类型并实现oracle和mysql的双写操作;
76.具体地,本实施例中,在切面逻辑中,如果是oracle和mysql并行验证,则执行oracledao逻辑,再根据oracledao获取到mysqldao,获取到mysqldao后就可以执行对应dao逻辑,实现先oracle再mysql的双写操作;在切面逻辑中,如果是投产的并行验证,通过oracledao获取到mysqldao,获取到mysqldao后就可以执行对应dao逻辑,同时执行oracledao逻辑,实现先mysql再oracle的双写操作。
77.s40、在spring框架逻辑中判断验证流程的类型并根据相应验证流程的类型进行操作;
78.具体地,本实施例中,在spring框架逻辑中,如果是并行验证和投产并行验证流程,则对mysqldao的执行情况进行校验,包括加载遗漏告警,总加载数据验证,灰度环境验证正确性;如果是正式投产,则判断是否存在mysqldao,则通过spring代理注入mysqldao实例,若不存在则注入oracledao即可。
79.s50、切换不同的数据源对sequence的实现;
80.具体地,本实施例中,请参照图2,通过开关来进行切换不同的数据源以达到对sequence的实现。
81.s60、实现对日志表和报表的双写;
82.具体地,本实施例中,请参照图3和图4,apollp配置开关包括写oracle开关与写mysql开关,通过aop的双写,通过apollo配置开关的控制,实现对日志表和报表的双写。
83.s70、实现对字典表的双读;
84.具体地,本实施例中,请参照图5,字典表把写oracle的数据同步到mysql中,再通过读mysql表实现对字典表的双读。
85.s80、实现对临时表的双写读oracle或双写读mysql。
86.具体地,本实施例中,请参照图6与图7,对于一些业务的临时表,即生命周期为交易级别,不需要历史数据的表,可以通过apollo配置开关控制双写读mysql或者双写读oracle,以此来达到主辅流量验证和回滚的作用。
87.由以上方法实施例可知,本发明提供的基于mysql数据源的双写技术改造方法可实现对于oracle的替代,本发明的方法风险可控,后期可以通过双写数据比对做到场景全覆盖,避免因oracle被替代后造成业务问题;改动较小,代码侵入性小,可以尽量保持原来业务流程代码的稳定,非必要不修改;切换方便,通过开关控制切换双写、主辅流量、回滚等,方便验证;清理方便,成功实现对于oracle的替代后,旧代码和临时代码清理方便,业务代码修改量很少;复用率高、成本低,多个应用可以通过一套代码来实现对于oracle的替代改造。
88.应该理解的是,虽然本技术提供了如实施例或流程图所述的方法操作步骤,但基于常规或者无创造性的劳动可以包括更多或者更少的操作步骤,这些操作步骤并不是必然按照实施例或流程图的顺序依次执行。实施例或流程图中列举的步骤顺序仅仅为众多步骤执行顺序中的一种方式,不代表唯一的执行顺序。而且,实施例或流程图中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流、交替或者同步地执行。
89.基于上述实施例,请参阅图8,本发明另一实施例还提供了一种计算机设备,其中,所述计算机设备10包括:
90.存储器120以及一个或多个处理器110,图8中以一个处理器110为例进行介绍,处理器110和存储器120可以通过通信总线或者其他方式连接,图8中以通过通信总线连接为例。
91.处理器110用于完成计算机设备10的各种控制逻辑,其可以为通用处理器、数字信号处理器(dsp)、专用集成电路(asic)、现场可编程门阵列(fpga)、单片机、arm(acorn risc machine)或其它可编程逻辑器件、分立门或晶体管逻辑、分立的硬件组件或者这些部件的任何组合。还有,处理器110还可以是任何传统处理器、微处理器或状态机。处理器110也可以被实现为计算设备的组合,例如,dsp和微处理器的组合、多个微处理器、一个或多个微处理器结合dsp核、或任何其它这种配置。
92.存储器120作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块,如本发明实施例中的基于mysql数据源的双写技术改造方法对应的计算机程序。处理器110通过运行存储在存储器120中的非易失性软件程序、指令以及单元,从而执行计算机设备10的各种功能应用以及数据处理,即实现上述方法实施例中的基于mysql数据源的双写技术改造方法。
93.存储器120可以包括存储程序区和存储数据区,其中,存储程序区可存储操作装置、至少一个功能所需要的应用程序;存储数据区可存储根据计算机设备10使用所创建的数据等。此外,存储器120可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实施例中,存储器120可选包括相对于处理器110远程设置的存储器,这些远程存储器可以通过网络连接至计算机设备10。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
94.一个或者多个单元存储在存储器120中,当被一个或者多个处理器110执行时,可实现:
95.s10、动态配置mysql数据源;
96.具体地,本实施例中,可以通过apollo或者spring-config等市面上其他成熟的配置管理平台来实现。
97.s20、在dao层新增mysql的切面,创建一个注解通过spring aop实现双写或双读的操作;
98.具体地,本实施例中,通过spring aop实现双写或双读,能保证所有的代码修改都
在aop的代码中进行,与实际业务代码进行解耦。
99.s30、在切面逻辑中判断并行验证的类型并实现oracle和mysql的双写操作;
100.具体地,本实施例中,在切面逻辑中,如果是oracle和mysql并行验证,则执行oracledao逻辑,再根据oracledao获取到mysqldao,获取到mysqldao后就可以执行对应dao逻辑,实现先oracle再mysql的双写操作;在切面逻辑中,如果是投产的并行验证,通过oracledao获取到mysqldao,获取到mysqldao后就可以执行对应dao逻辑,同时执行oracledao逻辑,实现先mysql再oracle的双写操作。
101.s40、在spring框架逻辑中判断验证流程的类型并根据相应验证流程的类型进行操作;
102.具体地,本实施例中,在spring框架逻辑中,如果是并行验证和投产并行验证流程,则对mysqldao的执行情况进行校验,包括加载遗漏告警,总加载数据验证,灰度环境验证正确性;如果是正式投产,则判断是否存在mysqldao,则通过spring代理注入mysqldao实例,若不存在则注入oracledao即可。
103.s50、切换不同的数据源对sequence的实现;
104.具体地,本实施例中,请参照图2,通过开关来进行切换不同的数据源以达到对sequence的实现。
105.s60、实现对日志表和报表的双写;
106.具体地,本实施例中,请参照图3和图4,apollp配置开关包括写oracle开关与写mysql开关,通过aop的双写,通过apollo配置开关的控制,实现对日志表和报表的双写。
107.s70、实现对字典表的双读;
108.具体地,本实施例中,请参照图5,字典表把写oracle的数据同步到mysql中,再通过读mysql表实现对字典表的双读。
109.s80、实现对临时表的双写读oracle或双写读mysql。
110.具体地,本实施例中,请参照图6与图7,对于一些业务的临时表,即生命周期为交易级别,不需要历史数据的表,可以通过apollo配置开关控制双写读mysql或者双写读oracle,以此来达到主辅流量验证和回滚的作用。
111.由以上计算机设备实施例可知,本发明提供的计算机设备可实现对于oracle的替代,本发明的计算机设备风险可控,后期可以通过双写数据比对做到场景全覆盖,避免因oracle被替代后造成业务问题;改动较小,代码侵入性小,可以尽量保持原来业务流程代码的稳定,非必要不修改;切换方便,通过开关控制切换双写、主辅流量、回滚等,方便验证;清理方便,成功实现对于oracle的替代后,旧代码和临时代码清理方便,业务代码修改量很少;复用率高、成本低,多个应用可以通过一套代码来实现对于oracle的替代改造。
112.本领域技术人员可以理解,图8中示出的硬件结构示意图,仅仅是与本发明方案相关的部分结构的示意图,并不构成对本发明方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多的部件,或者组合某些部件,或者具有不同的部件布置。
113.基于上述实施例,本发明还提供了一种非易失性计算机可读存储介质,其中,所述非易失性计算机可读存储介质存储有计算机程序,所述计算机程序被至少一个处理器执行时,可实现:
114.s10、动态配置mysql数据源;
115.具体地,本实施例中,可以通过apollo或者spring-config等市面上其他成熟的配置管理平台来实现。
116.s20、在dao层新增mysql的切面,创建一个注解通过spring aop实现双写或双读的操作;
117.具体地,本实施例中,通过spring aop实现双写或双读,能保证所有的代码修改都在aop的代码中进行,与实际业务代码进行解耦。
118.s30、在切面逻辑中判断并行验证的类型并实现oracle和mysql的双写操作;
119.具体地,本实施例中,在切面逻辑中,如果是oracle和mysql并行验证,则执行oracledao逻辑,再根据oracledao获取到mysqldao,获取到mysqldao后就可以执行对应dao逻辑,实现先oracle再mysql的双写操作;在切面逻辑中,如果是投产的并行验证,通过oracledao获取到mysqldao,获取到mysqldao后就可以执行对应dao逻辑,同时执行oracledao逻辑,实现先mysql再oracle的双写操作。
120.s40、在spring框架逻辑中判断验证流程的类型并根据相应验证流程的类型进行操作;
121.具体地,本实施例中,在spring框架逻辑中,如果是并行验证和投产并行验证流程,则对mysqldao的执行情况进行校验,包括加载遗漏告警,总加载数据验证,灰度环境验证正确性;如果是正式投产,则判断是否存在mysqldao,则通过spring代理注入mysqldao实例,若不存在则注入oracledao即可。
122.s50、切换不同的数据源对sequence的实现;
123.具体地,本实施例中,请参照图2,通过开关来进行切换不同的数据源以达到对sequence的实现。
124.s60、实现对日志表和报表的双写;
125.具体地,本实施例中,请参照图3和图4,apollp配置开关包括写oracle开关与写mysql开关,通过aop的双写,通过apollo配置开关的控制,实现对日志表和报表的双写。
126.s70、实现对字典表的双读;
127.具体地,本实施例中,请参照图5,字典表把写oracle的数据同步到mysql中,再通过读mysql表实现对字典表的双读。
128.s80、实现对临时表的双写读oracle或双写读mysql。
129.具体地,本实施例中,请参照图6与图7,对于一些业务的临时表,即生命周期为交易级别,不需要历史数据的表,可以通过apollo配置开关控制双写读mysql或者双写读oracle,以此来达到主辅流量验证和回滚的作用。
130.由以上非易失性计算机可读存储介质实施例可知,本发明提供的非易失性计算机可读存储介质可实现对于oracle的替代,本发明的非易失性计算机可读存储介质风险可控,后期可以通过双写数据比对做到场景全覆盖,避免因oracle被替代后造成业务问题;改动较小,代码侵入性小,可以尽量保持原来业务流程代码的稳定,非必要不修改;切换方便,通过开关控制切换双写、主辅流量、回滚等,方便验证;清理方便,成功实现对于oracle的替代后,旧代码和临时代码清理方便,业务代码修改量很少;复用率高、成本低,多个应用可以通过一套代码来实现对于oracle的替代改造。
131.作为示例,非易失性存储介质能够包括只读存储器(rom)、可编程rom(prom)、电可编程rom(eprom)、电可擦rom(eeprom)或闪速存储器。易失性存储器能够包括作为外部高速缓存存储器的随机存取存储器(ram)。通过说明并非限制,ram可以以诸如同步ram(sram)、动态ram、(dram)、同步dram(sdram)、双数据速率sdram(ddr sdram)、增强型sdram(esdram)、synchl ink dram(sldram)以及直接rambus(兰巴斯)ram(drram)之类的许多形式得到。本文中所描述的操作环境的所公开的存储器组件或存储器旨在包括这些和/或任何其他适合类型的存储器中的一个或多个。
132.本发明的另一种实施例提供了一种计算机程序产品,所述计算机程序产品包括存储在非易失性计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被处理器执行时,可实现:
133.s10、动态配置mysql数据源;
134.具体地,本实施例中,可以通过apollo或者spring-config等市面上其他成熟的配置管理平台来实现。
135.s20、在dao层新增mysql的切面,创建一个注解通过spring aop实现双写或双读的操作;
136.具体地,本实施例中,通过spring aop实现双写或双读,能保证所有的代码修改都在aop的代码中进行,与实际业务代码进行解耦。
137.s30、在切面逻辑中判断并行验证的类型并实现oracle和mysql的双写操作;
138.具体地,本实施例中,在切面逻辑中,如果是oracle和mysql并行验证,则执行oracledao逻辑,再根据oracledao获取到mysqldao,获取到mysqldao后就可以执行对应dao逻辑,实现先oracle再mysql的双写操作;在切面逻辑中,如果是投产的并行验证,通过oracledao获取到mysqldao,获取到mysqldao后就可以执行对应dao逻辑,同时执行oracledao逻辑,实现先mysql再oracle的双写操作。
139.s40、在spring框架逻辑中判断验证流程的类型并根据相应验证流程的类型进行操作;
140.具体地,本实施例中,在spring框架逻辑中,如果是并行验证和投产并行验证流程,则对mysqldao的执行情况进行校验,包括加载遗漏告警,总加载数据验证,灰度环境验证正确性;如果是正式投产,则判断是否存在mysqldao,则通过spring代理注入mysqldao实例,若不存在则注入oracledao即可。
141.s50、切换不同的数据源对sequence的实现;
142.具体地,本实施例中,请参照图2,通过开关来进行切换不同的数据源以达到对sequence的实现。
143.s60、实现对日志表和报表的双写;
144.具体地,本实施例中,请参照图3和图4,apollp配置开关包括写oracle开关与写mysql开关,通过aop的双写,通过apollo配置开关的控制,实现对日志表和报表的双写。
145.s70、实现对字典表的双读;
146.具体地,本实施例中,请参照图5,字典表把写oracle的数据同步到mysql中,再通过读mysql表实现对字典表的双读。
147.s80、实现对临时表的双写读oracle或双写读mysql。
148.具体地,本实施例中,请参照图6与图7,对于一些业务的临时表,即生命周期为交易级别,不需要历史数据的表,可以通过apollo配置开关控制双写读mysql或者双写读oracle,以此来达到主辅流量验证和回滚的作用。
149.由以上计算机程序产品实施例可知,本发明提供的计算机程序产品可实现对于oracle的替代,本发明的计算机程序产品风险可控,后期可以通过双写数据比对做到场景全覆盖,避免因oracle被替代后造成业务问题;改动较小,代码侵入性小,可以尽量保持原来业务流程代码的稳定,非必要不修改;切换方便,通过开关控制切换双写、主辅流量、回滚等,方便验证;清理方便,成功实现对于oracle的替代后,旧代码和临时代码清理方便,业务代码修改量很少;复用率高、成本低,多个应用可以通过一套代码来实现对于oracle的替代改造。
150.以上所描述的实施例仅仅是示意性的,其中作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际需要选择其中的部分或者全部模块来实现本实施例方案的目的。
151.通过以上的实施例的描述,本领域的技术人员可以清楚地了解到各实施例可借助软件加通用硬件平台的方式来实现,当然也可以通过硬件实现。基于这样的理解,上述技术方案本质上或者说对相关技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存在于计算机可读存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机装置(可以是个人计算机,服务器,或者网络装置等)执行各个实施例或者实施例的某些部分的方法。
152.除了其他之外,诸如“能够”、“能”、“可能”或“可以”之类的条件语言除非另外具体地陈述或者在如所使用的上下文内以其他方式理解,否则一般地旨在传达特定实施方式能包括(然而其他实施方式不包括)特定特征、元件和/或操作。因此,这样的条件语言一般地还旨在暗示特征、元件和/或操作对于一个或多个实施方式无论如何都是需要的或者一个或多个实施方式必须包括用于在有或没有输入或提示的情况下判定这些特征、元件和/或操作是否被包括或者将在任何特定实施方式中被执行的逻辑。
153.已经在本文中在本说明书和附图中描述的内容包括能够提供基于mysql数据源的双写技术改造方法、计算机设备以及非易失性计算机可读存储介质的示例。当然,不能够出于描述本公开的各种特征的目的来描述元件和/或方法的每个可以想象的组合,但是可以认识到,所公开的特征的许多另外的组合和置换是可能的。因此,显而易见的是,在不脱离本公开的范围或精神的情况下能够对本公开做出各种修改,但是,所有这些各种修改都应属于本发明所附权利要求的保护范围。此外,或在替代方案中,本公开的其他实施例从对本说明书和附图的考虑以及如本文中所呈现的本公开的实践中可能是显而易见的。意图是,本说明书和附图中所提出的示例在所有方面被认为是说明性的而非限制性的。尽管在本文中采用了特定术语,但是它们在通用和描述性意义上被使用并且不用于限制的目的。
技术特征:
1.一种基于mysql数据源的双写技术改造方法,其特征在于,所述方法包括步骤:s10、动态配置mysql数据源;s20、在dao层新增mysql的切面,创建一个注解通过spring aop实现双写或双读的操作;s30、在切面逻辑中判断并行验证的类型并实现oracle和mysql的双写操作;s40、在spring框架逻辑中判断验证流程的类型并根据相应验证流程的类型进行操作;s50、切换不同的数据源对sequence的实现;s60、实现对日志表和报表的双写;s70、实现对字典表的双读;s80、实现对临时表的双写读oracle或双写读mysql。2.根据权利要求1所述的基于mysql数据源的双写技术改造方法,其特征在于,所述步骤s30中,若是oracle和mysql并行验证,则执行oracledao逻辑,再根据oracledao获取到mysqldao,获取到mysqldao后执行对应dao逻辑,实现先oracle再mysql的双写操作。3.根据权利要求2所述的基于mysql数据源的双写技术改造方法,其特征在于,所述步骤s30中,若是投产的并行验证,则通过oracledao获取到mysqldao,获取到mysqldao后执行对应dao逻辑,同时执行oracledao逻辑,实现先mysql再oracle的双写操作。4.根据权利要求1所述的基于mysql数据源的双写技术改造方法,其特征在于,所述步骤s40中,若是并行验证和投产并行验证的验证流程,则对mysqldao的执行情况进行校验;若是正式投产的验证流程,则判断是否存在mysqldao,若存在则通过spring代理注入mysqldao实例,若不存在则注入oracledao。5.根据权利要求4所述的基于mysql数据源的双写技术改造方法,其特征在于,对mysqldao的执行情况进行校验包括加载遗漏告警、总加载数据验证和灰度环境验证正确性。6.根据权利要求1所述的基于mysql数据源的双写技术改造方法,其特征在于,所述步骤s10中,通过apollo或spring-config配置管理平台实现数据源的配置。7.根据权利要求1所述的基于mysql数据源的双写技术改造方法,其特征在于,所述步骤s60中,均是通过aop双写、通过apollo配置开关进行控制。8.根据权利要求1所述的基于mysql数据源的双写技术改造方法,其特征在于,所述步骤s70中,通过apollo配置开关控制,字典表把写oracle的数据同步到mysql中,再读mysql表;所述步骤s80中,通过apollo配置开关控制双写读mysql或双写读oracle。9.一种计算机设备,其特征在于,所述计算机设备包括至少一个处理器;以及,与所述至少一个处理器通信连接的存储器;其中,所述存储器上存储有可被所述至少一个处理器执行的计算机程序,所述计算机程序被所述至少一个处理器执行时,可实现如权利要求1-8任一项所述的基于mysql数据源的双写技术改造方法。10.一种非易失性计算机可读存储介质,其特征在于,所述非易失性计算机可读存储介质存储有计算机程序,所述计算机程序被至少一个处理器执行时,可实现如权利要求1-8任一项所述的基于mysql数据源的双写技术改造方法。
技术总结
本发明公开了基于MySQL数据源的双写技术改造方法、设备及介质,涉及信息处理技术领域,其中,所述方法包括:动态配置MySQL数据源;在Dao层新增MySQL的切面,创建一个注解通过Spring Aop实现双写或双读的操作;在切面逻辑中判断并行验证的类型并实现Oracle和MySQL的双写操作;在Spring框架逻辑中判断验证流程的类型并根据相应验证流程的类型进行操作;切换不同的数据源对Sequence的实现;实现对日志表和报表的双写;实现对字典表的双读;实现对临时表的双写读Oracle或双写读MySQL。通过本发明的方法可解决现有技术中Oracle被替代时改动较大、风险和成本较高的问题。风险和成本较高的问题。风险和成本较高的问题。