CN117743459A - 增量数据的同步方法、装置、系统、电子设备及可读介质 - Google Patents
增量数据的同步方法、装置、系统、电子设备及可读介质 Download PDFInfo
- Publication number
- CN117743459A CN117743459A CN202311607057.3A CN202311607057A CN117743459A CN 117743459 A CN117743459 A CN 117743459A CN 202311607057 A CN202311607057 A CN 202311607057A CN 117743459 A CN117743459 A CN 117743459A
- Authority
- CN
- China
- Prior art keywords
- sql
- data
- queue
- target
- sql statement
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 48
- 238000012545 processing Methods 0.000 claims abstract description 28
- 238000004891 communication Methods 0.000 claims description 19
- 230000008859 change Effects 0.000 claims description 7
- 238000004590 computer program Methods 0.000 claims description 5
- 238000012544 monitoring process Methods 0.000 claims description 4
- 230000008569 process Effects 0.000 description 12
- 238000013508 migration Methods 0.000 description 7
- 230000005012 migration Effects 0.000 description 7
- 230000001360 synchronised effect Effects 0.000 description 7
- 238000010586 diagram Methods 0.000 description 6
- 230000006870 function Effects 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 230000008901 benefit Effects 0.000 description 3
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000003491 array Methods 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 238000005457 optimization Methods 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- KLDZYURQCUYZBL-UHFFFAOYSA-N 2-[3-[(2-hydroxyphenyl)methylideneamino]propyliminomethyl]phenol Chemical compound OC1=CC=CC=C1C=NCCCN=CC1=CC=CC=C1O KLDZYURQCUYZBL-UHFFFAOYSA-N 0.000 description 1
- 230000000903 blocking effect Effects 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 201000001098 delayed sleep phase syndrome Diseases 0.000 description 1
- 208000033921 delayed sleep phase type circadian rhythm sleep disease Diseases 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000000802 evaporation-induced self-assembly Methods 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Abstract
本申请涉及一种增量数据的同步方法、装置、系统、电子设备及可读介质,其中,方法包括:从目标消息队列中拉取与增量数据对应的SQL信息;对与同一标识符对应的多个SQL信息进行简化,得到与各个标识符对应的SQL语句缓存;按照预设处理策略对各个SQL语句缓存进行分类及拼接,得到SQL语句队列;将SQL语句队列组装成目标数据包放入执行队列,以及将数据包的数据写入目标端数据库,以完成对增量数据的同步。通过将同一标识符的SQL语句进行合并,再封装成数据包进行批量执行并写入新数据库,解决了增量数据同步性能低的问题。
Description
技术领域
本申请涉及数据库技术领域,尤其涉及一种增量数据的同步方法、装置、系统、电子设备及可读介质。
背景技术
随着国内分布式数据库的技术发展,国产数据库的性能越来越优异,国内金融行业和各大运营商开始逐步推进使用国产分布式数据库来替代当正前使用数据库。要实现这一目标,将原有的业务转移至新的数据库,并且可以在业务运行时将数据同步到多个数据源,数据迁移和数据同步技术则起到了至关重要的作用。增量数据同步是指从当前或某一个指定的同步位点开始,源端数据库的数据发生改变时,变化的数据会同步到目标端。在这个过程中,增量数据同步的性能会对数据同步的效率和准确性产生直接影响。如果性能较差,就会导致数据同步速度变慢、同步不及时、数据不准确甚至是丢失数据等问题,对于银行和运营商的数据系统来说,对数据丢失零容忍,一旦出现这些问题,将严重影响业务的运转,可见,增量数据的同步性能不高影响数据准确性。
针对上述的问题,目前尚未提出有效的解决方案。
发明内容
本申请提供了一种增量数据的同步方法、装置、系统、电子设备及可读介质,以解决上述“增量数据的同步性能不高影响数据准确性”的技术问题。
根据本申请实施例的一个方面,本申请提供了一种增量数据的同步方法,包括:从目标消息队列中拉取与增量数据对应的SQL信息;对与同一标识符对应的多个SQL信息进行简化,得到与各个标识符对应的SQL语句缓存;按照预设处理策略对各个SQL语句缓存进行分类及拼接,得到SQL语句队列;将SQL语句队列组装成目标数据包放入执行队列,以及将数据包的数据写入目标端数据库,以完成对增量数据的同步。
可选地,对与同一标识符对应的多个SQL信息进行简化,得到与各个标识符对应的SQL语句缓存包括:获取各个SQL信息的标识符,其中,标识符包括数据地址或主键值;根据标识符对各个SQL信息进行分组,得到多个相同标识符的SQL分组,并将多个SQL分组放入第一缓存;获取SQL分组的关键字,并根据关键字对各个SQL分组进行简化,得到多个SQL语句缓存。
可选地,根据关键字对各个SQL分组进行简化,得到多个SQL语句缓存包括:确定SQL分组中的起始语句以及结束语句;按照预设匹配表寻找与起始语句以及结束语句对应的匹配语句,将匹配语句确定为与SQL分组简化后的SQL语句缓存,其中,预设匹配表包括SQL语句缓存与各个SQL分组的起止句的对应关系。
可选地,按照预设处理策略对各个SQL语句缓存进行分类及拼接,得到SQL语句队列包括:按照预设分类表将各个SQL语句缓存划分为不同的SQL类别,其中,预设分类表中包括各个SQL语句与类别名称的对应关系;将各个SQL类别按照预设顺序进行拼接,得到SQL语句队列,并放入第二缓存,其中,预设顺序为各个类别名称的排列顺序。
可选地,在从目标消息队列中拉取与增量数据对应的SQL信息之前,所述方法还包括:监测源端数据库的数据变化;在源端数据库出现增量数据时,生成与增量数据对应的SQL信息;将SQL信息推送至目标消息队列。
可选地,将SQL语句队列组装成目标数据包放入执行队列,以及将数据包的数据写入目标端数据库包括:将SQL语句队列组装成目标数据包,并将目标数据包发送至执行队列;检测执行队列中的并发量;在执行队列中的并发量达到配置阈值的情况下,将数据包的数据写入目标端数据库。
根据本申请实施例的另一方面,本申请提供了一种增量数据的同步装置,包括:拉取模块,用于从目标消息队列中拉取与增量数据对应的SQL信息;简化模块,用于对与同一标识符对应的多个SQL信息进行简化,得到与各个标识符对应的SQL语句缓存;拼接模块,用于按照预设处理策略对各个SQL语句缓存进行分类及拼接,得到SQL语句队列;写入模块,用于将SQL语句队列组装成目标数据包放入执行队列,以及将数据包的数据写入目标端数据库,以完成对增量数据的同步。
根据本申请实施例的另一方面,本申请提供了一种增量数据的同步系统,包括:数据采集模块,用于在源端数据库出现增量数据时,生成与增量数据对应的SQL信息,并将SQL信息推送至目标消息队列;目标消息队列,用于存储SQL信息;数据回放模块,用于从目标消息队列中拉取与增量数据对应的SQL信息;对与同一标识符对应的多个SQL信息进行简化,得到与各个标识符对应的SQL语句缓存,按照预设处理策略对各个SQL语句缓存进行分类及拼接,得到SQL语句队列,将SQL语句队列组装成目标数据包放入执行队列,以及将数据包的数据写入目标端数据库,以完成对增量数据的同步。
根据本申请实施例的另一方面,本申请提供了一种电子设备,包括存储器、处理器、通信接口及通信总线,存储器中存储有可在处理器上运行的计算机程序,存储器、处理器通过通信总线和通信接口进行通信,处理器执行计算机程序时实现上述方法的步骤。
根据本申请实施例的另一方面,本申请还提供了一种具有处理器可执行的非易失的程序代码的计算机可读介质,程序代码使处理器执行上述的方法。
本申请实施例提供的上述技术方案与相关技术相比具有如下优点:
本申请通过一种增量数据的同步方法,包括:从目标消息队列中拉取与增量数据对应的SQL信息;对与同一标识符对应的多个SQL信息进行简化,得到与各个标识符对应的SQL语句缓存;按照预设处理策略对各个SQL语句缓存进行分类及拼接,得到SQL语句队列;将SQL语句队列组装成目标数据包放入执行队列,以及将数据包的数据写入目标端数据库,以完成对增量数据的同步。通过将同一标识符的SQL语句进行合并,再封装成数据包进行批量执行并写入新数据库,解决了增量数据同步性能低的问题。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。
为了更清楚地说明本申请实施例或相关技术中的技术方案,下面将对实施例或相关技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为根据本申请实施例提供的一种可选的增量数据的同步方法的流程图;
图2为根据本申请实施例提供的一种可选的增量数据的同步系统的示意图;
图3为根据本申请实施例提供的一种可选的回放过程的示意图;
图4为根据本申请实施例提供的一种可选的增量数据的同步装置的框图;
图5为本申请实施例提供的一种可选的电子设备结构示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请的一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。
在后续的描述中,使用用于表示元件的诸如“模块”、“部件”或“单元”的后缀仅为了有利于本申请的说明,其本身并没有特定的意义。因此,“模块”与“部件”可以混合地使用。
随着国内分布式数据库的技术发展,国产数据库的性能越来越优异,国内金融行业和各大运营商开始逐步推进使用国产分布式数据库来替代当正在使用的Oracle、MySQL(Structured query language,关系型数据库管理系统)和DB2等数据库。要实现这一目标,将原有的业务转移至新的数据库,并且可以在业务运行时将数据同步到多个数据源,数据迁移和数据同步技术则起到了至关重要的作用。面对银行和移动系统的数据量庞大的同时业务又十分复杂,这对数据迁移和同步工具的性能提出了十分严苛的要求。数据迁移是指将数据从一个数据源迁移到另一个数据源的过程。一般而言,数据迁移只需要在迁移完成后能够在新的数据源中访问和使用数据,不要求实时性。数据同步则与数据迁移的目的和实现方式有所不同,它不仅需要在同步过程中保持多个数据源之间数据的一致性,而且对系统的实时性提出了较高的要求,数据需要能够随时在多个数据源之间进行同步更新。
增量数据同步是指从当前或某一个指定的同步位点开始,源端数据库的数据发生改变时,变化的数据会同步到目标端。在这个过程中,增量数据同步的性能会对数据同步的效率和准确性产生直接影响。如果性能较差,就会导致数据同步速度变慢、同步不及时、数据不准确甚至是丢失数据等问题,对于银行和运营商的数据系统来说,对数据丢失零容忍,一旦出现这些问题,将严重影响业务的运转。此外,如果数据同步系统的性能较差,对于服务器会出现大量资源浪费,影响整个系统的运行效率。因此,提升性能是一个至关重要的环节。
为了解决背景技术中提及的问题,根据本申请实施例的一方面,提供了一种增量数据的同步方法的实施例,如图1所示,包括:
步骤101,从目标消息队列中拉取与增量数据对应的SQL信息;
步骤103,对与同一标识符对应的多个SQL信息进行简化,得到与各个标识符对应的SQL语句缓存;
步骤105,按照预设处理策略对各个SQL语句缓存进行分类及拼接,得到SQL语句队列;
步骤107,将SQL语句队列组装成目标数据包放入执行队列,以及将数据包的数据写入目标端数据库,以完成对增量数据的同步。
具体地,对与同一标识符对应的多个SQL信息进行简化,得到与各个标识符对应的SQL语句缓存包括:将数据大包中的SQL语句(默认一个数据大包包含10000条SQL语句),以合并媒介(标识符)为key,进行分类(分组后的SOL语句List为value),得到key-value缓存(即SQL语句缓存)。
具体地,按照预设处理策略对各个SQL语句缓存进行分类及拼接,得到SQL语句队列包括:以第一缓存的value(也就是SQL语句List)为输入,进行并发合并操作(合并时只看list中的首尾两条SQL)得到SQL语句队列。
具体地,将SQL语句队列组装成目标数据包放入执行队列包括:将SQL语句队列中的SQL按照合并后的类型顺序(DELETE-UPDATE-INSERT)拼成各批次的数据(第二缓存,key-value形式,key是DELETE、UPDATE、INSERT),放入下一级执行队列中去执行写入操作。
本申请应用于同构或者异构分布式数据库之间进行增量数据同步的场景,能够为银行和运营商将业务从已有数据库转移至新的分布式数据库的问题提供了一个高效且准确的解决方案。
提示增量数据同步的性能可以从多个方面入手。例如从数据库方面进行优化,使用合适的索引、优化SQL(Structured Query Language,结构化查询语言)语句等方式提升数据库读取性能,减少读取binlog的时间成本。在服务器设备层面,可以考虑优化目标存储设备,使用高效的存储协议和存储引擎。从应用代码层面优化,可以使用多个线程或进程同时处理增量数据同步任务,充分利用多核CPU(Central Processing Unit,中央处理器)的优势。由于银行和移动业务的数据量庞大,还可以把需要同步的数据进行批量处理,减少同步的次数和开销,进而提升增量数据同步的速度和性能。
作为一种可选的实施例,对与同一标识符对应的多个SQL信息进行简化,得到与各个标识符对应的SQL语句缓存包括:获取各个SQL信息的标识符,其中,标识符包括数据地址或主键值;根据标识符对各个SQL信息进行分组,得到多个相同标识符的SQL分组,并将多个SQL分组放入第一缓存;获取SQL分组的关键字,并根据关键字对各个SQL分组进行简化,得到多个SQL语句缓存。
具体地,SQL语句缓存以标识符为key,分组后的SQL语句List为value。
具体地,在对与同一标识符对应的多个SQL信息进行简化之前,需要通过SQL责任链进行数据处理,具体包括:黑白名单、表/字段的过滤、元数据的获取、库表映射以及生成Prepared Statement(预编译)SQL。
具体地,标识符为Rowid、主键值或唯一索引值
示例地,oracle系统对应的标识符为数据地址(即Rowid),MySQL对应的标识符为主键值。
具体地,第一缓存是以标识符为key,标识符对应的那组SOL语句缓存List为value值的key-value缓存。
通过将ROWID或者主键值相同的一组SQL语句进行归类合并以减少对目标端数据库写入操作的次数,提高执行的效率,降低执行多条SQL语句给服务器带来的负担。
通过缓存设置来避免服务器进行频繁的拉取和查询操作,减少资源开销并提升数据处理的效率。所有的SQL语句按照顺序组装执行数据包,写入时采用批量执行的方式可以减少与数据库交互的次数,减少资源的消耗,提高执行效率,提升增量数据同步的性能。
作为一种可选的实施例,根据关键字对各个SQL分组进行简化,得到多个SQL语句缓存包括:确定SQL分组中的起始语句以及结束语句;按照预设匹配表寻找与起始语句以及结束语句对应的匹配语句,将匹配语句确定为与SQL分组简化后的SQL语句缓存,其中,预设匹配表包括SQL语句缓存与各个SQL分组的起止句的对应关系。
具体地,关键字对各个SQL分组进行简化一共分三步,第一步:以标识符为key,分组后的SQL语句List为value,得到SQL语句缓存;第二步:以第一缓存的value(也就是SQL语句List)为输入,进行并发合并操作(合并时只看list中的首尾两条SQL),得到SQL语句队列;第三步:将SQL语句队列中的SQL按照合并后的类型顺序(DELETE-UPDATE-INSERT)拼成一批次一批次的数据(第二缓存,key-value形式key是DELETE、UPDATE、INSERT),放入下一级执行队列中去执行写入操作。
示例地,将ROWID或者主键值相同的一组SQL语句按照第一条和最后一条语句的操作类型关键字进行归类合并,主要分为四大类:INSERT_DELETE、INSERT_UPDATE、UPDATE_UPDATE和UPDATE_DELETE。不符合这四类的语句则直接在第一缓存进行处理即可。
归类合并后,多条语句的执行可以简化为一条语句的执行,不仅可以提高执行的效率,还能减少网络通信的开销并降低执行多条SQL语句给服务器带来的负担。对于提升增量数据同步性能来说有着重要的意义。
作为一种可选的实施例,按照预设处理策略对各个SQL语句缓存进行分类及拼接,得到SQL语句队列包括:按照预设分类表将各个SQL语句缓存划分为不同的SQL类别,其中,预设分类表中包括各个SQL语句与类别名称的对应关系;将各个SQL类别按照预设顺序进行拼接,得到SQL语句队列,并放入第二缓存,其中,预设顺序为各个类别名称的排列顺序。
第二缓存可以理解为执行并发操作的队列的缓存。
示例地,以第一缓存的value(也就是SQL语句List)为输入,进行并发合并操作(合并时只看list中的首尾两条SQL)得到SQL语句队列。
具体地,预设分类表包括:SQL语句List的队首SQL类型和队尾SQL类型分别为INSERT和UPDATE,合并后的SQL类型为INSERT;SQL语句List的队首SQL类型和队尾SQL类型分别为UPDATE和UPDATE,合并后的SQL类型为UPDATE;SQL语句List的队首SQL类型和队尾SQL类型分别为UPDATE和DELETE,合并后的SQL类型为DELETE。
需要说明的是,SQL语句缓存List的队首SQL类型和队尾SQL类型分别为INSERT和DELETE时,没有对应的类别,处理方式为合并后删除。
将合并后的SQL类别按照DELETE、UPDATE、INSERT的顺序进行拼接,作为一个批次的数据放入第二缓存。
作为一种可选的实施例,在从目标消息队列中拉取与增量数据对应的SQL信息之前,所述方法还包括:监测源端数据库的数据变化;在源端数据库出现增量数据时,生成与增量数据对应的SQL信息;将SQL信息推送至目标消息队列。
在源端数据库发送数据变化时,通过数据采集装置采集增量数据,然后生成对应的SQL信息发送至目标消息队列,可以及时将变化数据进行同步。
作为一种可选的实施例,将SQL语句队列组装成目标数据包放入执行队列,以及将数据包的数据写入目标端数据库包括:将SQL语句队列组装成目标数据包,并将目标数据包发送至执行队列;检测执行队列中的并发量;在执行队列中的并发量达到配置阈值的情况下,将数据包的数据写入目标端数据库。
配置阈值可以根据实际情况设定,本申请对此不进行限定。
优选地,为执行队列设置等待时间、线程数量、优先级等参数,能更好地适应不同的业务。
可选地,通过DAO(Data Access Object,数据存取对象)操作将执行队列中的数据包写入目标端数据库,可以采用JDBC的批量执行方式向目标端数据库进行数据写入。
将所有的SQL语句按照DELETE、UPDATE、INSERT顺序组装执行数据包,批量发送到执行队列,通过DAO操作将执行队列中的数据包写入目标端数据库时,采用批量执行SQL语句的操作,减少与数据库交互的次数,减少资源的消耗,提高执行效率,从而提升增量数据同步的性能。
通过执行队列使得数据操作可以异步执行,避免阻塞和等待,可以提高系统响应速度。
本申请通过一种增量数据的同步方法,包括:从目标消息队列中拉取与增量数据对应的SQL信息;对与同一标识符对应的多个SQL信息进行简化,得到与各个标识符对应的SQL语句缓存;按照预设处理策略对各个SQL语句缓存进行分类及拼接,得到SQL语句队列;将SQL语句队列组装成目标数据包放入执行队列,以及将数据包的数据写入目标端数据库,以完成对增量数据的同步。通过将同一标识符的SQL语句进行合并,再封装成数据包进行批量执行并写入新数据库,解决了增量数据同步性能低的问题。
根据本申请实施例的另一方面,本申请提供了一种增量数据的同步系统,包括:
数据采集模块,用于在源端数据库出现增量数据时,生成与增量数据对应的SQL信息,并将SQL信息推送至目标消息队列;
目标消息队列,用于存储SQL信息;
数据回放模块,用于从目标消息队列中拉取与增量数据对应的SQL信息,对与同一标识符对应的多个SQL信息进行简化,得到与各个标识符对应的SQL语句缓存,按照预设处理策略对各个SQL语句缓存进行分类及拼接,得到SQL语句队列,将SQL语句队列组装成目标数据包放入执行队列,以及将数据包的数据写入目标端数据库,以完成对增量数据的同步。
图2为本申请提供的增量数据的同步系统的示意图,如图所示,增量数据同步工具包括:采集模块、Kafka、回放模块,其中,采集模块负责捕获源端数据库的数据变化,生成SQL消息推送至Kafka组件;Kafka作为消息队列,存储采集模块生产的SQL消息供回放模块进行消费和处理;回放模块又分为消费、计算和写入三大部分,其作用是从Kafka上拉取的SQL消息并进行处理,然后将数据写入目标端数据库。
图3为本申请提供的一种回放过程的示意图。回放的具体流程包括:从Kafka上拉取需要进行同步的SQL消息,经由SQL责任链进行处理,将ROWID或主键值相同的一组SQL根据关键字进行合并,如图中的ETL(Extract Transform Load,数据仓库技术),包括INSERT_DELETE、INSERT_UPDATE、UPDATE_UPDATE以及UPDATE_DELETE,放入缓存后组装成一定数量的数据包,然后将数据包发送至执行队列,最后再通过DAO(Data Access Object,数据存储对象)操作写入到目标端数据库,实现对增量数据的同步。
根据本申请实施例的另一方面,本申请提供了一种增量数据的同步装置,如图4所示,包括:
拉取模块402,用于从目标消息队列中拉取与增量数据对应的SQL信息;
简化模块404,用于对与同一标识符对应的多个SQL信息进行简化,得到与各个标识符对应的SQL语句缓存;
拼接模块406,用于按照预设处理策略对各个SQL语句缓存进行分类及拼接,得到SQL语句队列;
写入模块408,用于将SQL语句队列组装成目标数据包放入执行队列,以及将数据包的数据写入目标端数据库,以完成对增量数据的同步。
需要说明的是,该实施例中的拉取模块402可以用于执行本申请实施例中的步骤101,该实施例中的简化模块404可以用于执行本申请实施例中的步骤103,该实施例中的拼接模块406可以用于执行本申请实施例中的步骤105,该实施例中的写入模块408可以用于执行本申请实施例中的步骤107。
可选地,拉取模块402包括:
第一获取单元,用于获取各个SQL信息的标识符,其中,标识符包括数据地址或主键值;
分组单元,用于根据标识符对各个SQL信息进行分组,得到多个相同标识符的SQL分组,并将多个SQL分组放入第一缓存;
第二获取单元,用于获取SQL分组的关键字,并根据关键字对各个SQL分组进行简化,得到多个SQL语句缓存。
可选地,第二获取单元还用于确定SQL分组中的起始语句以及结束语句;按照预设匹配表寻找与起始语句以及结束语句对应的匹配语句,将匹配语句确定为与SQL分组简化后的SQL语句缓存,其中,预设匹配表包括SQL语句缓存与各个SQL分组的起止句的对应关系。
可选地,拼接模块406还用于按照预设分类表将各个SQL语句缓存划分为不同的SQL类别,其中,预设分类表中包括各个SQL语句与类别名称的对应关系;将各个SQL类别按照预设顺序进行拼接,得到SQL语句队列,并放入第二缓存,其中,预设顺序为各个类别名称的排列顺序。
可选地,该装置还包括监测模块,用于在从目标消息队列中拉取与增量数据对应的SQL信息之前,监测源端数据库的数据变化;在源端数据库出现增量数据时,生成与增量数据对应的SQL信息;将SQL信息推送至目标消息队列。
可选地,写入模块408还用于将SQL语句队列组装成目标数据包,并将目标数据包发送至执行队列;检测执行队列中的并发量;在执行队列中的并发量达到配置阈值的情况下,将数据包的数据写入目标端数据库。
此处需要说明的是,上述模块与对应的步骤所实现的示例和应用场景相同,但不限于上述实施例所公开的内容。
根据本申请实施例的另一方面,本申请提供了一种电子设备,如图5所示,包括存储器501、处理器503、通信接口505及通信总线507,存储器501中存储有可在处理器503上运行的计算机程序,存储器501、处理器503通过通信接口505和通信总线507进行通信,处理器503执行计算机程序时实现上述方法的步骤。
上述电子设备中的存储器、处理器通过通信总线和通信接口进行通信。所述通信总线可以是外设部件互连标准(Peripheral Component Interconnect,简称PCI)总线或扩展工业标准结构(Extended Industry Standard Architecture,简称EISA)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。
存储器可以包括随机存取存储器(Random Access Memory,简称RAM),也可以包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。
上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(Digital Signal Processing,简称DSP)、专用集成电路(Application SpecificIntegrated Circuit,简称ASIC)、现场可编程门阵列(Field-Programmable Gate Array,简称FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
根据本申请实施例的又一方面还提供了一种具有处理器可执行的非易失的程序代码的计算机可读介质。
可选地,本实施例中的具体示例可以参考上述实施例中所描述的示例,本实施例在此不再赘述。
本申请实施例在具体实现时,可以参阅上述各个实施例,具有相应的技术效果。
可以理解的是,本文描述的这些实施例可以用硬件、软件、固件、中间件、微码或其组合来实现。对于硬件实现,处理单元可以实现在一个或多个专用集成电路(ApplicationSpecific Integrated Circuits,ASIC)、数字信号处理器(Digital Signal Processing,DSP)、数字信号处理设备(DSP Device,DSPD)、可编程逻辑设备(Programmable LogicDevice,PLD)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)、通用处理器、控制器、微控制器、微处理器、用于执行本申请所述功能的其它电子单元或其组合中。
对于软件实现,可通过执行本文所述功能的单元来实现本文所述的技术。软件代码可存储在存储器中并通过处理器执行。存储器可以在处理器中或在处理器外部实现。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。需要说明的是,在本文中,诸如“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上所述仅是本申请的具体实施方式,使本领域技术人员能够理解或实现本申请。对这些实施例的多种修改对本领域的技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所申请的原理和新颖特点相一致的最宽的范围。
Claims (10)
1.一种增量数据的同步方法,其特征在于,包括:
从目标消息队列中拉取与增量数据对应的SQL信息;
对与同一标识符对应的多个所述SQL信息进行简化,得到与各个所述标识符对应的SQL语句缓存;
按照预设处理策略对各个所述SQL语句缓存进行分类及拼接,得到SQL语句队列;
将所述SQL语句队列组装成目标数据包放入执行队列,以及将所述数据包的数据写入目标端数据库,以完成对所述增量数据的同步。
2.根据权利要求1所述的方法,其特征在于,所述对与同一标识符对应的多个所述SQL信息进行简化,得到与各个所述标识符对应的SQL语句缓存包括:
获取各个所述SQL信息的所述标识符,其中,所述标识符包括数据地址或主键值;
根据标识符对各个所述SQL信息进行分组,得到多个相同标识符的SQL分组,并将多个所述SQL分组放入第一缓存;
获取所述SQL分组的关键字,并根据所述关键字对各个所述SQL分组进行简化,得到多个所述SQL语句缓存。
3.根据权利要求2所述的方法,其特征在于,所述根据所述关键字对各个所述SQL分组进行简化,得到多个所述SQL语句缓存包括:
确定所述SQL分组中的起始语句以及结束语句;
按照预设匹配表寻找与所述起始语句以及所述结束语句对应的匹配语句,将所述匹配语句确定为与所述SQL分组简化后的所述SQL语句缓存,其中,所述预设匹配表包括所述SQL语句缓存与各个所述SQL分组的起止句的对应关系。
4.根据权利要求1所述的方法,其特征在于,所述按照预设处理策略对各个所述SQL语句缓存进行分类及拼接,得到SQL语句队列包括:
按照预设分类表将各个所述SQL语句缓存划分为不同的SQL类别,其中,所述预设分类表中包括各个所述SQL语句与类别名称的对应关系;
将各个所述SQL类别按照预设顺序进行拼接,得到所述SQL语句队列,并放入第二缓存,其中,所述预设顺序为各个所述类别名称的排列顺序。
5.根据权利要求1所述的方法,其特征在于,在从目标消息队列中拉取与增量数据对应的SQL信息之前,所述方法还包括:
监测源端数据库的数据变化;
在所述源端数据库出现所述增量数据时,生成与所述增量数据对应的所述SQL信息;
将所述SQL信息推送至所述目标消息队列。
6.根据权利要求1所述的方法,其特征在于,所述将所述SQL语句队列组装成目标数据包放入执行队列,以及将所述数据包的数据写入目标端数据库包括:
将所述SQL语句队列组装成所述目标数据包,并将所述目标数据包发送至所述执行队列;
检测所述执行队列中的并发量;
在所述执行队列中的所述并发量达到配置阈值的情况下,将所述数据包的数据写入所述目标端数据库。
7.一种增量数据的同步装置,其特征在于,包括:
拉取模块,用于从目标消息队列中拉取与增量数据对应的SQL信息;
简化模块,用于对与同一标识符对应的多个所述SQL信息进行简化,得到与各个所述标识符对应的SQL语句缓存;
拼接模块,用于按照预设处理策略对各个所述SQL语句缓存进行分类及拼接,得到SQL语句队列;
写入模块,用于将所述SQL语句队列组装成目标数据包放入执行队列,以及将所述数据包的数据写入目标端数据库,以完成对所述增量数据的同步。
8.一种增量数据的同步系统,其特征在于,包括:
数据采集模块,用于在源端数据库出现增量数据时,生成与所述增量数据对应的SQL信息,并将所述SQL信息推送至目标消息队列;
目标消息队列,用于存储所述SQL信息;
数据回放模块,用于从所述目标消息队列中拉取与所述增量数据对应的SQL信息;对与同一标识符对应的多个所述SQL信息进行简化,得到与各个所述标识符对应的SQL语句缓存,按照预设处理策略对各个所述SQL语句缓存进行分类及拼接,得到SQL语句队列,将所述SQL语句队列组装成目标数据包放入执行队列,以及将所述数据包的数据写入目标端数据库,以完成对所述增量数据的同步。
9.一种电子设备,包括存储器、处理器、通信接口及通信总线,所述存储器中存储有可在所述处理器上运行的计算机程序,所述存储器、所述处理器通过所述通信总线和所述通信接口进行通信,其特征在于,所述处理器执行所述计算机程序时实现上述权利要求1至6任一项所述方法的步骤。
10.一种具有处理器可执行的非易失的程序代码的计算机可读介质,其特征在于,所述程序代码使所述处理器执行所述权利要求1至6任一所述方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311607057.3A CN117743459A (zh) | 2023-11-28 | 2023-11-28 | 增量数据的同步方法、装置、系统、电子设备及可读介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311607057.3A CN117743459A (zh) | 2023-11-28 | 2023-11-28 | 增量数据的同步方法、装置、系统、电子设备及可读介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117743459A true CN117743459A (zh) | 2024-03-22 |
Family
ID=90257029
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311607057.3A Pending CN117743459A (zh) | 2023-11-28 | 2023-11-28 | 增量数据的同步方法、装置、系统、电子设备及可读介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117743459A (zh) |
-
2023
- 2023-11-28 CN CN202311607057.3A patent/CN117743459A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10073888B1 (en) | Adjusting partitioning policies of a database system in view of storage reconfiguration | |
US10180946B2 (en) | Consistent execution of partial queries in hybrid DBMS | |
KR102141234B1 (ko) | 분산된 데이터 스토어 내의 버젼형 계층 데이터 구조 | |
US20170083573A1 (en) | Multi-query optimization | |
US8396852B2 (en) | Evaluating execution plan changes after a wakeup threshold time | |
US8924373B2 (en) | Query plans with parameter markers in place of object identifiers | |
US11693912B2 (en) | Adapting database queries for data virtualization over combined database stores | |
CN110309233B (zh) | 数据存储的方法、装置、服务器和存储介质 | |
CN112286941B (zh) | 一种基于Binlog+HBase+Hive的大数据同步方法和装置 | |
US20070250517A1 (en) | Method and Apparatus for Autonomically Maintaining Latent Auxiliary Database Structures for Use in Executing Database Queries | |
CN111324610A (zh) | 一种数据同步的方法及装置 | |
CN109669925B (zh) | 非结构化数据的管理方法及装置 | |
WO2022017347A1 (zh) | 分布式数据库系统及数据处理方法 | |
EP3690669A1 (en) | Method, apparatus, device and storage medium for managing index technical field | |
US9390111B2 (en) | Database insert with deferred materialization | |
US20130041887A1 (en) | Adding entries to an index based on use of the index | |
US9390131B1 (en) | Executing queries subject to different consistency requirements | |
CN113722600A (zh) | 应用于大数据的数据查询方法、装置、设备及产品 | |
CN114595286A (zh) | 一种数据同步方法、装置、电子设备及存储介质 | |
CN117743459A (zh) | 增量数据的同步方法、装置、系统、电子设备及可读介质 | |
US20170031909A1 (en) | Locality-sensitive hashing for algebraic expressions | |
US11947537B1 (en) | Automatic index management for a non-relational database | |
WO2017019562A1 (en) | Structural equivalence | |
CN115168389A (zh) | 请求处理方法以及装置 | |
CN115344568A (zh) | 内存索引机制处理方法、装置、电子设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |