CN116226272A - 数据同步方法及装置 - Google Patents
数据同步方法及装置 Download PDFInfo
- Publication number
- CN116226272A CN116226272A CN202211697096.2A CN202211697096A CN116226272A CN 116226272 A CN116226272 A CN 116226272A CN 202211697096 A CN202211697096 A CN 202211697096A CN 116226272 A CN116226272 A CN 116226272A
- Authority
- CN
- China
- Prior art keywords
- data
- synchronized
- source database
- completed
- total number
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
- G06F16/275—Synchronous replication
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/283—Multi-dimensional databases or data warehouses, e.g. MOLAP or ROLAP
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Synchronisation In Digital Transmission Systems (AREA)
Abstract
本发明提出一种数据同步方法及装置,通过查询源数据库中需同步数据的总条数,根据统计的已完成同步数据条数与查询的所述总条数,查询源数据库,以同步排序在已完成同步数据条数与总条数之间的数据。响应于成功同步至少部分数据,基于成功同步的数据条数,更新已完成同步数据条数。在数据同步过程中,通过记录已完成同步数据条数,并基于该已完成同步数据条数,通过两次数据库查询,便可以实现断点续传,与相关技术相比,减少查询次数,提升断点续传效率。本申请记载的方案在数据同步成功之后才会更新已完成同步数据条数(即更新断点位置),与相关技术相比,写入失败的数据不会被记为断点位置,会被重写,不会丢失,解决了数据可能丢失的问题。
Description
技术领域
本发明涉及大数据技术领域,尤其涉及一种数据同步方法及装置。
背景技术
随着技术不断更新迭代,需要采用算法进行处理,或者,用于对算法进行训练的数据越来越多,数据量越来越大。产生了用户构建数据仓库、数据湖等需求。在构建数据仓或者数据湖构建的过程中,需要通过数据同步收集大量数据。
若因为网联或者服务问题导致数据同步中断,每次重新从头进行数据同步无疑会增加时间成本和资源占用。
发明内容
本发明旨在至少在一定程度上解决相关技术中的技术问题之一。
为此,本发明的第一个目的在于提出一种数据同步方法。
本发明的第二个目的在于提出一种数据同步装置。
本发明的第三个目的在于提出一种电子设备。
本发明的第四个目的在于提出一种非临时性计算机可读存储介质。
本发明的第五个目的在于提出一种计算机程序产品。
为达上述目的,本发明第一方面实施例提出了一种数据同步方法,包括:
查询源数据库中需同步数据的总条数,其中,所述源数据库中的数据按照预设顺序排序;
根据统计的已完成同步数据条数与查询的所述总条数,查询所述源数据库,以同步排序在所述已完成同步数据条数与所述总条数之间的数据;
响应于成功同步至少部分数据,基于成功同步的数据条数,更新所述已完成同步数据条数。
为达上述目的,本发明第二方面实施例提出了一种数据同步装置,包括:
第一查询模块,用于查询源数据库中需同步数据的总条数,其中,所述源数据库中的数据按照预设顺序排序;
第二查询模块,用于根据统计的已完成同步数据条数与查询的所述总条数,查询所述源数据库,以同步排序在所述已完成同步数据条数与所述总条数之间的数据;
第一处理模块,用于响应于成功同步至少部分数据,基于成功同步的数据条数,更新所述已完成同步数据条数。
本发明实施例提供的数据同步方法及装置,在源数据库中的数据按照预设顺序排序的情况下,通过查询源数据库中需同步数据的总条数,根据统计的已完成同步数据条数与查询的所述总条数,查询源数据库,以同步排序在已完成同步数据条数与总条数之间的数据。响应于成功同步至少部分数据,基于成功同步的数据条数,更新已完成同步数据条数。在数据同步过程中,通过记录已完成同步数据条数,并基于该已完成同步数据条数,通过两次数据库查询,便可以实现断点续传,与相关技术相比,减少查询次数,提升断点续传效率。另外,本申请记载的方案在数据同步成功之后才会更新已完成同步数据条数(即更新断点位置),与相关技术相比,写入失败的数据不会被记为断点位置,会被重写,不会丢失,解决了数据可能丢失的问题。
为达上述目的,本发明第三方面实施例提出了一种电子设备,包括:存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时,实现如第一方面所述的方法。
为了实现上述目的,本发明第四方面实施例提出了一种非临时性计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如第一方面所述的方法。
为了实现上述目的,本发明第五方面实施例提出了一种计算机程序产品,当所述计算机程序产品中的指令处理器执行时,执行如第一方面所述的方法。
本发明附加的方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。
附图说明
本发明上述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中:
图1为本发明实施例所提供的一种数据同步方法的流程示意图;
图2为一种场景下的数据同步方法的流程示意图;
图3为本发明实施例所提供的另一种数据同步方法的流程示意图;
图4为本发明实施例所提供的另一种数据同步方法的流程示意图;
图5为本发明实施例提供的一种数据同步装置的结构示意图;以及
图6示出了适于用来实现本申请实施方式的示例性计算机设备的框图。
具体实施方式
下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,旨在用于解释本发明,而不能理解为对本发明的限制。
下面参考附图描述本发明实施例的数据同步方法和装置。
相关技术中,已存在通过分页去实现断点续传,但在数据异构的场景下如果目的数据库写入失败,会导致数据丢失,并且基于分页的断点续传需要多次从源数据库去查询,效率不高。
有鉴于此,本发明实施例提供了一种数据同步方法,以实现断点续传。
图1为本发明实施例所提供的一种数据同步方法的流程示意图。如图1所示,该方法包括以下步骤:
步骤101,查询源数据库中需同步数据的总条数,其中,源数据库中的数据按照预设顺序排序。
源数据库中每一条数据,均按照预设的顺序进行排序的。在一些方式中,可以在发起数据同步任务时,指定排序字段,使得所述源数据库可以响应于所述数据同步任务的案子所述排序字段对数据进行排序,从而保证每次获取到的数据顺序一致。
在一种可能的实现方式下,在源数据库中需要增加数据时,是按照设定排序进行增量,后续新增加的数据不会影响源数据库中原有数据的排序。
在需要对源数据进行数据同步,执行数据同步任务时。在一种场景下,若数据同步任务指定了查询条件,可以基于数据同步任务中指定的查询条件,查询源数据库中的条数最大值,即满足查询条件的需同步数据的总条数。
在另一种场景下,若数据同步任务未指定查询条件,则查询源数据库中全部数据的总条数。
需要说明的是,本步骤中查询需同步数据的总条数,是需要获知有多少条数据待同步。以便后续同步后,确认是否已将全部数据同步完成。
另外需要说明的是,由于源数据库中的数据也是增量变化的,因此,每次执行数据同步任务均需要重新查询源数据库中需同步数据的总条数。
步骤102,根据统计的已完成同步数据条数与查询的所述总条数,查询所述源数据库,以同步排序在所述已完成同步数据条数与所述总条数之间的数据。
本次查询是基于前述已查询出的总条数,以及本地存储的已完成同步数据条数作为查询条件,生成查询语句,查询并同步排序在所述已完成同步数据条数与所述总条数之间的数据。
步骤103,响应于成功同步至少部分数据,基于成功同步的数据条数,更新所述已完成同步数据条数。
在成功同步至少部分数据的情况下,则说明源数据库中已完成同步数据条数存在更新,将本次成功同步的数据条数增加到步骤102中原有的已完成同步数据条数中,得到更新的已完成同步数据条数。
进一步地,响应于未存储所述已完成同步数据条数,查询所述源数据库,以同步排序在首条与所述总条数之间的数据。如图2所示的一种场景下的数据同步方法的流程示意图:
如图所示,分为两个分支,其中一个分支为数据同步过程,由输入插件执行;另一个分支为断点信息更新过程,由输出插件执行。
其中,针对数据同步过程,通过输入插件执行:
步骤201,判断是否需要断点续传。
步骤202,在需要断点续传的情况下,查询是否存储有已完成同步数据条数(即断点信息)。
步骤203,若存储有已完成同步数据条数的情况下,基于已完成同步数据条数和查询的总条数生成查询语句,并基于生成的查询语句进行数据同步。
以下描述通过MySQL数据同步到Oracle为例。在一些可能的实现方式中,通过如第一条SQL语句select count(*)from table查询到源数据库的总条数为参数m,结合记录的断点信息,即已完成同步数据条数作为参数n,得到第二条SQL语句select*from tablewhere limit n,m。需要说明的是,SQL是用于访问和处理数据库的标准的计算机语言。
例如:查询的源数据库中的总条数为10000条,即m为10000,断点信息n为0,则本次任务执行的第二条SQL语句为select*from table where limit0,10000。
对应类似甲骨文oracle的数据库,支持行号(rownum)的数据库,可以省略第一条SQL语句的执行。则执行的SQL语句为:select*from(select rownum no,*from table)where no>n。即只用1条SQL即可完成数据查询\同步操作。
步骤204,若未存储有已完成数据条数的情况下,或者,在不需要断点续传的情况下,则执行全量查询语句。需要说明的是,这里提及的全量查询语句,是用于查询出全部待同步数据,以进行数据同步。
针对断点信息更新过程,通过输出插件执行:
步骤205,判断数据同步过程是否需要后续的断点续传,若需要则执行步骤206,否则,直接结束插件。
步骤206,若需要,则基于前述的数据同步过程中成功同步的数据条数更新已完成同步数据条数(即断点信息)。
数据同步任务执行过一次后,无论成功或者失败,均可以通过一段程序记录成功同步的数据条数。如步骤203执行失败前,记录的n为5000,那么此任务就产生了断点5000;如步骤203执行成功后,记录的n为6000,那么此任务就产生了断点6000。
本实施例中,在源数据库中的数据按照预设顺序排序的情况下,通过查询源数据库中需同步数据的总条数,根据统计的已完成同步数据条数与查询的所述总条数,查询源数据库,以同步排序在已完成同步数据条数与总条数之间的数据。响应于成功同步至少部分数据,基于成功同步的数据条数,更新已完成同步数据条数。在数据同步过程中,通过记录已完成同步数据条数,并基于该已完成同步数据条数,通过两次数据库查询,便可以实现断点续传,与相关技术相比,减少查询次数,提升断点续传效率。另外,本申请记载的方案在数据同步成功之后才会更新已完成同步数据条数(即更新断点位置),与相关技术相比,写入失败的数据不会被记为断点位置,会被重写,不会丢失,解决了数据可能丢失的问题。
在上一实施例的基础上,源数据库中的数据还具有对应的时间戳,时间戳用于指示对应数据存储至所述源数据库中的时刻。相应地,预设排序是指数据存储在所述源数据库中的时间顺序。
基于此,本实施例提供了另一种数据同步方法,图3为本发明实施例所提供的另一种数据同步方法的流程示意图。
如图3所示,该方法可以包括以下步骤:
步骤301,查询源数据库中需同步数据的总条数,其中,所述源数据库中的数据按照预设顺序排序。
具体参见前述实施例中的相关描述,本实施例中对此不再赘述。
步骤302,获取最后一条被同步数据的目标时间戳,以及最近一次同步统计的已完成同步数据条数。
为了实现断点续传,用于执行数据同步的设备本地存储最近一次同步时统计的已完成同步数据条数,以及最后一条被同步数据的目标时间戳。
步骤303,根据统计的已完成同步数据条数与查询的所述总条数,查询所述源数据库,以同步时间戳大于或大于等于所述目标时间戳,且排序在所述已完成同步数据条数与所述总条数之间的数据。
通过在执行数据同步的设备本地存储已完成同步数据条数和目标时间戳双重保险,确保断点续传正常实施。避免由于源数据库中排序异常,导致同步出现错误的情况。在增加了目标时间戳的情况下,则可以在一定程度上,对这种情况进行识别,避免同步错误的情况出现。
步骤304,响应于成功同步至少部分数据,根据同步成功的最后一条数据的时间戳,更新所述目标时间戳,以及基于成功同步的数据条数,更新所述已完成同步数据条数。
本实施例中,在源数据库中的数据按照预设顺序排序的情况下,通过查询源数据库中需同步数据的总条数,根据统计的已完成同步数据条数与查询的所述总条数,查询源数据库,以同步排序在已完成同步数据条数与总条数之间的数据。响应于成功同步至少部分数据,基于成功同步的数据条数,更新已完成同步数据条数。在数据同步过程中,通过记录已完成同步数据条数,并基于该已完成同步数据条数,通过两次数据库查询,便可以实现断点续传,与相关技术相比,减少查询次数,提升断点续传效率。另外,本申请记载的方案在数据同步成功之后才会更新已完成同步数据条数(即更新断点位置),与相关技术相比,写入失败的数据不会被记为断点位置,会被重写,不会丢失,解决了数据可能丢失的问题。此外,通过在执行数据同步的设备本地存储已完成同步数据条数和目标时间戳双重保险,确保断点续传正常实施。
在数据同步过程中,较容易出现内存溢出的问题,为了避免内存溢出,本发明实施例提供了另一种数据同步方法。图4为本发明实施例所提供的另一种数据同步方法的流程示意图,如图4所示,包括:
步骤401,查询源数据库中需同步数据的总条数,其中,所述源数据库中的数据按照预设顺序排序。
步骤402,从所述源数据库中查询排序在所述已完成同步数据条数与所述总条数之间的数据。
步骤401和步骤402具体参见前述实施例中的相关描述,本实施例中对此不再赘述。
步骤403,采用第一线程从源数据库获取查询到的数据,并写入到预设数据队列中,以采用第二线程从所述预设数据队列中读取数据,并写入到目的数据库中。
对于数据同步过程中内存问题,为了保障应用内存不发生溢出,即内存溢出(OOM,Out of Memory)的情况出现,通过使用预设数据队列来保障。如设置缓存队列大小为设定值的数据队列,从源数据库到写入目的数据库过程中,数据读取和数据写入为两个线程,即第一线程和第二线程,两个线程通过数据队列传输数据,避免了内存溢出的问题出现。
在一种可能的场景下,预设数据队列包括但不限于阻塞队列。阻塞队列具有以下功能:一方面,当阻塞队列为空时,从阻塞队列中获取元素的操作将会被阻塞。另一方面,当阻塞队列是满时,往阻塞队列里添加元素的操作将会被阻塞。从而使得数据同步过程更加可靠。
本实施例中,在源数据库中的数据按照预设顺序排序的情况下,通过查询源数据库中需同步数据的总条数,根据统计的已完成同步数据条数与查询的所述总条数,查询源数据库,以同步排序在已完成同步数据条数与总条数之间的数据。响应于成功同步至少部分数据,基于成功同步的数据条数,更新已完成同步数据条数。在数据同步过程中,通过记录已完成同步数据条数,并基于该已完成同步数据条数,通过两次数据库查询,便可以实现断点续传,与相关技术相比,减少查询次数,提升断点续传效率。另外,本申请记载的方案在数据同步成功之后才会更新已完成同步数据条数(即更新断点位置),与相关技术相比,写入失败的数据不会被记为断点位置,会被重写,不会丢失,解决了数据可能丢失的问题。另外,采用第一线程从源数据库获取查询到的数据,并写入到预设数据队列中,以采用第二线程从所述预设数据队列中读取数据,并写入到目的数据库中,通过数据队列在两个线程之间传输数据,避免了内存溢出的问题出现。
为了实现上述实施例,本发明还提出一种数据同步装置。
图5为本发明实施例提供的一种数据同步装置50的结构示意图。
如图5所示,该数据同步装置包括:第一查询模块51、第二查询模块52和第一处理模块53。
第一查询模块51,用于查询源数据库中需同步数据的总条数,其中,所述源数据库中的数据按照预设顺序排序。
第二查询模块52,用于根据统计的已完成同步数据条数与查询的所述总条数,查询所述源数据库,以同步排序在所述已完成同步数据条数与所述总条数之间的数据。
第一处理模块53,用于响应于成功同步至少部分数据,基于成功同步的5数据条数,更新所述已完成同步数据条数。
进一步地,在本发明实施例的一种可能的实现方式中,所述源数据库中的数据还具有对应的时间戳,所述时间戳用于指示对应数据存储至所述源数据库中的时刻;所述预设排序是指数据存储在所述源数据库中的时间顺序。
基于此,第二查询模块52,用于:
0获取最后一条被同步数据的目标时间戳;
根据统计的已完成同步数据条数与查询的所述总条数,查询所述源数据库,以同步时间戳大于或大于等于所述目标时间戳,且排序在所述已完成同步数据条数与所述总条数之间的数据;
根据同步成功的最后一条数据的时间戳,更新所述目标时间戳。
5数据同步装置,还包括:
第二处理模块,用于响应于未存储所述已完成同步数据条数,查询所述源数据库,以同步排序在首条与所述总条数之间的数据。
进一步地,在本发明实施例的一种可能的实现方式中,第二查询模块52,用于:
0从所述源数据库中查询排序在所述已完成同步数据条数与所述总条数之
间的数据;
采用第一线程从源数据库获取查询到的数据,并写入到预设数据队列中,以采用第二线程从所述预设数据队列中读取数据,并写入到目的数据库中。其中,预设数据队列包括阻塞队列。
进一步地,在本发明实施例的一种可能的实现方式中,在所述源数据库为预设类型数据库的情形下,查询源数据库中需同步数据的总条数,以及根据统计的已完成同步数据条数与查询的所述总条数,查询所述数据库,以同步排序在所述已完成同步数据条数与所述总条数之间的数据的语句属于同一条SQL语句。
需要说明的是,前述对数据同步方法实施例的解释说明也适用于该实施例的数据同步装置,此处不再赘述。
本发明实施例中,在源数据库中的数据按照预设顺序排序的情况下,通过查询源数据库中需同步数据的总条数,根据统计的已完成同步数据条数与查询的所述总条数,查询源数据库,以同步排序在已完成同步数据条数与总条数之间的数据。响应于成功同步至少部分数据,基于成功同步的数据条数,更新已完成同步数据条数。在数据同步过程中,通过记录已完成同步数据条数,并基于该已完成同步数据条数,通过两次数据库查询,便可以实现断点续传,与相关技术相比,减少查询次数,提升断点续传效率。另外,本申请记载的方案在数据同步成功之后才会更新已完成同步数据条数(即更新断点位置),与相关技术相比,写入失败的数据不会被记为断点位置,会被重写,不会丢失,解决了数据可能丢失的问题。
为了实现上述实施例,本发明还提出一种电子设备,包括:存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时,实现如前述实施例所述的数据同步方法。
为了实现上述实施例,本发明还提出一种非临时性计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如前述实施例所述的数据同步方法。
为了实现上述实施例,本发明还提出一种计算机程序产品,当所述计算机程序产品中的指令处理器执行时,执行如前述实施例所述的数据同步方法。
图6示出了适于用来实现本申请实施方式的示例性计算机设备的框图。图6显示的计算机设备12仅仅是一个示例,不应对本申请实施例的功能和使用范围带来任何限制。
如图6所示,计算机设备12以通用计算设备的形式表现。计算机设备12的组件可以包括但不限于:一个或者多个处理器或者处理单元16,系统存储器28,连接不同系统组件(包括系统存储器28和处理单元16)的总线18。
总线18表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器,外围总线,图形加速端口,处理器或者使用多种总线结构中的任意总线结构的局域总线。举例来说,这些体系结构包括但不限于工业标准体系结构(Industry StandardArchitecture;以下简称:ISA)总线,微通道体系结构(Micro Channel Architecture;以下简称:MAC)总线,增强型ISA总线、视频电子标准协会(Video Electronics StandardsAssociation;以下简称:VESA)局域总线以及外围组件互连(Peripheral ComponentInterconnection;以下简称:PCI)总线。
计算机设备12典型地包括多种计算机系统可读介质。这些介质可以是任何能够被计算机设备12访问的可用介质,包括易失性和非易失性介质,可移动的和不可移动的介质。
存储器28可以包括易失性存储器形式的计算机系统可读介质,例如随机存取存储器(Random Access Memory;以下简称:RAM)30和/或高速缓存存储器32。计算机设备12可以进一步包括其它可移动/不可移动的、易失性/非易失性计算机系统存储介质。仅作为举例,存储系统34可以用于读写不可移动的、非易失性磁介质(图6未显示,通常称为“硬盘驱动器”)。尽管图6中未示出,可以提供用于对可移动非易失性磁盘(例如“软盘”)读写的磁盘驱动器,以及对可移动非易失性光盘(例如:光盘只读存储器(Compact Disc Read OnlyMemory;以下简称:CD-ROM)、数字多功能只读光盘(Digital Video Disc Read OnlyMemory;以下简称:DVD-ROM)或者其它光介质)读写的光盘驱动器。在这些情况下,每个驱动器可以通过一个或者多个数据介质接口与总线18相连。存储器28可以包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块,这些程序模块被配置以执行本申请各实施例的功能。
具有一组(至少一个)程序模块42的程序/实用工具40,可以存储在例如存储器28中,这样的程序模块42包括但不限于操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。程序模块42通常执行本申请所描述的实施例中的功能和/或方法。
计算机设备12也可以与一个或多个外部设备14(例如键盘、指向设备、显示器24等)通信,还可与一个或者多个使得用户能与该计算机系统/服务器12交互的设备通信,和/或与使得该计算机系统/服务器12能与一个或多个其它计算设备进行通信的任何设备(例如网卡,调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口22进行。并且,计算机设备12还可以通过网络适配器20与一个或者多个网络(例如局域网(Local AreaNetwork;以下简称:LAN),广域网(Wide Area Network;以下简称:WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器20通过总线18与计算机设备12的其它模块通信。应当明白,尽管图中未示出,可以结合计算机设备12使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
处理单元16通过运行存储在系统存储器28中的程序,从而执行各种功能应用以及数据处理,例如实现前述实施例中提及的方法。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。在本发明的描述中,“多个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。
流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现定制逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本发明的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本发明的实施例所属技术领域的技术人员所理解。
在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何计算机可读介质中,以供指令执行系统、装置或设备(如基于计算机的系统、包括处理器的系统或其他可以从指令执行系统、装置或设备取指令并执行指令的系统)使用,或结合这些指令执行系统、装置或设备而使用。就本说明书而言,"计算机可读介质"可以是任何可以包含、存储、通信、传播或传输程序以供指令执行系统、装置或设备或结合这些指令执行系统、装置或设备而使用的装置。计算机可读介质的更具体的示例(非穷尽性列表)包括以下:具有一个或多个布线的电连接部(电子装置),便携式计算机盘盒(磁装置),随机存取存储器(RAM),只读存储器(ROM),可擦除可编辑只读存储器(EPROM或闪速存储器),光纤装置,以及便携式光盘只读存储器(CDROM)。另外,计算机可读介质甚至可以是可在其上打印所述程序的纸或其他合适的介质,因为可以例如通过对纸或其他介质进行光学扫描,接着进行编辑、解译或必要时以其他合适方式进行处理来以电子方式获得所述程序,然后将其存储在计算机存储器中。
应当理解,本发明的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。如,如果用硬件来实现和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(PGA),现场可编程门阵列(FPGA)等。
本技术领域的普通技术人员可以理解实现上述实施例方法携带的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。
此外,在本发明各个实施例中的各功能单元可以集成在一个处理模块中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。
上述提到的存储介质可以是只读存储器,磁盘或光盘等。尽管上面已经示出和描述了本发明的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本发明的限制,本领域的普通技术人员在本发明的范围内可以对上述实施例进行变化、修改、替换和变型。
Claims (14)
1.一种数据同步方法,其特征在于,包括:
查询源数据库中需同步数据的总条数,其中,所述源数据库中的数据按照预设顺序排序;
根据统计的已完成同步数据条数与查询的所述总条数,查询所述源数据库,以同步排序在所述已完成同步数据条数与所述总条数之间的数据;
响应于成功同步至少部分数据,基于成功同步的数据条数,更新所述已完成同步数据条数。
2.根据权利要求1所述的方法,其特征在于,所述源数据库中的数据还具有对应的时间戳,所述时间戳用于指示对应数据存储至所述源数据库中的时刻;所述预设排序是指数据存储在所述源数据库中的时间顺序;
所述根据统计的已完成同步数据条数与查询的所述总条数,查询所述源数据库,以同步排序在所述已完成同步数据条数与所述总条数之间的数据,包括:
获取最后一条被同步数据的目标时间戳;
根据统计的已完成同步数据条数与查询的所述总条数,查询所述源数据库,以同步时间戳大于或大于等于所述目标时间戳,且排序在所述已完成同步数据条数与所述总条数之间的数据;
根据同步成功的最后一条数据的时间戳,更新所述目标时间戳。
3.根据权利要求1或2所述的方法,其特征在于,所述方法还包括:
响应于未存储所述已完成同步数据条数,查询所述源数据库,以同步排序在首条与所述总条数之间的数据。
4.根据权利要求1或2所述的方法,其特征在于,所述根据统计的已完成同步数据条数与查询的所述总条数,查询所述源数据库,以同步排序在所述已完成同步数据条数与所述总条数之间的数据,包括:
从所述源数据库中查询排序在所述已完成同步数据条数与所述总条数之间的数据;
采用第一线程从源数据库获取查询到的数据,并写入到预设数据队列中,以采用第二线程从所述预设数据队列中读取数据,并写入到目的数据库中。
5.根据权利要求4所述的方法,其特征在于,所述预设数据队列包括阻塞队列。
6.根据权利要求1或2所述的方法,其特征在于,在所述源数据库为预设类型数据库的情形下,通过一条SQL语句查询源数据库中需同步数据的总条数,以及根据统计的已完成同步数据条数与查询的所述总条数,查询所述数据库,以同步排序在所述已完成同步数据条数与所述总条数之间的数据。
7.一种数据同步装置,其特征在于,包括:
第一查询模块,用于查询源数据库中需同步数据的总条数,其中,所述源数据库中的数据按照预设顺序排序;
第二查询模块,用于根据统计的已完成同步数据条数与查询的所述总条数,查询所述源数据库,以同步排序在所述已完成同步数据条数与所述总条数之间的数据;
第一处理模块,用于响应于成功同步至少部分数据,基于成功同步的数据条数,更新所述已完成同步数据条数。
8.根据权利要求7所述的装置,其特征在于,所述源数据库中的数据还具有对应的时间戳,所述时间戳用于指示对应数据存储至所述源数据库中的时刻;所述预设排序是指数据存储在所述源数据库中的时间顺序;
所述第二查询模块,用于:
获取最后一条被同步数据的目标时间戳;
根据统计的已完成同步数据条数与查询的所述总条数,查询所述源数据库,以同步时间戳大于或大于等于所述目标时间戳,且排序在所述已完成同步数据条数与所述总条数之间的数据;
根据同步成功的最后一条数据的时间戳,更新所述目标时间戳。
9.根据权利要求7或8所述的装置,其特征在于,所述装置还包括:
第二处理模块,用于响应于未存储所述已完成同步数据条数,查询所述源数据库,以同步排序在首条与所述总条数之间的数据。
10.根据权利要求7或8所述的装置,其特征在于,所述第二查询模块,用于:
从所述源数据库中查询排序在所述已完成同步数据条数与所述总条数之间的数据;
采用第一线程从源数据库获取查询到的数据,并写入到预设数据队列中,以采用第二线程从所述预设数据队列中读取数据,并写入到目的数据库中。
11.根据权利要求10所述的装置,其特征在于,所述预设数据队列包括阻塞队列。
12.根据权利要求7或8所述的装置,其特征在于,在所述源数据库为预设类型数据库的情形下,查询源数据库中需同步数据的总条数,以及根据统计的已完成同步数据条数与查询的所述总条数,查询所述数据库,以同步排序在所述已完成同步数据条数与所述总条数之间的数据的语句属于同一条SQL语句。
13.一种电子设备,其特征在于,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时,实现如权利要求1-6中任一项所述的方法。
14.一种非临时性计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1-6中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211697096.2A CN116226272A (zh) | 2022-12-28 | 2022-12-28 | 数据同步方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211697096.2A CN116226272A (zh) | 2022-12-28 | 2022-12-28 | 数据同步方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116226272A true CN116226272A (zh) | 2023-06-06 |
Family
ID=86581534
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211697096.2A Pending CN116226272A (zh) | 2022-12-28 | 2022-12-28 | 数据同步方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116226272A (zh) |
-
2022
- 2022-12-28 CN CN202211697096.2A patent/CN116226272A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110674053B (zh) | Ssd数据存储节点管理方法、装置、计算机设备及存储介质 | |
CN108460045B (zh) | 一种快照的处理方法及分布式块存储系统 | |
US7681001B2 (en) | Storage system | |
US20200019559A1 (en) | Synchronizing object in local object storage node | |
CN113111129A (zh) | 数据同步方法、装置、设备及存储介质 | |
US10423580B2 (en) | Storage and compression of an aggregation file | |
CN108763511B (zh) | 页面中图层排版方法、装置、电子设备及存储介质 | |
US11314742B2 (en) | Caching time-sensitive data via sliding window partitions | |
CN111061690B (zh) | 一种基于rac的数据库日志文件读取方法和装置 | |
US9898468B2 (en) | Single pass file system repair with copy on write | |
CN115408391A (zh) | 一种数据库表变更方法、装置、设备和存储介质 | |
CN109117086B (zh) | 存储设备数据位置的处理方法、装置、设备及存储介质 | |
CN106708699B (zh) | 错误信息记录方法及装置 | |
CN108459925B (zh) | 私有云设备及其数据库的修复方法、具有存储功能的装置 | |
CN109542860B (zh) | 基于hdfs的业务数据管理方法、终端设备 | |
CN116226272A (zh) | 数据同步方法及装置 | |
CN113656626B (zh) | 一种图像数据保存方法、装置、计算机设备和存储介质 | |
CN112235599B (zh) | 一种视频处理方法及系统 | |
CN110971978B (zh) | 视频播放方法及装置 | |
CN112783835A (zh) | 索引管理方法、装置及电子设备 | |
CN114969072B (zh) | 基于状态机和数据持久化的数据传输方法、装置和设备 | |
CN113127572B (zh) | 档案合并方法、装置、设备及计算机可读存储介质 | |
CN110196785A (zh) | 数据备份管理方法、装置及电子设备 | |
CN117992257B (zh) | 一种分布式数据库并行数据采集处理方法 | |
CN116842071A (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 |