CN111177144A - 表同步方法、装置、设备、存储介质及系统 - Google Patents
表同步方法、装置、设备、存储介质及系统 Download PDFInfo
- Publication number
- CN111177144A CN111177144A CN201910990117.1A CN201910990117A CN111177144A CN 111177144 A CN111177144 A CN 111177144A CN 201910990117 A CN201910990117 A CN 201910990117A CN 111177144 A CN111177144 A CN 111177144A
- Authority
- CN
- China
- Prior art keywords
- record
- records
- candidate
- synchronized
- target
- 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.)
- Granted
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/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
-
- 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
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)
- Software Systems (AREA)
- Computing Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请公开了一种表同步方法、装置、设备、存储介质及系统,在该方法中,按照待同步的源表中各条记录的先后顺序,从源表中未被读取的记录中读取候选记录;检测候选记录在最近一次同步到目的表之后是否存在数据更新;在候选记录存在数据更新的情况下,将候选记录确定为待同步的目标记录;在从源表读取到设定数量条该目标记录的情况下,将该设定数量条目标记录同步到该目的表;在将该设定数量条目标记录同步到该目的表之后,返回执行该从该源表中未被读取的记录中读取待处理的候选记录的操作,直至完成从该源表到该目的表的数据同步。本申请的方案有利于减低源表的数据库在短时间内出现较大的性能开销,并有利于减少表同步所耗费的网络资源。
Description
技术领域
本申请涉及数据处理技术领域,尤其涉及一种表同步方法、装置、设备、存储介质及系统。
背景技术
表同步,是指将一个表A中的数据同步到另一个表B,使得表B中记录的数据与表A中记录的数据一致。其中,表A为表同步中的源表,而表B就是表同步中的目的表。
在从源表到目的表的数据同步过程中,需要从源表的数据库中读取该源表的数据,并将读取出的数据存储到目的数据库的目的表中。而由于数据库的表中包含的数据量较大,因此,在从源表到目的表的数据同步时,需要读取以及传输的数据量较大,导致源表的数据库出现较大的性能开销,且耗费了较多的网络资源。
发明内容
有鉴于此,本申请提供了一种表同步方法、装置、设备、存储介质及系统,以降低表同步过程中短时间内读取的数据量以及通过网络传输的总数据量,有利于避免源表所在的数据库在短时间内出现较大的性能开销,并有利于减少表同步所需耗费的网络资源。
为实现上述目的,一方面,本申请提供了一种表同步方法,包括:
按照待同步的源表中各条记录的先后顺序,从所述源表中未被读取的记录中读取待处理的候选记录;
检测所述候选记录在最近一次同步到目的表之后是否存在数据更新;
在所述候选记录存在所述数据更新的情况下,将所述候选记录确定为待同步的目标记录;
在从所述源表读取到设定数量条所述目标记录的情况下,将所述设定数量条目标记录同步到所述目的表;
在将所述设定数量条目标记录同步到所述目的表之后,返回执行所述从所述源表中未被读取的记录中读取待处理的候选记录的操作,直至完成从所述源表到所述目的表的数据同步。
在一种可能的情况中,所述检测所述候选记录在最近一次同步到目的表之后是否存在数据更新,包括:
获取所述候选记录关联的历史状态信息,所述历史状态信息用于表征在所述候选记录最近一次同步到所述目的表时,所述候选记录中的历史数据;
依据所述历史状态信息和所述候选记录中当前的数据,检测所述候选记录在最近一次同步到目的表之后是否存在数据更新。
在又一种可能的情况中,所述获取所述候选记录关联的历史状态信息,包括:
获取所述候选记录关联的历史指纹,所述历史指纹为利用设定算法将所述候选记录中包含的历史数据进行转换得到的,所述历史数据为在最近一次将所述候选记录同步到所述目的表时,所述候选记录中记录的数据;
所述依据所述历史状态信息和所述候选记录中当前的数据,检测所述候选记录在最近一次同步到目的表之后是否存在数据更新,包括:
利用所述设定算法将所述候选记录中当前的数据转换为指纹;
比对所述指纹与所述历史指纹是否一致,其中,如所述指纹与所述历史指纹不一致,则表征所述候选记录在最近一次同步到所述目的表之后存在数据更新。
又一方面,本申请还提供了一种表同步系统,包括:
调度服务器和至少一个表同步服务器;
其中,所述调度服务器,用于按照设定的大于二的自然数N,分别为每个表同步服务器分配数值区间,其中,不同表同步服务器对应的数据区间不存在重叠,且所述至少一个表同步服务器对应的至少一个数值区间包括:任意自然数对所述N取模所得到的取值;针对每台表同步服务器,按照待同步的源表中各条记录的顺序号,从所述源表中确定顺序号与所述表同步服务器对应的数值区间满足设定关系的至少一条记录,并将所述至少一条记录组成的记录集合确定为待分配给所述表同步服务器的记录集合,其中,所述设定关系为记录的顺序号对N取模运算后所得到的数值处于所述表同步服务器对应的数值区间;向所述表同步服务器发送表同步任务,所述表同步任务指示有分配给所述表同步服务器的记录集合;
所述表同步服务器,用于按照所述源表的所述记录集合中各条记录的先后顺序,从所述记录集合中未被读取的记录中读取待处理的候选记录;检测所述候选记录在最近一次同步到目的表之后是否存在数据更新;在所述候选记录存在所述数据更新的情况下,将所述候选记录确定为待同步的目标记录;在从所述源表读取到设定数量条所述目标记录的情况下,将所述设定数量条目标记录同步到所述目的表;在将所述设定数量条目标记录同步到所述目的表之后返回执行所述从所述源表中未被读取的记录中读取待处理的候选记录的操作,直至完成从所述源表到所述目的表的数据同步。
又一方面,本申请还提供了一种表同步装置,应用于表同步服务器,包括:
记录读取单元,用于按照待同步的源表中各条记录的先后顺序,从所述源表中未被读取的记录中读取待处理的候选记录;
更新检测单元,用于检测所述候选记录在最近一次同步到目的表之后是否存在数据更新;
记录筛选单元,用于在所述候选记录存在所述数据更新的情况下,将所述候选记录确定为待同步的目标记录;
记录同步单元,用于在从所述源表读取到设定数量条所述目标记录的情况下,将所述设定数量条目标记录同步到所述目的表中;
同步分块触发单元,用于在将所述设定数量条目标记录同步到所述目的表之后,返回执行所述记录读取单元的操作,直至完成从所述源表到所述目的表的数据同步。
又一方面,本申请还提供了一种服务器,包括:
处理器和存储器;
所述处理器,用于调用并执行所述存储器中存储的程序;
所述存储器用于存储所述程序,所述程序至少用于:
按照待同步的源表中各条记录的先后顺序,从所述源表中未被读取的记录中读取待处理的候选记录;
检测所述候选记录在最近一次同步到目的表之后是否存在数据更新;
在所述候选记录存在所述数据更新的情况下,将所述候选记录确定为待同步的目标记录;
在从所述源表读取到设定数量条所述目标记录的情况下,将所述设定数量条目标记录同步到所述目的表;
在将所述设定数量条目标记录同步到所述目的表之后,返回执行所述从所述源表中未被读取的记录中读取待处理的候选记录的操作,直至完成从所述源表到所述目的表的数据同步。
又一方面,本申请还提供了一种存储介质,包括:所述存储介质中存储有计算机可执行指令,所述计算机可执行指令被处理器加载并执行时,实现如上权利要求任一项所述的表同步方法。
经由上述的技术方案可知,在本申请实施例中,从源表中读取到记录之后,会检测该记录在上一次同步到目的表之后是否存在数据更新,只有该记录存在数据更新的情况下,才会将该记录确定为需要同步的目标记录,这样,对于上一次同步之后未存在数据更新的记录则无需再同步到目的表,从而有利于减低表同步过程中需要同步的数据量,有利于减少表同步过程中传输数据所耗费的网络资源。同时,由于本申请每次仅仅将源表中设定数量条记录同步到目的表,从而实现了将源表分块同步到目的表,避免了短时间内从源表所在的源数据库读取大量数据,有利于降低源数据库在不同时间段内的性能开销。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1示出了本申请的表同步方案所适用的一种场景的组成结构示意图;
图2示出了本申请一种表同步方法一个实施例的流程示意图;
图3为本申请实施例中快照表与源表中某条记录的对照示意图;
图4示出了本申请一种表同步方法又一个实施例的流程示意图;
图5示出了本申请的表同步方法所适用的又一种场景的组成架构示意图;
图6示出了本申请一种表同步方法的一种流程交互示意图;
图7a示出了本申请实施例中调度服务器维护的总数值区间通过整数环形式表现的示意图;
图7b示出了调度服务器通过整数环维护各个表同步服务器的数值区间的示意图;
图8示出了本申请一种表同步装置一个实施例的组成结构示意图;
图9示出了本申请一种服务器的一种组成结构示意图。
具体实施方式
本申请的表同步方法适用于从源表到目的表的单向表同步。其中,单向表同步是指将源表中各个记录的数据同步到目的表中。其中,源表所属的数据库为源数据库,而目的表所属的数据库为目的数据库。该源数据库和目的数据库可以为同一个数据库,也可以为不同数据库。
如图1所示,其示出了本申请的表同步方法所适用的一种场景的组成结构示意图。
在图1的场景中包括了:源数据库10、目的数据库20和表同步服务器30。
其中,源数据库维护有多个表,该表可以为数据库表,也可以是视图。其中,视图是指一个虚拟表,其内容由查询定义。同真实的表一样,视图包含一系列带有名称的列和行数据,视图并不在数据库中以存储的数据值集形式存在。行和列数据来自由定义视图的查询所引用的表,并且在引用视图时动态生成。
该源数据库是指待进行数据同步的源表所在的数据库,本申请中的源表可以为数据表,也可以为视图。
相应的,目的数据库为目的表所在的数据库,该目的表为到与源表进行数据同步的表。与源表所包含的类型相似,目的表同样可以为数据表或者视图。
在本申请实施例中,源表到目的表的数据同步适用于只要对最终一致性场景下的表同步,即只要最终目的表与源表中的数据一致即可。
与利用数据库的导出和导入功能实现表同步不同,本申请利用数据库之外的表同步服务器实现表同步。其中,该表同步服务器30可以通过网络与源数据10和目的数据库20建立通信连接。
其中,本申请实施例中,表同步服务器也可以有多台,这多台表同步服务器可以为分布式系统或者集群,以通过多台同步服务器实现表同步。
需要说明的是,在图1中是以源数据库和目的数据库为两个数据库为例,在实际应用中,源数据库也可以与目的数据库为同一个数据库,对此不加限制。
在以上内容的基础上,下面结合流程图对本申请的表同步方法进行介绍。
如图2所示,其示出了本申请一种表同步方法一个实施例的流程示意图,本实施例的表同步方法可以应用于前面提到的表同步服务器,本实施例的方法可以包括:
S201,按照待同步的源表中各条记录的先后顺序,从该源表中未被读取的记录中读取待处理的候选记录。
如,按照源表中各条记录的先后顺序,从先到后读取依次读取记录。每次读取的记录都是之前未被读取过的记录。
可选的,该源表中可以记录有每个记录的唯一标识,且该唯一标识可以表征出记录的顺序,因此,可以按照源表中各条记录的唯一标识,从源表中依次读取记录。例如,源表中可以记录个各个记录的顺序号,源表中各条记录的顺序号依次为1、2、3……,相应的,可以按照记录的顺序号,从源表中依次读取记录。
其中,为了便于与后续需要同步的记录区分,将读取到的记录称为候选记录。
可以理解的是,每次从源表中读取候选记录的数量可以根据需要设定,如,可以每次仅读取一条然后执行后续步骤S202的判断。
可选的,考虑到每次从源数据库中读取数据,都需要占用源数据库的读写数据接口,这样,过于频繁的占用读写数据接口,可能影响到源数据库的读写性能,因此,本申请可以预先设定每次从候选记录中读取的目标数量,然后从源表中读取该目标数量条候选记录。其中,该目标数量为大于等于2的自然数,如,目标数量可以为1000。
进一步的,考虑到本申请实施例的采用分块(分批)实现源表到目的表的同步,因此,为了能够在对源数据库最少读取次数的前提下,保证每次向目的表同步的记录,该目标数量可以大于或者等于后续每次同步记录的条数,即设定数量。
可以理解的是,在该步骤S201之前,表同步服务器还可以确定源数据库中待同步的源表以及待存储同步数据的目的数据库以及目的数据库中的目的表。可选的,表同步服务器还可以在接收到对源表的同步请求之后,在目的数据库构建目的表。
S202,检测该候选记录在最近一次同步到目的表之后是否存在数据更新。
可以理解的是,在最近一次将候选记录中的数据同步到该目的表之后,如果该候选记录中的数据不存在更新,那么目的表中已经记录有该候选记录对应的数据,在该种情况下,为了减少数据同步的数量,降低同步数据所导致的网络资源的消耗,则无需重复将候选记录中的数据同步到目的表。
其中,检测在最近一次将候选记录同步到目的表之后该候选记录是否存在数据更新的方式可以有多种:
在一种可能的情况中,源数据库中可以维护有该源表中各条记录的更新标识信息,记录对应的更新标识信息用于表征该记录在最近一次同步到目的表之后是否存在数据更新。
如,在该源表中的某些列或者某些列集合用于存储该记录的更新标识信息,相应的,源数据库可以确认该记录在最近一次同步到目的表之后该记录中数据存在更新(如记录中的数据改变、被删除或者处于终结状态等)的情况下,在源表中该记录的相应列更新该更新标识信息。例如,某条记录的最近更新时间晚于该记录上一次同步到目的表的时间,则源数据库中需要存储该记录存在更新的更新标识信息。
在以上情况中,需要源数据库在源表中维护相应的标志位或者标识信息,但是很多情况下,源数据库的源表中并不存在以上更新标识信息。
为了解决源表中未存储记录的更新标识信息的问题,在又一种可能的情况中,本申请还可以通过表同步服务器生成源表中各条记录的历史状态信息。其中,记录的历史状态信息用于表征在该记录最近一次同步到目的表时,该记录中的历史数据。其中,各条记录的历史状态信息可以存储到源数据库中,也可以是存储到表同步服务器或者其他设备中。
相应的,在读取到候选记录之后,可以获取该候选记录关联的历史状态信息,并依据该历史状态信息和该候选记录中当前存储的数据,检测该候选记录在最近一次同步到该目的表之后是否存在数据更新。其中,如果根据历史状态信息,确定出该候选记录在最近一次同步到目的表时的数据内容与该候选记录中当前存储的数据不同,则确认该候选记录在最近一次同步到该目的表之后存在数据更新。
其中,表同步服务可以在每次将源表中的记录同步到目的表时,生成源表中该记录的历史状态信息。
其中,该历史状态信息也可以有多种可能。如,较为简单的一种方式为,在源数据库中新增该源表的一个快照表,该快照表中记录了该源表中每条记录在最近一次同步到该目的表时的内容。也就是说,快照表相当于备份了该源表中各条记录在最近一次同步到目的表的数据,因此,该快照表中每条记录对应的数据内容就是该记录的历史状态数据。
相应的,在表同步服务器从源表中读取出候选记录之后,可以获取该快照表中存储的该候选记录中的历史数据内容,并从源表中读取出的该候选记录中当前的数据内容与该快照表中该候选记录的历史数据内容进行比较,以判断该候选记录在最近一次同步到目的表之后是否存在更新。其中,如果源表中该候选记录中的数据内容与该快照表中该候选记录的历史数据内容不一致,则确认该候选记录存在数据更新。
例如,可以参见图3中快照表和源表中某个记录的对比示意图。
如图3所示,上面一行为快照表中标识号为“1137”的记录中各个字段内的数值,即,上一次将该标识号为“1137”的记录同步到该目的表时,该记录中各个字段中的数值。下面一行为源表中标识号为“1137”的记录中各个字段当前的数据。
通过对比快照表和该源表中该记录可以发现:快照表中该记录的字段2中记录的值为“c187”,而源表中该记录的字段2中记录的值为“c186”,因此,源表中该记录中的数据内容相对于快照表中该记录的数据内容发生了改变。
可以理解的是,采用快照表的方式存储各个记录的历史数据内容,需要占据源数据库的较多存储资源,从而影响到源数据库的性能。进一步的,本申请还提供了存储记录的历史状态信息的方式,如,在将源表中的记录同步到目的表的同时或者之后,生成该记录的指纹。其中,该记录的指纹,该指纹是指利用设定算法将该记录中包含的数据进行转换得到的。该设定算法可以为设定的用于将数据转换为用于保证该数据内容的算法。其中,该设定算法为摘要算法,例如,MD5算法或者安全散列算法1(Secure Hash Algorithm 1,SHA-1)等。
相应的,为了判断候选记录是否存在数据更新,可以获取在最近一次将候选记录同步到目的表的情况下,为该候选记录生成的指纹,其中,为了便于区分,将针对候选记录最近一次同步到目的表时,为该候选记录生成的指纹称为历史指纹,该历史指纹为利用设定算法将所述候选记录中包含的历史数据进行转换得到的,该历史数据为在最近一次将该候选记录同步到目的表时,该候选记录中记录的数据。
在该种情况下,判断候选记录是否存在数据更新具体可以为:利用该设定算法将候选记录中当前的数据转换为指纹;然后,比对该指纹与该候选记录的历史指纹是否一致。其中,如基于该候选记录中当前的数据生成的指纹与该候选记录的历史指纹不一致,则说明该候选记录在最近一次同步到目的表之后存在数据更新。
其中,表同步服务器可以生成一个指纹表,指标表中存储有源表中每条记录对应的历史指纹。该指纹表可以存储到源数据库,也可以是存储到表同步服务器或者是其他设备中。
可以理解的是,由于每条记录对应的历史指纹都是基于该记录的数据转换后的字符串,相当于每条记录包含多个字段的数据而言,每个指纹的数据量相对较小,从而有利于减少存储记录的指纹(或者说指纹表)所占据的存储空间。同时,由于生成指纹所需耗费的计算资源较为有限,也有利于降低维护源表中各条记录的历史状态信息所需耗费的计算资源。
S203,在该候选记录存在该数据更新的情况下,将该候选记录确定为待同步的目标记录。
如果该候选记录不存在数据更新,则说明目的表中该记录的数据内容与源表中该记录中的数据内容一致,如无重复将该记录同步到该目的表,在该种情况下,可以将读取到的候选记录剔除。如,在每次读取目标数量条候选记录的情况下,可以将不存在数据更新的候选记录删除,并剩余的候选记录均确定为待同步的目标记录。
相应的,对于存在数据更新的候选记录,则可以保留该候选记录,以将该候选记录作为需要同步到目的表的记录。其中,为了便于区分,将需要不同到目的表的候选记录称为目标记录。
S204,在从该源表读取到设定数量条该目标记录的情况下,将该设定数量条目标记录同步到该目的表。
其中,该设定数量为预先设定的,每次向目的表同步记录的条数。如,每次希望向目的表同步1万条记录,则该设定数量可以为1万。
其中,将目标记录同步的目的表是指将目标记录中的数据内容存储到目的表中该目标记录中,以使得目的表中记录的目标记录与源表中该目标记录的数据内容保持一致。
可以理解的是,目的表和源表可以属于同一个数据库,也可以属于不同的数据库。该目的表所属的目的数据库也可以与源表所属的源数据库属于不同类型的数据库,相应的,目的表和源表也可以属于不同类型的表。在目的表和源表的类型不同的,目的表和源表中字段的形式或者内容也可以会有所差别,因此,本申请可以预先确定目的表和源表中字段之间的映射关系。
如,目的表包括:字段s1、字段s2和字段s3,而源表中字段包括字段m1、字段m2和字段m3,其中,源表中字段m1对应的是目的表中字段s2,而字段m2对应的是目的表中的字段s3;而源表中字段m3对应的目的表中的字段s1。
相应的,可以按照该源表与目的表中字段之间的映射关系,分别将设定数量条目标记录中的每条目标记录同步到该目的表。其中,针对每条目标记录,按照源表与目的表中字段之间的映射关系,分别确定该目标记录中每个字段在目的表中的目的字段,然后将目标记录中每个字段的数值分别存储到该目的表中该记录中相应的目的字段中。
可以理解的是,由于考虑到源表与目的表之间字段的映射关系,本申请还可以实现不同类型数据库中表的同步,降低了数据库的耦合性。
S205,在将该设定数量条目标记录同步到该目的表之后,检测是否完成从源表到目的表的数据同步,如果是,则结束;如果否,则返回执行步骤S201的操作,直至完成从该源表到该目的表的数据同步。
其中,可以检测源表中的各条记录是否均被读取且所有存在数据更新的记录均与同步到目的表,如果是,则确认完成从源表到目的表的数据同步。
在未完成从源表到数据表的数据同步的情况下,记录的同步,如果是,则可以重复前面同步记录到目的表的过程,从而可以每次向目的表同步设定数量条记录,实现将源表分批同步到目的表。
需要说明的是本申请是以源表到目的表的一次数据同步为例说明,在需要周期性将源表同步到目的表时,则每次重复本申请的以上操作即可。
可见,在本申请实施例中,在从源表中读取到记录之后,会检测该记录在上一次同步到目的表之后是否存在数据更新,只有该记录存在数据更新的情况下,才会将该记录确定为需要同步的目标记录,这样,对于上一次同步之后未存在数据更新的记录则无需再同步到目的表,从而有利于减低表同步过程中需要同步的数据量,有利于减少表同步过程中传输数据所耗费的网络资源。
同时,由于本申请每次仅仅将源表中设定数量条记录同步到目的表,从而实现了将源表分块同步到目的表,避免了短时间内从源表所在的源数据库读取大量数据,有利于降低源数据库在不同时间段内的性能开销,从而可以减少数据同步对数据库读写性能的影响,减少由于表同步而影响数据库的业务操作的情况。
另外,与现有的基于数据库内的导入和导出功能实现表同步相比,本申请无需人工参与,大大降低了表同步的复杂度。
为了便于理解本申请的方案,下面以基于源表中各条记录的指纹来判断源表中的记录在上一次不同到目的表之后是否存在更新为例说明。如,参见图4,其示出了本申请一种表同步方法又一个实施例的流程示意图,本实施例的方法可以应用于表同步服务器。本实施例的方法可以包括:
S401,按照待同步的源表中各条记录的先后顺序,从该源表中未被读取的记录中读取目标数量条候选记录。
在本实施例中,以每次从源数据库的源表中读取目标数量条记录为例说明。但是对于前面实施例提到的其他从源表中读取记录的方式也同样适用于本实施例。
S402,获取每条候选记录的历史指纹。
如,按照候选记录的标识号,从指纹表中查询出候选记录对应的历史指纹。
其中,历史指纹为利用设定算法将候选记录中设定的至少部分字段包含的历史数据进行转换得到的。其中,历史数据为在最近一次将该候选记录同步到所述目的表时,候选记录的至少部分字段中存储的数据。
可以理解的是,由于源表中涉及大量的字段,而每条记录都包含各个字段的数值,这样,在字段较多的情况下,每条记录的数据量也相对较大,因此,如果利用算法将记录中所有字段的数据均进行转换,耗费的计算资源也相对较多。
而考虑到表中有些字段之间是存在数据关联变化的,如果两个字段之间存在关联,那么在记录中一个字段的数值发生变化之后,该记录中与该字段存在关联的另一个字段的数值也会发生变化。如,一个企业表中,“企业编码”这一字段就和“企业名称”这一字段属于存在数据关联变化的字段,对于一条记录而言,在该记录中“企业编码”内的数值变化时,“企业名称”中的数值也会相应的变化。
可以理解的是,对于存在数据关联的两个或者多个字段而言,只有根据记录中该两个或多个字段中任意一个字段的数值是否发生变化,便可以判断出该记录中其他存在数据关联的字段内的数值是否存在变化。基于此,本申请可以仅仅依据记录中部分字段的数值计算该记录的指纹。其中,该至少部分字段可以包括相互之间不存在数据关联变化的至少一个字段。
举例说明,假设源表中包括10个字段,分别为字段1到字段10,其中,字段1、字段2和字段3之间存在数据关联变化,而字段4和字段6之间存在数据关联变换,而字段5、字段7和字段8之间也存在数据关联变化,因此,可以设定的部分字段可以为字段1(或者为字段2或字段3)、字段4(或字段6)、字段5(或者,字段7或字段8),字段9和字段10。在该种情况下,在将源表中某条记录对应的设定的部分字段内的数值转换为指纹之后,如果该条记录中某个字段内的值发生变化,则利用该记录中设定的部分字段的数据转换出的指纹也会发生变化。
与前面实施例相似,计算记录的指纹的方式可以采用摘要算法。如,在计算记录的指纹时,可以将该记录中设定的至少一个字段的数值拼成一个字符串,或者是,将记录中设定的每个字段中数值的长度与设定的每个字段的数值依次拼接成为一个字符串。然后,再利用摘要算法等设定算法将拼接成的字符串转换为指纹。
S403,利用设定算法将候选记录中设定的至少一个字段当前的数据转换为指纹。
该步骤为根据从源表中读取出的候选记录中该设定的至少一个字段内的数值转换指纹,其中,该指纹的生成过程可以参见前面提到的指纹生成过程。
S404,针对每条候选记录,比对当前为该候选记录生成的指纹与该候选记录的历史指纹是否一致,如果是,则执行步骤S405;如果否,则执行步骤S405。
S405,保留该候选记录为待同步的目标记录。
S406,如果当前为候选记录生成的指纹与该候选记录的历史指纹不一致,将该候选记录从该读取到的目标数量条候选记录中删除。
S407,检测获取到的作为待同步的目标记录的数量是否达到设定数量条,如果是,则执行步骤S408;如果否,则返回步骤S401,直至能够获取到设定数量条目标记录。
可以理解的是,由于目标数量可能会小于设定数量,从而使得作为待同步的目标记录不足设定数量条。或者是,即使目标数量不小于设定数量,但是由于该目标数量条候选记录中存在一些数据未存在更新的候选记录,这部分数据未存在更新的候选记录未被删除,而仅仅保留数据存在更新的候选记录,因此,作为待同步的目标记录的条数可能会少于该目标数量。在该种情况下,需要继续从源表中读取候选记录,以便继续获得待同步的目标记录。在待同步的目标记录达到设定数量条之后,则可以执行一次记录的同步操作。
可以理解的是,如果获得的目标记录的数量超过该设定数量条,则可以先获取顺序靠前的设定数量条目标记录,并对该设定数量条目标记录执行步骤S408的操作;而剩余的目标记录,则可以在作为下一批到同步到目的表的记录。
S408,将该设定数量条目标记录同步到该目的表。
S409,针对同步到目的表的每条目标记录,利用设定算法分别将每条目标记录中的数据转换为该目标记录的指纹,并存储该目标记录的指纹。
在本实施例中,是以将目标记录同步到目的表之后,生成该目标记录的指纹为例。但是在将目标记录同步到目的表的过程中,为目标记录生成指纹的情况也同样适用于本实施例。
其中,存储该目标记录的指纹实际上是将该目标记录的指纹存储为该目标记录的历史指纹,以便下次将源表向目的表同步时,基于该目标记录的指纹,判断该目标记录是否存在更新。
可以理解的是,在步骤S403转换出该目标记录的指纹的情况下,该步骤也可以是获取基于该目标记录中当前的数据转换出的该指纹,并存储该指纹,而无需重复转换指纹。
S410,检测是否完成从源表到目的表的数据同步,如果是,则结束;如果否,则返回步骤S401。
该步骤S410可以参见前面实施例的相关介绍,在此不再赘述。
可以理解的是,以上实施例中是通过单台表同步服务器或者多台表同步服务器整体实现表同步为例。在实际应用中,为了提高表同步的效率,可以采用多台表同步服务器并行进行表同步,其中,该每台表同步服务器可以受调度服务器的控制完成源表中部分记录向目的表的数据同步。
如图5所示,其示出了本申请的表同步方法所适用的另一种场景的组成架构示意图。
在图5中包括源数据库500、目的数据库510和表同步系统520。
其中,表同步系统包括:调度服务器521和至少一台表同步服务器522。调度服务器与每台表同步服务器之间均通过网络相连。
源数据库中存储有待同步数据的源表,而目的数据库中存储有需要该源表对应的目的表。
其中,源数据库、目的数据库与表同步系统中的调度服务器和表同步服务器通过网络相连。
该调度服务器521,可以为每台表同步服务器分配表同步任务,该表同步任务指示有该源表中分配给该表同步服务器处理的记录集合。该记录集合中包括至少一条记录。表任务指示携带有记录集合中至少一条记录各自的标识号。如,该标识号可以为顺序号。
相应的,表同步服务器522可以根据调用服务器指示的表同步任务,将源表中属于该记录集合内的记录同步到目的表。
具体的,表同步服务器522,用于获得调度服务器指示的记录集合,并按照源表的记录集合中各条记录的先后顺序,从该记录集合中未被读取的记录中读取待处理的候选记录。在读取到候选记录之后,表同步服务器对候选记录的处理以及将记录同步到目的表的过程与前面实施例相似。
可选的,为了能够较为高效且合理的确定出每台表同步服务器所需负责的记录集合,调度服务器可以先为每台表同步服务器分配一个数值区间,其中,不同表同步服务器对应的数值区间不同。
相应的,针对每台表同步服务器,该调度服务器可以依据源表中各条记录的顺序号,确定出的顺序号与调度服务器为该表同步服务器分配的数据取值满足设定关系的至少一条记录。其中,设定关系为记录的顺序号对N取模运算后所得到的数值处于所述表同步服务器对应的数值区间,N为设定的大于二的自然数。相应的,该至少一条记录就是需要表同步服务器处理的记录集合。
可以理解的是,本申请表同步的目的是为了保证目的表与源表中的数据一致,而需要将源表同步到目的表的应用场景有多种。为了便于理解,下面结合本申请的一种应用场景来说明表同步的应用场景。
如图5所示,该场景中可以包括多个终端530,每个终端运行有访问源数据库的业务系统,以使得多种业务系统可以对源数据库中的源表进行写操作。由图5可以看出,用户可以通过终端530可以向源数据库中源表中写入数据。
但是,由于源数据库中查询接口的数量有限,如果用户需要读取源表中的数据时,也从源数据库的源表中读取数据,则会导致源数据库的查询接口不足,影响到源数据库的读写性能。因此,为了提高读写性能,可以为源表创建一个缓存表,该缓存表就是源表中数据需要同步到的目的表。具体的,可以在源数据库之外的目的数据库建立一张目的表,该目的表中的字段与该源表中的字段具有一一映射关系。
相应的,通过本申请的表同步系统可以将源数据库中的源表的数据同步到目的数据库的目的表中。在该种情况下,用户如果需要读取源表中的数据,则可以通过终端530直接对目的数据库中的目的表进行读操作,便可以通过读取目的表获取到所需读取的数据。
当然,以上仅仅是以一种应用场景为例来说明,对于其他需要将源表同步到目的表的应用场景,本申请的方案同样适用。
为了便于理解,通过调度服务器控制表同步服务器实现表同步的过程,下面从调度服务器与表同步服务器的交互过程进行说明。
如,参见图6,其示出了本申请的表同步方法的一种流程交互示意图,本实施例的方法可以包括:
S601,调度服务器按照设定的大于二的自然数N,分别为每个表同步服务器分配数值区间。
其中,不同表同步服务器对应的数据区间不存在重叠,且该至少一个表同步服务器对应的至少一个数值区间包括:任意自然数对该N取模所得到的取值。如,N的取值为100,那么任意自然数对100取模所得到的取值为0到99的所有自然数,因此,该至少一个表同步服务器对应的至少一个数据区间可以组合成【0,99】。
可选的,调度服务器可以按照设定的大于二的自然数N,确定总取值区间,总取值区间包括任意自然数对N取模所得到的取值。如前面例子,N为100,该总取值区间为【0,99】。然后,按照该至少一个表同步服务器的总数量,将总取值区间切分为该总数量个数值区间,并分别将总数量个数值区间分配给该至少一个表同步服务器,以使得每个表同步服务器对应一个数值区间。
其中,每个表同步服务器对应的数值区间为该总取值区间中一段连续的数值区间。
其中,在对总取值区间进行切分时,可以根据表同步服务器的总数量,尽可能平均的切分该总取值区间。如,假设有3台表同步服务器,且N的取值为100,则总取值区间为【0,99】,则可以将总取值区间划分为3个数值区间,分别为【0,32】,【33,65】和【66,99】。
特别的,调度服务器可以维护一个整数环,整数环中包含任意自然数对N取模所得到的整数。如仍以N为100为例,且假设表同步服务器有3台,则调度服务器维护包含0-99在内的100个整数的整数环,如图7a所示。
相应的,根据表同步服务器的数量,可以将该整数环切分为三段,因此,可以从该整数环上取三个点,这三个点分别为0、33和66。这样,通过这三个点可以将整数环切分为三部分。为了使得三部分分别包含以上三个数,则可以将每个数分别减去0.1,则得到-0.1、32.9和65.9这三个数字。然后可以从整数环上找到-0.1、32.9和65.9所对应的点,从而通过这三个数字所在的点将整数环切割为三部分,如图7b所示。具体的,可以得到三个数值区间【-0.1,32.9】,【32.9,65.9】以及【65.9,99】。当然,直接设定数值区间为【0,32】,【33,65】和【66,99】也类似。
需要说明的是,该步骤S601可以在存在将源表同步到目的表的任务时执行,也可以是在调度服务器检测到同步表的任务之前执行,对此不加限制。
S602,针对每台表同步服务器,调度服务器按照待同步的源表中各条记录的顺序号,从该源表中确定顺序号与该表同步服务器对应的数值区间满足设定关系的至少一条记录,并将该至少一条记录组成的记录集合确定为待分配给该表同步服务器的记录集合。
其中,该设定关系为记录的顺序号对N取模运算后所得到的数值处于表同步服务器对应的数值区间。
如,结合前面N取值为100,且存在三台表同步服务器时,可以划分出三个数值区间分别为【-0.1,32.9】,【32.9,65.9】以及【65.9,99】。
假设三台表同步服务器分别为表同步服务器a、表同步服务器b和表同步服务器c,其中,表同步服务器a对应的数值区间为【-0.1,32.9】,表同步服务器b对应的数值区间为【32.9,65.9】,表同步服务器c对应的数值区间为【65.9,99】。在该基础上,如果源表中某条记录的顺序号为101,则该记录对100取模所得到的数值为1,而数值1属于数值区间【-0.1,32.9】,因此,该记录需要分配给表同步服务器a。
可以理解的是,在实际应用中,表同步系统中表同步服务器的数量也会相应变化,在该表同步系统中出现新增或减少表同步服务器时,调度服务器可以重新确定表同步服务器中各台同步服务器所对应的数值区间。
可选的,如果表同步系统新增一个表同步服务器,则调度服务器可以选取包含数据最多的数值区间,然后将该数值区间拆分成两个数值区间,并将拆分出的两个数值区间分配给该数据区间原来对应的表同步服务器以及该新增的表同步服务器,该种方式可以减少由于新增表同步服务器而影响到过多的其他表同步服务器。
特别的,在调度服务器采用整数环维护各个表同步服务器对应的数值区间的情况下,在表同步系统新增了表同步服务器的情况下,可以在最大的数值区间对应的部分插入一个数值点,以将该最大的数值区间划分为两个数值区间。如图7b的例子,中如果出现第4个表同步服务器,如表同步服务器d,可以在整数环中该数值区间【65.9,99】内选取一个中间数值81.9(或者是82等),从而得到数值区间【65.9,81.9】和【81.9,99】,这样,可以将【65.9,81.9】分配给表同步服务器c,而将【81.9,99】这一数值区间分配给表同步服务器d。这样,数值区间重分配的过程仅仅影响到个表同步服务器c对应的数值区间,而对表同步服务器a和表同步服务器b没有影响。
类似的,如果表同步系统减少了一个表同步服务器,则可以减少的该表同步服务器对应的数值区间,分配给数值区间与减少该表同步服务器的数值区间相邻的表同步服务器,以减少干扰到的表同步服务器的数量。仍以图7b中的例子说明,假设去掉了表同步服务器b,则可以将表同步服务器a的数值区间从【-0.1,32.9】变成【-0.1,65.9】。
S603,调度服务器向表同步服务器发送表同步任务。
该表同步任务指示有分配给该表同步服务器的记录集合。如,表同步任务指示有分配给表同步服务器进行数据同步的至少一条记录的顺序号。
S604,表同步服务器响应于调度服务器指示的记录集合,按照该源表的该记录集合中各条记录的先后顺序,从记录集合中未被读取的记录中读取待处理的候选记录。
该步骤中,除了表同步服务器需要从分配的记录集合中读取候选记录外,其具体实现与前面实施例相似,具体可以参照前面实施例的相关介绍,在此不再赘述。
S605,表同步服务器检测该候选记录在最近一次同步到目的表之后是否存在数据更新。
S606,在表同步服务器确认该候选记录存在该数据更新的情况下,将该候选记录确定为待同步的目标记录;
S607,在从该源表读取到设定数量条该目标记录的情况下,将该设定数量条目标记录同步到该目的表;
S608,在将该设定数量条目标记录同步到该目的表之后返回执行该从该源表中未被读取的记录中读取待处理的候选记录的操作,直至完成从该源表到该目的表的数据同步。
其中,该步骤S605到S608可以参照前面实施例的相关介绍,在此不再赘述。
对应本申请的一种表同步方法,本申请还提供了一种表同步装置。
如图8所示,其示出了本申请一种表同步装置的一种组成结构示意图,该一种表同步装置应用于表同步服务器,包括:
记录读取单元801,用于按照待同步的源表中各条记录的先后顺序,从所述源表中未被读取的记录中读取待处理的候选记录;
更新检测单元802,用于检测所述候选记录在最近一次同步到目的表之后是否存在数据更新;
记录筛选单元803,用于在所述候选记录存在所述数据更新的情况下,将所述候选记录确定为待同步的目标记录;
记录同步单元804,用于在从所述源表读取到设定数量条所述目标记录的情况下,将所述设定数量条目标记录同步到所述目的表中;
同步分块触发单元805,用于在将所述设定数量条目标记录同步到所述目的表之后,返回执行所述记录读取单元的操作,直至完成从所述源表到所述目的表的数据同步。
可选的,所述记录同步单元在将所述设定数量条目标记录同步到所述目的表中时,具体用于,依据所述源表与所述目的表中字段之间的映射关系,将所述设定数量条目标记录分别同步到所述目的表。
在一种可能的情况中,所述更新检测单元,包括:
历史状态获取单元,用于获取所述候选记录关联的历史状态信息,所述历史状态信息用于表征在所述候选记录最近一次同步到所述目的表时,所述候选记录中的历史数据;
数据比对单元,用于依据所述历史状态信息和所述候选记录中当前的数据,检测所述候选记录在最近一次同步到目的表之后是否存在数据更新。
可选的,所述历史状态获取单元,包括:
指纹获取单元,用于获取所述候选记录关联的历史指纹,所述历史指纹为利用设定算法将所述候选记录中包含的历史数据进行转换得到的,所述历史数据为在最近一次将所述候选记录同步到所述目的表时,所述候选记录中记录的数据;
所述数据比对单元,包括:
指纹转换单元,用于利用所述设定算法将所述候选记录中当前的数据转换为指纹;
指纹比对单元,用于比对所述指纹与所述历史指纹是否一致,其中,如所述指纹与所述历史指纹不一致,则表征所述候选记录在最近一次同步到所述目的表之后存在数据更新。
可选的,所述历史指纹为利用设定算法将所述候选记录中设定的至少一个字段中包含的历史数据进行转换得到的,其中,所述设定的至少一个字段为所述源表中不存在数据关联变化的字段;
所述指纹转换单元具体为,用于利用所述设定算法将所述候选记录中所述设定的至少一个字段当前的数据转换为指纹。
在一种可能的情况中,该装置还可以包括:
指纹生成单元,用于在所述将所述设定数量条目标记录同步到所述目的表的同时或者之后,利用所述设定算法将所述目标记录中的数据转换为所述目标记录的指纹;
指纹存储单元,用于存储所述目标记录的指纹。
在又一种可能的情况中,该装置还包括:
任务接收单元,用于在所述按记录读取单元从所述源表中未被读取的记录中读取待处理的候选记录之前,获得调度服务器分配的表同步任务,所述表同步任务指示有待同步的源表中分配给所述表同步服务器处理的记录集合,所述记录集合包括所述调度服务器依据所述源表中各条记录的顺序号,确定出的顺序号与所述调度服务器为所述表同步服务器分配的数值区间满足设定关系的记录,其中,所述设定关系为记录的顺序号对N取模运算后所得到的数值处于所述表同步服务器对应的数值区间,N为设定的大于二的自然数;
所述记录读取单元具体为,用于按照所述源表的所述记录集合中各条记录的先后顺序,从所述记录集合中未被读取的记录中读取待处理的候选记录。
又一方面,本申请还提供了一种服务器,如,参见图9,其示出了本申请实施例的表同步方法所适用的服务器的一种组成结构示意图。在图9中,该服务器900可以包括:处理器901和存储器902。
在本申请实施例中,该处理器901,可以为中央处理器9,特定应用集成电路、数字信号处理器(DSP)、现成可编程门阵列(FPGA)或者其他可编程逻辑器件等。
该处理器可以调用存储器902中存储的程序,具体的,可以处理器可以执行前面图2及图6实施例中服务器侧所执行的操作。
存储器902中用于存放一个或者一个以上程序,程序可以包括程序代码,所述程序代码包括计算机操作指令,在本申请实施例中,该存储器中至少存储有用于实现以下功能的程序:
按照待同步的源表中各条记录的先后顺序,从所述源表中未被读取的记录中读取待处理的候选记录;
检测所述候选记录在最近一次同步到目的表之后是否存在数据更新;
在所述候选记录存在所述数据更新的情况下,将所述候选记录确定为待同步的目标记录;
在从所述源表读取到设定数量条所述目标记录的情况下,将所述设定数量条目标记录同步到所述目的表;
在将所述设定数量条目标记录同步到所述目的表之后,返回执行所述从所述源表中未被读取的记录中读取待处理的候选记录的操作,直至完成从所述源表到所述目的表的数据同步。
在一种可能的实现方式中,该存储器902可包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、以上所提到的程序,以及至少一个功能(比如缓存记录等)所需的应用程序等。
可选的,本申请还可以包括:通信接口903、输入单元904和显示器905和通信总线906。
处理器901、存储器902、通信接口903、输入单元904、显示器905、均通过通信总线906完成相互间的通信。
其中,本申请还可以包括输入单元905,该输入单元可以包括感应触摸显示面板上的触摸事件的触摸感应单元、键盘等等。
好该显示器904包括显示面板,如触摸显示面板等。
当然,图9示的服务器结构并不构成对本申请实施例中服务器的限定,在实际应用中服务器可以包括比图9更多或更少的部件,或者组合某些部件。
另一方面,本申请还提供了一种存储介质,该存储介质中存储有计算机可执行指令,所述计算机可执行指令被处理器加载并执行时,实现如上任意一个实施例中的表同步方法。
需要说明的是,本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。对于装置类实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。对所公开的实施例的上述说明,使本领域技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
以上仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (11)
1.一种表同步方法,其特征在于,应用于表同步服务器,包括:
按照待同步的源表中各条记录的先后顺序,从所述源表中未被读取的记录中读取待处理的候选记录;
检测所述候选记录在最近一次同步到目的表之后是否存在数据更新;
在所述候选记录存在所述数据更新的情况下,将所述候选记录确定为待同步的目标记录;
在从所述源表读取到设定数量条所述目标记录的情况下,将所述设定数量条目标记录同步到所述目的表;
在将所述设定数量条目标记录同步到所述目的表之后,返回执行所述从所述源表中未被读取的记录中读取待处理的候选记录的操作,直至完成从所述源表到所述目的表的数据同步。
2.根据权利要求1所述的方法,其特征在于,所述检测所述候选记录在最近一次同步到目的表之后是否存在数据更新,包括:
获取所述候选记录关联的历史状态信息,所述历史状态信息用于表征在所述候选记录最近一次同步到所述目的表时,所述候选记录中的历史数据;
依据所述历史状态信息和所述候选记录中当前的数据,检测所述候选记录在最近一次同步到目的表之后是否存在数据更新。
3.根据权利要求2所述的方法,其特征在于,所述获取所述候选记录关联的历史状态信息,包括:
获取所述候选记录关联的历史指纹,所述历史指纹为利用设定算法将所述候选记录中包含的历史数据进行转换得到的,所述历史数据为在最近一次将所述候选记录同步到所述目的表时,所述候选记录中记录的数据;
所述依据所述历史状态信息和所述候选记录中当前的数据,检测所述候选记录在最近一次同步到目的表之后是否存在数据更新,包括:
利用所述设定算法将所述候选记录中当前的数据转换为指纹;
比对所述指纹与所述历史指纹是否一致,其中,如所述指纹与所述历史指纹不一致,则表征所述候选记录在最近一次同步到所述目的表之后存在数据更新。
4.根据权利要求3所述的方法,其特征在于,在所述将所述设定数量条目标记录同步到所述目的表的同时或者之后,还包括:
利用所述设定算法将所述目标记录中的数据转换为所述目标记录的指纹;
存储所述目标记录的指纹。
5.根据权利要求3所述的方法,其特征在于,所述历史指纹为利用设定算法将所述候选记录中设定的至少一个字段中包含的历史数据进行转换得到的,其中,所述设定的至少一个字段为所述源表中不存在数据关联变化的字段;
所述利用所述设定算法将所述候选记录中当前的数据转换为指纹,包括:
利用所述设定算法将所述候选记录中所述设定的至少一个字段当前的数据转换为指纹。
6.根据权利要求1所述的方法,其特征在于,所述将所述设定数量条目标记录同步到所述目的表,包括:
依据所述源表与所述目的表中字段之间的映射关系,将所述设定数量条目标记录分别同步到所述目的表。
7.根据权利要求1所述的方法,其特征在于,在所述按照待同步的源表中各条记录的先后顺序,从所述源表中未被读取的记录中读取待处理的候选记录之前,还包括:
获得调度服务器分配的表同步任务,所述表同步任务指示有待同步的源表中分配给所述表同步服务器处理的记录集合,所述记录集合包括所述调度服务器依据所述源表中各条记录的顺序号,确定出的顺序号与所述调度服务器为所述表同步服务器分配的数值区间满足设定关系的记录,其中,所述设定关系为记录的顺序号对N取模运算后所得到的数值处于所述表同步服务器对应的数值区间,N为设定的大于二的自然数;
所述按照待同步的源表中各条记录的先后顺序,从所述源表中未被读取的记录中读取待处理的候选记录,包括:
按照所述源表的所述记录集合中各条记录的先后顺序,从所述记录集合中未被读取的记录中读取待处理的候选记录。
8.一种表同步系统,其特征在于,包括:
调度服务器和至少一个表同步服务器;
其中,所述调度服务器,用于按照设定的大于二的自然数N,分别为每个表同步服务器分配数值区间,其中,不同表同步服务器对应的数据区间不存在重叠,且所述至少一个表同步服务器对应的至少一个数值区间包括:任意自然数对所述N取模所得到的取值;针对每台表同步服务器,按照待同步的源表中各条记录的顺序号,从所述源表中确定顺序号与所述表同步服务器对应的数值区间满足设定关系的至少一条记录,并将所述至少一条记录组成的记录集合确定为待分配给所述表同步服务器的记录集合,其中,所述设定关系为记录的顺序号对N取模运算后所得到的数值处于所述表同步服务器对应的数值区间;向所述表同步服务器发送表同步任务,所述表同步任务指示有分配给所述表同步服务器的记录集合;
所述表同步服务器,用于按照所述源表的所述记录集合中各条记录的先后顺序,从所述记录集合中未被读取的记录中读取待处理的候选记录;检测所述候选记录在最近一次同步到目的表之后是否存在数据更新;在所述候选记录存在所述数据更新的情况下,将所述候选记录确定为待同步的目标记录;在从所述源表读取到设定数量条所述目标记录的情况下,将所述设定数量条目标记录同步到所述目的表;在将所述设定数量条目标记录同步到所述目的表之后返回执行所述从所述源表中未被读取的记录中读取待处理的候选记录的操作,直至完成从所述源表到所述目的表的数据同步。
9.一种表同步装置,其特征在于,应用于表同步服务器,包括:
记录读取单元,用于按照待同步的源表中各条记录的先后顺序,从所述源表中未被读取的记录中读取待处理的候选记录;
更新检测单元,用于检测所述候选记录在最近一次同步到目的表之后是否存在数据更新;
记录筛选单元,用于在所述候选记录存在所述数据更新的情况下,将所述候选记录确定为待同步的目标记录;
记录同步单元,用于在从所述源表读取到设定数量条所述目标记录的情况下,将所述设定数量条目标记录同步到所述目的表中;
同步分块触发单元,用于在将所述设定数量条目标记录同步到所述目的表之后,返回执行所述记录读取单元的操作,直至完成从所述源表到所述目的表的数据同步。
10.一种服务器,其特征在于,包括:
处理器和存储器;
所述处理器,用于调用并执行所述存储器中存储的程序;
所述存储器用于存储所述程序,所述程序至少用于:
按照待同步的源表中各条记录的先后顺序,从所述源表中未被读取的记录中读取待处理的候选记录;
检测所述候选记录在最近一次同步到目的表之后是否存在数据更新;
在所述候选记录存在所述数据更新的情况下,将所述候选记录确定为待同步的目标记录;
在从所述源表读取到设定数量条所述目标记录的情况下,将所述设定数量条目标记录同步到所述目的表;
在将所述设定数量条目标记录同步到所述目的表之后,返回执行所述从所述源表中未被读取的记录中读取待处理的候选记录的操作,直至完成从所述源表到所述目的表的数据同步。
11.一种存储介质,其特征在于,包括:所述存储介质中存储有计算机可执行指令,所述计算机可执行指令被处理器加载并执行时,实现如上权利要求1至7任一项所述的表同步方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910990117.1A CN111177144B (zh) | 2019-10-17 | 2019-10-17 | 表同步方法、装置、设备、存储介质及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910990117.1A CN111177144B (zh) | 2019-10-17 | 2019-10-17 | 表同步方法、装置、设备、存储介质及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111177144A true CN111177144A (zh) | 2020-05-19 |
CN111177144B CN111177144B (zh) | 2023-09-26 |
Family
ID=70657017
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910990117.1A Active CN111177144B (zh) | 2019-10-17 | 2019-10-17 | 表同步方法、装置、设备、存储介质及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111177144B (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112232044A (zh) * | 2020-09-23 | 2021-01-15 | 金蝶软件(中国)有限公司 | 调整分录生成方法、装置、计算机设备和存储介质 |
CN112347747A (zh) * | 2020-11-03 | 2021-02-09 | 金蝶云科技有限公司 | 一种表格样式处理方法以及相关装置 |
CN112667745A (zh) * | 2020-12-31 | 2021-04-16 | 北京天融信网络安全技术有限公司 | 数据同步方法、装置、隔离网闸及数据同步系统 |
CN113138927A (zh) * | 2021-04-30 | 2021-07-20 | 北京沃东天骏信息技术有限公司 | 一种软件功能测试方法和装置 |
CN113590714A (zh) * | 2021-07-29 | 2021-11-02 | 东北石油大学 | 一种面向关系数据库的数据同步方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070255763A1 (en) * | 2006-04-27 | 2007-11-01 | International Business Machines Corporation | Database replication method and system |
CN103530290A (zh) * | 2012-07-03 | 2014-01-22 | 深圳市腾讯计算机系统有限公司 | 数据库间的数据迁移方法和系统 |
CN109271450A (zh) * | 2018-10-10 | 2019-01-25 | 北京百度网讯科技有限公司 | 数据库同步方法、装置、服务器和存储介质 |
-
2019
- 2019-10-17 CN CN201910990117.1A patent/CN111177144B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070255763A1 (en) * | 2006-04-27 | 2007-11-01 | International Business Machines Corporation | Database replication method and system |
CN103530290A (zh) * | 2012-07-03 | 2014-01-22 | 深圳市腾讯计算机系统有限公司 | 数据库间的数据迁移方法和系统 |
CN109271450A (zh) * | 2018-10-10 | 2019-01-25 | 北京百度网讯科技有限公司 | 数据库同步方法、装置、服务器和存储介质 |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112232044A (zh) * | 2020-09-23 | 2021-01-15 | 金蝶软件(中国)有限公司 | 调整分录生成方法、装置、计算机设备和存储介质 |
CN112347747A (zh) * | 2020-11-03 | 2021-02-09 | 金蝶云科技有限公司 | 一种表格样式处理方法以及相关装置 |
CN112347747B (zh) * | 2020-11-03 | 2024-03-19 | 金蝶云科技有限公司 | 一种表格样式处理方法以及相关装置 |
CN112667745A (zh) * | 2020-12-31 | 2021-04-16 | 北京天融信网络安全技术有限公司 | 数据同步方法、装置、隔离网闸及数据同步系统 |
CN113138927A (zh) * | 2021-04-30 | 2021-07-20 | 北京沃东天骏信息技术有限公司 | 一种软件功能测试方法和装置 |
CN113138927B (zh) * | 2021-04-30 | 2024-04-16 | 北京沃东天骏信息技术有限公司 | 一种软件功能测试方法和装置 |
CN113590714A (zh) * | 2021-07-29 | 2021-11-02 | 东北石油大学 | 一种面向关系数据库的数据同步方法 |
CN113590714B (zh) * | 2021-07-29 | 2023-09-08 | 东北石油大学 | 一种面向关系数据库的数据同步方法 |
Also Published As
Publication number | Publication date |
---|---|
CN111177144B (zh) | 2023-09-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111177144B (zh) | 表同步方法、装置、设备、存储介质及系统 | |
CN108228817B (zh) | 数据处理方法、装置和系统 | |
CN108427684B (zh) | 数据查询方法、装置及计算设备 | |
KR100856245B1 (ko) | 파일 시스템 장치 및 그 파일 시스템의 파일 저장 및 파일 탐색 방법 | |
EP0586550A1 (en) | Relational data base memory utilization analyzer | |
CN105869057B (zh) | 评论存储设备、评论读取、评论写入方法及装置 | |
CN111399764B (zh) | 数据存储方法、读取方法、装置、设备及存储介质 | |
CN111722918A (zh) | 业务标识码生成方法、装置、存储介质及电子设备 | |
CN111090803A (zh) | 一种数据处理方法、装置、电子设备和存储介质 | |
CN113177090A (zh) | 数据处理方法及装置 | |
CN107943542A (zh) | 一种配置信息管理方法、装置、可读介质及存储控制器 | |
CN111708894B (zh) | 一种知识图谱创建方法 | |
CN110489483B (zh) | 数据同步方法、装置、计算机设备以及存储介质 | |
CN113672692B (zh) | 数据处理方法、装置、计算机设备和存储介质 | |
CN112905587A (zh) | 数据库的数据管理方法、装置及电子设备 | |
CN110928900A (zh) | 多表数据的查询方法、装置、终端以及计算机存储介质 | |
CN103905512A (zh) | 一种数据处理方法和设备 | |
US20240256163A1 (en) | Data Processing Method and Apparatus for Shared Memory, and Device and Medium | |
CN113590643B (zh) | 基于双轨数据库的数据同步方法、装置、设备和存储介质 | |
CN108205559A (zh) | 一种数据管理方法及其设备 | |
CN113934742B (zh) | 数据更新方法、节点信息存储方法、电子设备及介质 | |
CN116069788B (zh) | 数据处理方法、数据库系统、计算机设备和存储介质 | |
CN111259104A (zh) | 一种可定义规则的报表数据同步方法及装置 | |
CN112699127B (zh) | 一种内存数据库数据操作方法及装置 | |
CN116010430B (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
TA01 | Transfer of patent application right | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20230921 Address after: 100190 Beijing Haidian District Zhichun Road 49 No. 3 West 309 Applicant after: TENCENT CLOUD COMPUTING (BEIJING) Co.,Ltd. Address before: 518000 Tencent Building, No. 1 High-tech Zone, Nanshan District, Shenzhen City, Guangdong Province, 35 Floors Applicant before: TENCENT TECHNOLOGY (SHENZHEN) Co.,Ltd. |