一种数据库的数据同步方法、装置、设备及存储介质
技术领域
本发明涉及互联网技术领域,特别是涉及一种数据库的数据同步方法、装置、设备及存储介质。
背景技术
目前,数据库中,表对表之间的数据同步需要做繁琐的字段映射开发,同步逻辑开发以及转换关系的开发。并且,在数据同步过程中,不能对字段进行格式转换、逻辑运算、并以多种同步形式进行数据同步。
因此,现有技术有待改进和发展。
发明内容
为了解决上述现有技术的缺陷和不足,本发明提供了一种数据库的数据同步方法、装置、设备及存储介质,用于解决现有技术中数据同步需做繁琐的各项开发的问题,以及用于解决现有技术在数据同步过程中不能对字段进行格式转换、逻辑运算、并以多种同步形式进行数据同步的问题。
本发明所采用的技术方案如下:
一方面,本发明提供了一种数据库的数据同步方法,包括:
预先对同步数据的环境进行表配置和字段配置,其中,所述同步数据包括源表中需要同步的数据和目标表中被同步的数据,所述表配置包括对数据进行同步的同步类型,所述字段配置包括对字段进行格式转换的转换方法;
基于表配置和字段配置将源表中需要同步的数据同步至目标表中。
具体的,所述同步类型包括O类型、C类型、I类型、M类型和F类型;
其中,O类型是基于流水ID表,通过读取配置的方式进行数据同步;
C类型是基于Control表进行数据同步;
I类型是基于时间戳进行增量同步,并且,若目标数据库已经存在需要同步的数据的ID记录,则不会进行数据同步,否则,复制需要同步的数据至目标表中;
M类型是基于配置的取值SQL进行数据同步,并在数据同步后,会根据同步后的数据ID将源数据库中对应的数据删除;
F类型是基于配置中的目标表信息,先删除目标表所有数据内容,再将源表的数据全部同步至目标表。
优选地,所述数据库的数据同步方法,在所述基于表配置和字段配置将源表中需要同步的数据同步至目标表中之前,还包括:
基于定时任务触发执行数据同步,并调用相应的表配置和字段配置;
获取定时任务中同步数据的运行配置信息;
对定时任务中的业务代码进行处理;
判断当前定时任务是否处于开启状态,若是,则
将配置信息组装成通用消息模板发布至消息列队。
优选地,所述基于表配置和字段配置将源表中需要同步的数据同步至目标表中,是基于消息列队中对应的数据同步消息触发执行,具体包括如下步骤:
根据预先表配置中的同步类型,提取同步数据;
判断源表中需要同步的数据是否提取,若是,则
根据预先字段配置中的转换方法对源表中需要同步的数据进行格式转换;
判断目标表中是否存在转换后的数据,若否,则将转换后的数据写入目标表中,若是,则更新目标表。
优选地,所述数据库的数据同步方法,还包括:
将所述基于表配置和字段配置将源表中需要同步的数据同步至目标表中的过程中,出现数据同步异常的内容记录在预先配置的错误日志记录表中;
基于定时任务触发定时扫描错误日志记录表,提取出存在数据同步异常的内容重新基于表配置和字段配置将源表数据需要同步的数据同步至目标表中。
另一方面,本发明提供了一种数据库的数据同步装置,包括:
预设模块,用于预先对同步数据的环境进行表配置和字段配置,其中,所述同步数据包括源表中需要同步的数据和目标表中被同步的数据,所述表配置包括对数据进行同步的同步类型,所述字段配置包括对字段进行格式转换的转换方法;
同步模块,用于基于表配置和字段配置将源表中需要同步的数据同步至目标表中。
具体的,所述同步类型包括O类型、C类型、I类型、M类型和F类型;
其中,O类型是基于ID流水表,通过读取配置的方式进行数据同步;
C类型是基于Control表进行数据同步;
I类型是基于时间戳进行增量同步,并且,若目标数据库已经存在需要同步的数据的ID记录,则不会进行数据同步,否则,复制需要同步的数据至目标表中;
M类型是基于配置的取值SQL进行数据同步,在数据同步后,会根据同步后的数据ID将源数据库中对应的数据删除;
F类型是基于配置中的目标表信息,先删除目标表所有数据内容,再将源表的数据全部同步至目标表。
优选地,所述数据库的数据同步装置,还包括
调用模块,用于基于定时任务触发执行数据同步,并调用相应的表配置和字段配置;
第一获取模块,用于获取同步数据的配置信息;
第一处理模块,用于对定时任务中的业务代码进行处理;
第一条件模块,用于判断当前定时任务的状态;
第二处理模块,用于将配置信息组装成通用消息模板发布至消息列队。
在一方面,本发明提供了一种数据库的数据同步设备,包括存储器和至少一个处理器,所述存储器中存储有指令,所述存储器和所述至少一个处理器通过线路互连;
所述至少一个处理器调用所述存储器中的所述指令,以使得所述数据库的数据同步设备执行上述所述的数据库的数据同步方法。
在一方面,本发明提供了一种计算机可读存储介质,所述存储介质上存储有计算机程序,所述程序被处理器执行时实现上述所述的数据库的数据同步方法的步骤。
本发明的有益效果:相较于现有技术,本发明通过预先对同步数据的环境进行表配置和字段配置,并基于该配置实现将源表中需要同步的数据同步至目标表中,该数据同步方式简单。并且,利用表配置内的不同类型的同步类型实现多种同步形式进行数据同步,利用字段配置中的转换方法实现对字段的格式转换,实现在数据同步过程中,对字段进行格式转换、逻辑运算。
附图说明
图1为本发明数据库的数据同步方法的原理流程图。
图2为本发明数据库的数据同步方法在执行步骤S2前的流程图。
图3为本发明数据库的数据同步方法中步骤S2的流程图。
图4为本发明数据库的数据同步方法中在执行步骤S2后的流程图。
图5为本发明数据库的数据同步装置的结构示意图。
图6为本发明数据库的数据同步装置中同步模块的结构示意图。
图7为本发明数据库的数据同步设备的结构示意图。
具体实施方式
下面结合附图和具体实施例对本发明作进一步的说明。
目前,数据库中表对表之间的数据同步需要做繁琐的字段映射开发,同步逻辑开发以及转换关系的开发。并且,在数据同步过程中,不能对字段进行格式转换、逻辑运算、并以多种同步形式进行数据同步。
基于此,本发明实施例提供了一种数据库的数据同步方法,可以运用于服务器中。请参照附图1,该数据同步方法包括如下步骤:
S1,预先对同步数据的环境进行配置。
其中,同步数据包括源表中需要同步的数据和目标表中被同步的数据,而该配置包括对源表中需要同步的数据和目标表中被同步的数据的环境进行表配置和字段配置。
具体的,表配置的框架结构包括同步代码、源数据库代码、目标数据库代码、源数据库类型、目标数据库类型、源表、目标表、同步类型、同一批数据同步量、是否记日志、源数据查询语句、数据更新语句、源数据删除语句、目标数据查询语句、目标数据插入语句、目标数据更新语句、目标数据删除语句、上次完成数据同步的时间戳、错误最大重推次数等。
其中,同步类型是数据库中进行数据同步形式,该表配置内包含有5种同步类型供用户选择。如此,用户对需要同步的数据的同步形式在表配置预先完成选择,当进行数据同步时,即以该同步类型进行数据同步。
具体的,同步类型包括O类型、C类型、I类型、M类型和F类型。
其中,O类型是基于ID流水表中的流水ID一条一条进行数据同步。ID流水表中记录有源表ID和同步代码,通过读取配置的方式进行数据同步。
C类型是基于Control表进行数据同步。
具体的,Control表的结构包括同步代码、当前已经处理到的标识(数据型)、当前处理的结果、当前处理的开始时间、当前处理的结束时间,其中,当前处理的结果包括成功、失败和正在运行三种,并分别采用字母S、F和R表示。
该类型根据Control表记录上一轮数据同步处理到的标识,便于下一次数据同步时,从上一轮的数据同步处理到的标识开始取数。
I类型是时间增量式,即基于时间戳进行增量同步,并且,若目标数据库已经存在需要同步的数据的ID记录,则不会进行数据同步,否则,复制需要同步的数据至目标表中。
M类型是移动式,即基于配置的取值SQL进行数据同步,并在数据同步后,根据同步后的数据ID将源数据库中对应的数据删除。
F类型是全表式,即基于配置中的目标表信息,先删除目标表所有数据内容,再将源表的数据全部同步至目标表,此过程会根据ID流水表中的流水ID,若去没有取到流水ID的,则采用SQL进行获取数据,以此实现数据同步。
所述字段配置的框架结构包括同步函数、同步配置标识、字段序号、字段代码、默认值、是否主键、是否源、是否过滤字段、引用字段代码、转换方法。其中,字段代码为具体的操作字段或字段表达式;转换方法可以是java类名,如com.sync.SHA256Convert,用于将源表中需要同步的数据的格式转换成目标表中被同步的数据格式。
S2,基于表配置和字段配置将源表中需要同步的数据同步至目标表中。
如此,用户可通过表配置和字段配置的框架对同步数据进行环境配置,并且预先设置同步类型和转换方法,并基于该配置进行数据同步,实现将源表中需要同步的数据同步至目标表中,该数据同步方式简单。并且,利用表配置内的不同类型的同步类型实现多种同步形式进行数据同步,利用字段配置中的转换方法实现对字段的格式转换,实现在数据同步过程中,对字段进行格式转换、逻辑运算。
具体的,请参照附图2,用户基于表配置和字段配置的框架对同步数据的环境完成配置后,在进行数据同步执行S2步骤之前,还包括如下步骤:
S11,基于定时任务触发执行数据同步,并调用相应的表配置和字段配置;
S12,获取定时任务中同步数据的运行配置信息;
S13,对定时任务中的业务代码进行处理;
S14,判断当前定时任务是否处于开启状态,若是,则
S15,将配置信息组装成通用消息模板发布至消息列队。
然后,依据消息列队异步对进行数据同步。
若判断当前定时任务未处于开启状态,则返回S13步骤。
其中,运行配置信息包括所有同步数据的代码、同步数据代码的状态、数据库连接(JDBC)等。并且,根据不同的定时任务配置,经数据库连接(JDBC)可连接多种数据库。
S13步骤,是对该定时任务的业务代码的状态进行处理成开启,且该S13步骤是在定时任务定时发起后执行的。
并且,定时任务是根据不同的数据同步任务配置形成有不同的定时调度任务,当到点则发起该数据同步任务。
基于定时调度任务发起进行数据同步任务,执行步骤S2。具体的,请参照附图3,在S2步骤中,包含有如下子步骤:
S21,根据表配置中的同步类型,提取同步数据。其中,具体的,根据不同的同步类型,可能还包含有前置动作,例如,在F类型中,需要先删除目标表中被同步的数据,然后提取同步数据,该提取同步数据是指将ID流水表中的流水ID和根据表配置的内容组装呈起来,一条条进行发布到消息队列,接着异步继续处理后续的流程。
S22,判断源表中需要同步的数据是否提取,若是,则执行步骤S23。
S23,根据预先字段配置中的转换方法对源表中需要同步的数据进行格式转换,即将源表中需要同步的数据转换成目标表中被同步的数据的格式和逻辑状态。
S24,判断目标表中是否存在转换后的数据,若否,则执行步骤S25,即将转换后的数据写入目标表中;若是,则执行步骤S26,即更新目标表。
另外,请参照附图4,本发明的数据库的数据同步方法,还包括:
S31,将步骤S2的过程中,出现数据同步异常的内容记录在预先设置的错误日志记录表中,即是将S2数据同步失败的信息记录在错误日志记录表中。
其中,具体的,错误日志记录表的表配置包括同步代码、同步类型、业务代码、成功(S)或失败F、错误内容、失败次数、最大重试次数,其中,成功或失败是指步骤S2的数据同步结果;错误的内容,是指数据同步失败的原因;当错误日志记录表已经存在同一数据的数据同步失败信息,即在原来失败次数上加一;最大重试次数是指对同一数据的数据同步失败后可重复执行步骤S2的次数。
S32,基于定时任务触发定时扫描错误日志记录表,提取出存在数据同步异常的内容重新基于表配置和字段配置将源表数据需要同步的数据同步至目标表中。该步骤由cronJob定时任务调用错误日志记录表,并定时扫描错误日志记录表,将失败次数在最大重试次数下的错误日志记录表中的数据内容重新取出,并触发执行步骤S2。
本发明数据库的数据同步方法由Java设计开发的一套框架,通过配置数据库连接(JDBC)连接多种数据库,并根据预先表配置和字段配置的框架实现将指定的源表中的某些字段按照指定的同步类型方式同步到指定的目标表中的指定字段中。该数据库的数据同步方法基于配置完成,实现字段的格式转换,以此解决现有技术中数据同步需要做繁琐开发以及在数据同步过程中不能对字段进行格式转换并以多种同步形式进行数据同步的问题。
请参照附图5,为本发明实施例中的数据库的数据同步方法提供的一种数据库的数据同步装置。该数据库的数据同步装置包括预设模块10和同步模块20。预设模块10用于预先对同步数据的环境进行配置,该配置包括表配置和字段配置,其中,同步数据包括源表中需要同步的数据和目标表中被同步的数据,表配置包括对数据进行同步的同步类型,字段配置包括对字段进行格式转换的转换方法。该同步类型与数据库的数据同步方法中的同步类型一致。同步模块20用于基于表配置和字段配置将源表中需要同步的数据同步至目标表中。通过预设模块10完成对表配置和字段配置的配置,通过同步模块20基于预设模块完成数据同步。
具体的,数据库的数据同步装置,还包括
调用模块30,用于基于定时任务触发执行数据同步,并调用相应的表配置和字段配置;
第一获取模块40,用于定时任务中同步数据的运行配置信息;
第一处理模块50,用于对定时任务中的业务代码进行处理;
第一条件模块60,用于判断当前定时任务的状态;
第二处理模块70,用于将配置信息组装成通用消息模板发布至消息列队。
错误记录模块80,用于在所述基于表配置和字段配置将源表数据需要同步的数据同步至目标表中的过程中,对出现数据同步异常内容记录在预先设置的错误日志记录表中;
重处理模块90,用于基于定时任务触发定时扫描错误日志记录表,提取出存在数据同步异常内容重新基于表配置和字段配置将源表中需要同步的数据同步至目标表中。
请参照附图6,同步模块20包括:
提取模块21,用于根据预先表配置中的同步类型,提取同步数据;
第二条件模块22,用于判断源表中需要同步的数据是否提取;
第三处理模块23,用于根据预先字段配置中的转换方法对源表中需要同步的数据进行格式转换;
第四处理模块24,用于判断目标表中是否存在转换后的数据,若否,则将转换后的数据写入目标表中,若是,则更新目标表。
通过本发明实施例中的数据库的数据同步装置实现将指定的源表中的某些字段按照指定的同步类型方式同步到指定的目标表中的指定字段中。该数据库的数据同步方法基于配置完成,实现字段的格式转换。
请参照附图7,本发明实施例还提供了一种数据库的数据同步设备,该数据库的数据同步设备可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上处理器110(central processing units,CPU)和存储器120,一个或一个以上存储应用程序或数据的存储介质130(例如一个或一个以上海量存储设备)。其中,存储器120和存储介质130可以是持久存储。存储在存储介质130的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对数据库的数据同步设备中的一系列指令操作。更进一步地,处理器110可以设置为与存储介质130通信,在数据库的数据同步设备上执行存储介质130中的一系列指令操作。
基于数据库的数据同步设备还可以包括一个或一个以上电源140,一个或一个以上有线或无线网络接口150,一个或一个以上输入输出接口160,和/或,一个或一个以上操作系统,例如Windows Serve,Mac OS X,Unix,Linux,FreeBSD等等。本领域技术人员可以理解,图7示出的数据库的数据同步设备结构并不构成对基于数据库的数据同步设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
本发明实施例还提供了一种计算机可读存储介质,该计算机可读存储介质可为非易失性计算机可读存储介质,存储介质包括:U盘、移动硬盘、只读存储器(read-onlymemory,ROM)、磁碟或者光盘等各种可以存储程序代码的介质。所述存储介质上存储有计算机程序,程序被处理器执行时实现上述所述的数据库的数据同步方法的步骤。
本发明的上述实施例仅仅是为清楚地说明本发明所作的举例,而并非是对本发明的实施方式的限定。而对于属于本发明的实质精神所引伸出的显而易见的变化或变动仍属于本发明的保护范围。