一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

跨数据库的数据同步方法、装置及存储介质与流程

2022-11-28 11:34:15 来源:中国专利 TAG:


1.本技术涉及数据库技术领域,特别涉及跨数据库的数据同步方法、装置及存储介质。


背景技术:

2.oracle数据库和mysql数据库都属于关系型数据库。在关系型数据库中,通常以行和列的形式存储数据,一系列的行和列被称为表,一组表构成了数据库。在不同的关系型数据库之间,存在部分数据需要进行同步。
3.相关技术中,在将oracle数据库数据同步到mysql数据库中时,一般通过服务器执行下述步骤:先获取oracle数据库的数据操作语言(data manipulation language,dml)语句,再将dml语句转换成满足mysql数据库语法的dml语句,继而将转换后的dml语句发送给mysql数据库,使得mysql数据库实现数据同步。
4.然而,在mysql数据库执行数据同步时,只转换了dml语句的语法,而mysql数据库不完全兼容oracle数据库的语法和主键类型,因此导致所需同步的时间较长,影响了数据同步的效率。


技术实现要素:

5.鉴于此,本技术提供跨数据库的数据同步方法、装置及存储介质,可以快速地将第一数据库的数据同步到第二数据库中,提高了数据同步的效率。
6.具体而言,包括以下的技术方案:
7.本技术实施例提供了一种跨数据库的数据同步方法,所述方法包括:
8.一方面,本技术实施例提供了一种跨数据库的数据同步方法,应用于服务器,所述方法包括:
9.获取第一数据库的重做redo日志中的第一结构化查询语言sql语句,其中第一sql语句包括第一数据操作语言dml语句;
10.将所述第一数据库中目标表的第一sql语句写入到中间系统中,得到写入的第一sql语句,其中一个所述目标表位于所述中间系统的一个分区内,所述第一数据库包括至少一个所述目标表;
11.对所述写入的第一sql语句进行转换,得到第二sql语句,其中所述第二sql语句为符合第二数据库的语法和主键类型的sql语句,所述第二sql语句包括第二dml语句;
12.基于所述第二dml语句,将所述第二sql语句写入到第二数据库中,使得所述第一数据库的数据同步到所述第二数据库中。
13.在一些实施例中,所述将所述第一数据库中目标表的第一sql语句写入到中间系统中,得到写入的第一sql语句之后,所述方法还包括:
14.对所述写入的第一sql语句进行解析,得到键值key-value结构的第一sql语句;
15.将所述key-value结构的第一sql语句作为所述写入的第一sql语句。
16.在一些实施例中,所述对所述写入的第一sql语句进行转换,得到第二sql语句包括:
17.对所述写入的第一sql语句中的第一函数和第一主键类型进行转换,得到所述第二sql语句的第二函数和第二主键类型。
18.在一些实施例中,所述对所述写入的第一sql语句中的第一函数和第一主键类型进行转换,得到所述第二sql语句的第二函数和第二主键类型包括:
19.响应于所述写入的第一sql语句中的第一函数在所述第二sql语句中存在参数、作用和名称均相同的函数,将所述写入的第一sql语句中的第一函数作为所述第二sql语句的第二函数;
20.响应于所述写入的第一sql语句中的第一主键类型在所述第二sql语句中存在参数、作用和名称均相同的主键类型,将所述写入的第一sql语句中的第一主键类型作为所述第二sql语句的第二主键类型;
21.响应于所述写入的第一sql语句中的第一函数在所述第二sql语句中不存在参数和/或作用相同的函数,将所述写入的第一sql语句中的第一函数删除;
22.响应于所述写入的第一sql语句中的第一主键类型在所述第二sql语句中不存在参数和/或作用相同的主键类型,将所述写入的第一sql语句中的第一主键类型删除;
23.响应于所述写入的第一sql语句中的第一函数在所述第二sql语句中存在参数和作用相同、名称不同的函数,将所述写入的第一sql语句中的第一函数替换为所述第二sql语句的第二函数;
24.响应于所述写入的第一sql语句中的第一主键类型在所述第二sql语句中存在参数和作用相同、名称不同的主键类型,将所述写入的第一sql语句中的第一主键类型替换为所述第二sql语句的第二主键类型。
25.在一些实施例中,所述基于所述第二dml语句,将所述第二sql语句写入到第二数据库中包括:
26.基于所述第二dml语句,确定所述第二dml语句的类型,所述第二dml语句包括插入insert语句、更新update语句和删除delete语句;
27.响应于当前的第二dml语句为insert语句,将所述insert语句所索引的数据写入到数组中进行缓存,将所述insert语句进行拼装,得到并执行拼装后的insert语句,以将所述拼装后的insert语句所索引的数据写入到所述第二数据库中;
28.响应于当前的第二dml语句为update语句,执行所述update语句之前的insert语句,再执行所述update语句,以将所述update语句所索引的数据写入到所述第二数据库中;
29.响应于当前的第二dml语句为delete语句,执行所述delete语句之前的insert语句,再执行所述delete语句,以将所述delete语句所索引的数据写入到所述第二数据库中。
30.在一些实施例中,所述将所述insert语句所索引的数据写入到数组中进行缓存,将所述insert语句进行拼装,得到并执行拼装后的insert语句包括:
31.响应于所述insert语句的条数达到预设容量或者与上次拼装的时间间隔达到预设时间,将所述insert语句拼装为一条insert语句。
32.在一些实施例中,所述第一数据库具有分析重做日志和归档日志工具包,所述获取第一数据库的redo日志中的第一sql语句,包括:
33.利用所述分析重做日志和归档日志工具包,从所述第一数据库的redo日志中获取并得到所述第一sql语句。
34.在一些实施例中,所述第一数据库为oracle数据库,所述第二数据库为mysql数据库。
35.另一方面,本技术实施例提供一种跨数据库的数据同步装置,所述装置包括:
36.获取模块,用于获取第一数据库的重做redo日志中的第一结构化查询语言sql语句,其中第一sql语句包括第一数据操作语言dml语句;
37.第一写入模块,用于将所述第一数据库中目标表的第一sql语句写入到中间系统中,得到写入的第一sql语句,其中一个所述目标表位于所述中间系统的一个分区内,所述第一数据库包括至少一个所述目标表;
38.转换模块,用于对所述写入的第一sql语句进行转换,得到第二sql语句,其中所述第二sql语句为符合第二数据库的语法和主键类型的sql语句,所述第二sql语句包括第二dml语句;
39.第二写入模块,用于基于所述第二dml语句,将所述第二sql语句写入到第二数据库中,使得所述第一数据库的数据同步到所述第二数据库中。
40.又一方面,本技术实施例提供了一种非易失性计算机可读存储介质,当所述存储介质中的指令由电子设备的处理器执行时,使得所述电子设备能够执行如上所述任一方面中的跨数据库的数据同步方法。
41.本技术实施例提供的跨数据库的数据同步方法,在由服务器执行时,通过获取第一数据库的redo日志中的第一sql语句,可以将第一数据库中目标表的第一sql语句写入到中间系统中,得到写入的第一sql语句;继而对写入的第一sql语句进行转换,得到符合第二数据库的语法和主键类型的第二sql语句;由于第二sql语句中包括第二dml语句,可以基于第二dml语句,将第二sql语句写入到第二数据库中,实现将第一数据库的数据同步到第二数据库中。另外,由于第一数据库的一个目标表位于中间系统的一个分区内,便于第一数据库的目标表中的数据在第二数据库上按照分区顺序进行数据同步,便于服务器将数据写入第二数据库,从而提高同步效率。该方法通过在同步前将写入的第一sql语句转换成符合第二数据库的语法和主键类型的第二sql语句,即充分考虑到了数据库之间所存在的兼容问题,使得第一数据库的数据在同步到第二数据库时,可以快速实现同步,提高了数据同步的效率。
附图说明
42.为了更清楚地说明本技术实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
43.图1是根据一示例性实施例示出的一种跨数据库的数据同步方法的实施环境示意图;
44.图2为本技术实施例提供的一种跨数据库的数据同步方法的流程图;
45.图3为本技术实施例提供的另一种跨数据库的数据同步方法的流程图;
46.图4为本技术实施例提供的一种跨数据库的数据同步方法中基于第二dml语句,将第二sql语句写入到第二数据库中的流程图;
47.图5为本技术实施例提供的一种跨数据库的数据同步装置的结构示意图。
具体实施方式
48.下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
49.不同的数据库之间,有些数据需要实时进行同步。目前,党建业务库是oracle数据库,其中一个分析库是mysql数据库,当需要对党建业务库进行分析时,需要实时地从oracle数据库中将数据同步到mysql数据库中。
50.由于相关技术中在将oracle数据库数据同步到mysql数据库中时,存在的同步时间长,影响数据同步效率的问题,因此为了解决相关技术中存在的问题,本技术实施例提供了一种跨数据库的数据同步方法。
51.图1是根据一示例性实施例示出的一种跨数据库的数据同步方法的实施环境示意图。参见图1,该实施环境包括:服务器101和安装在服务器101上的应用程序102、第一数据库103、中间系统104和第二数据库105。
52.其中,应用程序102、第一数据库103、中间系统104和第二数据库105均可以在服务器101上运行,第一数据库103、中间系统104和第二数据库105分别与应用程序102直接连接。
53.图2为本技术实施例提供的跨数据库的数据同步方法的流程图。该方法应用于服务器,参见图2,具体包括如下步骤。
54.201,获取第一数据库的redo日志中的第一sql(structured query language)语句,其中第一sql语句包括第一dml语句。
55.202,将第一数据库中目标表的第一sql语句写入到中间系统中,得到写入的第一sql语句,其中一个目标表位于中间系统的一个分区内,第一数据库包括至少一个目标表。
56.203,对写入的第一sql语句进行转换,得到第二sql语句,其中第二sql语句为符合第二数据库的语法和主键类型的sql语句,第二sql语句包括第二dml语句。
57.204,基于第二dml语句,将第二sql语句写入到第二数据库中,使得第一数据库的数据同步到第二数据库中。
58.本技术实施例提供的跨数据库的数据同步方法,通过获取第一数据库的redo日志中的第一sql语句,可以将第一数据库中目标表的第一sql语句写入到中间系统中,得到写入的第一sql语句;继而对写入的第一sql语句进行转换,得到符合第二数据库的语法和主键类型的第二sql语句;由于第二sql语句中包括第二dml语句,可以基于第二dml语句,将第二sql语句写入到第二数据库中,实现将第一数据库的数据同步到第二数据库中。另外,由于第一数据库的一个目标表位于中间系统的一个分区内,便于第一数据库的目标表中的数据在第二数据库上按照分区顺序进行数据同步,便于服务器将数据写入第二数据库,从而提高同步效率。
59.因此,本技术实施例提供的跨数据库的数据同步方法,通过在同步前将写入的第一sql语句转换成符合第二数据库的语法和主键类型的第二sql语句,即充分考虑到了数据库之间所存在的兼容问题,使得第一数据库的数据在同步到第二数据库时,可以快速实现同步,提高了数据同步的效率。
60.在一些实施例中,将第一数据库中目标表的第一sql语句写入到中间系统中,得到写入的第一sql语句之后,该方法还包括:
61.对写入的第一sql语句进行解析,得到键值key-value结构的第一sql语句;
62.将key-value结构的第一sql语句作为写入的第一sql语句。
63.在一些实施例中,对写入的第一sql语句进行转换,得到第二sql语句包括:
64.对写入的第一sql语句中的第一函数和第一主键类型进行转换,得到第二sql语句的第二函数和第二主键类型。
65.在一些实施例中,对写入的第一sql语句中的第一函数和第一主键类型进行转换,得到第二sql语句的第二函数和第二主键类型包括:
66.响应于写入的第一sql语句中的第一函数在第二sql语句中存在参数、作用和名称均相同的函数,将写入的第一sql语句中的第一函数作为第二sql语句的第二函数;
67.响应于写入的第一sql语句中的第一主键类型在第二sql语句中存在参数、作用和名称均相同的主键类型,将写入的第一sql语句中的第一主键类型作为第二sql语句的第二主键类型;
68.响应于写入的第一sql语句中的第一函数在第二sql语句中不存在参数和/或作用相同的函数,将写入的第一sql语句中的第一函数删除;
69.响应于写入的第一sql语句中的第一主键类型在第二sql语句中不存在参数和/或作用相同的主键类型,将写入的第一sql语句中的第一主键类型删除;
70.响应于写入的第一sql语句中的第一函数在第二sql语句中存在参数和作用相同、名称不同的函数,将写入的第一sql语句中的第一函数替换为第二sql语句的第二函数;
71.响应于写入的第一sql语句中的第一主键类型在第二sql语句中存在参数和作用相同、名称不同的主键类型,将写入的第一sql语句中的第一主键类型替换为第二sql语句的第二主键类型。
72.在一些实施例中,基于第二dml语句,将第二sql语句写入到第二数据库中包括:
73.基于第二dml语句,确定第二dml语句的类型,第二dml语句包括插入insert语句、更新update语句和删除delete语句;
74.响应于当前的第二dml语句为insert语句,将insert语句所索引的数据写入到数组中进行缓存,将insert语句进行拼装,得到并执行拼装后的insert语句,以将拼装后的insert语句所索引的数据写入到第二数据库中;
75.响应于当前的第二dml语句为update语句,执行update语句之前的insert语句,再执行update语句,以将update语句所索引的数据写入到第二数据库中;
76.响应于当前的第二dml语句为delete语句,执行delete语句之前的insert语句,再执行delete语句,以将delete语句所索引的数据写入到第二数据库中。
77.在一些实施例中,将insert语句所索引的数据写入到数组中进行缓存,将insert语句进行拼装,得到并执行拼装后的insert语句包括:
78.响应于insert语句的条数达到预设容量或者与上次拼装的时间间隔达到预设时间,将insert语句拼装为一条insert语句。
79.在一些实施例中,第一数据库具有分析重做日志和归档日志工具包,获取第一数据库的redo日志中的第一sql语句,包括:
80.利用分析重做日志和归档日志工具包,从第一数据库的redo日志中获取并得到第一sql语句。
81.在一些实施例中,第一数据库为oracle数据库,第二数据库为mysql数据库。
82.图3为本技术实施例提供的另一种跨数据库的数据同步方法的流程图。应用于服务器,参见图3,该方法包括如下步骤。
83.301,获取第一数据库的重做redo日志中的第一结构化查询语言sql语句。
84.其中,第一sql语句包括第一dml语句,第一dml语句用于对数据进行操作。
85.该步骤的作用是获取第一数据库内数据的索引地址和数据操作指令,便于对第一数据库内的数据进行操作。
86.在一些实施例中,第一数据库具有分析重做日志和归档日志工具包。
87.当第一数据库具有分析重做日志和归档日志工具包时,本步骤可以按照如下方式实现:利用分析重做日志和归档日志工具包,从第一数据库的redo日志中获取并得到第一sql语句。
88.302,将第一数据库中目标表的第一sql语句写入到中间系统中,得到写入的第一sql语句。
89.其中,一个目标表位于中间系统的一个分区内,第一数据库包括至少一个目标表。
90.通过将第一数据库的一个目标表设置在中间系统的一个分区内,便于第一数据库的目标表中的数据在第二数据库上按照分区顺序进行数据同步,便于服务器将数据写入第二数据库,从而提高同步效率。
91.在一些实施例中,中间系统可以为kafka系统。其中,kafka系统是一个高吞吐量的分布式发布订阅消息系统,具有多个分区,用来缓存和处理数据,具有低延时和高可用性的特点。
92.在一些实施例中,可以按照目标表的表名将对应的第一sql数据写入到对应的分区内。
93.303,对写入的第一sql语句进行解析,得到键值key-value结构的第一sql语句。
94.通过将第一sql语句解析为key-value结构,便于索引数据。其中,key-value结构是一种数据结构,key是关键字,value是数据值,key-value结构有利于数据的查询与存放。
95.304,将key-value结构的第一sql语句作为写入的第一sql语句。
96.通过将解析后的key-value结构作为写入的第一sql语句,可以更好地实现数据的同步。
97.305,对写入的第一sql语句进行转换,得到第二sql语句。
98.其中,第二sql语句为符合第二数据库的语法和主键类型的sql语句,第二sql语句包括第二dml语句。
99.通过在同步前将写入的第一sql语句转换成符合第二数据库的语法和主键类型的第二sql语句,即充分考虑到了mysql数据库存在不完全兼容oracle数据库的语法和主键类
型的问题,使得第一数据库的数据在同步到第二数据库时,可以快速实现同步。
100.在一些实施例中,第一数据库可以为oracle数据库,第二数据库可以为mysql数据库。
101.本步骤具体包括:对写入的第一sql语句中的第一函数和第一主键类型进行转换,得到第二sql语句的第二函数和第二主键类型。
102.进一步地,对写入的第一sql语句中的第一函数和第一主键类型进行转换,得到第二sql语句的第二函数和第二主键类型可以包括如下几种实施方式:
103.在第一种实施方式中,响应于写入的第一sql语句中的第一函数在第二sql语句中存在参数、作用和名称均相同的函数,将写入的第一sql语句中的第一函数作为第二sql语句的第二函数。
104.当第一数据库和第二数据库中存在参数、作用和名称相同的函数时,进行保留操作,即无需进行函数的转换。
105.在第二种实施方式中,响应于写入的第一sql语句中的第一主键类型在第二sql语句中存在参数、作用和名称均相同的主键类型,将写入的第一sql语句中的第一主键类型作为第二sql语句的第二主键类型。
106.当第一数据库和第二数据库中存在参数、作用和名称相同的主键类型时,进行保留操作,即无需进行主键类型的转换。
107.在第三种实施方式中,响应于写入的第一sql语句中的第一函数在第二sql语句中不存在参数和/或作用相同的函数,将写入的第一sql语句中的第一函数删除。
108.当第一数据库和第二数据库中不存在参数相同或者作用相同或者参数相同且作用相同的函数时,进行删除操作,即将写入的第一sql语句中的第一函数删除。
109.在第四种实施方式中,响应于写入的第一sql语句中的第一主键类型在第二sql语句中不存在参数和/或作用相同的主键类型,将写入的第一sql语句中的第一主键类型删除。
110.当第一数据库和第二数据库中不存在相同或者作用相同或者参数相同且作用相同的主键类型,进行删除操作,即将写入的第一sql语句中的第一函数删除。
111.在第五种实施方式中,响应于写入的第一sql语句中的第一函数在第二sql语句中存在参数和作用相同、名称不同的函数,将写入的第一sql语句中的第一函数替换为第二sql语句的第二函数。
112.当第一数据库和第二数据库中存在参数和作用相同、名称不同的函数,进行替换操作,即将第一函数替换为符合第二数据库名称的函数。
113.在第六种实施方式中,响应于写入的第一sql语句中的第一主键类型在第二sql语句中存在参数和作用相同、名称不同的主键类型,将写入的第一sql语句中的第一主键类型替换为第二sql语句的第二主键类型。
114.当第一数据库和第二数据库中存在参数和作用相同、名称不同的主键类型,进行替换操作,即将第一主键类型替换成符合第二数据库名称的主键类型。
115.306,基于第二dml语句,将第二sql语句写入到第二数据库中,使得第一数据库的数据同步到第二数据库中。
116.由于第二dml语句可以用于对数据进行操作,因此服务器可以将第二sql语句写入
到第二数据库中,实现将第一数据库的数据同步到第二数据库中。
117.在一些实施例中,服务器上的应用程序在将第二sql语句写入到第二数据库中的方式为并行写入,甚至可以在多台服务器上同时写入,同一个目标表在同一个线程内进行写入。另外,服务器上的应用程序在进行并行写入时,需要运用进程和线程,线程是进程的单元,一个进程的任务在线程上执行。
118.参见图4,该步骤可以具体包括:
119.3061,基于第二dml语句,确定第二dml语句的类型,第二dml语句包括插入insert语句、更新update语句和删除delete语句。
120.其中,insert语句用于对数据进行插入处理;update语句用于对数据进行更新处理;delete语句用于对数据进行删除处理。
121.3062,响应于当前的第二dml语句为insert语句,将insert语句所索引的数据写入到数组中进行缓存,将insert语句进行拼装,得到并执行拼装后的insert语句,以将拼装后的insert语句所索引的数据写入到第二数据库中。
122.在当前的第二dml语句为insert语句时,为了保证插入数据操作的连续性,可以将insert语句所索引的数据写入到数组中进行缓存后,将insert语句进行拼装,得到并执行拼装后的insert语句,使得拼装后的insert语句所索引的数据写入到第二数据库中。
123.在一些实施例中,该数组为应用程序内的数组,用于缓存数据。
124.在一些实施例中,为了防止出现数据拥堵的情况,将insert语句所索引的数据写入到数组中进行缓存,将insert语句进行拼装,得到并执行拼装后的insert语句可以具体包括:响应于insert语句的条数达到预设容量或者与上次拼装的时间间隔达到预设时间,将insert语句拼装为一条insert语句,即可以通过对控制容量和拼装时间来实现对数据写入的控制,并以将拼装后的insert语句所索引的数据写入到第二数据库中。
125.在一种实施例中,预设容量可以为2000条,预设时间可以为1分钟。
126.举例来说,当缓存了2000条insert语句索引的数据时,将这2000条insert语句,拼装成一条insert语句并执行,将拼装后的该条insert语句所索引的数据写入到第二数据库中;当与上次拼装的时间间隔达到预设时间1分钟时,将这1分钟的所有insert语句,拼装成一条insert语句并执行,将拼装后的该条insert语句所索引的数据写入到第二数据库中,实现时间间隔可控。
127.在一种实施例中,当出现个别数据重复导致同步失败的情况时,将这次拼装的insert语句拆分成单条insert语句执行并写入,以保证第二数据库中至少出现一次该拼装的insert语句所索引的数据,实现数据的同步。
128.3063,响应于当前的第二dml语句为update语句,执行update语句之前的insert语句,再执行update语句,以将update语句所索引的数据写入到第二数据库中。
129.在当前的第二dml语句为update语句时,通过执行update语句之前的insert语句,再执行update语句,可以保证对数据进行更新,保证同步数据的准确性。
130.3064,响应于当前的第二dml语句为delete语句,执行delete语句之前的insert语句,再执行delete语句,以将delete语句所索引的数据写入到第二数据库中。
131.在当前的第二dml语句为delete语句时,通过执行delete语句之前的insert语句,再执行delete语句,可以保证对数据进行删除,保证同步数据的准确性。
132.在实际应用中,利用本技术实施例提供的跨数据库的数据同步方法,从oracle数据库到mysql数据库进行实时同步,最快几秒钟就可以在mysql数据库中看到oracle数据库中的数据,可以支撑大量的表,大量数据的实时同步,而且新增加表,只需要修改配置文件即可,非常便利快捷。
133.本技术实施例提供的跨数据库的数据同步方法,通过在同步前将写入的第一sql语句转换成符合第二数据库的语法和主键类型的第二sql语句,即充分考虑到了数据库之间所存在的兼容问题,使得第一数据库的数据在同步到第二数据库时,可以快速实现同步,提高了数据同步的效率。
134.图5为本技术实施例提供的一种跨数据库的数据同步装置的结构示意图。
135.参见图5,该装置包括:
136.获取模块501,用于获取第一数据库的redo日志中的第一sql语句,其中第一sql语句包括第一dml语句;
137.第一写入模块502,用于将第一数据库中目标表的第一sql语句写入到中间系统中,得到写入的第一sql语句,其中一个目标表位于中间系统的一个分区内,第一数据库包括至少一个目标表;
138.转换模块503,用于对写入的第一sql语句进行转换,得到第二sql语句,其中第二sql语句为符合第二数据库的语法和主键类型的sql语句,第二sql语句包括第二dml语句;
139.第二写入模块504,用于基于第二dml语句,将第二sql语句写入到第二数据库中,使得第一数据库的数据同步到第二数据库中。
140.在一些实施例中,本技术实施例提供的跨数据库的数据同步装置还包括:
141.解析模块,用于对写入的第一sql语句进行解析,得到键值key-value结构的第一sql语句;
142.第三写入模块,用于将key-value结构的第一sql语句作为写入的第一sql语句。
143.在一些实施例中,转换模块503包括:
144.转换单元,用于对写入的第一sql语句中的第一函数和第一主键类型进行转换,得到第二sql语句的第二函数和第二主键类型。
145.在一些实施例中,转换单元包括:
146.第一函数子单元,用于响应于写入的第一sql语句中的第一函数在第二sql语句中存在参数、作用和名称均相同的函数,将写入的第一sql语句中的第一函数作为第二sql语句的第二函数。
147.第一主键类型子单元,用于响应于写入的第一sql语句中的第一主键类型在第二sql语句中存在参数、作用和名称均相同的主键类型,将写入的第一sql语句中的第一主键类型作为第二sql语句的第二主键类型。
148.第二函数子单元,用于响应于写入的第一sql语句中的第一函数在第二sql语句中不存在参数和/或作用相同的函数,将写入的第一sql语句中的第一函数删除。
149.第二主键类型子单元,用于响应于写入的第一sql语句中的第一主键类型在第二sql语句中不存在参数和/或作用相同的主键类型,将写入的第一sql语句中的第一主键类型删除。
150.第三函数子单元,用于响应于写入的第一sql语句中的第一函数在第二sql语句中
存在参数和作用相同、名称不同的函数,将写入的第一sql语句中的第一函数替换为第二sql语句的第二函数。
151.第三主键类型子单元,用于响应于写入的第一sql语句中的第一主键类型在第二sql语句中存在参数和作用相同、名称不同的主键类型,将写入的第一sql语句中的第一主键类型替换为第二sql语句的第二主键类型。
152.在一些实施例中,第二写入模块504包括:
153.确定单元,用于基于第二dml语句,确定第二dml语句的类型,第二dml语句包括insert语句、update语句和delete语句。
154.插入单元,用于响应于当前的第二dml语句为insert语句,将insert语句所索引的数据写入到数组中进行缓存,响应于insert语句的条数达到预设容量或者与上次拼装的时间间隔达到预设时间,将insert语句拼装为一条insert语句,得到并执行拼装后的insert语句,以将拼装后的insert语句所索引的数据写入到第二数据库中。
155.更新单元,用于响应于当前的第二dml语句为update语句,执行update语句之前的insert语句,再执行update语句,以将update语句所索引的数据写入到第二数据库中。
156.删除单元,用于响应于当前的第二dml语句为delete语句,执行delete语句之前的insert语句,再执行delete语句,以将delete语句所索引的数据写入到第二数据库中。
157.在一些实施例中,插入单元包括:
158.拼装子单元,用于响应于insert语句的条数达到预设容量或者与上次拼装的时间间隔达到预设时间,将insert语句拼装为一条insert语句。
159.在一些实施例中,获取模块501包括:
160.获取单元,用于利用分析重做日志和归档日志工具包,从第一数据库的redo日志中获取并得到第一sql语句。
161.在一些实施例中,第一数据库为oracle数据库,第二数据库为mysql数据库。
162.本技术实施例提供的跨数据库的数据同步装置,通过在同步前将写入的第一sql语句转换成符合第二数据库的语法和主键类型的第二sql语句,即充分考虑到了数据库之间所存在的兼容问题,使得第一数据库的数据在同步到第二数据库时,可以快速实现同步,提高了数据同步的效率。
163.在示例性实施例中,还提供了一种计算机非易失性计算机可读存储介质,例如包括程序代码的存储器,上述程序代码可由电子设备中的处理器执行以完成上述实施例中的跨数据库的数据同步方法。例如,该计算机非易失性计算机可读存储介质可以是只读存储器(read-only memory,rom)、随机存取存储器(random access memory,ram)、只读光盘(compact disc read-only memory,cd-rom)、磁带、软盘和光数据存储设备等。
164.本领域普通技术人员可以理解实现上述实施例的全部或部分步骤,可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,上述的程序可以存储于一种计算机非易失性计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
165.在本技术中,术语“第一”和“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性。术语“多个”指两个或两个以上,除非另有明确的限定。
166.本领域技术人员在考虑说明书及实践这里公开的本技术后,将容易想到本技术的其它实施方案。本技术旨在涵盖本技术的任何变型、用途或者适应性变化,这些变型、用途
或者适应性变化遵循本技术的一般性原理并包括本技术未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的。
167.应当理解的是,本技术并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本技术的范围仅由所附的权利要求来限制。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献