一种数据同步方法、装置、电子设备及存储介质

文档序号:1952725 发布日期:2021-12-10 浏览:17次 >En<

阅读说明:本技术 一种数据同步方法、装置、电子设备及存储介质 (Data synchronization method and device, electronic equipment and storage medium ) 是由 刘人豪 于 2021-09-15 设计创作,主要内容包括:本申请公开了一种数据同步方法、装置、电子设备及存储介质,该方法包括:接收客户端发送的数据同步请求;从数据同步配置表中查询与身份标识对应的数据表标识信息以及数据位置信息;将上次同步时间与数据表标识信息对应的最后同步时间进行比较,确定待同步数据表的数据获取方式;基于数据获取方式以及数据位置信息,获取待同步数据;对获取到的所有待同步数据进行封装,将封装后的数据同步至客户端。通过采用上述数据同步方法、装置、电子设备及存储介质,解决了在数据同步时,无法为不同客户端提供不同同步数据的问题。(The application discloses a data synchronization method, a data synchronization device, an electronic device and a storage medium, wherein the method comprises the following steps: receiving a data synchronization request sent by a client; inquiring data table identification information and data position information corresponding to the identity from the data synchronization configuration table; comparing the last synchronization time with the last synchronization time corresponding to the data table identification information, and determining a data acquisition mode of the data table to be synchronized; acquiring data to be synchronized based on a data acquisition mode and data position information; and encapsulating all the acquired data to be synchronized, and synchronizing the encapsulated data to the client. By adopting the data synchronization method, the data synchronization device, the electronic equipment and the storage medium, the problem that different synchronous data cannot be provided for different clients during data synchronization is solved.)

一种数据同步方法、装置、电子设备及存储介质

技术领域

本申请涉及数据处理技术领域,尤其是涉及一种数据同步方法、装置、电子设备及存储介质。

背景技术

区块链是一个分布式的共享账本和数据库,具有去中心化、不可篡改、全程留痕、可以追溯、集体维护、公开透明等特点。随着区块链联盟技术的不断发展,多数区块链Baas平台都是基于集中化的应用以及服务资源的模式搭建管理运维平台。

现有技术中,区块链平台上数据同步技术通常是从服务器向客户端的同步,并且每次同步均会将服务器上的全部数据或修改数据同步至全部客户端。但是,在对多个客户端进行同步数据时,并不是每个客户端都需要同步服务器上的全部数据,而只需要保持部分数据的同步。

发明内容

有鉴于此,本申请提供一种数据同步方法、装置、电子设备及存储介质,其目的是通过为不同客户端设定不同的同步条件,以实现细粒度可控的数据同步方式。

第一方面,本申请实施例提供了一种数据同步方法,包括:

接收客户端发送的数据同步请求,数据同步请求包括客户端的身份标识以及上次同步时间;

从数据同步配置表中查询与身份标识对应的数据表标识信息以及数据位置信息,数据同步配置表存储有身份标识、数据表标识信息以及数据位置信息的对应关系;

将上次同步时间与数据表标识信息对应的最后同步时间进行比较,确定数据获取方式;

基于数据获取方式以及数据位置信息,获取待同步数据;

对获取到的所有待同步数据进行封装,将封装后的数据同步至客户端。

可选地,将上次同步时间与数据表标识信息对应的最后同步时间进行比较,确定数据获取方式,可包括:在数据同步记录表中查询是否存在与数据表标识信息对应的最后同步时间,数据同步记录表存储有与数据表标识信息对应的最后同步时间;如果存在与数据表标识信息对应的最后同步时间,则确定数据获取方式为增量获取;如果不存在与数据表标识信息对应的最后同步时间,则确定数据获取方式为全量获取。

可选地,数据同步方法,还可包括:基于上次同步时间,判断是否存在同步数据丢失;如果存在同步数据丢失,则在数据同步历史表中,查询与数据表标识信息对应且数据同步时间处于上次同步时间至最后同步时间之间的历史同步记录,并将查询到的历史同步记录发送至客户端,数据同步历史表用于存储每次同步的历史记录,数据同步丢失记录表用于存储丢失的同步数据对应的历史记录。

可选地,基于上次同步时间,判断是否存在同步数据丢失,可包括:判断上次同步时间是否早于最后同步时间;如果上次同步时间早于最后同步时间,则确定存在同步数据丢失;如果上次同步时间不早于最后同步时间,则确定不存在同步数据丢失。

可选地,基于数据获取方式以及数据位置信息,获取待同步数据,可包括:基于数据获取方式,从存储有待同步数据的数据库中获取与数据位置信息对应且符合同步条件的待同步数据,数据库中存储有与数据表标识信息对应的数据表,数据表中存储有与数据位置信息对应的待同步数据,同步条件存储在数据同步配置表中,用于确定符合条件的待同步数据。

可选地,接收客户端发送的数据同步请求之后,还可包括:将身份标识与预设的身份标识白名单进行匹配,如果匹配成功,则确定客户端的身份标识为有效;如果匹配不成功,则拒绝客户端发送的数据同步请求。

第二方面,本申请实施例提供了一种数据同步装置,包括:

接收模块,用于接收客户端发送的数据同步请求,数据同步请求包括客户端的身份标识以及上次同步时间;

查询模块,用于从数据同步配置表中查询与身份标识对应的数据表标识信息以及数据位置信息,数据同步配置表存储有身份标识、数据表标识信息以及数据位置信息的对应关系;

确定模块,用于将上次同步时间与数据表标识信息对应的最后同步时间进行比较,确定数据获取方式;

获取模块,用于基于数据获取方式以及数据位置信息,获取待同步数据;

同步模块,用于对获取到的所有待同步数据进行封装,将封装后的数据同步至客户端。

可选地,确定模块还可用于:在数据同步记录表中查询是否存在与数据表标识信息对应的最后同步时间,数据同步记录表存储有与数据表标识信息对应的最后同步时间;如果存在与数据表标识信息对应的最后同步时间,则确定数据获取方式为增量获取;如果不存在与数据表标识信息对应的最后同步时间,则确定数据获取方式为全量获取。

第三方面,本申请实施例提供了一种电子设备,包括:处理器、存储器和总线,所述存储器存储有所述处理器可执行的机器可读指令,当电子设备运行时,所述处理器与所述存储器之间通过总线通信,所述机器可读指令被所述处理器执行时执行如上述的数据同步方法的步骤。

第四方面,本申请实施例提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,计算机程序被处理器运行时执行上述的数据同步方法的步骤。

本申请实施例带来了以下有益效果:

本申请实施例提供了一种数据同步方法、装置、电子设备及存储介质,包括:接收客户端发送的数据同步请求,数据同步请求包括客户端的身份标识以及上次同步时间;从数据同步配置表中查询与身份标识对应的数据表标识信息以及数据位置信息,数据同步配置表存储有身份标识、数据表标识信息以及数据位置信息的对应关系;将上次同步时间与数据表标识信息对应的最后同步时间进行比较,确定数据获取方式;基于数据获取方式以及数据位置信息,获取待同步数据;对获取到的所有待同步数据进行封装,将封装后的数据同步至客户端,解决了在数据同步时,无法为不同客户端提供不同同步数据,同步条件以及同步字段不可控的问题。

为使本申请的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。

附图说明

为了更清楚地说明本申请实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,以下附图是本申请的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。

图1为本申请实施例提供的数据同步方法的流程示意图;

图2为本申请实施例提供的数据同步装置的结构示意图;

图3为本申请实施例提供的一种电子设备的结构示意图。

具体实施方式

为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合附图对本申请的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

现有技术中,在数据同步时通常是从服务器向客户端进行同步,并且每次同步均会将服务器上的全部数据或修改的部分数据同步至全部客户端。但是,在对多个客户端进行同步数据时,并不是每个客户端都需要同步服务器上的全部数据,有的客户端只需要保持部分数据的同步。同时,当客户端处于内网环境(涉密网络或者高密级网络环境),服务器处于外网环境时,服务器无法从客户端获取同步数据,也就无法在单向可达的网络环境中进行数据同步,

基于此,本申请实施例提供一种数据同步方法、装置、电子设备及存储介质,通过客户端主动向服务器发送数据同步请求,以及为不同客户端设定不同的同步条件、同步字段,解决了在数据同步时无法为不同客户端提供不同同步数据,同步条件以及同步字段不可控的问题,同时,还解决了在单向可达的网络环境中无法进行数据同步的问题。

为便于对本实施例进行理解,首先对本申请实施例所公开的一种数据同步方法进行详细介绍,图1为本申请实施例提供的数据同步方法的流程示意图,如图1所示,该方法包括如下步骤:

步骤101,接收客户端发送的数据同步请求。数据同步请求包括客户端的身份标识以及上次同步时间。

具体的,首先需要创建多张数据同步表,这些数据同步表在服务器和客户端均可创建,在客户端创建这些数据同步表的目的是:不但能实现客户端向服务器发起由服务器向客户端同步数据的数据同步请求,同时,也能够实现客户端向服务器发起由客户端向服务器同步数据的数据同步请求,相当于客户端实现了服务器的功能,如此,可以实现客户端和客户端之间的间接数据同步。这些数据同步表包括:数据同步配置表、数据同步记录表、数据同步历史表以及数据同步丢失记录表。其中,数据同步配置表中的字段包括但不限于表名、字段名称、主键、同步条件以及身份标识,表名字段用以配置待同步数据所在的待同步数据表的表名;字段名称字段用以配置待同步数据在待同步数据表中所处字段的字段名称;主键字段用以配置在待同步数据表主键字段中与待同步数据所处行对应的主键数据,由字段名称和主键可以确定待同步数据的数据位置信息;身份标识字段用以配置表名字段中的待同步数据表可以被哪些身份标识对应的客户端同步。数据同步记录表中记录了每个客户端同步的每张数据表的最后同步时间所对应的时间戳、同步数量、同步标识,同时还记录了每张数据表在数据同步配置表中对应的内容,例如:同步字段、同步条件以及主键等,同步数量用来记录该数据表被同步了多少条数据,同步标识用来记录该数据表是否同步成功。这里,将记录了每张数据表在数据同步配置表中对应的内容的数据同步表称为全量表。数据同步历史表中记录了每个客户端每次同步的历史记录,该数据同步历史表也是全量表。数据同步丢失记录表中记录了丢失的同步数据所对应的历史记录,该数据同步丢失记录表也是全量表。

基于已创建的数据同步表,服务器可以向发送数据同步请求的客户端进行数据同步。该数据同步请求中的信息包括但不限于:客户端的身份标识、上次同步时间、需要同步的数据类型、设备信息。这里,身份标识是每个客户端对应的唯一标识,例如:APPID。上次同步时间是指该客户端在上一次与服务器进行数据同步时客户端生成的时间戳,在客户端会有一张专门的表用于记录每次数据同步的时间。

在一示例中,接收到客户端发送的数据同步请求之后,将身份标识与预设的身份标识白名单进行匹配,如果匹配成功,则确定客户端的身份标识为有效;如果匹配不成功,则拒绝客户端发送的数据同步请求。可以理解的,在接收到客户端发送的数据同步请求之后,需要对客户端身份的有效性进行校验,以保证该数据同步请求是可以被接受的。

步骤102,从数据同步配置表中查询与身份标识对应的数据表标识信息以及数据位置信息。数据同步配置表存储有身份标识、数据表标识信息以及数据位置信息的对应关系。

具体的,在确定客户端身份有效之后,需要确定将哪些数据同步至该客户端。首先,数据同步配置表中包括了表名字段、字段名称字段、主键字段以及身份标识字段,即,数据同步配置表中存储有身份标识、数据表标识信息以及数据位置信息的对应关系。因此,能够从数据配置表中查询出与该身份标识对应的数据表标识信息以及数据位置信息。

以上述示例为例,数据表标识信息即是待同步数据表的表名,数据位置信息能够由字段名称以及主键字段中配置的内容确定。

步骤103,将上次同步时间与数据表标识信息对应的最后同步时间进行比较,确定数据获取方式。

具体的,在数据同步记录表中查询是否存在与数据表标识信息对应的最后同步时间,数据同步记录表存储有与数据表标识信息对应的最后同步时间;如果存在与数据表标识信息对应的最后同步时间,则确定数据获取方式为增量获取;如果不存在与数据表标识信息对应的最后同步时间,则确定数据获取方式为全量获取。

在一示例中,如果数据表标识信息对应的待同步数据表为多张表,则在数据同步记录表中根据数据表标识信息,依次查询每张待同步数据表是否存在与数据表标识信息对应的最后同步时间,并针对每张待同步数据表,确定与该待同步数据表对应的数据获取方式。如果不存在与该数据表标识信息对应的最后同步时间,说明是第一次同步,则确定数据获取方式为全量获取,如果存在与该数据表标识信息对应的最后同步时间,说明不是第一次同步,则确定数据获取方式为增量获取。

在数据同步的过程中,可能由于网络不稳定、断电或者异常宕机等原因导致同步数据丢失的情况出现,为此,需要判断在上次同步时间至最后同步时间这一时间区间内是否存在同步数据丢失,如果存在同步数据丢失,可将具体发生同步数据丢失的同步记录发送给客户端,以使其能够准确定位同步数据丢失的原因或者重新获取与同步数据丢失时间点对应的待同步数据。上述过程可通过以下步骤实现:基于上次同步时间,判断是否存在同步数据丢失;如果存在同步数据丢失,则在数据同步历史表中,查询与数据表标识信息对应且数据同步时间处于上次同步时间至最后同步时间之间的历史同步记录,并将查询到的历史同步记录发送至客户端。这里,数据同步历史表用于存储每次同步的历史记录,数据同步丢失记录表用于存储丢失的同步数据对应的历史记录。

其中,可通过如下流程判断是否存在同步数据丢失:判断上次同步时间是否早于最后同步时间;如果上次同步时间早于最后同步时间,则确定存在同步数据丢失;如果上次同步时间不早于最后同步时间,则确定不存在同步数据丢失。

以上述示例为例,如果客户端记录的上次同步时间早于服务器数据同步记录表中记录的最后同步时间,说明客户端记录的最后一次同步的时间与服务器记录的该客户端最后一次同步的时间不一致,这是因为上次同步时间与最后同步时间之间的这段时间内的某一次或某几次数据同步没有被客户端正常同步到,存在同步数据丢失的情况。反之,如果客户端记录的上次同步时间不早于服务器数据同步记录表中记录的最后同步时间,说明客户端记录的最后一次同步的时间与服务器记录的该客户端最后一次同步的时间一致,不存在同步数据丢失的情况。这里,由于数据同步历史表中记录了每个客户端每次同步的历史记录,并且该数据同步历史表是全量表,因此,根据数据表标识信息,能够从数据同步历史表中查询到所有与该数据表标识信息对应的历史同步记录,并选取数据同步时间处于上次同步时间至最后同步时间之间的历史同步记录,将所选取的这些历史同步记录发送至客户端,客户端接收到服务器发送的历史同步记录后,将其写入数据同步丢失记录表中,使得客户端能够记录下哪些同步时间点的数据没有被其同步到。

步骤104,基于数据获取方式以及数据位置信息,获取待同步数据。

具体的,根据所确定的数据获取方式以及数据位置信息,能够获取到待同步数据。可通过如下具体步骤获取待同步数据:基于数据获取方式,从存储有待同步数据的数据库中获取与数据位置信息对应且符合同步条件的待同步数据,数据库中存储有与数据表标识信息对应的数据表,数据表中存储有与数据位置信息对应的待同步数据,同步条件存储在所述数据同步配置表中,用于确定符合条件的待同步数据。

以上述示例为例,根据数据表标识信息以及数据位置信息,能够确定待同步数据存储于哪张数据表中,以及待同步数据在该数据表中所对应的具体字段名称和主键,如此可确定未经同步条件筛选的待同步数据,然后,根据数据同步配置表中配置的与数据表标识信息对应的同步条件,确定经同步条件筛选的待同步数据。例如:未经同步条件筛选的待同步数据为用户数据表的电话号码字段中的所有数据,如果同步条件为以130开头的电话号码才能同步给客户端,则基于该同步条件,将用户数据表的电话号码字段中,以130开头的电话号码的数据确定为待同步数据。

这里,可根据数据表标识信息、数据位置信息以及同步条件,构造数据查询的SQL脚本,然后服务器调用并运行该SQL脚本,从数据库中获取与数据获取方式对应的待同步数据。可以理解的,从数据库中获取与数据获取方式对应的待同步数据是指,如果数据获取方式为全量获取,则从数据库中获取与该数据表标识信息以及数据位置信息对应且数据同步时间处于最后同步时间之前的待同步数据。如果数据获取方式为增量获取,则从数据库中获取与该数据表标识信息以及数据位置信息对应且数据同步时间处于上次同步时间至最后同步时间之内的待同步数据。

需要指出的是,如果数据表标识信息对应的是多张待同步数据表,则针对每张待同步数据表,构造数据查询的SQL脚本,然后服务器调用并运行该SQL脚本,从数据库中获取与数据获取方式对应的待同步数据。

步骤105,对获取到的所有待同步数据进行封装,将封装后的数据同步至客户端。

具体的,在获取到待同步数据后,需要对待同步数据进行封装,封装过程包括对待处理数据进行序列化以及非对称加密。这里,序列化是一种数据交换格式,包括但不限于JSON、XML、YAML,本领域技术人员可以根据实际情况选择,本申请对此不做限定。非对称加密通过非对称加密算法实现,非对称加密算法包括但不限于RSA、Elgamal、背包算法、Rabin、D-H、ECC,本领域技术人员可以根据实际情况选择,本申请对此不做限定。最后,将封装后的数据同步至客户端,并对数据同步记录表以及数据同步历史表进行更新。客户端完成数据同步后,同样会对上次同步时间进行更新。

可见,上述数据同步方法通过客户端主动向服务器发送数据同步请求以及数据同步方案配置化的方式,不但能够为不同客户端提供不同同步数据,实现细粒度可控的数据同步,还能够实现在单向可达的网络环境中的数据同步。

图2为本申请实施例提供的数据同步装置的结构示意图,如图2所示,该装置包括以下模块:

接收模块201,用于接收客户端发送的数据同步请求,所述数据同步请求包括所述客户端的身份标识以及上次同步时间。

查询模块202,用于从数据同步配置表中查询与所述身份标识对应的数据表标识信息以及数据位置信息,所述数据同步配置表存储有身份标识、数据表标识信息以及数据位置信息的对应关系。

确定模块203,用于将所述上次同步时间与所述数据表标识信息对应的最后同步时间进行比较,确定数据获取方式。

获取模块204,用于基于所述数据获取方式以及所述数据位置信息,获取待同步数据。

同步模块205,用于对获取到的所有待同步数据进行封装,将封装后的数据同步至所述客户端。

对应于图1中的数据同步方法,本申请实施例还提供了一种电子设备300的结构示意图,如图3所示,所述电子设备300包括处理器310、存储器320和总线330。所述存储器320存储有所述处理器310可执行的机器可读指令,当电子设备300运行时,所述处理器310与所述存储器320之间通过总线330通信,所述机器可读指令被所述处理器310执行时,能够执行上述数据同步方法通过客户端主动向服务器发送数据同步请求以及数据同步方案配置化的方式,不但能够为不同客户端提供不同同步数据,实现细粒度可控的数据同步,还能够实现在单向可达的网络环境中的数据同步。

对应于图1中的数据同步方法,本申请实施例还提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行上述数据同步方法的步骤。

具体地,该存储介质能够为通用的存储介质,如移动磁盘、硬盘等,该存储介质上的计算机程序被运行时,能够执行上述数据同步方法,通过客户端主动向服务器发送数据同步请求以及数据同步方案配置化的方式,不但能够为不同客户端提供不同同步数据,实现细粒度可控的数据同步,还能够实现在单向可达的网络环境中的数据同步。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,前述描述的系统、装置和单元的具体工作过程,可以参考上述方法实施例中的对应过程,在此不再赘述。

在本申请所提供的实施例中,应该理解到,所揭露装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本申请提供的实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。

所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台电子设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。

应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释,此外,术语“第一”、“第二”、“第三”等仅用于区分描述,而不能理解为指示或暗示相对重要性。

最后应说明的是:以上所述实施例,仅为本申请的具体实施方式,用以说明本申请的技术方案,而非对其限制,本申请的保护范围并不局限于此,尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本申请实施例技术方案的精神和范围,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应所述以权利要求的保护范围为准。

13页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:一种分布式学习索引模型的构建方法及应用

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!