数据同步的方法、装置、计算机可读存储介质和处理器制造方法及图纸

技术编号:34457112 阅读:18 留言:0更新日期:2022-08-06 17:04
本申请提供了一种数据同步的方法、装置、计算机可读存储介质和处理器。分段读取源数据,每一次读取一个数据段,源数据包括多个数据段,每一个数据段中包括多条数据;将多个数据段存放在第一共享内存中;从第一共享内存中逐条获取数据,且对获取到的数据逐条进行预处理,得到预处理后的数据,且将预处理后的数据逐条存放在第二共享内存中;将第二共享内存中的预处理后的数据写入目标数据库,且一次写入多条预处理后的数据。该方案中,数据读取、数据处理和数据写入可以并发执行,在数据量较大时,可以分批次读取数据并写入数据,进而解决了现有技术中数据量大造成无法一次性全量加载所有源数据而无法进行数据同步的问题,提高了数据同步的效率。了数据同步的效率。了数据同步的效率。

【技术实现步骤摘要】
数据同步的方法、装置、计算机可读存储介质和处理器


[0001]本申请涉及数据通信领域,具体而言,涉及一种数据同步的方法、装置、计算机可读存储介质和处理器。

技术介绍

[0002]在业务系统实现中,数据迁移、数据重新分库分表和数据报表分析等业务场景都涉及到数据库之间的批量数据同步,在数据库之间进行批量数据同步时,通常需要将源数据全部加载到内存中,然后再全部写入到目标数据库,当数据量较大或者服务器内存较小时,全部源数据无法都装载到内存中,会出现“内存不足错误”的程序错误,造成数据同步失败,并且源数据的读取和写入到目标数据库只能够串行处理,数据同步的效率也较低。

技术实现思路

[0003]本申请的主要目的在于提供一种数据同步的方法、装置、计算机可读存储介质和处理器,以解决现有技术中数据量大造成无法一次性全量加载所有源数据而无法进行数据同步的问题。
[0004]根据本专利技术实施例的一个方面,提供了一种数据同步的方法,包括:分段读取源数据,每一次读取一个数据段,所述源数据包括多个数据段,每一个所述数据段中包括多条数据;将多个所述数据段存放在第一共享内存中;从所述第一共享内存中逐条获取所述数据,且对获取到的所述数据逐条进行预处理,得到预处理后的数据,且将所述预处理后的数据逐条存放在第二共享内存中,所述预处理包括压缩处理、加密处理和修改处理中的至少之一;将所述第二共享内存中的所述预处理后的数据写入目标数据库,且一次写入多条所述预处理后的数据。
[0005]可选地,将多个所述数据段存放在第一共享内存中,包括:逐个将所述数据段存放至第一本地缓存中;在所述第一本地缓存中已存放的所述数据段的数量达到第一数量的情况下,获取所述第一本地缓存中所述第一数量个所述数据段所占的空间;获取所述第一共享内存的当前空闲容量;根据所述第一共享内存的当前空闲容量和所述第一数量个所述数据段所占的空间之间的大小关系,确定是否将所述第一数量个所述数据段存放至所述第一共享内存中。
[0006]可选地,根据所述第一共享内存的当前空闲容量和所述第一数量个所述数据段所占的空间之间的大小关系,确定是否将所述第一数量个所述数据段存放至所述第一共享内存中,包括:在所述第一共享内存的当前空闲容量大于或者等于所述第一数量个所述数据段所占的空间的情况下,批量将所述第一数量个所述数据段存放至所述第一共享内存中;在所述第一共享内存的当前空闲容量小于所述第一数量个所述数据段所占的空间,且所述第一共享内存中存在空闲容量的情况下,将第二数量个所述数据段存放至所述第一共享内存中,其中,所述第二数量小于所述第一数量,所述第二数量个所述数据段所占的空间小于或者等于所述第一共享内存的当前空闲容量;在所述第一共享内存不存在空闲容量的情况
下,暂停存放所述数据段。
[0007]可选地,将所述第二共享内存中的所述预处理后的数据写入目标数据库,包括:逐条将所述第二共享内存中的所述预处理后的数据存放至第二本地缓存中;在所述第二本地缓存中已存放的所述预处理后的数据的条数大于或者等于第三数量的情况下,将所述第二本地缓存中的多条所述预处理后的数据组合为多个批量数据段,依次将多个所述批量数据段写入所述目标数据库,各所述批量数据段中包括多条所述预处理后的数据;在所述第二本地缓存中已存放的所述预处理后的数据的数量小于所述第三数量的情况下,获取最短存放时间,所述最短存放时间是指多条所述预处理后的数据在所述第二本地缓存中存放的时间的最小值,在所述最短存放时间大于或者等于预定时间的情况下,将所述第二本地缓存中的多条所述预处理后的数据写入所述目标数据库。
[0008]可选地,将所述预处理后的数据逐条存放在第二共享内存中,包括:获取当前条预处理后的数据所占的空间;获取所述第二共享内存的当前空闲容量;在所述第二共享内存的当前空闲容量大于或者等于所述当前条预处理后的数据所占的空间的情况下,将所述当前条预处理后的数据存放在所述第二共享内存中;在所述第二共享内存的当前空闲容量小于所述当前条预处理后的数据所占的空间的情况下,暂停存放所述当前条预处理后的数据。
[0009]可选地,所述方法还包括:在未能成功读取到所述数据段的情况下,生成结束标记;在生成所述结束标记之后,关闭与存储所述源数据的数据库之间的连接,且将所述结束标记插入至所述第一共享内存的第一预定位置的下一个位置中,所述第一预定位置为所述第一共享内存中存放最后一个所述数据段中的最后一条所述数据的位置;在将所述第一共享内存中除所述结束标记之外的数据都已进行预处理,且将所有的所述预处理后的数据都存放在第二共享内存中之后,将所述结束标记插入至所述第二共享内存的第二预定位置的下一个位置中,所述第二预定位置为所述第二共享内存中存放的最后一条所述预处理后的数据的位置;在将所述第二共享内存中除所述结束标记之外的所述预处理后的数据都已写入所述目标数据库之后,关闭所述目标数据库的数据库连接。
[0010]可选地,所述方法还包括:将多个所述数据段存放在第一共享内存中,包括:构建数据读取线程;采用所述数据读取线程将多个所述数据段存放在第一共享内存中;从所述第一共享内存中逐条获取所述数据,且对获取到的所述数据逐条进行预处理,得到预处理后的数据,且将所述预处理后的数据逐条存放在第二共享内存中,包括:构建数据处理线程;采用所述数据处理线程从所述第一共享内存中逐条获取所述数据,且对获取到的所述数据逐条进行预处理,得到预处理后的数据,且将所述预处理后的数据逐条存放在第二共享内存中;将所述第二共享内存中的所述预处理后的数据写入目标数据库,且一次写入多条所述预处理后的数据,包括:构建数据写入线程;采用所述数据写入线程将所述第二共享内存中的所述预处理后的数据写入目标数据库,且一次写入多条所述预处理后的数据。
[0011]根据本专利技术实施例的另一方面,还提供了一种数据同步的装置,包括:获取单元,用于分段读取源数据,每一次读取一个数据段,所述源数据包括多个数据段,每一个所述数据段中包括多条数据;存放单元,用于将多个所述数据段存放在第一共享内存中;第一处理单元,用于从所述第一共享内存中逐条获取所述数据,且对获取到的所述数据逐条进行预处理,得到预处理后的数据,且将所述预处理后的数据逐条存放在第二共享内存中,所述预
处理包括压缩处理、加密处理和修改处理中的至少之一;第二处理单元,用于将所述第二共享内存中的所述预处理后的数据写入目标数据库,且一次写入多条所述预处理后的数据。
[0012]根据本专利技术实施例的再一方面,还提供了一种计算机可读存储介质,所述计算机可读存储介质包括存储的程序,其中,所述程序执行任意一种所述的方法。
[0013]根据本专利技术实施例的又一方面,还提供了一种处理器,所述处理器用于运行程序,其中,所述程序运行时执行任意一种所述的方法。
[0014]在本专利技术实施例中,首先分段读取源数据,每一次读取一个数据段,源数据包括多个数据段,每一个数据段中包括多条数据,之后将多个数据段存放在第一共享内存中,之后从第一共享内存中逐条获取数据,且对获取到的本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种数据同步的方法,其特征在于,包括:分段读取源数据,每一次读取一个数据段,所述源数据包括多个数据段,每一个所述数据段中包括多条数据;将多个所述数据段存放在第一共享内存中;从所述第一共享内存中逐条获取所述数据,且对获取到的所述数据逐条进行预处理,得到预处理后的数据,且将所述预处理后的数据逐条存放在第二共享内存中,所述预处理包括压缩处理、加密处理和修改处理中的至少之一;将所述第二共享内存中的所述预处理后的数据写入目标数据库,且一次写入多条所述预处理后的数据。2.根据权利要求1所述的方法,其特征在于,将多个所述数据段存放在第一共享内存中,包括:逐个将所述数据段存放至第一本地缓存中;在所述第一本地缓存中已存放的所述数据段的数量达到第一数量的情况下,获取所述第一本地缓存中所述第一数量个所述数据段所占的空间;获取所述第一共享内存的当前空闲容量;根据所述第一共享内存的当前空闲容量和所述第一数量个所述数据段所占的空间之间的大小关系,确定是否将所述第一数量个所述数据段存放至所述第一共享内存中。3.根据权利要求2所述的方法,其特征在于,根据所述第一共享内存的当前空闲容量和所述第一数量个所述数据段所占的空间之间的大小关系,确定是否将所述第一数量个所述数据段存放至所述第一共享内存中,包括:在所述第一共享内存的当前空闲容量大于或者等于所述第一数量个所述数据段所占的空间的情况下,批量将所述第一数量个所述数据段存放至所述第一共享内存中;在所述第一共享内存的当前空闲容量小于所述第一数量个所述数据段所占的空间,且所述第一共享内存中存在空闲容量的情况下,将第二数量个所述数据段存放至所述第一共享内存中,其中,所述第二数量小于所述第一数量,所述第二数量个所述数据段所占的空间小于或者等于所述第一共享内存的当前空闲容量;在所述第一共享内存不存在空闲容量的情况下,暂停存放所述数据段。4.根据权利要求1所述的方法,其特征在于,将所述第二共享内存中的所述预处理后的数据写入目标数据库,包括:逐条将所述第二共享内存中的所述预处理后的数据存放至第二本地缓存中;在所述第二本地缓存中已存放的所述预处理后的数据的条数大于或者等于第三数量的情况下,将所述第二本地缓存中的多条所述预处理后的数据组合为多个批量数据段,依次将多个所述批量数据段写入所述目标数据库,各所述批量数据段中包括多条所述预处理后的数据;在所述第二本地缓存中已存放的所述预处理后的数据的数量小于所述第三数量的情况下,获取最短存放时间,所述最短存放时间是指多条所述预处理后的数据在所述第二本地缓存中存放的时间的最小值,在所述最短存放时间大于或者等于预定时间的情况下,将所述第二本地缓存中的多条所述预处理后的数据写入所述目标数据库。5.根据权利要求1所述的方法,其特征在于,将所述预处理后的数据逐条存放在第二共
享内存中,包括:获取当前条预处理后的数据所占的空间;获取所述第二共享内存的当前空闲容量;在所述第二共享内存的当前空闲...

【专利技术属性】
技术研发人员:胡军锋段永政张清赵玉豪张波
申请(专利权)人:中国邮政储蓄银行股份有限公司
类型:发明
国别省市:

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

1