CN117349376A - 数据同步方法、相关装置及介质 - Google Patents
数据同步方法、相关装置及介质 Download PDFInfo
- Publication number
- CN117349376A CN117349376A CN202311289858.XA CN202311289858A CN117349376A CN 117349376 A CN117349376 A CN 117349376A CN 202311289858 A CN202311289858 A CN 202311289858A CN 117349376 A CN117349376 A CN 117349376A
- Authority
- CN
- China
- Prior art keywords
- collection table
- result data
- data
- collection
- identifier
- 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 152
- XLYOFNOQVPJJNP-UHFFFAOYSA-N water Substances O XLYOFNOQVPJJNP-UHFFFAOYSA-N 0.000 claims abstract description 127
- 230000008569 process Effects 0.000 claims description 58
- 230000001360 synchronised effect Effects 0.000 claims description 21
- 238000004590 computer program Methods 0.000 claims description 14
- 238000010586 diagram Methods 0.000 description 15
- 238000012545 processing Methods 0.000 description 12
- 239000003999 initiator Substances 0.000 description 6
- 230000005540 biological transmission Effects 0.000 description 4
- 238000004891 communication Methods 0.000 description 4
- 238000013480 data collection Methods 0.000 description 4
- 238000012217 deletion Methods 0.000 description 4
- 230000037430 deletion Effects 0.000 description 4
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 239000000945 filler Substances 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 230000002159 abnormal effect Effects 0.000 description 1
- 238000012790 confirmation Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000009545 invasion Effects 0.000 description 1
- 230000007257 malfunction Effects 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
- 230000002085 persistent effect Effects 0.000 description 1
- 238000012552 review Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
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/22—Indexing; Data structures therefor; Storage structures
- G06F16/2282—Tablespace storage structures; Management thereof
-
- 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
- G06F16/2379—Updates performed during online database operations; commit processing
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本公开提供了一种数据同步方法、相关装置及介质。该数据同步方法包括:从所述收集表端,获取对所述收集表进行更新得到的收集表更新结果数据,所述收集表更新结果数据包含收集表标识;将所述收集表更新结果数据,按照所述收集表标识分类存储在结果数据流水表中;通过写表格组件,从所述结果数据流水表中按照所述收集表标识读取所述收集表标识下的所述收集表更新结果数据;将所述收集表标识下的所述收集表更新结果数据,写入所述在线表格端的与所述收集表标识对应的在线表格。本公开实施例能提高收集表和在线表格之间的数据同步效率。本公开实施例可应用于电子调查问卷等场景。
Description
技术领域
本公开涉及数据处理领域,特别是涉及一种数据同步方法、相关装置及介质。
背景技术
在调查问卷或资料收集等场景中,需要通过在线表格对多个收集表的数据进行收集、汇总,因此需要收集表端的数据向在线表格端进行同步。不同用户提交的收集表之间关联性很低,使得收集表的写性能较高。而在线表格每次写入需要对单文档加分布式锁,其支持的写性能不高。因此,收集表与在线表格之间进行数据同步时,在收集表和在线表格之间可能造成大量拥塞,同步效率低,延时长,一致性无法保证。
目前的数据同步方法通过异步队列实现对吞吐量不同的系统的解耦。在数据同步的过程中,在收集表端和在线表格端之间设置多个队列,多个队列竞争分布式锁来向在线表格进行写入。在同一个收集表标识的数据放置在多个队列中的情况下,多个队列中的同一收集表标识的数据要写到同一张在线表格,因此要竞争分布式锁,导致同步效率低。如果同一个收集表标识的数据放置在同一队列中,会造成该队列拥塞,堵塞该队列中后面其它收集表的数据,也会降低同步效率。
发明内容
本公开实施例提供了一种数据同步方法、相关装置及介质,能够提高收集表和在线表格之间的数据同步效率。
根据本公开的一方面,提供了一种数据同步方法,用于收集表端与在线表格端的数据同步,所述数据同步方法包括:
从所述收集表端,获取对收集表进行更新得到的收集表更新结果数据,所述收集表更新结果数据包含收集表标识;
将所述收集表更新结果数据,按照所述收集表标识分类存储在结果数据流水表中;
通过写表格组件,从所述结果数据流水表中按照所述收集表标识读取所述收集表标识下的所述收集表更新结果数据;
将所述收集表标识下的所述收集表更新结果数据,写入所述在线表格端的与所述收集表标识对应的在线表格。
根据本公开的一方面,提供了一种数据同步装置,包括:
第一获取单元,用于从收集表端,获取对收集表进行更新得到的收集表更新结果数据,所述收集表更新结果数据包含收集表标识;
第一分类单元,用于将所述收集表更新结果数据,按照所述收集表标识分类存储在结果数据流水表中;
第一读取单元,用于通过写表格组件,从所述结果数据流水表中按照所述收集表标识读取所述收集表标识下的所述收集表更新结果数据;
第一写入单元,用于将所述收集表标识下的所述收集表更新结果数据,写入所述在线表格端的与所述收集表标识对应的在线表格。
可选地,所述第一分类单元具体用于:
将所述收集表更新结果数据分配到并行的多个队列中,其中,所述收集表标识相同的所述收集表更新结果数据分配到同一个所述队列;
从多个所述队列中确定目标队列;
从所述目标队列中,取出同一所述收集表标识的所述收集表更新结果数据,按照所述收集表标识分类存储在结果数据流水表中。
可选地,所述第一分类单元具体用于:
确定所述收集表更新结果数据中的所述收集表标识的一致性哈希值;
基于所述一致性哈希值,在多个所述队列中确定分配队列;
将所述收集表更新结果数据分配到所述分配队列中。
可选地,所述第一分类单元具体用于:
如果分布式锁未被占用,将所述分布式锁分配到一个所述队列,其中,所述分布式锁在同一时间只能分配到一个所述队列;
将分配到所述分布式锁的所述队列确定为所述目标队列;
所述数据同步装置还包括:
释放单元,用于释放所述分布式锁。
可选地,所述第一分类单元具体用于:
针对每个所述队列,确定所述队列中的所述收集表更新结果数据中最多的所述收集表标识,作为所述队列的锚收集表标识;
确定所述队列中带有所述锚收集表标识的所述收集表更新结果数据数目,作为一次性最多取出数目;
将所述分布式锁分配到所述一次性最多取出数目最大的所述队列。
可选地,所述第一分类单元具体用于:
获取批容量;
在所述目标队列中按照从前到后的顺序取出所述批容量个收集表更新结果数据,放入批容器;
如果取出所述批容量个收集表更新结果数据后,所述目标队列中第一个收集表更新结果数据的所述收集表标识、与所述批容量个收集表更新结果数据的最后的第一数目个收集表更新结果数据的所述收集表标识相同,将所述最后的第一数目个收集表更新结果数据放回所述目标队列的头部;
将所述批容器中的所述收集表更新结果数据,按照所述收集表标识分类存储在结果数据流水表中。
可选地,所述数据同步装置还包括:
第一标记单元,用于如果写入成功,为所述结果数据流水表中写入所述在线表格的所述收集表更新结果数据标记第一标志;
所述第一读取单元具体用于:
通过写表格组件,从所述结果数据流水表中,按照所述收集表标识读取所述收集表标识下的、未加所述第一标志的所述收集表更新结果数据。
可选地,所述从所述收集表端获取的一部分收集表更新结果数据具有第三标志,所述第三标志表示禁止同步到所述在线表格;
所述第一读取单元具体用于:
所述通过写表格组件,从所述结果数据流水表中,按照所述收集表标识读取所述收集表标识下的、未加所述第一标志的所述收集表更新结果数据,包括:通过写表格组件,从所述结果数据流水表中,按照所述收集表标识读取所述收集表标识下的、未加所述第一标志和所述第三标志的所述收集表更新结果数据。
可选地,所述第一读取单元具体用于:
通过写表格组件,建立并行的第二数目个第一进程;
从所述结果数据流水表中,获取所述第二数目个第一目标收集表标识;
为每个所述第一目标收集表标识分配一个所述第一进程,利用分配的所述第一进程读取所述第一目标收集表标识下的、未加所述第一标志的收集表更新结果数据;
所述第一写入单元具体用于:
利用分配的所述第一进程,将所述收集表标识下的所述收集表更新结果数据,写入所述在线表格。
可选地,所述第一读取单元具体用于:
从所述结果数据流水表中,确定各个所述收集表标识下的、未加所述第一标志的第一收集表更新结果数据数目;
将所述第一收集表更新结果数据数目从高到低排序的前第二数目个所述收集表标识,确定为所述第一目标收集表标识。
可选地,所述数据同步装置还包括:
第二标记单元,用于如果写入失败,为所述结果数据流水表中写入所述在线表格失败的所述收集表更新结果数据标记第二标志;
第二写入单元,用于每隔第一时长,针对所述结果数据流水表中标记有所述第二标志的所述收集表更新结果数据,重试向所述在线表格的写入。
可选地,所述数据同步装置还包括:
第二获取单元,用于获取所述收集表更新结果数据的重试次数阈值;
删除单元,如果所述重试的次数达到所述重试次数阈值,在所述结果数据流水表中删除所述收集表更新结果数据。
可选地,所述第二写入单元具体用于:
获取所述结果数据流水表中标记有所述第二标志的第二收集表更新结果数据数目;
获取同步实时性指标;
基于所述第二收集表更新结果数据数目、和所述同步实时性指标,确定所述第一时长。
可选地,所述第二写入单元具体用于:
每隔第一时长,确定所述结果数据流水表中各个所述收集表标识下的标记有所述第二标志的第三收集表更新结果数据数目;
将所述第三收集表更新结果数据数目最大的所述收集表标识,确定为所述第二目标收集表标识;
针对所述第二目标收集表标识下的、标记有所述第二标志的所述收集表更新结果数据,重试向所述在线表格的写入。
可选地,所述数据同步装置还包括:
第三获取单元,用于从所述收集表端,获取所述收集表的初始数据,所述初始数据包括所述收集表标识、和多个目标数据项;
第三写入单元,用于为所述目标数据项生成数据项标识,将所述数据项标识存储到数据项标识表中,并将所述目标数据项写入与所述收集表标识对应的所述在线表格。
可选地,所述数据同步装置还包括:
第四获取单元,用于获取所述收集表端的权限数据;
第一鉴权单元,用于基于所述权限数据,对所述收集表端进行第一鉴权。
可选地,所述第三写入单元具体用于:
获取并行的多个第二进程;
针对每个所述目标数据项,利用一个所述第二进程生成所述数据项标识,将所述数据项标识存储到所述数据项标识表中,并将所述目标数据项写入与所述收集表标识对应的所述在线表格。
可选地,所述数据同步装置还包括:
第四写入单元,用于向所述收集表端返回已写入所述在线表格的所述目标数据项的第一标识;
接收单元,用于从所述收集表端,接收带有所述第一标识的写入结果查询请求;
查找返回单元,用于如果在所述数据项标识表中查找到所述第一标识,向所述收集表端返回写入成功的写入结果。
可选地,所述数据同步装置还包括:
第五获取单元,用于获取所述收集表端的权限数据;
第二鉴权单元,用于基于所述权限数据,对所述收集表端进行第二鉴权。
可选地,所述第一获取单元具体用于:
在连续的第一周期和第二周期,获取所述收集表端的收集表;
将在所述第二周期获取的所述收集表与在所述第一周期获取的所述收集表进行比对,得到所述收集表更新结果数据。
根据本公开的一方面,提供了一种电子设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现如上所述的数据同步方法。
根据本公开的一方面,提供了一种计算机可读存储介质,所述存储介质存储有计算机程序,所述计算机程序被处理器执行时实现如上所述的数据同步方法。
根据本公开的一方面,提供了一种计算机程序产品,该计算机程序产品包括计算机程序,所述计算机程序被计算机设备的处理器读取并执行,使得该计算机设备执行如上所述的数据同步方法。
针对现有技术收集表和在线表格的同步效率低的问题,本公开实施例设置有结果数据流水表。本公开实施例从收集表端,获取对收集表进行更新得到的收集表更新结果数据后,将收集表更新结果数据,按照收集表标识分类存储在结果数据流水表中,然后通过写表格组件,从结果数据流水表中按照收集表标识读取收集表标识下的收集表更新结果数据,写入收集表标识对应的在线表格中。由于同一收集表标识的收集表,对应的是同一个在线表格。因此,在结果数据流水表中同一收集表标识下可以积攒很多收集表更新结果数据,由写表格组件一次性获取,写入同一在线表格中。由于是同一在线表格的写入,因此不用在每个数据的写入之间加分布式锁,大大提高了同步效率。相对于在队列中排队的方式,由于结果数据流水表中同一收集表标识下面存储的数据远远多于队列中的数据,一次性取出并写入的方式大大提高了同步效率。
本公开的其他特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本公开而了解。本公开的目的和其他优点可通过在说明书、权利要求书以及附图中所特别指出的结构来实现和获得。
附图说明
附图用来提供对本公开技术方案的进一步理解,并且构成说明书的一部分,与本公开的实施例一起用于解释本公开的技术方案,并不构成对本公开技术方案的限制。
图1是相关技术中的数据同步方法应用的系统的的结构示意图。
图2是根据本公开的实施例的数据同步方法应用的系统的体系架构图;
图3A至图3D是根据本公开的实施例的数据同步方法应用于问卷调查的场景的界面示意图;
图4是根据本公开的一个实施例的数据同步方法的总体流程图;
图5是图4中的数据同步方法的一个具体实现过程示意图;
图6是图4中步骤410的一个具体流程图;
图7是图4中步骤420的一个具体流程图;
图8是图7中步骤710的一个具体流程图;
图9是图7中步骤720的一个具体流程图;
图10是图9中步骤910的一个具体流程图;
图11是图7中步骤730的一个具体流程图;
图12是根据本公开的一个实施例的数据同步方法的另一流程图;
图13是图12中步骤1220和步骤440的一个具体流程图;
图14是图13中步骤1320的一个具体流程图;
图15是根据本公开的一个实施例的数据同步方法的另一流程图;
图16是图13中第一时长确认的一个具体流程图;
图17是图15中步骤1520的一个具体流程图;
图18是根据本公开的一个实施例的数据同步方法的另一流程图;
图19是图18中的数据同步方法的一个具体实现过程示意图;
图20是根据本公开的一个实施例的第一鉴权的一个具体流程图;
图21是图18中步骤1820的一个具体流程图;
图22是根据本公开的一个实施例的写入结果查询的一个具体流程图;
图23是根据本公开的一个实施例的第二鉴权的一个具体流程图;
图24是本公开实施例的数据同步方法的整体实施细节图;
图25是根据本公开的一个实施例的数据同步装置的框图;
图26示出了根据本公开的一个实施例实施图2所示的数据同步方法的终端结构图;
图27示出了根据本公开的一个实施例实施图2所示的数据同步方法的服务器结构图。
具体实施方式
为了使本公开的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本公开进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本公开,并不用于限定本公开。
对本公开实施例进行进一步详细说明之前,对本公开实施例中涉及的名词和术语进行说明,本公开实施例中涉及的名词和术语适用于如下的解释:
收集表:是由一道或多道问题组成的表单。收集表通常为收集者制作的表单,填写者可根据问题填写表单内容并提交,收集者可查阅所有填写者的提交结果。
在线表格:与收集表相对应,一个在线表格对应多张收集表,在线表格记录了所有填写者针对收集表的提交结果,收集者通过在线表格查阅所有填写者的提交结果。
数据同步:数据从发起方经过一定处理后向目标数据源进行传输,动态地实现目标数据源中的数据与同步发起方一致,其中,发起方为收集表,目标数据源为在线表格,即实现在线表格中的数据与收集表一致。
全量同步:指同步发起方初次发起同步时,将同步发起方当前所有数据向目标数据源传输并写入的过程。
增量同步:指同步发起方新增一条数据行后,目标数据源实时或有延迟地新增一条对应数据的过程。
在调查问卷或资料收集等场景中,需要通过在线表格对多个收集表的数据进行收集、汇总,因此需要收集表端的数据向在线表格端进行同步。不同用户提交的收集表之间关联性很低,使得收集表的写性能较高。而在线表格每次写入需要对单文档加分布式锁,其支持的写性能不高。因此,收集表与在线表格之间进行数据同步时,在收集表和在线表格之间可能造成大量拥塞,同步效率低,延时长,一致性无法保证。
参照图1,相关技术的数据同步方法通过异步队列实现对吞吐量不同的系统的解耦。在数据同步的过程中,在收集表端和在线表格端之间设置多个队列,多个队列竞争分布式锁来向在线表格进行写入。在同一个收集表标识的数据放置在多个队列中的情况下,多个队列中的同一收集表标识的数据要写到同一张在线表格,因此要竞争分布式锁,导致同步效率低。如果同一个收集表标识的数据放置在同一队列中,会造成该队列拥塞,堵塞该队列中后面其它收集表的数据,也会降低同步效率。
另外,相关技术的数据同步方法只是在线写表格,无法保证数据的一致性。当在线表格的系统发生故障时,会大会在线表格数据异常,那么异步队列中的部分收集表数据在数据统统不时总是处理失败,为了不积压队列,不影响其他其他在线文档的同步,该在线文档系统通常是尝试若干次以后还失败就将失败数据丢弃。即使一段时间后,下游系统恢复,丢弃的数据也无法找回,数据的可靠性较低,数据同步的容灾性较低。
基于此,本公开实施例提供一种数据同步方法、相关装置及介质,该数据同步方法能够提高收集表和在线表格之间的数据同步效率。
本公开实施例应用的系统体系构架及场景说明
图2是根据本公开的实施例的数据同步方法所应用的系统架构图。它包括数据同步服务器210、互联网220、终端230等。
数据同步服务器210包括在线表格节点和收集表节点,其中,在线表格节点是用于根据收集表更新结果数据更新与收集表对应的在线表格的设备,收集表节点是存储有收集表数据的设备,在线表格节点与收集表节点之间通信连接。相对于终端230来说,数据同步服务器210在稳定性、安全性、性能等方面都要求很高。服务器210可以是网络平台中的一台高性能计算机、多台高性能计算机的集群、一台高性能计算机中划出的一部分(例如虚拟机)、多台高性能计算机中划出的一部分(例如虚拟机)的组合等。数据同步服务器210也可以以有线或无线的方式与互联网220进行通信,交换数据。
终端230是用来显示在线表格或收集表的设备。终端230可分为在线表格端和收集表端,在线表格端是用来显示在线表格的设备,收集表端是用来显示收集表的设备。它包括触摸屏终端、桌面电脑、膝上型电脑、PDA(个人数字助理)、手机、车载终端、家庭影院终端、专用终端等多种形式。另外,它可以是单台设备,也可以是多台设备组成的集合。例如,多台设备通过局域网连接,公用一台显示设备进行协同工作,共同构成一个终端。终端230也可以以有线或无线的方式与互联网220进行通信,交换数据,其中,在线表格端通过互联网220与在线表格节点进行通信,而收集表端通过互联网220与收集表节点进行通信。
本公开实施例可以应用在任何使用数据同步服务的场景,例如图3A至图3D所示的问卷调查的场景。
如图3A所示,收集表通过问卷表单的形式显示,该收集表设置有多个问题,如问题A、问题B、问题C等,用户A可根据自身情况填写收集表,当收集表填写完毕后,用户A可点击“提交”按钮,以将收集表的数据同步到在线表格中。
如图3B所示,该在线表格与收集表的标识相同,都为标识A,因此,该在线表格与图3A中的在线表格相对应。在线表格与收集表的数据同步,根据在线表格能够获取不同用户对于收集表的各个问题的答案。图3B的收集表的“用户A”对应的行内容与图3A的收集表相对应,即用户A提交收集表后,在线表格同步写入用户A的收集表数据。
另外,在线表格中的多个用户提交的内容根据提交时间进行排列。
在收集表提交后,用户A可能需要修改、删除收集表的数据。参照图3C,用户A可以点击“删除”按钮,对之前提交的收集表数据进行删除。
当用户A执行删除操作后,在线表格需要进行同步。如图3D所示,在线表格的新增行中显示了用户A对收集表数据的删除记录,若之后,用户A再次提交收集表后,在线表格同步用户A二次提交的收集表数据。如图3A至图3D所示,收集表与在线表格之间能够进行全量同步以及增量通。
应理解,以上内容仅示出了对本公开部分应用场景的说明,本公开能够应用的业务场景,可以包括,但不限于上述举出的具体实施例。
本公开实施例的总体说明
需要强调,本公开实施例能够适用于多种应用场景,例如问卷调查、资料收集等场景。相关技术的数据同步方法存在收集表和在线表格之间的同步效率低的问题,根据本公开的一些实施例,提供了一种数据同步方法、相关装置及介质,能够提高收集表和在线表格之间的同步效率。
数据同步方法是将收集表端的数据写入在线表格端,以实现收集表与在线表格的数据同步的方法,该同步方法能够提高收集表和在线表格之间的同步效率,从而缩短收集表数据写入在线表格的时间,进而提高收集表和在线表格之间的同步实时性。
本公开实施例的数据同步方法获取对终端230的收集表更新得到的收集表更新结果数据,在数据同步服务器210对数据进行处理,以将收集表更新结果数据写入另一终端230的在线表格中,实现收集表与在线表格的数据同步。
如图4所示,根据本公开一个实施例的数据同步方法用于收集表端与在线表格端的数据同步,数据同步方法包括:
步骤410、从收集表端,获取对收集表进行更新得到的收集表更新结果数据,收集表更新结果数据包含收集表标识;
步骤420、将收集表更新结果数据,按照收集表标识分类存储在结果数据流水表中;
步骤430、通过写表格组件,从结果数据流水表中按照收集表标识读取收集表标识下的收集表更新结果数据;
步骤440、将收集表标识下的收集表更新结果数据,写入在线表格端的与收集表标识对应的在线表格。
下面对步骤410至步骤440进行简要描述。
在步骤410中,从收集表端,获取对收集表进行更新得到的收集表更新结果数据,收集表更新结果数据包含收集表标识。在收集表端对收集表进行更新操作,得到更新后的收集表,根据更新后的数据表,能够确定收集表更新结果数据。
收集表端为收集表所处的终端,收集表端与收集表对应设置,因此收集表端至少设置为一个。
对收集表进行的更新操作包括编辑、删除、添加等,对应的,收集表更新结果数据包括收集表编辑结果数据、收集表删除结果数据、收集表添加结果数据等。因此,收集表更新结果数据除了收集表标识外,还包括收集表更新后的数据内容。
收集表标识与在线表格相对应,具有相同在线收集表标识的收集表更新结果数据对应同一个在线表格。
在步骤420中,将收集表更新结果数据,按照收集表标识分类存储在结果数据流水表中。根据收集表标识,将收集表更新结果数据分类存储在结果数据流水表中,使得具有相同收集表标识的收集表更新结果数据相邻存储,便于对结果数据流水表中的数据进行读取。
在结果数据流水表中,收集表更新结果数据基于收集表标识进行排列,使得同一在线表格对应的收集表更新结果数据,即具有相同收集表标识的收集表更新结果数据位于同一行或同一列。当具有相同收集表标识的收集表更新结果数据较多时,其可以设置在结果数据流水表中的多行或多列。当具有相同收集表标识的收集表更新结果数据较少时,结果数据流水表的同一行或同一列可以设置多个不同收集表标识对应的收集表更新结果数据,结果数据流水表中收集表更新结果数据的存储位置只需满足便于读取的原则即可。
在步骤430中,通过写表格组件,从结果数据流水表中按照收集表标识读取收集表标识下的收集表更新结果数据。写表格组件与在线表格、结果数据流水表对应设置,写表格组件能够读取结果数据流水表中的收集表更新结果数据,并将收集表更新结果数据写入在线表格。
收集表更新结果数据在结果数据流水表中按照收集表标识进行分类存储,因此,通过写表格组件,能够从结果数据流水表中快速读取具有相同收集表标识的收集表更新结果数据。
通过写表格组件读取结果数据流水表中的收集表更新结果数据时,可以根据在线表格的收集表标识读取对应的收集表更新结果,但该方法是根据在线表格的需求实现的,同步效率较低。因此,本公开实施例通常优先读取结果数据流水表中各个收集表标识对应的收集表更新结果数据的数据特征,根据该数据特征确定写入在线表格的收集表标识,根据收集表标读取收集表更新结果数据,进而节省反复读取收集表更新结果数据所花费的时间。
另外,写入在线表格的依据,即收集表更新结果数据的数据特征可根据需要进行设置,数据特征可以设置为收集表标识对应的收集表更新结果数据的数量、收集表更新结果数据的提交时间等。例如,当数据特征为收集表标识对应的收集表更新结果数据的数量时,可以将数量最多的若干个收集表标识下的收集表更新结果数据写入对应的在线表格。而当数据特征为收集表更新结果数据的提交时间时,若收集表标识下的一个或多个收集表更新结果数据的提交时间与当前时间的差值大于或等于同步时间阈值,将该收集表标识下的收集表更新结果数据写入对应的在线表格,能够减少因收集表更新结果数据太少而造成的同步效果较差的问题。
在步骤440中,将收集表标识下的收集表更新结果数据,写入在线表格端的与收集表标识对应的在线表格。收集表与对应的在线表格具有相同的收集表标识。根据收集表标识,能够确定该收集表标识对应的在线表格,并将该收集表标识下的收集表更新结果数据写入在线表格,以实现在线表格与收集表的同步。
收集表更新结果数据在对应在线表格中的写入通常由写表格组件实现,写表格组件根据收集表标识确定其对应的在线表格,并将收集表标识下的收集表更新结果数据写入在线表格。
在线表格端为在线表格所处的终端,在线表格端通常不同于收集表端,但当在线表格的制作者也需要填写收集表时,其中一个收集表端也可以视为在线表格端。
参照图3C,用户A在收集表端对已填写的收集表数据进行删除,根据该操作,能够确定收集表更新结果数据,根据步骤410至步骤440的数据同步方法对收集表更新结果数据进行处理,以将收集表更新结果数据写入对应的在线表格,同步后的在线表格如图3D所示,图3D中的在线表格包括用户A对收集表数据的删除记录,实现了收集表端与在线表格端的数据同步。
参照图5,根据填写者在收集表端提交新的收集表或者修改删除已有的收集表,生成收集表更新结果数据。根据收集表标识,将收集表更新结果数据分类存储在结果数据流水表中。之后,通过写表格组件从结果数据流水表按照收集表标识读取收集表更新结果数据,并将收集表更新结果数据写入与收集表标识对应的在线表格中,实现在线表格与收集表的同步。数据
上述步骤410至步骤440的实施例从收集表端,获取对收集表进行更新得到的收集表更新结果数据后,将收集表更新结果数据,按照收集表标识分类存储在结果数据流水表中,然后通过写表格组件,从结果数据流水表中按照收集表标识读取收集表标识下的收集表更新结果数据,写入收集表标识对应的在线表格中。由于同一收集表标识的收集表,对应的是同一个在线表格。因此,在结果数据流水表中同一收集表标识下可以积攒很多收集表更新结果数据,由写表格组件一次性获取,写入同一在线表格中。由于是同一在线表格的写入,因此不用在每个数据的写入之间加分布式锁,大大提高了同步效率。相对于在队列中排队的方式,由于结果数据流水表中同一收集表标识下面存储的数据远远多于队列中的数据,一次性取出并写入的方式大大提高了同步效率。
以上是对步骤410至步骤440进行的总体描述,下面将针对步骤410至步骤440的具体实现过程展开详细描述。
步骤410的详细描述
在步骤410中,从收集表端,获取对收集表进行更新得到的收集表更新结果数据,收集表更新结果数据包含收集表标识。
参照图6,在一实施例中,步骤410包括:
步骤610、在连续的第一周期和第二周期,获取收集表端的收集表;
步骤620、将在第二周期获取的收集表与在第一周期获取的收集表进行比对,得到收集表更新结果数据。
下面对步骤610和步骤620进行详细描述。
在步骤610中,在连续的第一周期和第二周期,获取收集表端的收集表。第一周期与第二周期为连续的两个时间周期,且第二周期在时间顺序上位于第一周期之后。第一周期和第二周期的具体长短可根据收集表与在线表格的同步实时性要求进行设置,当同步实时性要求越高,第一周期与第二周期越短。
第二周期的长度可以与第一周期相等,也可以不等,但为了收集表获取的便利性,第二周期与第一周期的长度通常相等。另外,收集表端的收集表可以在获取周期内的任一时间。
在步骤620中,将在第二周期获取的收集表与在第一周期获取的收集表进行比对,得到收集表更新结果数据。将第二周期与第一周期获取的收集表进行比对,能够确定已有的收集表数据是否进行删改、编辑,且能够确定是否有新增的收集表,得到比对结果,进而基于比对结果,确定收集表更新结果数据。
收集表端和在线表格端对应不同的服务器节点,填写者在收集表端填写数据后,收集表上传至收集表节点,而在线表格节点能够将收集表更新数据传输至在线表格节点,以对在线表格进行更新。在收集表端将收集表上传至收集表节点后,可以由收集表节点将第二周期的收集表和第一周期的收集表进行比对,确定收集表更新结果数据,并将收集表更新结果数据发送至在线表格节点。另外,在收集表端将收集表上传至收集表节点后,也可以由在线表格节点获取来自于收集表节点的第一周期和第二周期的收集表,并进行比对,从而确定收集表更新结果数据,减少了对收集表节点侧的业务的侵入。
上述步骤610至步骤620在连续的第一周期和第二周期,获取收集表端的收集表,并将在第二周期获取的收集表与在第一周期获取的收集表进行比对,得到收集表更新结果数据,实现了对收集表更新结果数据的及时获取,从而保证了在线表格与收集表的数据同步性。
步骤420的详细描述
在步骤420中,将收集表更新结果数据,按照收集表标识分类存储在结果数据流水表中。
参照图7,在一实施例中,步骤420包括:
步骤710、将收集表更新结果数据分配到并行的多个队列中,其中,收集表标识相同的收集表更新结果数据分配到同一个队列;
步骤720、从多个队列中确定目标队列;
步骤730、从目标队列中,取出同一收集表标识的收集表更新结果数据,按照收集表标识分类存储在结果数据流水表中。
下面对步骤710至步骤730进行详细描述。
在步骤710中,将收集表更新结果数据分配到并行的多个队列中,其中,收集表标识相同的收集表更新结果数据分配到同一个队列。收集表更新结果数据可以通过异步队列存储至结果数据流水表中,首先将收集表更新结果数据分配到并行的多个队列中,并行的多个队列即为异步队列。收集表标识相同的收集表结果数据分配到同一个队列,便于将异步队列中的收集表更新结果数据写入结果数据流水表。
队列与收集表标识对应设置,同一收集表标识下的收集表更新结果数据存储在同一队列中,队列的数目大于或等于收集表标识的数目。
另外,若某一收集表标识对应的在线表格停止收集数据,即在线表格与收集表停止数据同步,但已提交的收集表更新结果数据还位于队列时,该队列会分配给其他收集表标识,使得该队列存储有两个或多个收集表标识对应的数据。
在步骤720中,从多个队列中确定目标队列。收集表更新结果数据在并行的多个队列中进行暂存,之后,需要将队列中的收集表更新结果数据转存至结果数据流水表中,因此,首先需要在多个队列中确定目标队列。目标队列的选取可根据多个队列中各收集表标识对应的收集表更新数据来决定。
在步骤730中,从目标队列中,取出同一收集表标识的收集表更新结果数据,按照收集表标识分类存储在结果数据流水表中。将收集表更新结果数据从目标队列中转存至结果数据流水表中,取出的收集表更新结果数据的收集表标识需要相同,从而使得具有同一收集表标识下的收集表更新结果数据存储在结果数据流水表中的同一区域。
目标队列中的收集表更新结果数据可能对应同一收集表标识,也可能对应多个同一收集表标识。具体地,当目标队列中的收集表更新结果数据对应的收集表标识相同时,可以将目标队列中的所有数据取出。而当目标队列中的收集表更新结果数据对应有多个收集表标识时,可以取出其中一个收集表标识下的数据,该收集表标识通常根据收集表更新结果数据的数量确定。
参照图5,本公开实施例将收集表更新结果数据分配至并行的多个队列中,之后,消费者服务实时通知写表格组件从目标队列中取出同一收集表标识的收集表更新结果数据,按照收集表标识分类存储在结果数据流水表中。
上述步骤710至步骤730的实施例设置有异步队列,即并行的多个队列。本公开实施例基于收集表标识,将收集表更新结果数据分配到并行的多个队列中,以使收集表标识相同的收集表更新结果数据分配到同一个队列,之后,从多个队列中确定目标队列,并从目标队列中取出同一收集表标识的收集表更新结果数据,按照收集表标识分类存储在结果数据流水表中。本公开实施例通过异步队列将收集表更新结果数据存储在结果数据流水表中,从而提高了收集表更新结果数据存储至结果数据流水表的存储效率,进而提高了同步效率。
以上是对步骤710至步骤730进行的总体描述,下面将针对步骤410至步骤440的具体实现过程展开详细描述。
在步骤710中,将收集表更新结果数据分配到并行的多个队列中,其中,收集表标识相同的收集表更新结果数据分配到同一个队列。
参照图8,在一实施例中,步骤710包括:
步骤810、确定收集表更新结果数据中的收集表标识的一致性哈希值;
步骤820、基于一致性哈希值,在多个队列中确定分配队列;
步骤830、将收集表更新结果数据分配到分配队列中。
下面对步骤810至步骤830进行详细描述。
在步骤810中,确定收集表更新结果数据中的收集表标识的一致性哈希值。根据收集表更新结果数据的收集表标识,确定一致性哈希值。同一收集表标识下的收集表更新结果数据的一致性哈希值也相同。
在步骤820中,基于一致性哈希值,在多个队列中确定分配队列。根据收集表更新结果数据对应的一致性哈希值,在多个队列中确定分配队列,以使收集表标识相同的收集表更新结果数据分配到同一个队列。
根据哈希函数输出值的取值范围能够确定并行的多个队列对应的哈希环。之后,对多个异步队列进行哈希计算,确定各个队列在哈西环上的位置,并对收集表标识的一致性哈希值进行哈希计算能够确定各个收集表标识在哈希环上的位置,基于收集表标识在哈希环上的位置,顺时针寻找最近的队列,从而确定收集表标识对应的分配队列。
另外,一致性哈希值与分配队列之间的关系可以预先设置,由此,基于一致性哈希值,能够直接在多个队列中确定收集表标识对应的分配队列。
在步骤830中,将收集表更新结果数据分配到分配队列中。分配队列确定完成后,将收集表更新结果数据分配到分配队列中。队列具有先进先出的原则,因此多个收集表更新结果数据在分配队列按照时间顺序进行排列。
上述步骤810至步骤830的实施例确定收集表更新结果数据中的收集表标识的一致性哈希值,之后,基于一致性哈希值,在多个队列中确定分配队列,以将收集表更新结果数据分配到分配队列中。本公开实施例设置有一致性哈希值,使得收集表标识与队列一一对应,以使同一在线表格对应的收集表更新结果数据能够分配至同一队列中,减少了同一队列的数据写入结果数据流水时对分布式锁的竞争,进而提高了写表格效率。
在步骤720中,从多个队列中确定目标队列。
参照图9,在一实施例中,步骤720包括:
步骤910、如果分布式锁未被占用,将分布式锁分配到一个队列,其中,分布式锁在同一时间只能分配到一个队列;
步骤920、将分配到分布式锁的队列确定为目标队列。
下面对步骤910和步骤920进行详细描述。
在步骤910中,如果分布式锁未被占用,将分布式锁分配到一个队列,其中,分布式锁在同一时间只能分配到一个队列。收集表更新数据在结果数据流水表中按照收集表标识进行存储,严格有序,因此,将收集表更新结果数据从队列写入结果数据流水表中需要加分布式锁,以确保队列中的数据能够有序地写入结果数据流水表中。
分布式锁只存在一个,且当队列中的数据写入结果数据流水表时,需要占用分布式锁,因此,分布式式锁在同一时间只能分配到一个队列。
在步骤920中,将分配到分布式锁的队列确定为目标队列。若队列中的数据需要写入结果数据流水表中,那么该队列需要在写入期间占用分布式锁,因此,分配到分布式锁的队列确定为目标队列,之后,需要将该分配到分布式锁的队列中的数据转存至结果数据流水表中。
与步骤910和步骤920相对应,在步骤730之后,本公开实施例提供的数据同步方法还包括:
步骤930、释放分布式锁。
在步骤930中,释放分布式锁。当前目标队列中的收集表更新结果数据存储至结果数据流水表后,需要选取新的目标队列,以将收集表更新结果数据存储至结果数据流水表。而目标队列中的数据在写入结果数据流水表期间需要占用分布式锁,因此,当当前目标队列中的数据存储完成后,需要释放分布式锁,以将分布式锁重新分配给其他队列。
上述步骤910至步骤930的实施例将未被占用的分布式锁分配到一个队列,并将该队列确定为目标队列,在取出目标队列中的同一收集表标识下的收集表更新结果数据以存储在结果数据流水表之后,释放分布式锁,从而进行新的队列的数据的转存。本公开实施例通过分布式锁确保收集表更新结果数据能够有序地从队列写入结果数据流水表,确保数据在结果数据流水表中能够按照收集表标识进行分类存储,进而提高了在线表格与收集表的数据同步效率。
以上是对步骤910至步骤930进行的总体描述,下面对步骤910进行详细描述。
在步骤910中,如果分布式锁未被占用,将分布式锁分配到一个队列,其中,分布式锁在同一时间只能分配到一个队列。
参照图10,在一实施例中,步骤910包括:
步骤1010、针对每个队列,确定队列中的收集表更新结果数据中最多的收集表标识,作为队列的锚收集表标识;
步骤1020、确定队列中带有锚收集表标识的收集表更新结果数据数目,作为一次性最多取出数目;
步骤1030、将分布式锁分配到一次性最多取出数目最大的队列。
下面对步骤1010至步骤1030进行详细描述。
在步骤1010中,针对每个队列,确定队列中的收集表更新结果数据中最多的收集表标识,作为队列的锚收集表标识。针对每个队列,确定各收集表标识对应的收集表更新结果数据数量,从而将对应数据最多的收集表标识作为该队列的锚收集表标识。
锚收集表标识与队列相对应,每个队列都存在对应的锚收集表标识,因此,锚收集表标识与队列的数量保持一致。
若某一队列中存在两个或两个以上的收集表标识对应的收集表更新结果数据相同且最多时,可以任选其一作为锚收集表标识。
在步骤1020中,确定队列中带有锚收集表标识的收集表更新结果数据数目,作为一次性最多取出数目。确定每个队列的锚收集表标识之后,基于带有锚收集表标识的收集表更新结果数据的数量,确定各个队列的一次性最多取出数目。
在步骤1030中,将分布式锁分配到一次性最多取出数目最大的队列。将各个队列的一次性最多取出数目进行对比,得到一次性最多取出数目最大的队列,并将分布式锁分配至该队列,该队列为目标队列。
当两个或两个以上的队列对应的一次性最多取出数目最大且相同时,可以将分布式锁分配到其中任意一个队列。
上述步骤1010至步骤1030的实施例首先确定各个队列中的收集表更新结果数据中最多的收集表标识,作为队列的锚收集表标识,并将带有锚收集表标识的收集表更新结果数据数目,作为队列的一次性最多取出数目。之后,比较各个队列的一次性最多取出数目,将分布式锁分配到一次性最多取出数目最大的队列。本公开实施例将分布式锁分配至一次性多取出数目最大的队列,能够减少分布式锁重新分配的频率,减少收集表更新结果数据存储至结果数据流水表的花费时间,从而提高在线表格与收集表的数据同步效率。
在一实施例中,本公开实施例针对每个队列,确定收集表标识下的收集表更新结果数据对应的最早提交时间,并计算最早提交时间与当前时间的差值,得到时间差。之后,比较多个队列的时间差,并将最大的时间差与同步指标相比较,若时间差大于同步指标对应的时间差,则将分布式锁分配到该时间差对应的收集表标识所在的队列。本公开实施例中时间差的设置能够减少收集表更新结果数据较少而导致同步时间较长的问题
在步骤730中,从目标队列中,取出同一收集表标识的收集表更新结果数据,按照收集表标识分类存储在结果数据流水表中。
参照图11,在一实施例中,步骤730包括:
步骤1110、获取批容量;
步骤1120、在目标队列中按照从前到后的顺序取出批容量个收集表更新结果数据,放入批容器;
步骤1130、如果取出批容量个收集表更新结果数据后,目标队列中第一个收集表更新结果数据的收集表标识、与批容量个收集表更新结果数据的最后的第一数目个收集表更新结果数据的收集表标识相同,将最后的第一数目个收集表更新结果数据放回目标队列的头部;
步骤1140、将批容器中的收集表更新结果数据,按照收集表标识分类存储在结果数据流水表中。
下面对步骤1110至步骤1140进行详细描述。
在步骤1110中,获取批容量。批容器的最大容量可设置为批容量,而批容器为目标队列与结果数据流水表之间的一个容器工位,可作为目标队列与结果数据流水表之间数据传输的一个中转节点。
在步骤1120中,在目标队列中按照从前到后的顺序取出批容量个收集表更新结果数据,放入批容器。批容器的最大容量为批容量,其做多可容纳批容量个数据,因此,在目标队列与结果数据流水表进行数据传输的过程中,在目标队列中取出批容量个收集表更新结果数据放入批容器。
队列遵循先进先出的原则,因此,从目标队列中取出更新结果数据需要按照从前到后的顺序,该顺序为各个数据分配至目标队列中的顺序,也为各个收集表更新结果数据在收集表端的提交时间的顺序。
当目标队列中的数据小于批容量时,按照从前到后的顺序取出目标队列中的所有收集表更新结果数据,放入批容器。当目标队列中的数据大于或等于批容量时,在目标队列中按照从前到后的顺序取出批容量个收集表更新结果数据,放入批容器。
在步骤1130中,如果取出批容量个收集表更新结果数据后,目标队列中第一个收集表更新结果数据的收集表标识、与批容量个收集表更新结果数据的最后的第一数目个收集表更新结果数据的收集表标识相同,将最后的第一数目个收集表更新结果数据放回目标队列的头部。
当目标队列中分配有多个收集表标识对应的收集表更新结果数据时,需要判断目标队列中取出的数据,即批容器中的收集表更新结果数据对应的收集表标识是否相同,以便于将批容器中的数据按照收集表标识存储至结果数据流水表。具体地,在取出批容量个收集表更新结果数据后,目标队列的第一个收集表更新结果数据的收集表标识、与批容器中最后的第一数目个收集表更新结果数据的收集表标识相同,且第一数目小于批容量,那么将批容器中最后的第一数目个收集表更新结果数据放回目标队列的头部,以使批容器中各个数据对应的收集表标识相同。
另外,判断批容器中第一个收集表更新结果数据与最后一个收集表更新结果数据的收集表标识是否相同,若不同,则将批容器中最后一个收集表更新结果数据的收集表标识放回目标队列,直至批容器中第一个与最后一个收集表更新结果数据的收集表标识相同,本公开实施例通过比较比容器中的数据同样能够保证批容器中的数据全部带有同一收集表标识。
在步骤1140中,将批容器中的收集表更新结果数据,按照收集表标识分类存储在结果数据流水表中。在确保批容器中的收集表更新结果数据带有同一收集表标识后,基于该收集表标识,将批容器中的数据分类存储在结果数据流水表中。
上述步骤1110至步骤1140的实施例设置有批容器,且批容器的最大容量为批容量。本公开实施例首先在目标队列中按照从前到后的顺序取出批容量个收集表更新结果数据,放入批容器,并比较目标队列中剩余数据的收集表标识与批容器中的收集表标识,根据比较结果判断是否放回,以确保批容器中多个数据对应的收集表标识相同,之后,将批容器中的收集表更新结果数据,按照收集表标识分类存储在结果数据流水表中。本公开实施例通过批容器将目标队列中的收集表更新结果数据存储至结果数据流水表中,确保收集表更新数据在传输过程中的有序性,使得结果数据流水表中的数据能够按照收集表标识进行分类存储,进一步提高了数据同步效率。
写入成功后的数据同步
参照图12,在一实施例中,在步骤440之后,数据同步方法还包括:
步骤1210、如果写入成功,为结果数据流水表中写入在线表格的收集表更新结果数据标记第一标志。
与步骤1210对应,步骤430包括:
步骤1220、通过写表格组件,从结果数据流水表中,按照收集表标识读取收集表标识下的、未加第一标志的收集表更新结果数据。
下面对步骤1210和步骤1220进行详细描述。
在步骤1210中,如果写入成功,为结果数据流水表中写入在线表格的收集表更新结果数据标记第一标志。根据结果数据流水表中的第一标志,能够确定携带有第一标志的收集表更新结果数据写入成功。
相关技术中的数据同步方法对写入成功的数据执行立即删除,而本公开实施例对写入成功的收集表更新结果数据进行标记,并在结果数据流水表中对写入成功的数据进行存储,能够减少因在线表格端故障而造成写入成功的数据丢失等问题,提高了数据同步的稳定性。
在步骤1220中,通过写表格组件,从结果数据流水表中,按照收集表标识读取收集表标识下的、未加第一标志的收集表更新结果数据。写入成功的收集表更新结果数据无需再次写入在线表格,因此,在之后的数据同步过程中,需要跳过添加第一标志的收集表更新结果数据,只需按照收集表标识读取结果数据流水表中的未加第一标志的收集表更新结果数据,写入在线表格端的在线表格即可。
上述步骤1210至步骤1220的实施例为结果数据流水表中成功写入在线表格的收集表更新结果数据标记第一标志,对应的,在数据同步过程中,通过写表格组件,从结果数据流水表中,按照收集表标识读取收集表标识下的、未加第一标志的收集表更新结果数据。本公开实施例通过第一标志的设置能够减少数据反复重新写入问题的发生,进而提高数据的同步效率,另外,本公开实施例通过结果数据流水表对写入成功的数据进行存储,能够减少因在线表格端故障而造成写入成功的数据丢失等问题,提高了数据同步的稳定性。
以上是对步骤1210和步骤1220的总体描述,下面对步骤1220进行详细描述。
在步骤1220中,通过写表格组件,从结果数据流水表中,按照收集表标识读取收集表标识下的、未加第一标志的收集表更新结果数据。
在一实施例中,从收集表端获取的一部分收集表更新结果数据具有第三标志,第三标志表示禁止同步到在线表格。对应的,步骤1220包括:
通过写表格组件,从结果数据流水表中,按照收集表标识读取收集表标识下的、未加第一标志和第三标志的收集表更新结果数据。
收集表中的部分数据为隐私数据。对于隐私数据而言,在收集表与在线表格的同步过程中,不要求这部分数据进入在线表格。因此,对该数据添加第三标志,第三标志标识禁止同步对应的收集表更新结果数据至在线表格。对应的,在数据同步过程中,写表格组件跳过添加有第一标志和第三标志的收集表更新结果数据,并按照收集表标识将其余收集表更新结果数据从结果数据流水表中进行读取。本公开实施例通过第三标志的设置对收集表更新结果数据中的部分数据进行保护,提高了收集表的隐私安全性。
参照图13,在一实施例中,步骤1220包括:
步骤1310、通过写表格组件,建立并行的第二数目个第一进程;
步骤1320、从结果数据流水表中,获取第二数目个第一目标收集表标识;
步骤1330、为每个第一目标收集表标识分配一个第一进程,利用分配的第一进程读取第一目标收集表标识下的、未加第一标志的收集表更新结果数据;
与步骤1310至步骤1330相对应,步骤440包括:
步骤1340、利用分配的第一进程,将收集表标识下的收集表更新结果数据,写入在线表格。
下面对步骤1310至步骤1340进行详细描述。
在步骤1310中,通过写表格组件,建立并行的第二数目个第一进程。多个第一进程并行设置,从而能够提高了写表格组件读取数据的速度,提高数据同步效率。
本公开实施例可将第二数目设置为固定值,另外,第二数目也可以根据结果数据流水表中的收集表更新结果数据进行设置,具体地,本公开实施例设置有第一阈值和第二阈值,根据结果数据流水表中带有收集表标识的收集表结果更新数据的数目大于或等于第一阈值的收集表标识数目、以及带有收集表标识的收集表结果更新数据的提交时间与当前时间的差值大于或等于第二阈值的收集表标识数目,确定第二数目。
在步骤1320中,从结果数据流水表中,获取第二数目个第一目标收集表标识。当第二数目设置为固定值时,将结果数据流水表中各个收集表标识对应的数据数目从大到小进行排列,并将前第二个数目的收集表标识作为第一目标收集表标识。
当第二数目根据结果数据流水表中的收集表更新结果数据进行设置时,根据第二数目的设置依据,能够直接确定第一目标收集表标识。
在步骤1330中,为每个第一目标收集表标识分配一个第一进程,利用分配的第一进程读取第一目标收集表标识下的、未加第一标志的收集表更新结果数据。第一进程与第一目标收集表标识对应设置,通过第一进程读取对应的第一目标收集表标识下的、未加第一标志的收集表更新结果数据,实现对收集表更新结果数据的并行读取。
在步骤1340中,利用分配的第一进程,将收集表标识下的收集表更新结果数据,写入在线表格。利用分配的第一进程,将读取到的收集表更新结果数据写入与收集表标识对应的在线表格中。
在一实施例中,本公开实施例在利用读取完结果数据流水表中第一目标收集表标识下的所有数据之后,将收集表更新结果数据写入在线表格中。
在另一实施例中,本公开实施例中结果数据流水表的数据读取以及在线表格的数据写入同时进行,能够提高结果数据流水表至在线表格的数据传输效率,进而提高数据同步效率。
上述步骤1310至步骤1340的实施例设置有多个并行的第一进程,并通过第一进程将结果数据流水表中的多个收集表标识下的收集表更新结果数据,写入在线表格,并行写入的设置提高了结果数据流水表至在线表格的数据传输效率,进而提高了在线表格与收集表之间的数据同步效率。
以上是对步骤1310至步骤1340的总体描述,下面对步骤1320进行详细描述。
在步骤1320中,从结果数据流水表中,获取第二数目个第一目标收集表标识。
参照图14,在一实施例中,步骤1320包括:
步骤1410、从结果数据流水表中,确定各个收集表标识下的、未加第一标志的第一收集表更新结果数据数目;
步骤1420、将第一收集表更新结果数据数目从高到低排序的前第二数目个收集表标识,确定为第一目标收集表标识。
下面对步骤1410至步骤1420进行详细描述。
在步骤1410中,从结果数据流水表中,确定各个收集表标识下的、未加第一标志的第一收集表更新结果数据数目。当第二数目为固定值时,从结果数据流水表中,确定各个收集表标识下未加第一标志的第一收集表更新结果数据数目。若部分收集表更新结果数据还存在有第三标志,那么需要确定各个收集表标识下未加第一标志和第三标志的第一收集表更新结果数据数目,即实际能够写入在线表格中的收集表更新结果数据的数目。
在步骤1420中,将第一收集表更新结果数据数目从高到低排序的前第二数目个收集表标识,确定为第一目标收集表标识。将结果数据流水表中各个收集表标识对应的第一收集表更新结果数据数目按照从高到低的顺序进行排列,并将前第二个数目的收集表标识作为第一目标收集表标识。
上述步骤1410和步骤1420的实施例从结果数据流水表中,确定各个收集表标识下的、未加第一标志的第一收集表更新结果数据数目,并将第一收集表更新结果数据数目从高到低排序的前第二数目个收集表标识,作为第一目标收集表标识,从而实现对第一目标收集表标识的选取。
写入失败后重试写入
参照图15,在一实施例中,在步骤440之后,数据同步方法还包括:
步骤1510、如果写入失败,为结果数据流水表中写入在线表格失败的收集表更新结果数据标记第二标志;
步骤1520、每隔第一时长,针对结果数据流水表中标记有第二标志的收集表更新结果数据,重试向在线表格的写入。
下面对步骤1510和步骤1520进行详细描述。
在步骤1510中,如果写入失败,为结果数据流水表中写入在线表格失败的收集表更新结果数据标记第二标志。根据结果数据流水表中的第二标志,确定携带有第二标志的收集表更新结果数据写入失败。
相关技术中的数据同步方法在对写入失败的数据重试写入在线表格一定次数后,进行删除,即使一段时候后能够成功写入在线表格后,删除的数据也无法找回,造成数据丢失。而本公开实施例对写入失败的收集表更新结果数据进行标记,而非对失败的数据进行删除,能够减少数据丢失等问题的发生,提高了数据同步的稳定性和可靠性。
在步骤1520中,每隔第一时长,针对结果数据流水表中标记有第二标志的收集表更新结果数据,重试向在线表格的写入。第一时长可根据数据同步的要求进行设置,每隔第一时长,将标记有第二标志的收集表更新结果数据,即写入失败的数据,重试向在线表格中进行写入。
参照图5,图5中设置有定时器,该定时器设置有第一时长,每隔第一时长,写表格组件将写入失败的收集表更新结果数据,按照收集表标识重新向在线表格中进行写入。
另外,在标记有第二标志的收集表更新结果数据向在线表格写入成功后,将结果数据流水表中该数据对应的第二标志进行清除,并对该数据标记第一标志,以表示该数据写入成功。
若收集表更新结果数据重试写入失败后,该数据已经标记有第二标志,无需重复标记。
上述步骤1510至步骤1520的实施例通过第二标志对写入失败的收集表更新结果数据进行标记,并每隔第一时长,重试将标记有第二标志的收集表更新结果数据写入在线表格中。本公开实施例通过第二标志以及第一时长的设置对写入失败的数据进行处理,能够减少数据丢失等问题的发生,提高了数据同步的稳定性和可靠性。
参照图15,在一实施例中,在步骤1520之后,数据同步方法还包括:
步骤1530、获取收集表更新结果数据的重试次数阈值;
步骤1540、如果重试的次数达到重试次数阈值,在结果数据流水表中删除收集表更新结果数据。
下面对步骤1530和步骤1540进行详细描述。
在步骤1530中,获取收集表更新结果数据的重试次数阈值。重试次数阈值根据在线表格进行设置,若在线表格端发生故障,那么在线表格端故障清除后,收集表更新结果数据即可重新写入在线表格,因此,重试次数阈值通常根据在线表格端的平均故障时间或最大故障时间进行设置。
在步骤1540中,如果重试的次数达到重试次数阈值,在结果数据流水表中删除收集表更新结果数据。如果收集表更新结果数据重试写入的次数达到重试阈值,那么在线表格端极大概率不存在故障,即使再次重试,该数据仍会写入失败。因此,如果重试的次数达到重试次数阈值且数据仍写入失败,在结果数据流水表中删除收集表更新结果数据。
上述步骤1530和步骤1540的实施例设置有重试次数阈值,当重试的次数达到重试次数阈值且仍写入失败时,那么在线表格端极大概率不存在故障,即使重试再多次,该数据仍会写入失败,为了减少结果数据流水表中的冗余数据,本公开实施例在结果数据流水表中删除这些收集表更新结果数据,减少了数据重试写入对于资源的占用,在保证数据可靠性的同时,进一步提高了资源利用率。
参照图16,步骤1520中的第一时长通过以下方式确定:
步骤1610、获取结果数据流水表中标记有第二标志的第二收集表更新结果数据数目;
步骤1620、获取同步实时性指标;
步骤1630、基于第二收集表更新结果数据数目、和同步实时性指标,确定第一时长。
下面对步骤1610至步骤1630进行详细描述。
在步骤1610中,获取结果数据流水表中标记有第二标志的第二收集表更新结果数据数目。具有第二标志的收集表更新结果数据重试写入的周期第二时长的确定,首先需要获取收集表标识下的标记有第二标志的第二收集表更新结果数据数目,从而确定需要重试写入的数据数目。
在步骤1620中,获取同步实时性指标。同步实时指标为收集表与在线表格的数据同步的实时性指标,不同的在线表格对应的同步实施性指标也不同,同步实时性指标也高,对收集表与在线表格之间数据同步的要求也就越高。
在步骤1630中,基于第二收集表更新结果数据数目、和同步实时性指标,确定第一时长。第一时长根据第二收集表更新结果数据数目和同步实时性指标确定,第一时长与第二收集表更新结果数据数目、同步实时性指标成反比,同步性指标越高,第二收集表更新结果数据数目越多,则第一时长越短,反之,同步性指标越低,第二收集表更新结果数据数目越少,则第一时长越短。
上述步骤1610至步骤1630的实施例基于第二收集表更新结果数据数目、和同步实时性指标,对第一时长进行设置,以确保第一时长与当前收集表、在线表格相适配,减少因第一时长过长或过短而造成的资源浪费的问题,从而提高了收集表与在线表格之间的同步效率。
在步骤1520中,每隔第一时长,针对结果数据流水表中标记有第二标志的收集表更新结果数据,重试向在线表格的写入。
参照图17,在一实施例中,步骤1520包括:
步骤1710、每隔第一时长,确定结果数据流水表中各个收集表标识下的标记有第二标志的第三收集表更新结果数据数目;
步骤1720、将第三收集表更新结果数据数目最大的收集表标识,确定为第二目标收集表标识;
步骤1730、针对第二目标收集表标识下的、标记有第二标志的收集表更新结果数据,重试向在线表格的写入。
下面对步骤1710至步骤1730进行详细描述。
在步骤1710中,每隔第一时长,确定结果数据流水表中各个收集表标识下的标记有第二标志的第三收集表更新结果数据数目。每个第一时长,确定结果数据流水表中各个在线表格写入失败的第三收集表更新结果数据数目。
不同的在线表格,对应的写入时间可能不同,对应的第一时长也可能不同。在某一时间点需要重试写入的在线表格数量根据写入时间和第一时长确定,若当前时间节点只存在一个需要重试写入的在线表格,那么将该在线表格对应的标记有第二标志的收集表更新结果数据重试写入在线表格。而当前时间节点存在多个需要重试写入的在线表格时,需要确定多个在线表格对应的标记有第二标志的第三收集表更新结果数据数目。
在步骤1720中,将第三收集表更新结果数据数目最大的收集表标识,确定为第二目标收集表标识。若只能对一个收集表标识对应的收集表更新结果数据重试写入时,那么将第三收集表更新结果数据数目最大的收集表标识,确定为第二目标收集表标识。
在一实施例中,结果数据流水表与在线表格之间的重试写入对应设置有多个进程,那么将第三收集表更新结果数据数目从高到低进行排序,从而确定多个进程对应的第二目标收集表标识。
在步骤1730中,针对第二目标收集表标识下的、标记有第二标志的收集表更新结果数据,重试向在线表格的写入。确定第二目标收集表标识之后,将第二目标收集表标识对应的标记有第二标志的收集表更新结果数据向在线表格中重试写入。
在一实施例中,具有第二标识的收集表更新结果数据和其他收集表更新结果数据同时写入,具体地,每个第一时长,获取具有第二标志的收集表更新结果数据对应的收集表标识,并确定具有收集表标识对应的所有收集表更新结果数据的数目,并据此确定第二目标收集表标识,将第二收集表中的收集表更新结果数据写入在线表格中。
上述步骤1710至步骤1730的实施例将标记有所述第二标志的第三收集表更新结果数据数目最大的收集表标识作为第二目标收集表标识,与任选一个收集表标识作为第二目标收集表标识相比,能够减少重试写入的次数,提高数据同步效率。
收集表初始数据与在线表格的同步
参照图18,在一实施例中,在步骤410之前,数据同步方法还包括:
步骤1810、从收集表端,获取收集表的初始数据,初始数据包括收集表标识、和多个目标数据项;
步骤1820、为目标数据项生成数据项标识,将数据项标识存储到数据项标识表中,并将目标数据项写入与收集表标识对应的在线表格。
下面对步骤1810至步骤1820进行详细描述。
在步骤1810中,从收集表端,获取收集表的初始数据,初始数据包括收集表标识、和多个目标数据项。收集表的初始数据为收集表与在线表格之间还未进行过数据同步的数据。
初始数据包括收集表标识、和多个目标数据项,收集表标识与在线表格相对应,而目标数据项为填写者在收集表中的填写内容,同一在线表格对应的所有的收集表具有相同的收集表标识,而同一在线表格对应的多个收集表的目标数据项都不相同。
在步骤1820中,为目标数据项生成数据项标识,将数据项标识存储到数据项标识表中,并将目标数据项写入与收集表标识对应的在线表格。数据项标识与目标数据项相对应,数据项标识在数据项标识表中,则标识该数据项标识对应的目标数据项写入在线表格成功,反之,则该目标数据项写入在线表格失败。
参照图19,本公开实施例在数据同步开始之后,获取收集表的初始数据,初始数据包括收集表标识和目标数据项,之后,将目标数据项写入与收集表标识对应的在线表格,并为目标数据项生成数据项标识,将数据项标识存储到数据项标识表中。
上述步骤1810至步骤1820的实施例获取收集表端的初始数据,并为初始数据中的目标数据项生成数据项标识,将数据项标识存储到数据项标识表中,并将目标数据项写入与收集表标识对应的在线表格。本公开实施例通过收集表标识将目标数据项写入在线表格,并通过目标数据项和数据标识表的设置对初始数据的写入结果进行表示,从而实现了数据的全量同步。
以上是对步骤1810至步骤1820的总体描述,下面对步骤1810至步骤1820进行详细描述。
参照图20,在一实施例中,在步骤1810之后,数据同步方法还包括:
步骤2010、获取收集表端的权限数据;
步骤2020、基于权限数据,对收集表端进行第一鉴权。
收集表与在线表格的数据同步首先需要对收集表端进行鉴权,以确保收集表端具有将数据同步至收集表端的权限,收集表端的权限数据通常为收集表的制作方下发给各填写者收集表时同步发送的数据。基于权限数据,对收集表端进行第一鉴权,以确保收集表端具有同步至在线表格的权限,提高了数据同步过程的安全性。
在步骤1820中,为目标数据项生成数据项标识,将数据项标识存储到数据项标识表中,并将目标数据项写入与收集表标识对应的在线表格。
参照图21,在一实施例中,步骤1820包括:
步骤2110、获取并行的多个第二进程;
步骤2120、针对每个目标数据项,利用一个第二进程生成数据项标识,将数据项标识存储到数据项标识表中,并将目标数据项写入与收集表标识对应的在线表格。
下面对步骤2110和步骤2120进行详细描述。
在步骤2110中,获取并行的多个第二进程。第二进程根据目标数据项的数目进行设置,一个第二进程通常对应至少一个目标数据项。
在步骤2120中,针对每个目标数据项,利用一个第二进程生成数据项标识,将数据项标识存储到数据项标识表中,并将目标数据项写入与收集表标识对应的在线表格。第二进程与目标数据项对应设置,通过第二进程生成数据项标识,将数据项标识存储到数据项标识表中,并将对应的目标数据项写入与收集表标识对应的在线表格,实现对目标数据项的并行处理。
参照图19,上述步骤2110至步骤2120的实施例通过并行的第二进程对目标数据项进行处理,减少了目标数据项的处理时间,进而提高了收集表与在线表格之间的数据同步效率。
参照图22,在一实施例中,在步骤1820之后,数据同步方法还包括:
步骤2210、向收集表端返回已写入在线表格的目标数据项的第一标识;
步骤2220、从收集表端,接收带有第一标识的写入结果查询请求;
步骤2230、如果在数据项标识表中查找到第一标识,向收集表端返回写入成功的写入结果。
下面对步骤2210至步骤2230进行详细描述。
在步骤2210中,向收集表端返回已写入在线表格的目标数据项的第一标识。第一标识实质上为目标数据项标识,第一标识返回给收集表端,可作为收集表端轮询写入结果时的依据。
在步骤2220中,从收集表端,接收带有第一标识的写入结果查询请求。写入结果查询请求为查询第一表示对应的目标数据项的写入结果的请求。
在步骤2230中,如果在数据项标识表中查找到第一标识,向收集表端返回写入成功的写入结果。如果在数据项标识表中查找到第一标识,表示写入成功,向收集表端返回写入成功的写入结果。
如果在数据项标识表中查找到第一标识,表示写入失败,向收集表端返回写入失败的写入结果。
参照图19,上述步骤2210至步骤2230的实施例接收来自收集表端的写入结果查询请求,基于写入结果查询请求,确定第一标识,并根据第一标识在数据项标识表中进行查找,根据查找结果生成写入结果,并将写入结果返回至收集表端。本公开实施例向收集表端返回写入结果,以使填写者根据写入结果判断是否需要重新提交收集表数据,减少数据写入失败而造成的数据丢失等问题,提高了数据同步的可靠性。
参照图23,在一实施例中,在步骤2220之后,数据同步方法还包括:
步骤2310、获取收集表端的权限数据;
步骤2320、基于权限数据,对收集表端进行第二鉴权。
参照图19,写入结果查询首先需要对收集表端进行鉴权,以确保收集表端具有查询写入结果的权限。基于收集表端的权限数据,对收集表端进行第二鉴权,以确保收集表端具有查询写入结果的权限,提高了数据同步过程的安全性。
本公开实施例的数据同步方法的处理细节
下面参照图24,详细示例性说明本公开实施例的数据同步方法的实施过程。
步骤2411、从收集表端,获取收集表的初始数据,初始数据包括收集表标识、和多个目标数据项。
步骤2412、获取收集表端的权限数据,并基于权限数据,对收集表端进行第一鉴权。
步骤2413、第一鉴权成功后,通过多个并行的第二进程为目标数据项生成数据项标识,将数据项标识存储到数据项标识表中,并将目标数据项写入与收集表标识对应的在线表格。
步骤2414、从收集表端,接收带有第一标识的写入结果查询请求,如果在数据项标识表中查找到第一标识,向收集表端返回写入成功的写入结果。其中,第一标识为向收集表端返回已写入在线表格的目标数据项的数据项标识。
步骤2420、从收集表端,获取对收集表进行更新得到的收集表更新结果数据,收集表更新结果数据包含收集表标识。
步骤2431、确定收集表更新结果数据中的收集表标识的一致性哈希值,基于一致性哈希值,在多个队列中确定分配队列,将收集表更新结果数据分配到分配队列中,以实现将收集表更新结果数据分配到并行的多个队列中。
步骤2432、从多个队列中确定目标队列。具体地,目标队列可根据分布式锁进行确定。
步骤2433、从目标队列中,取出同一收集表标识的收集表更新结果数据,按照收集表标识分类存储在结果数据流水表中。
步骤2440、如果写入成功,为结果数据流水表中写入在线表格的收集表更新结果数据标记第一标志。如果写入失败,为结果数据流水表中写入在线表格失败的收集表更新结果数据标记第二标志。
步骤2450、通过写表格组件,从结果数据流水表中,按照收集表标识读取收集表标识下的、未加第一标志和第三标志的收集表更新结果数据。其中,第三标识表示禁止同步到所述在线表格。
步骤2461、获取结果数据流水表中具有第二标志的收集表更新结果数据的重试写入在线表格的次数。
步骤2462、当重试次数小于重试次数阈值时,每隔第一时长,针对结果数据流水表中标记有第二标志的收集表更新结果数据,重试向在线表格的写入。
步骤2463、如果重试次数等于重试次数阈值,在结果数据流水表中删除收集表更新结果数据。
本公开实施例的装置和设备描述
可以理解的是,虽然上述各个流程图中的各个步骤按照箭头的表征依次显示,但是这些步骤并不是必然按照箭头表征的顺序依次执行。除非本实施例中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,上述流程图中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时间执行完成,而是可以在不同的时间执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
需要说明的是,在本公开的各个具体实施方式中,当涉及到需要根据目标对象属性信息或属性信息集合等与目标对象特性相关的数据进行相关处理时,都会先获得目标对象的许可或者同意,而且,对这些数据的收集、使用和处理等,都会遵守相关法律法规和标准。此外,当本公开实施例需要获取目标对象属性信息时,会通过弹窗或者跳转到确认页面等方式获得目标对象的单独许可或者单独同意,在明确获得目标对象的单独许可或者单独同意之后,再获取用于使本公开实施例能够正常运行的必要的目标对象相关数据。
参照图25,根据本公开的一方面,提供了一种数据同步装置2500,包括:
第一获取单元2510,用于从收集表端,获取对收集表进行更新得到的收集表更新结果数据,收集表更新结果数据包含收集表标识;
第一分类单元2520,用于将收集表更新结果数据,按照收集表标识分类存储在结果数据流水表中;
第一读取单元2530,用于通过写表格组件,从结果数据流水表中按照收集表标识读取收集表标识下的收集表更新结果数据;
第一写入单元2540,用于将收集表标识下的收集表更新结果数据,写入在线表格端的与收集表标识对应的在线表格。
可选地,第一分类单元2520具体用于:
将收集表更新结果数据分配到并行的多个队列中,其中,收集表标识相同的收集表更新结果数据分配到同一个队列;
从多个队列中确定目标队列;
从目标队列中,取出同一收集表标识的收集表更新结果数据,按照收集表标识分类存储在结果数据流水表中。
可选地,第一分类单元2520具体用于:
确定收集表更新结果数据中的收集表标识的一致性哈希值;
基于一致性哈希值,在多个队列中确定分配队列;
将收集表更新结果数据分配到分配队列中。
可选地,第一分类单元2520具体用于:
如果分布式锁未被占用,将分布式锁分配到一个队列,其中,分布式锁在同一时间只能分配到一个队列;
将分配到分布式锁的队列确定为目标队列;
数据同步装置2500还包括:
释放单元,用于释放分布式锁。
可选地,第一分类单元2520具体用于:
针对每个队列,确定队列中的收集表更新结果数据中最多的收集表标识,作为队列的锚收集表标识;
确定队列中带有锚收集表标识的收集表更新结果数据数目,作为一次性最多取出数目;
将分布式锁分配到一次性最多取出数目最大的队列。
可选地,第一分类单元2520具体用于:
获取批容量;
在目标队列中按照从前到后的顺序取出批容量个收集表更新结果数据,放入批容器;
如果取出批容量个收集表更新结果数据后,目标队列中第一个收集表更新结果数据的收集表标识、与批容量个收集表更新结果数据的最后的第一数目个收集表更新结果数据的收集表标识相同,将最后的第一数目个收集表更新结果数据放回目标队列的头部;
将批容器中的收集表更新结果数据,按照收集表标识分类存储在结果数据流水表中。
可选地,数据同步装置2500还包括:
第一标记单元,用于如果写入成功,为结果数据流水表中写入在线表格的收集表更新结果数据标记第一标志;
第一读取单元2530具体用于:
通过写表格组件,从结果数据流水表中,按照收集表标识读取收集表标识下的、未加第一标志的收集表更新结果数据。
可选地,从收集表端获取的一部分收集表更新结果数据具有第三标志,第三标志表示禁止同步到在线表格;
第一读取单元2530具体用于:
通过写表格组件,从结果数据流水表中,按照收集表标识读取收集表标识下的、未加第一标志的收集表更新结果数据,包括:通过写表格组件,从结果数据流水表中,按照收集表标识读取收集表标识下的、未加第一标志和第三标志的收集表更新结果数据。
可选地,第一读取单元2530具体用于:
通过写表格组件,建立并行的第二数目个第一进程;
从结果数据流水表中,获取第二数目个第一目标收集表标识;
为每个第一目标收集表标识分配一个第一进程,利用分配的第一进程读取第一目标收集表标识下的、未加第一标志的收集表更新结果数据;
第一写入单元2540具体用于:
利用分配的第一进程,将收集表标识下的收集表更新结果数据,写入在线表格。
可选地,第一读取单元2530具体用于:
从结果数据流水表中,确定各个收集表标识下的、未加第一标志的第一收集表更新结果数据数目;
将第一收集表更新结果数据数目从高到低排序的前第二数目个收集表标识,确定为第一目标收集表标识。
可选地,数据同步装置2500还包括:
第二标记单元,用于如果写入失败,为结果数据流水表中写入在线表格失败的收集表更新结果数据标记第二标志;
第二写入单元,用于每隔第一时长,针对结果数据流水表中标记有第二标志的收集表更新结果数据,重试向在线表格的写入。
可选地,数据同步装置2500还包括:
第二获取单元,用于获取收集表更新结果数据的重试次数阈值;
删除单元,如果重试的次数达到重试次数阈值,在结果数据流水表中删除收集表更新结果数据。
可选地,第二写入单元具体用于:
获取结果数据流水表中标记有第二标志的第二收集表更新结果数据数目;
获取同步实时性指标;
基于第二收集表更新结果数据数目、和同步实时性指标,确定第一时长。
可选地,第二写入单元具体用于:
每隔第一时长,确定结果数据流水表中各个收集表标识下的标记有第二标志的第三收集表更新结果数据数目;
将第三收集表更新结果数据数目最大的收集表标识,确定为第二目标收集表标识;
针对第二目标收集表标识下的、标记有第二标志的收集表更新结果数据,重试向在线表格的写入。
可选地,数据同步装置2500还包括:
第三获取单元,用于从收集表端,获取收集表的初始数据,初始数据包括收集表标识、和多个目标数据项;
第三写入单元,用于为目标数据项生成数据项标识,将数据项标识存储到数据项标识表中,并将目标数据项写入与收集表标识对应的在线表格。
可选地,数据同步装置2500还包括:
第四获取单元,用于获取收集表端的权限数据;
第一鉴权单元,用于基于权限数据,对收集表端进行第一鉴权。
可选地,第三写入单元具体用于:
获取并行的多个第二进程;
针对每个目标数据项,利用一个第二进程生成数据项标识,将数据项标识存储到数据项标识表中,并将目标数据项写入与收集表标识对应的在线表格。
可选地,数据同步装置2500还包括:
第四写入单元,用于向收集表端返回已写入在线表格的目标数据项的第一标识;
接收单元,用于从收集表端,接收带有第一标识的写入结果查询请求;
查找返回单元,用于如果在数据项标识表中查找到第一标识,向收集表端返回写入成功的写入结果。
可选地,数据同步装置2500还包括:
第五获取单元,用于获取收集表端的权限数据;
第二鉴权单元,用于基于权限数据,对收集表端进行第二鉴权。
可选地,第一获取单元具体用于:
在连续的第一周期和第二周期,获取收集表端的收集表;
将在第二周期获取的收集表与在第一周期获取的收集表进行比对,得到收集表更新结果数据。
参照图26,图26为实现本公开实施例的数据同步方法的终端140的部分的结构框图,该终端包括:射频(Radio Frequency,简称RF)电路2610、存储器2615、输入单元2630、显示单元2640、传感器2650、音频电路2660、无线保真(wireless fidelity,简称WiFi)模块2670、处理器2680、以及电源2690等部件。本领域技术人员可以理解,图26中示出的终端140结构并不构成对手机或电脑的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
RF电路2610可用于收发信息或通话过程中,信号的接收和发送,特别地,将基站的下行信息接收后,给处理器2680处理;另外,将设计上行的数据发送给基站。
存储器2615可用于存储软件程序以及模块,处理器2680通过运行存储在存储器2615的软件程序以及模块,从而执行终端的各种功能应用以及数据处理。
输入单元2630可用于接收输入的数字或字符信息,以及产生与终端的设置以及功能控制有关的键信号输入。具体地,输入单元2630可包括触控面板2631以及其他输入装置2632。
显示单元2640可用于显示输入的信息或提供的信息以及终端的各种菜单。显示单元2640可包括显示面板2641。
音频电路2660、扬声器2661,传声器2662可提供音频接口。
在本实施例中,该终端130所包括的处理器2680可以执行前面实施例的数据同步方法。
本公开实施例的终端包括但不限于手机、电脑、智能语音交互设备、智能家电、车载终端、飞行器等。本发明实施例可应用于各种场景,包括但不限于输入法、智能输入产品、人机交互处理等。
图27为实施本公开实施例的数据同步方法的服务器110的部分的结构框图。服务器110可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上中央处理器(Central Processing Units,简称CPU)3272(例如,一个或一个以上处理器)和存储器2732,一个或一个以上存储应用程序2742或数据2744的存储介质2730(例如一个或一个以上海量存储装置)。其中,存储器2732和存储介质2730可以是短暂存储或持久存储。存储在存储介质2730的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对服务器2700中的一系列指令操作。更进一步地,中央处理器2722可以设置为与存储介质2730通信,在服务器2700上执行存储介质2730中的一系列指令操作。
服务器2700还可以包括一个或一个以上电源2726,一个或一个以上有线或无线网络接口2750,一个或一个以上输入输出接口2758,和/或,一个或一个以上操作系统2741,例如Windows ServerTM,Mac OS XTM,UnixTM,LinuxTM,FreeBSDTM等等。
服务器2700中的处理器可以用于执行本公开实施例的数据同步方法。
本公开实施例还提供一种计算机可读存储介质,计算机可读存储介质用于存储程序代码,程序代码用于执行前述各个实施例的数据同步方法。
本公开实施例还提供了一种计算机程序产品,该计算机程序产品包括计算机程序。计算机设备的处理器读取该计算机程序并执行,使得该计算机设备执行实现上述的数据同步方法。
本公开的说明书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本公开的实施例例如能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“包含”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或装置不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或装置固有的其它步骤或单元。
应当理解,在本公开中,“至少一个(项)”是指一个或者多个,“多个”是指两个或两个以上。“和/或”,用于描述关联对象的关联关系,表示可以存在三种关系,例如,“A和/或B”可以表示:只存在A,只存在B以及同时存在A和B三种情况,其中A,B可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。“以下至少一项(个)”或其类似表达,是指这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a,b或c中的至少一项(个),可以表示:a,b,c,“a和b”,“a和c”,“b和c”,或“a和b和c”,其中a,b,c可以是单个,也可以是多个。
应了解,在本公开实施例的描述中,多个(或多项)的含义是两个以上,大于、小于、超过等理解为不包括本数,以上、以下、以内等理解为包括本数。
在本公开所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本公开各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本公开的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机装置(可以是个人计算机,服务器,或者网络装置等)执行本公开各个实施例方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,简称ROM)、随机存取存储器(Random Access Memory,简称RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
还应了解,本公开实施例提供的各种实施方式可以任意进行组合,以实现不同的技术效果。
以上是对本公开的实施方式的具体说明,但本公开并不局限于上述实施方式,熟悉本领域的技术人员在不违背本公开精神的条件下还可作出种种等同的变形或替换,这些等同的变形或替换均包括在本公开权利要求所限定的范围内。
Claims (20)
1.一种数据同步方法,其特征在于,用于收集表端与在线表格端的数据同步,所述数据同步方法包括:
从所述收集表端,获取对收集表进行更新得到的收集表更新结果数据,所述收集表更新结果数据包含收集表标识;
将所述收集表更新结果数据,按照所述收集表标识分类存储在结果数据流水表中;
通过写表格组件,从所述结果数据流水表中按照所述收集表标识读取所述收集表标识下的所述收集表更新结果数据;
将所述收集表标识下的所述收集表更新结果数据,写入所述在线表格端的与所述收集表标识对应的在线表格。
2.根据权利要求1所述的数据同步方法,其特征在于,所述将所述收集表更新结果数据,按照所述收集表标识分类存储在结果数据流水表中,包括:
将所述收集表更新结果数据分配到并行的多个队列中,其中,所述收集表标识相同的所述收集表更新结果数据分配到同一个所述队列;
从多个所述队列中确定目标队列;
从所述目标队列中,取出同一所述收集表标识的所述收集表更新结果数据,按照所述收集表标识分类存储在结果数据流水表中。
3.根据权利要求2所述的数据同步方法,其特征在于,所述将所述收集表更新结果数据分配到并行的多个队列中,包括:
确定所述收集表更新结果数据中的所述收集表标识的一致性哈希值;
基于所述一致性哈希值,在多个所述队列中确定分配队列;
将所述收集表更新结果数据分配到所述分配队列中。
4.根据权利要求2所述的数据同步方法,其特征在于,所述从多个所述队列中确定目标队列,包括:
如果分布式锁未被占用,将所述分布式锁分配到一个所述队列,其中,所述分布式锁在同一时间只能分配到一个所述队列;
将分配到所述分布式锁的所述队列确定为所述目标队列;
在从所述目标队列中,取出同一所述收集表标识的所述收集表更新结果数据,按照所述收集表标识分类存储在结果数据流水表中之后,所述数据同步方法还包括:释放所述分布式锁。
5.根据权利要求4所述的数据同步方法,其特征在于,所述将所述分布式锁分配到一个所述队列,包括:
针对每个所述队列,确定所述队列中的所述收集表更新结果数据中最多的所述收集表标识,作为所述队列的锚收集表标识;
确定所述队列中带有所述锚收集表标识的所述收集表更新结果数据数目,作为一次性最多取出数目;
将所述分布式锁分配到所述一次性最多取出数目最大的所述队列。
6.根据权利要求2所述的数据同步方法,其特征在于,所述从所述目标队列中,取出同一所述收集表标识的所述收集表更新结果数据,按照所述收集表标识分类存储在结果数据流水表中,包括:
获取批容量;
在所述目标队列中按照从前到后的顺序取出所述批容量个收集表更新结果数据,放入批容器;
如果取出所述批容量个收集表更新结果数据后,所述目标队列中第一个收集表更新结果数据的所述收集表标识、与所述批容量个收集表更新结果数据的最后的第一数目个收集表更新结果数据的所述收集表标识相同,将所述最后的第一数目个收集表更新结果数据放回所述目标队列的头部;
将所述批容器中的所述收集表更新结果数据,按照所述收集表标识分类存储在结果数据流水表中。
7.根据权利要求1所述的数据同步方法,其特征在于,在将所述收集表标识下的所述收集表更新结果数据,写入所述在线表格端的与所述收集表标识对应的在线表格之后,所述数据同步方法还包括:如果写入成功,为所述结果数据流水表中写入所述在线表格的所述收集表更新结果数据标记第一标志;
所述通过写表格组件,从所述结果数据流水表中按照所述收集表标识读取所述收集表标识下的所述收集表更新结果数据,包括:通过写表格组件,从所述结果数据流水表中,按照所述收集表标识读取所述收集表标识下的、未加所述第一标志的所述收集表更新结果数据。
8.根据权利要求7所述的数据同步方法,其特征在于,所述通过写表格组件,从所述结果数据流水表中,按照所述收集表标识读取所述收集表标识下的、未加所述第一标志的所述收集表更新结果数据,包括:
通过写表格组件,建立并行的第二数目个第一进程;
从所述结果数据流水表中,获取所述第二数目个第一目标收集表标识;
为每个所述第一目标收集表标识分配一个所述第一进程,利用分配的所述第一进程读取所述第一目标收集表标识下的、未加所述第一标志的收集表更新结果数据;
所述将所述收集表标识下的所述收集表更新结果数据,写入所述在线表格端的与所述收集表标识对应的在线表格,包括:利用分配的所述第一进程,将所述收集表标识下的所述收集表更新结果数据,写入所述在线表格。
9.根据权利要求8所述的数据同步方法,其特征在于,所述从所述结果数据流水表中,获取所述第二数目个第一目标收集表标识,包括:
从所述结果数据流水表中,确定各个所述收集表标识下的、未加所述第一标志的第一收集表更新结果数据数目;
将所述第一收集表更新结果数据数目从高到低排序的前第二数目个所述收集表标识,确定为所述第一目标收集表标识。
10.根据权利要求1所述的数据同步方法,其特征在于,在将所述收集表标识下的所述收集表更新结果数据,写入所述在线表格端的与所述收集表标识对应的在线表格之后,所述数据同步方法还包括:
如果写入失败,为所述结果数据流水表中写入所述在线表格失败的所述收集表更新结果数据标记第二标志;
每隔第一时长,针对所述结果数据流水表中标记有所述第二标志的所述收集表更新结果数据,重试向所述在线表格的写入。
11.根据权利要求10所述的数据同步方法,其特征在于,所述第一时长通过以下方式确定:
获取所述结果数据流水表中标记有所述第二标志的第二收集表更新结果数据数目;
获取同步实时性指标;
基于所述第二收集表更新结果数据数目、和所述同步实时性指标,确定所述第一时长。
12.根据权利要求10所述的数据同步方法,其特征在于,所述每隔第一时长,针对所述结果数据流水表中标记有所述第二标志的所述收集表更新结果数据,重试向所述在线表格的写入,包括:
每隔第一时长,确定所述结果数据流水表中各个所述收集表标识下的标记有所述第二标志的第三收集表更新结果数据数目;
将所述第三收集表更新结果数据数目最大的所述收集表标识,确定为所述第二目标收集表标识;
针对所述第二目标收集表标识下的、标记有所述第二标志的所述收集表更新结果数据,重试向所述在线表格的写入。
13.根据权利要求1所述的数据同步方法,其特征在于,在从所述收集表端,获取对所述收集表进行更新得到的收集表更新结果数据之前,所述数据同步方法还包括:
从所述收集表端,获取所述收集表的初始数据,所述初始数据包括所述收集表标识、和多个目标数据项;
为所述目标数据项生成数据项标识,将所述数据项标识存储到数据项标识表中,并将所述目标数据项写入与所述收集表标识对应的所述在线表格。
14.根据权利要求13所述的数据同步方法,其特征在于,在从所述收集表端,获取所述收集表的初始数据之后,所述数据同步方法还包括:
获取所述收集表端的权限数据;
基于所述权限数据,对所述收集表端进行第一鉴权。
15.根据权利要求13所述的数据同步方法,其特征在于,所述为所述目标数据项生成数据项标识,将所述数据项标识存储到数据项标识表中,并将所述目标数据项写入与所述收集表标识对应的所述在线表格,包括:
获取并行的多个第二进程;
针对每个所述目标数据项,利用一个所述第二进程生成所述数据项标识,将所述数据项标识存储到所述数据项标识表中,并将所述目标数据项写入与所述收集表标识对应的所述在线表格。
16.根据权利要求13所述的数据同步方法,其特征在于,在将所述数据项标识存储到数据项标识表中,并将所述目标数据项写入与所述收集表标识对应的所述在线表格之后,所述数据同步方法还包括:
向所述收集表端返回已写入所述在线表格的所述目标数据项的第一标识;
从所述收集表端,接收带有所述第一标识的写入结果查询请求;
如果在所述数据项标识表中查找到所述第一标识,向所述收集表端返回写入成功的写入结果。
17.一种数据同步装置,其特征在于,包括:
第一获取单元,用于从收集表端,获取对收集表进行更新得到的收集表更新结果数据,所述收集表更新结果数据包含收集表标识;
第一分类单元,用于将所述收集表更新结果数据,按照所述收集表标识分类存储在结果数据流水表中;
第一读取单元,用于通过写表格组件,从所述结果数据流水表中按照所述收集表标识读取所述收集表标识下的所述收集表更新结果数据;
第一写入单元,用于将所述收集表标识下的所述收集表更新结果数据,写入所述在线表格端的与所述收集表标识对应的在线表格。
18.一种电子设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至16任意一项所述的数据同步方法。
19.一种计算机可读存储介质,所述存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至16任意一项所述的数据同步方法。
20.一种计算机程序产品,该计算机程序产品包括计算机程序,所述计算机程序被计算机设备的处理器读取并执行,使得该计算机设备执行权利要求1至16任意一项所述的数据同步方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311289858.XA CN117349376A (zh) | 2023-09-28 | 2023-09-28 | 数据同步方法、相关装置及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311289858.XA CN117349376A (zh) | 2023-09-28 | 2023-09-28 | 数据同步方法、相关装置及介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117349376A true CN117349376A (zh) | 2024-01-05 |
Family
ID=89366077
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311289858.XA Pending CN117349376A (zh) | 2023-09-28 | 2023-09-28 | 数据同步方法、相关装置及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117349376A (zh) |
-
2023
- 2023-09-28 CN CN202311289858.XA patent/CN117349376A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109949111B (zh) | 电子票据标识分配方法、电子票据生成方法、装置及系统 | |
CN111831748B (zh) | 数据同步方法、装置及存储介质 | |
CN111555963B (zh) | 消息推送方法、装置、电子设备及存储介质 | |
KR101750429B1 (ko) | 공동 편집을 위한 문서 편집 시스템 및 방법 | |
CN107451853B (zh) | 一种红包实时派发的方法、装置、系统及存储介质 | |
CN111399764B (zh) | 数据存储方法、读取方法、装置、设备及存储介质 | |
CN104348859B (zh) | 文件同步方法、装置、服务器、终端及系统 | |
CN108334514B (zh) | 数据的索引方法以及装置 | |
CN104915855B (zh) | 订单抢单率的预估方法及装置 | |
US20180188990A1 (en) | Method, apparatus and system for inserting disk | |
CN105813037B (zh) | 短信并发业务处理方法及装置 | |
US11252121B2 (en) | Message sending method and terminal device | |
CN107094085B (zh) | 一种信令传送方法及装置 | |
CN113407356A (zh) | 数据处理方法、装置、电子设备及存储介质 | |
CN115098889B (zh) | 一种权限管理的方法、装置、设备及存储介质 | |
CN106293996B (zh) | 数据同步方法、主设备、备份设备和系统 | |
CN109542841B (zh) | 集群中创建数据快照的方法及终端设备 | |
CN117349376A (zh) | 数据同步方法、相关装置及介质 | |
CN111309693A (zh) | 一种数据同步方法、装置、系统、电子设备及存储介质 | |
CN108829735B (zh) | 并行执行计划的同步方法、装置、服务器及存储介质 | |
KR20120073799A (ko) | 클라우드 스토리지 기반의 데이터 동기화 및 서비스 제공 장치와 방법 | |
CN107526530B (zh) | 数据处理方法和设备 | |
CN111953722B (zh) | 一种终端通讯录的同步方法及装置 | |
CN107633180B (zh) | 公安系统的数据查询方法及系统 | |
CN114254030A (zh) | 一种数据同步方法、系统、终端设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication |