一种数据库数据同步方法技术

技术编号:33716889 阅读:23 留言:0更新日期:2022-06-06 09:02
本发明专利技术涉及数据处理技术领域,公开了一种数据库数据同步方法,该方法包括:订阅关系型数据库管理系统中需要同步到ES的一个或多个表,针对每个同步任务建立转换映射配置;获取同步任务的主表,以表的主键值为输入参数、全量数据为输出参数定义接口结构,建立主表全量接口;数据同步时,收到KafKa变更的消息数据,再把消息数据转换成哈希映射结构的第一映射数据;取第一映射数据中表的主键值,远程调用主表全量接口获取全量数据,将全量数据转换成哈希映射结构并赋值给第一映射数据,获取第二映射数据;基于转换映射配置中的映射结构,将第二映射数据转换成ES的模型数据。本发明专利技术可以重复、有效进行ES同步任务,减少重复开发工作量。量。量。

【技术实现步骤摘要】
一种数据库数据同步方法


[0001]本专利技术涉及数据处理
,特别是一种数据库数据同步方法。

技术介绍

[0002]随着移动互联网蓬勃发展,用户数据不断增长,在海量数据中查询比较困难,难于搜索。传统方式通过关系数据库进行数据查询,基于关系数据库的查询方式满足不了海量查询的需求,数据查询出现了性能瓶颈。因此业界上使用ES(Elastic Search,是一种搜索引擎中间件)来解决此问题,将MySQL(一个关系型数据库管理系统)或SQL Server(一个关系型数据库管理系统)数据按照业务需求组装为一张宽表写入ES,后台查询走ES搜索、提高查询性能,减少数据库压力,提升客户体验,支持更多搜索场景。
[0003]现有基于ES解决数据查询的数据同步方法中具有以下问题:(1)项目中使用多种数据库MySQL和SQL Server,目前不能解决SQL Server的同步问题;(2)项目中分库、跨库、多库的情况很多,此问题解决不了;(3)业务中有大量的复杂数据同步,复杂的SQL(结构化查询语言)同步会出错;(4)同一时间频繁更新同一数据时,会同步多次、消耗性能;(5)同步异常失败,无报警通知机制。
[0004]因此亟待研究一种方法,实现如何把MySQL或SQL Server多张表数据同步到ES中。

技术实现思路

[0005]本专利技术要解决的技术问题是:为了解决上述问题,本专利技术提出了一种数据库数据同步方法。
[0006]为实现上述目的,本专利技术采用的技术方案如下:一种数据库数据同步方法,包括以下过程:步骤S1,订阅关系型数据库管理系统中需要同步到ES的一个或多个表,针对每个同步任务建立转换映射配置;步骤S2,获取同步任务的主表,以表的主键值为输入参数、全量数据为输出参数定义接口结构,建立主表全量接口;步骤S3,数据同步时,收到KafKa变更的消息数据,再把消息数据转换成哈希映射结构的第一映射数据;步骤S4,取第一映射数据中表的主键值,通过传入表的主键值远程调用主表全量接口获取全量数据,将全量数据转换成哈希映射结构并赋值给第一映射数据,获取第二映射数据;步骤S5,基于转换映射配置中的映射结构,将第二映射数据转换成ES的模型数据。
[0007]进一步的,所述步骤S1中关系型数据库管理系统为MySQL和/或SQL Server。
[0008]进一步的,所述步骤S1中,针对每个同步任务对应建立KafKa的Topic和ES索引。
[0009]进一步的,所述转换映射配置结构包括同步接收端目标、表名、主表、转化规则、映射结构;所述同步接收端目标为ES索引名称;表名为源数据库表名;主表的insert操作在同
步接收端目标中创建记录;每个表配置一个对应的转换规则;映射结构中key是源数据库表字段,value是目标ES索引名称的字段。
[0010]进一步的,如配置中包括前置通过前置处理器,则基于第二映射数据执行前置处理器,获取第三映射数据,再把第二映射数据和第三映射数据合并成第四映射数据。
[0011]进一步的,若配置的前置处理器为成本价处理器,则从第二映射数据中获取售价P值和折扣回归值d值,计算结果c=p*(1+d),将结果c值转换成第三映射数据,将第二映射数据和第三映射数据合并成第四映射数据。
[0012]进一步的,如配置中包括的类型转换器为时间类型转换器,则从第四映射数据中获取时间字段的时间T值,基于时间类型转换器,计算T值对应的时间戳F,并将第四映射数据中的时间字段的T值替换成F值。
[0013]进一步的,当收到KafKa大量变更消息数据均是同一数据时,将同一数据下的变更消息数据按相同业务主键合并成一条消息,进行步骤S3

步骤S5的过程。
[0014]与现有技术相比,本专利技术具有以下有益效果:本专利技术的技术方案只需要建立转换映射配置和全量接口,就可以重复、有效进行ES同步任务,减少重复开发工作量;建立全量接口,通过配置规则完成了复杂多表的数据转换、提取成ES的模型数据,本专利技术的技术方案既能通过全量接口完成跨多库、跨业务查询,又能按业务主键合并消息、提高同步性能;本专利技术的技术方案还能实现失败重试、报警通知。
附图说明
[0015]图1为本专利技术一种数据库数据同步方法的流程示意图。
具体实施方式
[0016]为了使本专利技术的目的、技术方案及优点更加清楚明白,以下结合附图,对本专利技术进一步详细说明。显然,所描述的实施例仅仅是本专利技术一部分实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本专利技术保护的范围。
[0017]在本专利技术的描述中,需要说明的是,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性。
[0018]KafKa是一个开源流处理平台,Topic是KafKa数据写入操作的基本单元。
[0019]如图1所示,一种数据库数据同步方法,包括以下过程:步骤S1,订阅关系型数据库管理系统中需要同步到ES的一个或多个表,针对每个同步任务建立转换映射配置;这里单个同步任务可以包含一个表(包含一个表时,则该表为主表),也可以包含多个表(例如包含三个表,单个同步任务有三个表时,本领域技术人员可以从三个表中确定主表)。步骤S2,获取同步任务的主表,以表的主键值为输入参数、全量数据为输出参数定义接口结构,建立主表全量接口;使用全量接口时,本领域技术人员可以用Java实现接口的全量数据查询,使用者可以根据实际需要查询多数据库、多张表的数据,组装出全量数据。步骤S3,数据同步时,收到KafKa变更的消息数据,再把消息数据转换成哈希映射结构的第一映射数据;这里基于哈希映射结构的第一映射数据中,key是源数据库表字段,value是表字段对应的数据值。步
骤S4,判断KafKa变更的消息数据是新增的情况时进行全量数据同步,即取第一映射数据中主键ID(主键ID也指主键编号),通过传入表的主键值远程调用主表全量接口获取全量数据,将全量数据转换成哈希映射结构并赋值给第一映射数据,获取第二映射数据;此时的第二映射数据具有全量的数据值。步骤S5,基于转换映射配置中的映射结构,将第二映射数据转换成ES的模型数据,将该模型数据保存至ES中。
[0020]优选地,所述步骤S1中关系型数据库管理系统为MySQL和/或SQL Server。
[0021]优选地,所述步骤S1中,针对每次同步任务对应建立KafKa的Topic和ES索引,其中每个KafKa可以有多个KafKa消费组(consumer group),例如有两个KafKa消费组,每个KafKa消费组具有多个Topic,例如Topic1、Topic2;KafKa消费组的数量和ES索引的数量相等。
[0022]优选地,所述转换映射配置结构包括同步接收端目标、表名、主表、转化规则、映射结构。
[0023]同步接收端目标:ES索引名称;表名:源数据库表名;主表:标记是否为本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种数据库数据同步方法,其特征在于,包括以下过程:步骤S1,订阅关系型数据库管理系统中需要同步到ES的一个或多个表,针对每个同步任务建立转换映射配置;步骤S2,获取同步任务的主表,以表的主键值为输入参数、全量数据为输出参数定义接口结构,建立主表全量接口;步骤S3,数据同步时,收到KafKa变更的消息数据,再把消息数据转换成哈希映射结构的第一映射数据;步骤S4,取第一映射数据中表的主键值,通过传入表的主键值远程调用主表全量接口获取全量数据,将全量数据转换成哈希映射结构并赋值给第一映射数据,获取第二映射数据;步骤S5,基于转换映射配置中的映射结构,将第二映射数据转换成ES的模型数据。2.如权利要求1所述的数据库数据同步方法,其特征在于,所述步骤S1中关系型数据库管理系统为MySQL和/或SQL Server。3.如权利要求1所述的数据库数据同步方法,其特征在于,所述步骤S1中,针对每个同步任务对应建立KafKa的Topic和ES索引。4.如权利要求1所述的数据库数据同步方法,其特征在于,所述转换映射配置结构包括同步接收端目标、表名、主表、转化规则、映射结构;所述同步接收端目标为ES索引名称;表名为源数据库表名;主表的...

【专利技术属性】
技术研发人员:蒋松柏范金龙
申请(专利权)人:中建电子商务有限责任公司
类型:发明
国别省市:

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

1