数据同步方法、装置、设备及存储介质
文献发布时间:2023-06-19 11:32:36
技术领域
本发明涉及数据处理技术领域,具体而言,涉及一种数据同步方法、装置、设备及存储介质。
背景技术
随着信息技术的发展以及计算机应用的普及,信息安全的事故频繁的发生,信息安全逐渐成为大众眼中关注的焦点。IT软件为了满足数据的安全性,保证可维护性,同时为了满足不同的功能模块可以的协同工作,往往采用分布式数据库的方式,既可以满足对一致性要求较高的业务场景,需要同时对多个数据源进行读写,也可以满足容灾的基础,防止系统出现失误或系统故障而导致数据的丢失。可以有效的提高数据库的I/O吞吐效率,增加系统的速度,也满足数据备份的需求。
但目前的分布式数据库的数据同步方法在数据量较小时,可以很好的实现数据的同步。但是在实际的业务场景中,需要处理的数据量一般都较大,若一次性取出全部数据,不但会导致JVM内存的溢出而且数据库需要一次性将所有数据放入缓存池中,既消耗缓存空间,而且消耗时间。若批量从数据库读取数据时,多次访问数据库给数据库带来较大的I/O通信压力,影响系统的整体效率。
发明内容
基于上述现有技术存在的问题,本发明实施例提供一种数据同步方法、装置、设备及存储介质,可以在分布式数据库数据同步时,提高大数据量时的同步效率。
第一方面,本发明实施例提供一种数据同步方法,所述方法包括:
通过流式查询获取所述源数据库的数据,所述源数据库中的所述数据为分块分片设置;
向所述目标数据库发送所述数据。
基于该第一方面的方法,由于流式查询能够逐条获取源数据库的数据,因此可以避免对源数据库的数据一次性放入缓冲池中,从而减小时间消耗。并且,能够避免对源数据库的数据批量读取,从而减小源数据库的通信压力,从而提高数据同步的效率。并且,在数据库中数据采用分块分片设置,能够在获取数据之后需要对其进行处理时,更方便的采用多设备多线程处理。
可选地,向所述目标数据库发送所述数据,包括:
当所述数据的数据量等于预设阈值时,向所述目标数据库批量发送所述数据。
可选地,向所述目标数据库批量发送所述数据之前,所述方法包括:
将所述数据存储于临时容器中。
可选地,所述临时容器的数据容量等于所述预设阈值。
可选地,所述方法还包括:
监听所述临时容器中的数据量是否到达所述预设阈值。
可选地,若所述数据量未达到所述预设阈值且获取的数据为空,则向所述目标数据库发送所述数据。
可选地,若所述数据量未达到所述预设阈值且接收到所述源数据库的第一消息,则向所述目标数据库发送所述数据,其中,所述第一消息用于指示所述源数据库数据发送结束。
可选地,向所述目标数据库发送所述数据之后,所述方法还包括:
删除所述临时容器中存储的所述数据。
可选地,所述临时容器包括列表List。
可选地,所述临时容器包括集合Set。
可选地,所述向所述目标数据库发送所述数据,包括:
通过Mybatis框架将所述数据插入所述目标数据库。
可选地,在所述将所述数据存储于临时容器中之前,所述方法还包括:
通过JVM内存创建所述临时容器。
第二方面,本发明实施例提供一种数据同步装置,所述装置包括:
获取模块,用于通过流式查询获取所述源数据库的数据,所述源数据库中的所述数据为分块分片设置;
发送模块,用于向所述目标数据库发送所述数据。
可选地,所述发送模块,具体用于当所述数据的数据量等于预设阈值时,向所述目标数据库批量发送所述数据。
可选地,所述装置还包括处理模块,用于将所述数据存储于所述临时容器中。
可选地,所述临时容器的数据容量等于所述预设阈值。
可选地,所述处理模块,还用于监听所述临时容器中的数据量是否到达所述预设阈值。
可选地,所述处理模块,具体用于若所述数据量未达到所述预设阈值且获取的数据为空,则向所述目标数据库发送所述数据。
可选地,所述处理模块,具体用于若所述数据量未达到所述预设阈值且接收到所述源数据库的第一消息,则向所述目标数据库发送所述数据,其中,所述第一消息用于指示所述源数据库数据发送结束。
可选地,所述处理模块,还用于删除所述临时容器中存储的所述数据。
第三方面,本发明实施例提供一种电子设备,包括:处理器、存储介质和总线,所述存储介质存储有所述处理器可执行的机器可读指令,当所述电子设备运行时,所述处理器与所述存储介质之间通过总线通信,所述处理器执行所述机器可读指令,以执行时执行如第一方面所述的方法的步骤。
第四方面,本发明实施例提供一种存储介质,所述存储介质上存储有计算机程序,所述计算机程序被处理器运行时执行如第一方面所述的方法的步骤。
以上第二方面至第四方面所述的有益效果,可以参考第一方面中所述,在此不再赘述。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1示出了本发明实施例提供的数据同步方法的流程示意图;
图2示出了本发明实施例提供的数据同步方法的另一流程示意图;
图3示出了本发明实施例提供的数据同步方法的另一流程示意图;
图4示出了本发明实施例提供的数据同步方法的另一流程示意图;
图5示出了本发明实施例提供的数据同步装置的结构示意图;
图6示出了本发明实施例提供的电子设备的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,应当理解,本发明中附图仅起到说明和描述的目的,并不用于限定本发明的保护范围。另外,应当理解,示意性的附图并未按实物比例绘制。本发明中使用的流程图示出了根据本发明的一些实施例实现的操作。应该理解,流程图的操作可以不按顺序实现,没有逻辑的上下文关系的步骤可以反转顺序或者同时实施。此外,本领域技术人员在本发明内容的指引下,可以向流程图添加一个或多个其他操作,也可以从流程图中移除一个或多个操作。
另外,本发明所描述的实施例仅仅是本发明的一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
需要说明的是,本发明实施例中将会用到术语“包括”、“包含”或者其任何其他变体,意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。还应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。在本发明的描述中,还需要说明的是,术语“第一”、“第二”、“第三”等仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。
随着信息技术的发展以及计算机应用的普及,信息安全的事故频繁的发生,信息安全逐渐成为大众眼中关注的焦点。IT软件为了满足数据的安全性,保证可维护性,同时为了满足不同的功能模块可以的协同工作,往往采用分布式数据库的方式,既可以满足对一致性要求较高的业务场景,需要同时对多个数据源进行读写,也可以满足容灾的基础,防止系统出现失误或系统故障而导致数据的丢失。可以有效的提高数据库的I/O吞吐效率,增加系统的速度,也满足数据备份的需求。
但目前的分布式数据库的数据同步方法在数据量较小时,可以很好的实现数据的同步。但是在实际的业务场景中,需要处理的数据量一般都较大,若一次性取出全部数据,不但会导致JVM内存的溢出而且数据库需要一次性将所有数据放入缓存池中,既消耗缓存空间,而且消耗时间。若批量从数据库读取数据时,多次访问数据库给数据库带来较大的I/O通信压力,影响系统的整体效率。
在此背景技术下,本发明实施例提供一种数据同步方法,图1示出了本发明实施例提供的数据同步方法的流程示意图,如图1所示,该方法可以包括:
S101、通过流式查询获取所述源数据库的数据,所述源数据库中的所述数据为分块分片设置。
S102、向所述目标数据库发送所述数据。
示例地,可以通过Mybatis框架将所述数据插入所述目标数据库。
本申请实施例提供了一种数据同步方法,由于流式查询能够逐条获取源数据库的数据,因此可以避免对源数据库的数据一次性放入缓冲池中,从而减小时间消耗。并且,能够避免对源数据库的数据批量读取,从而减小源数据库的通信压力,从而提高数据同步的效率。并且,在数据库中数据采用分块分片设置,能够在获取数据之后需要对其进行处理时,更方便的采用多设备多线程处理。
可选地,向所述目标数据库发送所述数据,如图2所示,包括:
S201、当所述数据的数据量等于预设阈值时,向所述目标数据库批量发送所述数据。
通过将获取的数据进行累积,以当其达到预设阈值时再将其发送给目标数据库,能够减少与目标数据库的通信频率,提高效率,并且在需要对获取的数据进行处理时,能够更加方便的进行处理。其中,预设阈值可以是本领域技术人员根据设备性能以及数据同步时数据量的量级进行设置,此处不做限制。
可选地,向所述目标数据库批量发送所述数据之前,所述方法包括:
将所述数据存储于临时容器中。
示例地,可以通过JVM内存创建临时容器,以便将数据存储于临时容器中。
通过临时容器来存储接收的数据,以使数据的数据量达到预设阈值时在发送数据,便于实现,可简化系统设计。其中,临时容器可以是List或Set等,此处不做限制。
可选地,所述临时容器的数据容量等于所述预设阈值。
可选地,当具有临时容器时,如图3所示,所述方法还包括:
S301、监听所述临时容器中的数据量是否到达所述预设阈值。
可选地,若所述数据量未达到所述预设阈值且获取的数据为空,则向所述目标数据库发送所述数据。
当获取的数据的数据量还未达到预设阈值时,若获取的数据为空,则可以说明数据已经获取完,不需要再获取,此时将数据发送给目标数据库,能够减少数据对临时容器的占用时间。
可选地,若所述数据量未达到所述预设阈值且接收到所述源数据库的第一消息,则向所述目标数据库发送所述数据,其中,所述第一消息用于指示所述源数据库数据发送结束。
当获取的数据的数据量还未达到预设阈值时,若接收到所述源数据库的第一消息,则可以说明数据已经获取完,不需要再获取,此时将数据发送给目标数据库,能够减少数据对临时容器的占用时间。
可选地,向所述目标数据库发送所述数据之后,如图4所示,所述方法还包括:
S401、删除所述临时容器中存储的所述数据。
通过在向目标数据库发送完数据之后,将临时容器中的数据删除,能够减少数据对临时容器的占用,避免下一次数据同步时临时容器内存溢出。
基于前述实施例所述的数据同步方法,本发明实施例还提供一种数据同步装置。图5示出了本发明实施例提供的数据同步装置的结构示意图。
如图5所示,数据同步装置包括:获取模块501,用于通过流式查询获取所述源数据库的数据,所述源数据库中的所述数据为分块分片设置;
发送模块502,用于向所述目标数据库发送所述数据。
可选地,所述发送模块502,具体用于当所述数据的数据量等于预设阈值时,向所述目标数据库批量发送所述数据。
可选地,所述装置还包括处理模块503,用于将所述数据存储于所述临时容器中。
可选地,所述临时容器的数据容量等于所述预设阈值。
可选地,所述处理模块503,还用于监听所述临时容器中的数据量是否到达所述预设阈值。
可选地,所述处理模块503,具体用于若所述数据量未达到所述预设阈值且获取的数据为空,则向所述目标数据库发送所述数据。
可选地,所述处理模块503,具体用于若所述数据量未达到所述预设阈值且接收到所述源数据库的第一消息,则向所述目标数据库发送所述数据,其中,所述第一消息用于指示所述源数据库数据发送结束。
可选地,所述处理模块503,还用于删除所述临时容器中存储的所述数据。
上述装置可以集成于服务器、计算机等设备,本发明在此不作限制。所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,该数据同步装置的具体工作过程,可以参考前述方法实施例中所述的数据同步方法的对应过程,其效果与前述方法实施例中所述的数据同步方法的效果对应,因此,本发明中不再赘述。
应该理解,以上所描述的装置实施例仅仅是示意性的,本发明实施例所揭露的装置和方法,也可以通过其它的方式实现。例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个模块或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个处理器可执行的非易失的计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得处理器执行时实现本发明各个实施例所述方法的全部或部分步骤。
也即,本领域内的技术人员应明白,本发明实施例可以采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式中的任一种实现。
基于此,本发明实施例还提供一种程序产品,该程序产品可以是U盘、移动硬盘、ROM、RAM、磁碟或者光盘等存储介质,存储介质上可以存储有计算机程序,计算机程序被处理器运行时执行如前述方法实施例中所述的数据同步方法的步骤。具体实现方式和技术效果类似,在此不再赘述。
可选地,本发明实施例还提供一种电子设备,该电子设备可以是服务器、计算机等设备,图6示出了本发明实施例提供的电子设备的结构示意图。
如图6所示,该电子设备可以包括:处理器601、存储介质602和总线603,存储介质602存储有处理器601可执行的机器可读指令,当电子设备运行时,处理器601与存储介质602之间通过总线603通信,处理器601执行机器可读指令,以执行时执行如前述实施例中所述的数据同步方法的步骤。具体实现方式和技术效果类似,在此不再赘述。
为了便于说明,在上述电子设备中仅描述了一个处理器。然而,应当注意,一些实施例中,本发明中的电子设备还可以包括多个处理器,因此本发明中描述的一个处理器执行的步骤也可以由多个处理器联合执行或单独执行。例如,若电子设备的处理器执行步骤A和步骤B,则应该理解,步骤A和步骤B也可以由两个不同的处理器共同执行或者在一个处理器中单独执行。例如,第一处理器执行步骤A,第二处理器执行步骤B,或者第一处理器和第二处理器共同执行步骤A和B等。
在一些实施例中,处理器可以包括一个或多个处理核(例如,单核处理器(S)或多核处理器(S))。仅作为举例,处理器可以包括中央处理单元(Central Processing Unit,CPU)、专用集成电路(Application Specific Integrated Circuit,ASIC)、专用指令集处理器(Application Specific Instruction-set Processor,ASIP)、图形处理单元(Graphics Processing Unit,GPU)、物理处理单元(Physics Processing Unit,PPU)、数字信号处理器(Digital Signal Processor,DSP)、现场可编程门阵列(Field ProgrammableGate Array,FPGA)、可编程逻辑器件(Programmable Logic Device,PLD)、控制器、微控制器单元、简化指令集计算机(Reduced Instruction Set Computing,RISC)、或微处理器等,或其任意组合。
以上仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。
- 数据同步方法、数据同步装置、数据同步设备及存储介质
- 数据库数据同步方法、装置、设备及可读存储介质