一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种数据库数据同步方法与流程

2022-06-05 02:36:53 来源:中国专利 TAG:


1.本发明涉及数据处理技术领域,特别是一种数据库数据同步方法。


背景技术:

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


技术实现要素:

5.本发明要解决的技术问题是:为了解决上述问题,本发明提出了一种数据库数据同步方法。
6.为实现上述目的,本发明采用的技术方案如下:一种数据库数据同步方法,包括以下过程:步骤s1,订阅关系型数据库管理系统中需要同步到es的一个或多个表,针对每个同步任务建立转换映射配置;步骤s2,获取同步任务的主表,以表的主键值为输入参数、全量数据为输出参数定义接口结构,建立主表全量接口;步骤s3,数据同步时,收到kafka变更的消息数据,再把消息数据转换成哈希映射结构的第一映射数据;步骤s4,取第一映射数据中表的主键值,通过传入表的主键值远程调用主表全量接口获取全量数据,将全量数据转换成哈希映射结构并赋值给第一映射数据,获取第二映射数据;步骤s5,基于转换映射配置中的映射结构,将第二映射数据转换成es的模型数据。
7.进一步的,所述步骤s1中关系型数据库管理系统为mysql和/或sql server。
8.进一步的,所述步骤s1中,针对每个同步任务对应建立kafka的topic和es索引。
9.进一步的,所述转换映射配置结构包括同步接收端目标、表名、主表、转化规则、映射结构;所述同步接收端目标为es索引名称;表名为源数据库表名;主表的insert操作在同
步接收端目标中创建记录;每个表配置一个对应的转换规则;映射结构中key是源数据库表字段,value是目标es索引名称的字段。
10.进一步的,如配置中包括前置通过前置处理器,则基于第二映射数据执行前置处理器,获取第三映射数据,再把第二映射数据和第三映射数据合并成第四映射数据。
11.进一步的,若配置的前置处理器为成本价处理器,则从第二映射数据中获取售价p值和折扣回归值d值,计算结果c=p*(1 d),将结果c值转换成第三映射数据,将第二映射数据和第三映射数据合并成第四映射数据。
12.进一步的,如配置中包括的类型转换器为时间类型转换器,则从第四映射数据中获取时间字段的时间t值,基于时间类型转换器,计算t值对应的时间戳f,并将第四映射数据中的时间字段的t值替换成f值。
13.进一步的,当收到kafka大量变更消息数据均是同一数据时,将同一数据下的变更消息数据按相同业务主键合并成一条消息,进行步骤s3-步骤s5的过程。
14.与现有技术相比,本发明具有以下有益效果:本发明的技术方案只需要建立转换映射配置和全量接口,就可以重复、有效进行es同步任务,减少重复开发工作量;建立全量接口,通过配置规则完成了复杂多表的数据转换、提取成es的模型数据,本发明的技术方案既能通过全量接口完成跨多库、跨业务查询,又能按业务主键合并消息、提高同步性能;本发明的技术方案还能实现失败重试、报警通知。
附图说明
15.图1为本发明一种数据库数据同步方法的流程示意图。
具体实施方式
16.为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图,对本发明进一步详细说明。显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
17.在本发明的描述中,需要说明的是,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性。
18.kafka是一个开源流处理平台,topic是kafka数据写入操作的基本单元。
19.如图1所示,一种数据库数据同步方法,包括以下过程:步骤s1,订阅关系型数据库管理系统中需要同步到es的一个或多个表,针对每个同步任务建立转换映射配置;这里单个同步任务可以包含一个表(包含一个表时,则该表为主表),也可以包含多个表(例如包含三个表,单个同步任务有三个表时,本领域技术人员可以从三个表中确定主表)。步骤s2,获取同步任务的主表,以表的主键值为输入参数、全量数据为输出参数定义接口结构,建立主表全量接口;使用全量接口时,本领域技术人员可以用java实现接口的全量数据查询,使用者可以根据实际需要查询多数据库、多张表的数据,组装出全量数据。步骤s3,数据同步时,收到kafka变更的消息数据,再把消息数据转换成哈希映射结构的第一映射数据;这里基于哈希映射结构的第一映射数据中,key是源数据库表字段,value是表字段对应的数据值。步
骤s4,判断kafka变更的消息数据是新增的情况时进行全量数据同步,即取第一映射数据中主键id(主键id也指主键编号),通过传入表的主键值远程调用主表全量接口获取全量数据,将全量数据转换成哈希映射结构并赋值给第一映射数据,获取第二映射数据;此时的第二映射数据具有全量的数据值。步骤s5,基于转换映射配置中的映射结构,将第二映射数据转换成es的模型数据,将该模型数据保存至es中。
20.优选地,所述步骤s1中关系型数据库管理系统为mysql和/或sql server。
21.优选地,所述步骤s1中,针对每次同步任务对应建立kafka的topic和es索引,其中每个kafka可以有多个kafka消费组(consumer group),例如有两个kafka消费组,每个kafka消费组具有多个topic,例如topic1、topic2;kafka消费组的数量和es索引的数量相等。
22.优选地,所述转换映射配置结构包括同步接收端目标、表名、主表、转化规则、映射结构。
23.同步接收端目标:es索引名称;表名:源数据库表名;主表:标记是否为主表;主表的insert操作在同步接收端目标中创建记录;具有多张表的一个同步任务中,本领域技术人员能够确定多个表中的主表。
24.转换规则:每个表配置一个对应的转换规则,每个同步任务中有多张表时就对应多个转换规则;映射结构:key是源数据库表字段,value是目标es索引名称的字段。
25.优选地,如配置中包括前置通过前置处理器,则基于第二映射数据执行前置处理器,获取第三映射数据,再把第二映射数据和第三映射数据合并成第四映射数据。
26.例如,若配置的前置处理器为成本价处理器,则从第二映射数据中获取售价p值和折扣回归值d值,计算结果c=p*(1 d),将结果c值转换成第三映射数据,将第二映射数据和第三映射数据合并成第四映射数据。
27.优选地,如配置中包括的类型转换器为时间类型转换器,则从第四映射数据中获取时间字段的时间t值,基于时间类型转换器,计算t值对应的时间戳f,并将第四映射数据中的时间字段的t值替换成f值。
28.优选地,当收到kafka大量变更消息数据均是同一数据时,将同一数据下的变更消息数据按相同业务主键合并成一条消息,进行步骤s3-步骤s5的过程。这样只需要走一次全量数据同步逻辑。
29.另外,基于本发明的方案,还支持异常重试、报警通知(backoff)。在数据同步中会遇网络抖动、服务短暂不可用、查询超时等异常失败问题。此组件捕获到异常后按2的n次方逐渐递增的间隔时间(1、2、4、8、16、32分钟)不断重试6次(也可配置其它重试次数),重试6次还是失败则会发钉钉报警通知到研发人员(研发人员可由通知人员配置)。
30.最后应说明的是:以上各实施例仅仅为本发明的较优实施例用以说明本发明的技术方案,而非对其限制,当然更不是限制本发明的专利范围;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围;也就是说,但凡
在本发明的主体设计思想和精神上作出的毫无实质意义的改动或润色,其所解决的技术问题仍然与本发明一致的,均应当包含在本发明的保护范围之内;另外,将本发明的技术方案直接或间接的运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献