一种基于数据的实时同步方法及系统技术方案

技术编号:24497724 阅读:55 留言:0更新日期:2020-06-13 03:42
本发明专利技术公开一种基于数据的实时同步方法及系统,涉及数据同步技术领域;包括控制模块、变更捕获模块、消息队列模块、数据同步模块及Schema管理模块,控制模块定义并启动同步任务,变更捕获模块捕获源数据库变更的数据并根据同步消息Schema模板编码所述的数据为同步消息,将同步消息发送到消息队列模块,数据同步模块拉取消息队列模块中未消费的同步消息,根据Schema管理模块中的源表Schema信息解析校验同步消息,再组装成目标数据库命令,发送目标数据库执行。

A real-time synchronization method and system based on data

【技术实现步骤摘要】
一种基于数据的实时同步方法及系统
本专利技术公开一种基于数据的实时同步方法及系统,涉及数据同步

技术介绍
数据实时同步是在数据之间建立一种从数据源到目的地的实时协调过程。常见的数据实时同步技术有两种,分别是基于日志的数据同步和基于数据的数据同步。基于日志的同步:源数据库进行DML操作后,在日志文件中记录下每一条操作命令的详细信息。同步组件根据本地维护的偏移量主动拉取源数据库增量日志,然后逐条解析出日志的命令信息,并依此拼装成目标数据的DML操作,最后DML操作发送到目标数据库执行,完成同步过程。该同步方式虽然实时效率高,但是需要识别源数据库的各种不同的日志格式,因此对源数据库的兼容性不好。基于数据的同步:源数据库执行DML操作后,将同步消息推送到同步组件,该消息只包含变更的数据本身,不包含任何操作的详细信息。同步组件将接收到的变更数据写入目标数据库中,完成同步过程。该同步方式的优点是同步逻辑简单、不存在源数据库日志解析和兼容性问题、支持数据流式预处理,但是不支持Update和Delete同步语义,而且以行为最小传输单位,当一行中的任意字段的数据变化时,发送整个行的数据,当字段较多时,发送大量重复数据导致传输效率不高,并且不支持Schema变更自动同步。偏移量:消息在分区的位置,由消息队列维护,可以用来查询,回滚同步数据到所需位置。DML:数据操纵语言DML(DataManipulationLanguage),用户通过它可以实现对数据库的基本操作,包括插入、修改和删除等操作。<br>Upsert/Delete同步语义:数据库中DML操作,每条操作都有明确的语义,比如Insert(插入),Update(更新),Delete(删除),Upsert(插入和更新)。在源数据库和目标数据库之间同一条数据应该遵循同一语义。Schema变更:源数据库中的表,在同步过程中,Schema表,如列名或列类型发生了变更。
技术实现思路
本专利技术针对现有技术的问题,提供一种基于数据的实时同步方法及系统,解决基于数据的实时同步存在的不支持Update/Delete同步语义、不支持Schema变更自动同步等问题,并能够大大提升同步效率高。本专利技术提出的具体方案是:一种基于数据的实时同步系统,包括控制模块、变更捕获模块、消息队列模块、数据同步模块及Schema管理模块,控制模块定义并启动同步任务,变更捕获模块捕获源数据库变更的数据并根据同步消息Schema模板编码所述的数据为同步消息,将同步消息发送到消息队列模块,数据同步模块拉取消息队列模块中未消费的同步消息,根据Schema管理模块中的源表Schema信息解析校验同步消息,再组装成目标数据库命令,发送目标数据库执行。所述的系统中变更捕获模块根据源数据库的源表字段信息和同步消息Schema模板生成源表Schema信息,将源表Schema信息交由Schema管理模块完成初始化注册,变更捕获模块捕获源表字段信息发生变更时,交由Schema管理模块变更相应源表Schema信息。所述的系统中同步消息Schema模板包括用于发送同步时间戳信息的时间戳同步消息Schema模板和用于发送变更数据的数据行的数据同步消息Schema模板。所述的系统中数据同步模块包括消费模块拉取消息队列模块中未消费的同步消息,根据Schema管理模块中的源表Schema信息解析校验同步消息。所述的系统中消费模块解析同步消息,还原变更数据的数据行和更新时间戳信息,若解析同步消息失败,更新源表Schema信息。所述的系统中消费模块校验更新时间戳信息的合法性,过滤过期重复数据。所述的系统中控制模块定义过滤信息,数据同步模块包括过滤模块,过滤模块读取过滤信息,校验合法性,执行数据过滤流程。所述的系统中数据同步模块包括组装模块,组装模块根据源表Schema信息和过滤信息生成目标数据库DML命令模板,将变更数据的数据行与目标数据库DML命令模板绑定,组装成最终DML命令。所述的系统中同步任务部署到集群。一种基于数据的实时同步方法:定义并启动同步任务,捕获源数据库变更的数据并根据同步消息Schema模板编码所述的数据为同步消息,将同步消息发送到消息队列,拉取消息队列中未消费的同步消息,根据源表Schema信息解析校验同步消息,再组装成目标数据库命令,发送目标数据库执行。本专利技术的有益之处是:本专利技术提供一种基于数据的实时同步方法及系统,利用同步消息Schema模板,实现了Update和Delete操作发送数据的统一管理,支持Update和Delete同步语义,并且组装成对应的命令在目标数据库上执行,最终完成同步;本专利技术可建立在集群的基础上支持横向扩展,线性提高实时效率,集群中的主机越多,处理消息的能力自然也就越强,因此本专利技术非常适合应用于银行金融业务系统、公司信息系统和医疗大数据系统等强一致性同步场景,保证同步继续,数据不丢失,保证系统的高可用,并能显著提升了实时同步效率。附图说明图1是本专利技术系统框架应用示意图。具体实施方式下面结合附图和具体实施例对本专利技术作进一步说明,以使本领域的技术人员可以更好地理解本专利技术并能予以实施,但所举实施例不作为对本专利技术的限定。本专利技术提供一种基于数据的实时同步系统,包括控制模块、变更捕获模块、消息队列模块、数据同步模块及Schema管理模块,控制模块定义并启动同步任务,变更捕获模块捕获源数据库变更的数据并根据同步消息Schema模板编码所述的数据为同步消息,将同步消息发送到消息队列模块,数据同步模块拉取消息队列模块中未消费的同步消息,根据Schema管理模块中的源表Schema信息解析校验同步消息,再组装成目标数据库命令,发送目标数据库执行。具体实施时,本专利技术系统基于数据进行数据的实时同步,具体过程为:通过控制模块定义并启动同步任务,控制模块定义本次同步的任务信息和源数据库信息,任务信息包括任务并发数、和同步模式等,同步模式可以是支持只支持Insert的AppendOnly模式,可以是支持Insert、Update和Delete的Upsert模式;源数据库信息包括源表名称、源表主键、目标数据库连接信息等内容,控制模块启动同步任务后,交由变更捕获模块和数据同步模块执行任务,变更捕获模块捕获变更的数据行根据同步消息Schema模板编码变更的数据为同步消息,发送同步消息到消息队列模块,其中同步消息Schema模板分为两种:一是用于发送同步时间戳信息的时间戳同步消息Schema模板,时间戳同步消息Schema模板形如:{“s1”:{“name”:“resolved”,“type”:“string”}}其中resolved代表同步时间戳;二是用于发送变更数据行的数据同步消息Schema模板,形如:本文档来自技高网
...

【技术保护点】
1.一种基于数据的实时同步系统,其特征是包括控制模块、变更捕获模块、消息队列模块、数据同步模块及Schema管理模块,/n控制模块定义并启动同步任务,/n变更捕获模块捕获源数据库变更的数据并根据同步消息Schema模板编码所述的数据为同步消息,将同步消息发送到消息队列模块,/n数据同步模块拉取消息队列模块中未消费的同步消息,根据Schema管理模块中的源表Schema信息解析校验同步消息,再组装成目标数据库命令,发送目标数据库执行。/n

【技术特征摘要】
1.一种基于数据的实时同步系统,其特征是包括控制模块、变更捕获模块、消息队列模块、数据同步模块及Schema管理模块,
控制模块定义并启动同步任务,
变更捕获模块捕获源数据库变更的数据并根据同步消息Schema模板编码所述的数据为同步消息,将同步消息发送到消息队列模块,
数据同步模块拉取消息队列模块中未消费的同步消息,根据Schema管理模块中的源表Schema信息解析校验同步消息,再组装成目标数据库命令,发送目标数据库执行。


2.根据权利要求1所述的系统,其特征是变更捕获模块根据源数据库的源表字段信息和同步消息Schema模板生成源表Schema信息,将源表Schema信息交由Schema管理模块完成初始化注册,
变更捕获模块捕获源表字段信息发生变更时,交由Schema管理模块变更相应源表Schema信息。


3.根据权利要求1或2所述的系统,其特征是同步消息Schema模板包括用于发送同步时间戳信息的时间戳同步消息Schema模板和用于发送变更数据的数据行的数据同步消息Schema模板。


4.根据权利要求1或3所述的系统,其特征是数据同步模块包括消费模块拉取消息队列模块中未消费的同步消息,根据Schema管理模块中的源表...

【专利技术属性】
技术研发人员:樊文昌何文钦刘浩喆江磊
申请(专利权)人:山东汇贸电子口岸有限公司
类型:发明
国别省市:山东;37

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1