数据同步方法及装置、计算机设备及计算机可读存储介质与流程

文档序号:32393757发布日期:2022-11-30 09:24阅读:41来源:国知局
数据同步方法及装置、计算机设备及计算机可读存储介质与流程

1.本技术涉及计算机技术领域,更具体而言,涉及一种数据同步方法、数据同步装置、计算机设备及计算机可读存储介质。


背景技术:

2.随着互联网的不断发展,越来越多的企业在各种系统上处理业务,但是每个系统使用的数据库可能是不同的。在进行跨系统处理业务时,需要在不同的数据库之间同步数据,然而不同的数据库的表结构并不相同,表结构不同导致数据无法直接完成同步。传统方法采用人工邮件通知数据库的表结构,并人工完成不同数据库的表结构的同步,然而当工作量变大时,传统方法完成工作的工作效率和正确度都难以得到保证。


技术实现要素:

3.鉴于此,本技术实施方式提供了一种数据同步方法、数据同步装置、计算机设备及计算机可读存储介质,实现不同数据库的表结构的自动同步和数据同步,提高不同数据库之间数据同步的效率和正确性。
4.本技术实施方式的数据同步方法包括建立当前数据库和目标数据库的数据库链接;检测所述目标数据库的表结构在所述当前数据库中对应的表结构,以生成映射关系;及根据所述映射关系建立映射表,以通过所述映射表对所述目标数据库进行读写。
5.本技术实施方式的数据同步装置包括建立模块、检测模块及读写模块。所述建立模块用于建立当前数据库和目标数据库的数据库链接;所述检测模块用于检测所述目标数据库的表结构在所述当前数据库中对应的表结构,以生成映射关系;所述读写模块用于根据所述映射关系建立映射表,以通过所述映射表对所述目标数据库进行读写。
6.本技术实施方式的计算机设备包括一个或多个处理器,一个或多个所述处理器用于用于建立当前数据库和目标数据库的数据库链接;检测所述目标数据库的表结构在所述当前数据库中对应的表结构,以生成映射关系;及根据所述映射关系建立映射表,以通过所述映射表对所述目标数据库进行读写。
7.本技术实施方式的计算机可读存储介质包含计算机程序,当所述计算机程序被一个或多个处理器执行时,使得所述处理器执行如下数据同步方法:用于建立当前数据库和目标数据库的数据库链接;检测所述目标数据库的表结构在所述当前数据库中对应的表结构,以生成映射关系;及根据所述映射关系建立映射表,以通过所述映射表对所述目标数据库进行读写。
8.本技术的数据同步方法、数据同步装置、计算机设备及计算机可读存储介质,通过建立当前数据库与目标数据库的映射表和数据库链接,以通过映射表和数据库链接对目标数据库进行读写,从而实现不同数据库的表结构的自动同步和数据同步,提高不同数据库之间数据同步的效率和正确性。
9.本技术的实施方式的附加方面和优点将在下面的描述中部分给出,部分将从下面
的描述中变得明显,或通过本技术的实施方式的实践了解到。
附图说明
10.本技术的上述和/或附加的方面和优点可以从结合下面附图对实施方式的描述中将变得明显和容易理解,其中:图1是本技术某些实施方式的数据同步方法的流程示意图;图2是本技术某些实施方式的数据同步方法的流程示意图;图3是本技术某些实施方式的数据同步方法的流程示意图;图4是本技术某些实施方式的数据同步方法的流程示意图;图5是本技术某些实施方式的数据同步方法的流程示意图;图6是本技术某些实施方式的数据同步方法的流程示意图;图7是本技术某些实施方式的数据同步方法的流程示意图;图8是本技术某些实施方式的数据同步装置的模块示意图;图9是本技术某些实施方式的计算机设备的平面示意图;及图10是本技术某些实施方式的计算机可读存储介质与处理器的同步示意图。
具体实施方式
11.下面详细描述本技术的实施方式,实施方式的示例在附图中示出,其中,相同或类似的标号自始至终表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施方式是示例性的,仅用于解释本技术的实施方式,而不能理解为对本技术的实施方式的限制。
12.下面首先对本技术出现的名词进行解释:请参阅图1,本技术实施方式的数据同步方法包括:步骤01:建立当前数据库和目标数据库的数据库链接。
13.具体地,在进行当前数据库和目标数据库的数据同步前,首先明确目标数据库的数据类型、需要同步的目标表的名称以及目标表所在的数据库对象的集合(schema)。然后根据目标数据库,建立当前数据库与目标数据库的数据库链接,以便于根据当前数据库对目标数据库进行读写。
14.特别地,为了使得当前数据库可以连接多个目标数据库的数据,本技术的数据同步方法使用以postgresql为中心的数据库同步模式,当前数据库的类型唯一且为postgresql数据库,目标数据库为其他类型的数据库,例如mysql数据库、oracle数据库或greenplum数据库,且目标数据库的数量可为多个。
15.步骤02:检测目标数据库的表结构在当前数据库中对应的表结构,以生成映射关系。
16.具体地,表结构描述了一个表的框架,设计表结构实际上就是定义组成一个表的字段个数,每个字段的名称、数据类型和长度等信息。不同数据库的表结构之间都存在异同,表结构的不同使得不同数据库之间无法直接实现数据同步。例如oracle数据库和postgresql数据库中的日期类型的数据都包括“date”,而oracle数据库中的“number”和postgresql数据库中的“numeric”虽然都是数字类型,但显然两者的名称不同,postgresql
数据库无法直接同步oracle数据库中数字类型为“number”的数据。但是,不同的数据库之间的字段均有替代方案,因此只要在目标数据库的字段和当前数据库中可替换目标数据库的字段的字段之间生成映射关系,便可完成目标数据库和当前数据库的表结构的同步。可以理解,在进行两个不同的数据库的数据同步前,先根据两个数据库的字段的实际应用预先设置两个数据库之间的字段的预设映射关系,即,在两个数据库都存在的且信息完全相同的字段之间生成映射关系,在两个数据库中的信息不完全相同但实际应用相同的字段之间生成映射关系。然后在获得目标数据库的表结构时,根据两个数据库的预设映射关系,检测目标数据库的表结构在当前数据库中对应的表结构,以生成两个数据库的字段之间的映射关系。例如,oracle数据库的“date”映射postgresql数据库的“date”,oracle数据库的“number”映射postgresql数据库的“numeric”。
17.步骤03:根据映射关系建立映射表,以通过映射表对目标数据库进行读写。
18.具体地,目标数据库和当前数据库之间有映射关系的字段,都有可以进行数据类型转换的表结构转换语句。在得到目标数据库和当前数据库的映射关系后,当前数据库会根据目标数据库和当前数据库的映射关系和表结构转换语句,将目标数据库的数据的数据类型转换成为当前数据库的数据的数据类型,并根据转换后的数据建立映射表,使得可以通过映射表对目标数据库进行读写。例如,oracle数据库的“number”和postgresql数据库的“numeric”之间存在映射关系,那么在建立映射表时,便会根据“number”和“numeric”之间的表结构转换语句,将oracle数据库的数据类型为“number”的数据,转换成为数据类型为“numeric”的数据,并将转化后的数据类型为“numeric”的数据放入映射表中。当oracle数据库和postgresql数据库之间建立数据库连接和映射表后,便可根据映射表对oracle数据库进行读写。
19.如此,当多个目标数据库与当前数据库建立映射表后,当前数据库与多个目标数据库可利用映射表实现通过当前数据库对多个数据库进行读写,例如,当oracle数据库和mysql数据库都和postgresql数据库建立映射表后,便可通过在postgresql数据库的映射表,来修改oracle数据库或mysql数据库中对应的数据。
20.进一步地,为了便于当前数据库与多种数据库之间的表结构同步和数据同步,在建立映射表时,当前数据库与不同类型的数据库之间分别建立映射表,即映射表是一一对应的。例如postgresql数据库会专门生成与oracle数据库的映射表,或专门生成与mysql数据库的映射表,以在通过postgresql数据库对目标数据库进行读写时,选取对应的映射表来完成读写。
21.本技术的数据同步方法通过建立当前数据库与目标数据库的映射表和数据库链接,以通过映射表和数据库链接对目标数据库进行读写,从而实现不同数据库的表结构的自动同步和数据同步,提高不同数据库之间数据同步的效率和正确性。
22.请参阅图2,可选地,步骤01:建立当前数据库和目标数据库的数据库链接,可包括:步骤011:获取与目标数据库匹配的链接插件;步骤012:通过链接插件建立当前数据库和目标数据库的数据库链接。
23.具体地,不同目标数据库匹配的链接插件不同,因此在建立当前数据库和目标数据库的数据库链接时,还需要根据目标数据库的种类,获取与目标数据库匹配的链接插件,
以通过合适的链接插件,建立当前数据库和目标数据库的数据库链接,从而通过当前数据库和目标数据库的数据库链接,实现当前数据库和目标数据库的数据同步。
24.特别地,由于当前数据库为postgresql数据库,因此在建立当前数据库和目标数据库的数据库链接时,采用postgresql数据库中开源的插件来建立与各个目标数据库的数据库链接,并根据目标数据库的类型,选择不同的插件来建立数据库连接,如要与oracle数据库同步就需要调用oracle_fdw插件,而与mysql数据库同步就要调用mysql_fdw插件。
25.请参阅图3,可选地,步骤02:检测目标数据库的表结构在当前数据库中对应的表结构,以生成映射关系,可包括:步骤021:比对当前数据库的结构化查询语言和目标数据库的结构化查询语言,以确定目标数据库的表结构在当前数据库中对应的表结构;步骤022:根据目标数据库的表结构在当前数据库中对应的表结构生成映射关系。
26.具体的,每个数据库都有专门存储本数据库的表结构的元数据表,且每个数据库都有自己的结构化查询语言,结构化查询语言用于查询存储本数据库的表结构的元数据表。在生成映射关系前,会对比当前数据库的结构化查询语言和目标数据库的结构化查询语言,以得到当前数据库的表结构和目标数据库的表结构,再结合预设映射关系,确定目标数据库的表结构在当前数据库中对应的表结构,最后根据目标数据库的表结构在当前数据库中对应的表结构生成映射关系。
27.例如,postgresql数据库和oracle数据库都有专门用于查询本数据库的表结构的sql语句。在生成映射关系前,会执行两个数据库中专门用于查询本数据库的表结构的sql语句,得到两个数据库的表结构,如postgresql数据库中的表结构包括“date”和“numeric”,oracle数据库中的表结构包括“date”和“number”。然后根据预设映射关系,确定目标数据库的表结构在当前数据库中对应的表结构,如postgresql数据库中的“date”对应oracle数据库中的“date”,postgresql数据库中的“numeric”对应oracle数据库中的“number”,最后再根据目标数据库的表结构在当前数据库中对应的表结构生成映射关系。
28.请参阅图4,可选地,步骤03:根据映射关系建立映射表,以通过映射表对目标数据库进行读写,可包括:步骤031:接收输入操作,以确定对映射表的操作语句;步骤032:根据操作语句对目标数据库的目标表进行增删改查操作。
29.具体地,增删改查操作包括增加操作、删除操作、修改操作和查询操作。在根据映射关系建立映射表后,便可通过操作映射表,对目标数据库的目标表进行增删改查操作。
30.进一步地,接收到输入操作后,会先根据输入操作中的目标数据库,获得当前数据库中与目标数据库对应的映射表,然后根据输入操作,确定对映射表的操作语句。在确定对映射表的操作语句后,再根据目标数据库的目标表的表结构在当前数据库中对应的表结构及对应的表结构转换语句,生成对目标数据表的目标表的操作语句,以对目标数据库的目标表进行增删改查操作。
31.例如,当oracle数据库和postgresql数据库之间建立数据库连接和映射表后,需要删除oracle数据库中的某个数字类型为“number”的某些数据时,只需要输入在postgresql数据库中针对需要删除的数据类型为“numeric”的数据的删除语句,便可通过映射关系和表结构转换语句自动生成在oracle数据库中针对需要删除的数据类型为“number”的数据的删除语句,并在oracle数据库中执行该删除语句,以删除需要删除的数据。亦或者,在查询目标数据库的10月份的财务报表时,需要先根据目标数据库的财务报表,获得目标数据库的财务报表与当前数据库的财务报表的映射表。然后在确定针对映射表的查询10月份的财务报表的select语句后,根据目标数据库的财务报表的表结构在当前数据库的财务报表中对应的表结构及表结构转换语句,自动生成并执行针对目标数据库的查询10月份的财务报表的select语句,从而得到目标数据库的10月份的财务报表。
32.请参阅图5,可选地,本技术的数据同步方法还包括:步骤04:在映射表中显示进行增删改查操作后的目标表的数据。
33.具体地,在根据操作语句对目标数据库的目标表进行增删改查操作后,映射表获取进行增删改查操作后的目标表的数据,并在映射表中显示进行增删改查操作后的目标表的数据,以便于直观清楚地查看经过增删改查操作后的目标表的数据。例如,在对目标表进行删除操作后,映射表中会获得目标表经过删除操作后剩下的所有数据,并在映射表中显示。
34.请参阅图6,可选地,映射表包括多页,步骤04:在映射表中显示进行增删改查操作的目标表的数据,包括:步骤041:在映射表的当前页中显示进行增删改查操作后的目标表的数据,并对当前页之后的预设页数的目标表的数据进行预加载。
35.具体地,进行增删改查操作后的目标表的数据一般较多,无法在一页内将全部数据显示出来,因此映射表包括多页,映射表设有预设页数,且每页设有预设条数。在根据操作语句对目标数据库的目标表进行增删改查操作后,映射表会根据预设条数,在映射表的当前页中显示进行增删改查操作后的目标表的数据,且当前页的数据的数量与预设条数相等。在映射表的当前页中显示进行增删改查操作后的目标表的数据的同时,还会对当前页之后的预设页数的目标表的数据进行预加载,以减少在查询映射表时,等待当前页之后的页面加载和显示数据的时间。例如,进行增删改查操作的目标表的数据有50条,映射表的预设页数为3页,预设条数为10条,那么在目标表进行增删改查操作后,映射表会获取进行增删改查操作的目标表的数据,在当前页显示进行增删改查操作的目标表的数据中的前10条数据,然后预加载当前页之后的2页的数据。
36.请参阅图7,可选地,本技术的数据同步方法还包括:步骤05:导出进行增删改查操作后的目标表的数据到映射表,并存储到当前数据库。
37.具体地,在对目标表进行增删改查操作后,还会导出进行增删改查操作后的目标表的数据到映射表,并存储到当前数据库,以便于在需要调用进行增删改查操作后的目标数据库的数据时,可通过当前数据库导出进行增删改查操作后的目标表的数据。
38.进一步地,当前数据库与多个目标数据库之间建立映射表,并根据操作语句对多个目标数据库的目标表进行增删改查操作后,当前数据库会存储多个目标数据库的数据,使得当前数据库可根据需要,导出不同目标数据库的数据,以避免在调用多个不同的目标数据库的数据时,需要在每个目标数据库中调用数据,从而减小调用不同目标数据库的数据时的操作步骤及时间。
39.更进一步地,在导出进行增删改查操作后的目标表的数据到映射表后,还会对映
射表中的数据进行校验工作,对比进行增删改查操作后的目标表的数据与映射表导出的数据是否一致,若校验出进行增删改查后的目标表的数据与映射表导出的数据一致,则将映射表存储在当前数据库中;若校验出进行增删改查后的目标表的数据与映射表中的数据不一致,则发出警报,并暂停将映射表存储到当前数据库的工作,直到排查出导出过程出错的原因,并在再一次导出进行增删改查操作后的目标表的数据到映射表后,校验结果显示导出成功后,才会将映射表存储在当前数据库中,从而保证最终得到的进行增删改查后的目标表的数据的准确性。
40.此外,导出进行增删改查操作后的目标表的数据到映射表后,还会将本次数据的同步日记写入当前数据库的同步日记表,同步日记表中的数据包括同步的目标数据库的信息、同步时间和数据同步数量,以记录目标数据库的每个数据同步过程,保证当前数据库与所有目标数据库的数据同步过程都是有迹可循的。例如,需要在greenplum数据库中查找10月份的财务报表,查找完成后,在greenplum数据库中找到100条数据,此时便会将这100条数据导出到映射表,存储到当前数据库,并将greenplum数据库的信息,同步的时间和同步的数据的数量,即100条,记录到同步日记表中。
41.为便于更好的实施本技术实施方式的数据同步方法,本技术实施方式还提供一种数据同步装置10。请参阅图8,该数据同步装置10可以包括:建立模块11,用于建立当前数据库和目标数据库的数据库链接;检测模块12,用于检测目标数据库的表结构在当前数据库中对应的表结构,以生成映射关系;读写模块13,用于根据映射关系建立映射表,以通过映射表对目标数据库进行读写。
42.获取模块11具体用于获取与目标数据库匹配的链接插件;及通过链接插件建立当前数据库和目标数据库的数据库链接。
43.检测模块12具体用于比对当前数据库的结构化查询语言和目标数据库的结构化查询语言,以确定目标数据库的表结构在当前数据库中对应的表结构;及根据目标数据库的表结构在当前数据库中对应的表结构生成映射关系。
44.读写模块13具体用于接收输入操作,以确定对映射表的操作语句;根据操作语句对目标数据库的目标表进行增删改查操作。
45.本技术的数据同步装置10还可以包括:显示模块14,用于在映射表中显示进行增删改查操作后的目标表的数据。
46.显示模块14具体用于在映射表的当前页中显示进行增删改查操作后的目标表的数据,并对当前页之后的预设页数的目标表的数据进行预加载。
47.本技术的数据同步装置10还可以包括:存储模块15,用于导出进行增删改查操作后的目标表的数据到映射表,并存储到当前数据库。
48.上述数据同步装置10中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各个模块可以以硬件形式内嵌于或独立于计算机设备中的处理器20中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器20调用执行上述各个模块对应的操作。
49.请参阅图9,本技术实施方式的计算机设备100包括处理器20。处理器20用于执行上述任意一种实施方式的数据同步方法,为了简洁,在此不再赘述。
50.请参阅图10,本技术实施方式还提供了一种计算机可读存储介质200,其上存储有计算机程序210,计算机程序210被处理器20执行的情况下,实现上述任意一种实施方式的数据同步方法的步骤,为了简洁,在此不再赘述。
51.可以理解,计算机程序210包括计算机程序代码。计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。计算机可读存储介质可以是计算机可读存储介质如能够携带计算机程序代码的任何实体或装置、记录介质、u盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、以及软件分发介质等。
52.在本说明书的描述中,参考术语“一个实施方式”、“一些实施方式”、“示意性实施方式”、“示例”、“具体示例”或“一些示例”等的描述意指结合所述实施方式或示例描述的具体特征、结构、材料或者特点包含于本技术的至少一个实施方式或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施方式或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施方式或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施方式或示例以及不同实施方式或示例的特征进行结合和组合。
53.流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现特定逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本技术的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本技术的实施方式所属技术领域的技术人员所理解。
54.尽管上面已经示出和描述了本技术的实施方式,可以理解的是,上述实施方式是示例性的,不能理解为对本技术的限制,本领域的普通技术人员在本技术的范围内可以对上述实施方式进行变化、修改、替换和变型。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1