本发明属于数据交换的,具体地涉及一种基于表结构变更的数据交换方法及系统。
背景技术:
1、在传统的数据集成情况下,当一个数据库a同步到大数据或者其它的业务系统的情况下,会经常出现当数据库a中的表和字段存在变更的情况下,在上游业务的开发人员没有告知的情况下,无法快速的感知到,从而导致数据的交换失败,当上游的业务人员将告知的情况下,需要人手手动停掉任务,然后对有修改的库表以及更下游的数据交换来进行挨个的修改的处理,但人为处理容易出现错误并且不容易排查字段之间是否一对一关联匹配上、数据交换时字段的顺序是否保持一致,不便于维护不同数据库之前数据交换的字段映射、字段关系以及默认数据等。
技术实现思路
1、为了解决上述技术问题,本发明提供了一种基于表结构变更的数据交换方法及系统,用于解决现有技术中的技术问题。
2、一方面,该发明提供以下技术方案,一种基于表结构变更的数据交换方法,包括:
3、通过变更监听工具监听来源数据库的变更事件,将所述变更事件写入消息队列中;
4、通过数据同步引擎读取所述消息队列中的变更事件并识别所述变更事件的变更类型,基于所述变更事件的变更类型对目标数据库进行调整修改;
5、定期获取所述来源数据库与所述目标数据库的数据字段,将所述来源数据库的数据字段与所述目标数据库的数据字段进行字段对比,并保留对应的检查点;
6、实时监控所述目标数据库的操作日志,基于所述操作日志确定数据修改操作,以快照表的方式将所述数据修改操作进行保存并同步至下游任务,以得到修改快照表,通过所述修改快照表对历史快照表库进行实时更新,同步执行引擎根据更新后的历史快照表库执行数据交换任务;
7、所述通过数据同步引擎读取所述消息队列中的变更事件并识别所述变更事件的变更类型的步骤包括:
8、通过数据同步引擎读取所述消息队列中的变更事件,基于所述变更事件并通过所述变更监听工具实时监听所述来源数据库中的ddl语句;
9、若所述变更监听工具监听到表变更语句,则将该变更事件的变更类型定义为数据库结构变更;
10、若所述变更监听工具监听到字段变更语句,则将该变更事件的变更类型定义为字段变更。
11、相比现有技术,本技术的有益效果为:本技术通过对来源数据库进行实时监听,当有一段新增的业务字段或减少的业务字段时,可快速进行获取与感知,从而规避掉数据交换失败的情况以及缺少字段信息的情况,同时针对不同的变更类型对目标数据库进行调整与匹配,大大的提高数据库字段变更时,通过数据交换对下游的数据库可最小化以及最快的速度进行通知并且保持一致,实现了字段变更时的弹性扩展和加强维护性,同时本发明能够准确判断并响应各种类型的数据库变更,确保数据同步的准确性和实时性,这些变更的检测和处理通常是自动化的,极大地提高了数据同步交换的效率,同时也降低了人为错误的可能性。
12、较佳的,在所述通过变更监听工具监听来源数据库的变更事件,将所述变更事件写入消息队列中的步骤中,所述变更监听工具为canal工具、 maxwell工具、flinkcdc工具中的其中一种,所述变更事件至少包括变更数据、全量dll数据、表修改操作。
13、较佳的,所述基于所述变更事件的变更类型对目标数据库进行调整修改的步骤包括:
14、若所述变更事件为数据库结构变更,则更新目标数据库的结构并将所述来源数据库的最新状态与更新后的目标数据库的结构进行匹配,调整数据同步任务的配置,以使变更后的表能够正确同步至目标数据库;
15、若所述变更事件为字段变更,则从所述来源数据库中获取变更前的旧字段映射信息与变更后的新字段映射信息,基于所述旧字段映射信息与所述新字段映射信息并采用更新手段对所述目标数据库进行更新,其中,所述更新手段包括增加新字段、删除旧字段、修改字段类型。
16、较佳的,所述定期获取所述来源数据库与所述目标数据库的数据字段,将所述来源数据库的数据字段与所述目标数据库的数据字段进行字段对比,并保留对应的检查点的步骤包括:
17、定期获取所述来源数据库与所述目标数据库的数据字段以及从所述来源数据库与所述目标数据库获取切换与映射配置;
18、基于所述来源数据库与所述目标数据库的切换与映射配置将所述来源数据库的数据字段与所述目标数据库的数据字段进行字段对比;
19、若所述来源数据库的数据字段与所述目标数据库的数据字段一致,则通知变更监听工具保存检查点;
20、若所述来源数据库的数据字段与所述目标数据库的数据字段不一致,则获取变更前的旧字段映射信息与变更后的新字段映射信息,基于所述旧字段映射信息与所述新字段映射信息并采用更新手段对所述目标数据库进行更新,并保留对应的检查点。
21、较佳的,在所述通过所述修改快照表对历史快照表库进行实时更新,同步执行引擎根据更新后的历史快照表库执行数据交换任务的步骤中,所述同步执行引擎为spark引擎、flink引擎、seatunnel引擎中的其中一种。
22、第二方面,该发明提供以下技术方案,一种基于表结构变更的数据交换系统,所述系统包括:
23、监听模块,用于通过变更监听工具监听来源数据库的变更事件,将所述变更事件写入消息队列中;
24、调整模块,用于通过数据同步引擎读取所述消息队列中的变更事件并识别所述变更事件的变更类型,基于所述变更事件的变更类型对目标数据库进行调整修改;
25、对比模块,用于定期获取所述来源数据库与所述目标数据库的数据字段,将所述来源数据库的数据字段与所述目标数据库的数据字段进行字段对比,并保留对应的检查点;
26、交换模块,用于实时监控所述目标数据库的操作日志,基于所述操作日志确定数据修改操作,以快照表的方式将所述数据修改操作进行保存并同步至下游任务,以得到修改快照表,通过所述修改快照表对历史快照表库进行实时更新,同步执行引擎根据更新后的历史快照表库执行数据交换任务;
27、所述调整模块包括:
28、读取子模块,用于通过数据同步引擎读取所述消息队列中的变更事件,基于所述变更事件并通过所述变更监听工具实时监听所述来源数据库中的ddl语句;
29、第一确定子模块,用于若所述变更监听工具监听到表变更语句,则将该变更事件的变更类型定义为数据库结构变更;
30、第二确定子模块,用于若所述变更监听工具监听到字段变更语句,则将该变更事件的变更类型定义为字段变更。
31、较佳的,所述对比模块包括:
32、配置获取子模块,用于定期获取所述来源数据库与所述目标数据库的数据字段以及从所述来源数据库与所述目标数据库获取切换与映射配置;
33、字段对比子模块,用于基于所述来源数据库与所述目标数据库的切换与映射配置将所述来源数据库的数据字段与所述目标数据库的数据字段进行字段对比;
34、第一处理子模块,用于若所述来源数据库的数据字段与所述目标数据库的数据字段一致,则通知变更监听工具保存检查点;
35、第二处理子模块,用于若所述来源数据库的数据字段与所述目标数据库的数据字段不一致,则获取变更前的旧字段映射信息与变更后的新字段映射信息,基于所述旧字段映射信息与所述新字段映射信息并采用更新手段对所述目标数据库进行更新,并保留对应的检查点。
36、第三方面,该发明提供以下技术方案,一种计算机,包括存储器、处理器以及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如上述的基于表结构变更的数据交换方法。
37、第四方面,该发明提供以下技术方案,一种存储介质,所述存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上述的基于表结构变更的数据交换方法。