数据同步控制装置和数据同步系统及方法转让专利

申请号 : CN201610772200.8

文献号 : CN107784016B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 李建星

申请人 : 北京京东尚科信息技术有限公司北京京东世纪贸易有限公司

摘要 :

本公开实施例提供了一种数据同步控制装置和数据同步系统及方法。所述方法包括:配置系统中数据节点之间的数据流向,生成数据流向配置信息;读取所述数据流向配置信息以及第一数据节点和第二数据节点中的数据的来源标记,根据所述数据流向配置信息和所述数据的来源标记生成增量数据控制信息;根据所述增量数据控制信息生成增量数据,向所述第二数据节点发送所述增量数据并更新所述第二数据节点中所述增量数据的来源标记。应用本公开实施例提供的方法可以解决数据反向传导和循环传导造成的数据回流问题,从而减少数据存储所需资源,提升数据传输效率,减少网络带宽资源的占用。

权利要求 :

1.一种数据同步控制装置,包括:

数据流向配置模块,用于配置系统中数据节点之间的数据流向,生成数据流向配置信息;

增量数据控制模块,用于读取所述数据流向配置信息以及第一数据节点和第二数据节点中的数据的来源标记,根据所述数据流向配置信息判断所述第一数据节点和所述第二数据节点之间的数据流是否有效,如果所述第一数据节点和所述第二数据节点之间的数据流有效,则根据所述数据的来源标记生成增量数据控制信息,并将所述增量数据控制信息发送给所述第一数据节点,还用于更新所述第一数据节点向所述第二数据节点发送的增量数据的来源标记。

2.根据权利要求1所述的装置,其中,所述数据流向配置信息包括:源数据节点、目的数据节点和数据流向有效性标识,

其中,所述数据流向有效性标识用于表示所述源数据节点和所述目的数据节点之间的数据流向是否有效。

3.根据权利要求2所述的装置,其中,所述来源标记包括:

数据生成节点,表示系统中最早产生该数据的数据节点;

数据生成时间,表示系统中最早产生该数据的时间起点;

数据来源节点,表示将该数据发送至本数据节点的源数据节点;

数据更新时间,表示该数据完整发送至本数据节点的时间点。

4.根据权利要求3所述的装置,其中,所述增量数据控制模块包括:数据流向判断单元,用于根据所述数据流向配置信息和所述第二数据节点中的数据的来源标记,判断所述第一数据节点是否需要向所述第二数据节点发送数据;

第一数据筛选单元,用于获取满足第一条件的第二数据节点中的数据所对应的数据生成节点的信息,其中,所述第一条件为第二数据节点中来源标记中数据生成时间大于等于第一数据节点最近一次数据同步的起始时间,且数据更新时间大于等于第二数据节点本次数据同步的起始时间;

第二数据筛选单元,用于根据所述数据生成节点的信息查找满足第二条件的第一数据节点中的数据,根据查找到的数据生成所述增量数据控制信息,其中,所述第二条件为第一数据节点中来源标记中数据生成节点不是所述对应的数据生成节点或所述第二数据节点,且数据生成时间或数据更新时间大于等于第一数据节点最近一次数据同步的起始时间;

控制信息发送单元,用于发送所述增量数据控制信息给所述第一数据节点;

来源标记更新单元,用于更新所述第一数据节点向所述第二数据节点发送的增量数据的数据来源节点为第一数据节点,更新所述增量数据的数据更新时间为第二数据节点接收到所述增量数据的时间或第二数据节点完成对所述增量数据存储的时间。

5.一种数据同步系统,包括:

权利要求1至4任一权利要求所述的数据同步控制装置;

第一数据节点,用于根据所述增量数据控制信息生成增量数据,向所述第二数据节点发送所述增量数据;

第二数据节点,用于存储所述第一数据节点发送的所述增量数据。

6.一种数据同步方法,包括:

配置系统中数据节点之间的数据流向,生成数据流向配置信息;

读取所述数据流向配置信息以及第一数据节点和第二数据节点中的数据的来源标记,根据所述数据流向配置信息判断所述第一数据节点和所述第二数据节点之间的数据流是否有效,如果所述第一数据节点和所述第二数据节点之间的数据流有效,则根据所述数据流向配置信息和所述数据的来源标记生成增量数据控制信息;

根据所述增量数据控制信息生成增量数据,向所述第二数据节点发送所述增量数据并更新所述第二数据节点中所述增量数据的来源标记。

7.根据权利要求6所述的方法,其中,所述数据流向配置信息包括:源数据节点、目的数据节点和数据流向有效性标识,

其中,所述数据流向有效性标识用于表示所述源数据节点和所述目的数据节点之间的数据流向是否有效。

8.根据权利要求7所述的方法,其中,所述来源标记包括:

数据生成节点,表示系统中最早产生该数据的数据节点;

数据生成时间,表示系统中最早产生该数据的时间起点;

数据来源节点,表示将该数据发送至本数据节点的源数据节点;

数据更新时间,表示该数据完整发送至本数据节点的时间点。

9.根据权利要求8所述的方法,其中,所述根据所述数据流向配置信息和所述数据的来源标记生成增量数据控制信息包括:根据所述数据流向配置信息和所述第二数据节点中的数据的来源标记,判断所述第一数据节点是否需要向所述第二数据节点发送数据;

在所述第一数据节点需要向所述第二数据节点发送数据的情况下,根据所述第一数据节点中的数据的来源标记和所述第二数据节点中的数据的来源标记生成所述增量数据控制信息。

10.根据权利要求9所述的方法,其中,所述根据所述数据流向配置信息和所述第二数据节点中的数据的来源标记,判断所述第一数据节点是否需要向所述第二数据节点发送数据包括:判断以所述第一数据节点为源数据节点,以所述第二数据节点为目的数据节点的数据流向是否有效;

在以所述第一数据节点为源数据节点,以所述第二数据节点为目的数据节点的数据流向有效的情况下,如果第二数据节点中数据来源节点为第一数据节点的所有数据的数据更新时间均小于第二数据节点本次数据同步的起始时间,则第一数据节点需要向第二数据节点发送数据。

11.根据权利要求9所述的方法,其中,所述根据所述第一数据节点中的数据的来源标记和所述第二数据节点中的数据的来源标记生成所述增量数据控制信息包括:获取满足第一条件的第二数据节点中的数据所对应的数据生成节点的信息,其中,所述第一条件为第二数据节点中来源标记中数据生成时间大于等于第一数据节点最近一次数据同步的起始时间,且数据更新时间大于等于第二数据节点本次数据同步的起始时间;

根据所述数据生成节点的信息查找满足第二条件的第一数据节点中的数据,根据查找到的数据生成所述增量数据控制信息,其中,所述第二条件为第一数据节点中来源标记中数据生成节点不是所述对应的数据生成节点或所述第二数据节点,且数据生成时间或数据更新时间大于等于第一数据节点最近一次数据同步的起始时间。

12.根据权利要求8所述的方法,其中,所述更新第二数据表中数据来源标记包括:更新所述第一数据节点向所述第二数据节点发送的增量数据的数据来源节点为第一数据节点,更新所述增量数据的数据更新时间为第二数据节点接收到所述增量数据的时间或第二数据节点完成对所述增量数据存储的时间。

13.一种数据同步控制设备,包括至少一个处理器,与至少一个处理器关联的数据存储器,以及数据存储器中的一组指令,其中所述至少一个处理器执行数据存储器中的所述指令以执行下列操作:配置系统中数据节点之间的数据流向,生成数据流向配置信息;读取所述数据流向配置信息以及第一数据节点和第二数据节点中的数据的来源标记,根据所述数据流向配置信息根据所述数据流向配置信息判断所述第一数据节点和所述第二数据节点之间的数据流是否有效,如果所示第一数据节点和所述第二数据节点之间的数据流有效,则根据所述数据的来源标记生成增量数据控制信息;根据所述增量数据控制信息生成增量数据,向所述第二数据节点发送所述增量数据并更新所述第二数据节点中所述增量数据的来源标记。

说明书 :

数据同步控制装置和数据同步系统及方法

技术领域

[0001] 本公开实施例涉及数据信息处理技术领域,尤其涉及一种数据同步控制装置和数据同步系统及方法。

背景技术

[0002] 目前,在企业内部的众多业务系统之间,很多时候需要进行大批量数据交互(非消息接口的方式)。在两个业务系统之间的数据同步,既有单向同步,也有双向同步,这些数据交互的业务系统构成了复杂的网状结构,导致数据同步时存在数据回流的问题,即同一份数据从业务系统A同步到业务系统B中,而又发生从业务系统B回流到业务系统A中的情况。
[0003] 现有的数据同步的方法很简单,即数据通过全量或者增量方式将数据从业务系统A同步到业务系统B中。所谓全量方式,即将一张表的全部数据一次性的从业务系统A同步到业务系统B中;所谓增量方式,即先判断业务系统A的数据产生时间,每次只将在某一个时间点之后的数据同步到业务系统B中。
[0004] 在实现本发明的过程中,发明人发现现有技术中存在以下问题:
[0005] 在两个业务系统之间数据同步时,未考虑增量数据的来源,造成数据回流;在构成网状结构的多个业务系统数据同步时,未考虑数据循环传导的情况,造成间接的数据回流。
[0006] 因此,现有技术方案无法解决数据反向传导和循环传导造成的数据回流问题,会造成存储资源、网络资源的浪费以及数据传输的效率降低,在整体上无法有效管理多个业务系统之间的数据同步。

发明内容

[0007] 有鉴于此,本公开实施例提供一种数据同步控制装置和数据同步系统及方法,用以解决数据反向传导和循环传导造成的数据回流问题。
[0008] 根据本公开实施例的第一方面,提供一种数据同步控制装置,包括:
[0009] 数据流向配置模块,用于配置系统中数据节点之间的数据流向,生成数据流向配置信息;
[0010] 增量数据控制模块,用于读取所述数据流向配置信息以及第一数据节点和第二数据节点中的数据的来源标记,根据所述数据流向配置信息和所述数据的来源标记生成增量数据控制信息,并将所述增量数据控制信息发送给所述第一数据节点,
[0011] 还用于更新所述第一数据节点向所述第二数据节点发送的增量数据的来源标记。
[0012] 优选地,所述数据流向配置信息包括:
[0013] 源数据节点、目的数据节点和数据流向有效性标识,
[0014] 其中,所述数据流向有效性标识用于表示所述源数据节点和所述目的数据节点之间的数据流向是否有效。
[0015] 优选地,所述来源标记包括:
[0016] 数据生成节点,表示系统中最早产生该数据的数据节点;
[0017] 数据生成时间,表示系统中最早产生该数据的时间起点;
[0018] 数据来源节点,表示将该数据发送至本数据节点的源数据节点;
[0019] 数据更新时间,表示该数据完整发送至本数据节点的时间点。
[0020] 优选地,所述增量数据控制模块包括:
[0021] 数据流向判断单元,用于根据所述数据流向配置信息和所述第二数据节点中的数据的来源标记,判断所述第一数据节点是否需要向所述第二数据节点发送数据;
[0022] 第一数据筛选单元,用于获取满足第一条件的第二数据节点中的数据所对应的数据生成节点的信息,
[0023] 其中,所述第一条件为第二数据节点中来源标记中数据生成时间大于等于第一数据节点最近一次数据同步的起始时间,且数据更新时间大于等于第二数据节点本次数据同步的起始时间;
[0024] 第二数据筛选单元,用于根据所述数据生成节点的信息查找满足第二条件的第一数据节点中的数据,根据查找到的数据生成所述增量数据控制信息,
[0025] 其中,所述第二条件为第一数据节点中来源标记中数据生成节点不是所述对应的数据生成节点或所述第二数据节点,且数据生成时间或数据更新时间大于等于第一数据节点最近一次数据同步的起始时间;
[0026] 控制信息发送单元,用于发送所述增量数据控制信息给所述第一数据节点;
[0027] 来源标记更新单元,用于更新所述第一数据节点向所述第二数据节点发送的增量数据的数据来源节点为第一数据节点,更新所述增量数据的数据更新时间为第二数据节点接收到所述增量数据的时间或第二数据节点完成对所述增量数据存储的时间。
[0028] 根据本公开实施例的第二方面,提供一种数据同步系统,包括:
[0029] 根据本公开实施例的第一方面所述的数据同步控制装置;
[0030] 第一数据节点,用于根据所述增量数据控制信息生成增量数据,向所述第二数据节点发送所述增量数据;
[0031] 第二数据节点,用于存储所述第一数据节点发送的所述增量数据。
[0032] 根据本公开实施例的第三方面,提供一种数据同步方法,包括:
[0033] 配置系统中数据节点之间的数据流向,生成数据流向配置信息;
[0034] 读取所述数据流向配置信息以及第一数据节点和第二数据节点中的数据的来源标记,根据所述数据流向配置信息和所述数据的来源标记生成增量数据控制信息;
[0035] 根据所述增量数据控制信息生成增量数据,向所述第二数据节点发送所述增量数据并更新所述第二数据节点中所述增量数据的来源标记。
[0036] 优选地,所述数据流向配置信息包括:
[0037] 源数据节点、目的数据节点和数据流向有效性标识,
[0038] 其中,所述数据流向有效性标识用于表示所述源数据节点和所述目的数据节点之间的数据流向是否有效。
[0039] 优选地,所述来源标记包括:
[0040] 数据生成节点,表示系统中最早产生该数据的数据节点;
[0041] 数据生成时间,表示系统中最早产生该数据的时间起点;
[0042] 数据来源节点,表示将该数据发送至本数据节点的源数据节点;
[0043] 数据更新时间,表示该数据完整发送至本数据节点的时间点。
[0044] 优选地,所述根据所述数据流向配置信息和所述数据的来源标记生成增量数据控制信息包括:
[0045] 根据所述数据流向配置信息和所述第二数据节点中的数据的来源标记,判断所述第一数据节点是否需要向所述第二数据节点发送数据;
[0046] 在所述第一数据节点需要向所述第二数据节点发送数据的情况下,根据所述第一数据节点中的数据的来源标记和所述第二数据节点中的数据的来源标记生成所述增量数据控制信息。
[0047] 优选地,所述根据所述数据流向配置信息和所述第二数据节点中的数据的来源标记,判断所述第一数据节点是否需要向所述第二数据节点发送数据包括:
[0048] 判断以所述第一数据节点为源数据节点,以所述第二数据节点为目的数据节点的数据流向是否有效;
[0049] 在以所述第一数据节点为源数据节点,以所述第二数据节点为目的数据节点的数据流向有效的情况下,如果第二数据节点中数据来源节点为第一数据节点的所有数据的数据更新时间均小于第二数据节点本次数据同步的起始时间,则第一数据节点需要向第二数据节点发送数据。
[0050] 优选地,所述根据所述第一数据节点中的数据的来源标记和所述第二数据节点中的数据的来源标记生成所述增量数据控制信息包括:
[0051] 获取满足第一条件的第二数据节点中的数据所对应的数据生成节点的信息,[0052] 其中,所述第一条件为第二数据节点中来源标记中数据生成时间大于等于第一数据节点最近一次数据同步的起始时间,且数据更新时间大于等于第二数据节点本次数据同步的起始时间;根据所述数据生成节点的信息查找满足第二条件的第一数据节点中的数据,根据查找到的数据生成所述增量数据控制信息,
[0053] 其中,所述第二条件为第一数据节点中来源标记中数据生成节点不是所述对应的数据生成节点或所述第二数据节点,且数据生成时间或数据更新时间大于等于第一数据节点最近一次数据同步的起始时间。
[0054] 优选地,所述更新第二数据表中数据来源标记包括:
[0055] 更新所述第一数据节点向所述第二数据节点发送的增量数据的数据来源节点为第一数据节点,更新所述增量数据的数据更新时间为第二数据节点接收到所述增量数据的时间或第二数据节点完成对所述增量数据存储的时间。根据本公开实施例的第四方面,提供一种数据同步控制设备,包括至少一个处理器,与至少一个处理器关联的数据存储器,以及数据存储器中的一组指令,其中所述至少一个处理器执行数据存储器中的所述指令以执行下列操作:配置系统中数据节点之间的数据流向,生成数据流向配置信息;读取所述数据流向配置信息以及第一数据节点和第二数据节点中的数据的来源标记,根据所述数据流向配置信息和所述数据的来源标记生成增量数据控制信息;根据所述增量数据控制信息生成增量数据,向所述第二数据节点发送所述增量数据并更新所述第二数据节点中所述增量数据的来源标记。
[0056] 由上述技术方案可见,本公开实施例能够解决数据反向传导和循环传导造成的数据回流问题,从而减少数据存储所需资源,提升数据传输效率,减少网络带宽资源的占用。
[0057] 根据本发明的第五方面,提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机指令,所述指令被处理器执行时实现上述数据同步控制的方法。
[0058] 本公开实施例中,在两个数据节点之间数据同步的情况下,通过根据数据生成节点对增量数据进行筛选,解决数据回流的问题;在多系统之间数据同步的情况下,通过根据数据流向配置信息和来源标记对增量数据进行筛选,解决数据循环传导造成的数据回流问题。从而减少数据存储所需资源,提升数据传输效率,减少网络带宽资源的占用。

附图说明

[0059] 通过参照以下附图对本公开实施例的描述,本公开实施例的上述以及其它目的、特征和优点将更为清楚,在附图中:
[0060] 图1为本公开实施例提供的数据同步方法的流程图;
[0061] 图2为本公开实施例提供的数据同步方法的流程图;
[0062] 图3为本公开实施例提供的数据同步控制装置的结构示意图;
[0063] 图4为本公开实施例提供的数据同步系统的结构示意图;
[0064] 图5为本公开实施例提供的数据同步控制设备的结构示意图。

具体实施方式

[0065] 下面将结合附图,对本公开实施例中的技术方案进行清楚、完整地描述。显然,所描述的实施例仅仅是本公开一部分实施例,而不是全部的实施例。基于本公开中的实施例,本领域普通技术人员在没有付出创造性劳动前提下所获得的所有其他实施例,都属于本公开保护的范围。
[0066] 附图中的流程图、框图图示了本发明实施例的方法、系统、装置的可能的体系框架、功能和操作,流程图和框图上的方框可以代表一个模块、程序段或仅仅是一段代码,所述模块、程序段和代码都是用来实现规定逻辑功能的可执行指令。也应当注意,所述实现规定逻辑功能的可执行指令可以重新组合,从而生成新的模块和程序段。因此附图的方框以及方框顺序只是用来更好的图示实施例的过程和步骤,而不应以此作为对发明本身的限制。
[0067] 图1为本公开实施例提供的数据同步方法的流程图,如图1所示,所述方法具体由如下步骤实现:
[0068] 在步骤S101中,配置系统中数据节点之间的数据流向,生成数据流向配置信息。
[0069] 在一些实施例中,所述数据流向配置信息包括:源数据节点、目的数据节点和数据流向有效性标识。
[0070] 其中,所述数据流向有效性标识用于表示所述源数据节点和所述目的数据节点之间的数据流向是否有效。
[0071] 例如,可以将生成的数据流向配置信息记录到一个配置文件中,所述配置文件可以为一个具有固定格式的带有表头的表格。截取所述表格的一部分如下:
[0072]
[0073]
[0074] 如上所示,可知有一源数据节点A,与之相对的有目的数据节点B、C、D、E,通过读取源数据节点A与各个目的数据节点B、C、D、E之后的数据流向有效性标识,便可以判断对应的两个数据节点间的数据流向是否有效。如上表,源数据节点A和目的数据节点B之后的数据流向有效性标识为1,则表示源数据节点A到目的数据节点B的数据流向是有效的;源数据节点A和目的数据节点C、D、E之后的数据流向有效性标识均为0,则表示源数据节点A到目的数据节点C、D、E的数据流向均是无效的。
[0075] 如果在整个系统中有5个数据节点,即A、B、C、D、E,那么在一个完整的配置文件中会分别记录B、C、D、E作为源数据节点,源数据节点以外的其他数据节点作为目的数据节点时的数据流向有效性标识,规则同上。整个系统中有N个数据节点时,包含有源数据节点、目的数据节点和数据流向有效性标识的配置记录数M是数据节点数N的两两排列组合,即满足以下公式:
[0076]
[0077] 在步骤S102中,读取所述数据流向配置信息以及第一数据节点和第二数据节点中的数据的来源标记,根据所述数据流向配置信息和所述数据的来源标记生成增量数据控制信息。
[0078] 在一些实施例中,所述来源标记包括:
[0079] 数据生成节点,表示系统中最早产生该数据的数据节点;
[0080] 数据生成时间,表示系统中最早产生该数据的时间起点;
[0081] 数据来源节点,表示将该数据发送至本数据节点的源数据节点;
[0082] 数据更新时间,表示该数据完整发送至本数据节点的时间点。
[0083] 可以通过在数据节点中存储的数据表中新增来源标记这一字段的设计方法实现。
[0084] 例如,数据节点中存储的数据表的原始字段的表结构为:
[0085]字段1 字段2 字段3
[0086] 则新增来源标记字段后表结构可以设计如下:
[0087]
[0088] 以上4个字段在网状系统中的每一个数据节点内需要数据同步的表中都要设置。
[0089] 在一些实施例中,所述根据所述数据流向配置信息和所述数据的来源标记生成增量数据控制信息包括:
[0090] 根据所述数据流向配置信息和所述第二数据节点中的数据的来源标记,判断所述第一数据节点是否需要向所述第二数据节点发送数据;
[0091] 在所述第一数据节点需要向所述第二数据节点发送数据的情况下,根据所述第一数据节点中的数据的来源标记和所述第二数据节点中的数据的来源标记生成所述增量数据控制信息。
[0092] 在一些实施例中,所述根据所述数据流向配置信息和所述第二数据节点中的数据的来源标记,判断所述第一数据节点是否需要向所述第二数据节点发送数据包括:
[0093] 判断以所述第一数据节点为源数据节点,以所述第二数据节点为目的数据节点的数据流向是否有效;
[0094] 在以所述第一数据节点为源数据节点,以所述第二数据节点为目的数据节点的数据流向有效的情况下,如果第二数据节点中数据来源节点为第一数据节点的所有数据的数据更新时间均小于第二数据节点本次数据同步的起始时间,则第一数据节点需要向第二数据节点发送数据。
[0095] 例如,在整个系统中有5个数据节点,即A、B、C、D、E,其中,A数据节点到B数据节点的数据流向有效性标识为1,即A数据节点到B数据节点的数据流向有效,以A数据节点到B数据节点的数据同步为例,详细说明生成增量数据控制信息的步骤,所述步骤包括:
[0096] 在步骤a中,读取数据流向配置信息,即检索到A数据节点到B数据节点的数据流向有效性标识为1,则判定A数据节点到B数据节点的数据流向为有效流向,执行步骤b,否则结束A数据节点到B数据节点的数据同步。
[0097] 在步骤b中,读取B数据节点中存储的数据表中的所属字段为来源标记字段中数据来源节点和数据更新时间两个字段的数据信息,如果数据来源节点为A数据节点,且数据更新时间均在t2时刻(B数据节点本次数据同步的起始时刻)之前,则判定A数据节点到B数据节点的数据同步未开始,执行步骤c,如果数据来源节点为A数据节点,且数据更新时间在t2时刻或t2时刻之后,则判定A数据节点到B数据节点的数据同步已完成,结束A数据节点到B数据节点的数据同步。
[0098] 在步骤c中,读取数据流向配置信息,获取目的数据节点是B数据节点且数据流向有效性标识为1的配置信息中对应的源数据节点。查询数据流向配置信息结果如下:
[0099]源数据节点 目的数据节点 数据流向有效性标识
A B 1
C B 1
[0100] 即对应的源数据节点有A数据节点和C数据节点,记录除本次数据同步的源数据节点(A数据节点)外的其他源数据节点(C数据节点)到“变量列表”中,如果有多个其他源数据节点,都要记录到“变量列表”中,然后执行步骤d。
[0101] 在步骤d中,读取B数据节点中存储的数据表中的所属字段为数据来源节点和数据更新时间的数据信息,依次针对上一步骤记录的“变量列表”所列的源数据节点(本例中只有一个C数据节点)进行以下判断:
[0102] 如果数据来源节点为C数据节点,且数据更新时间均在t2时刻之前,则设置“变量列表”中C数据节点的“变量标志”为0,表示C数据节点到B数据节点的同步数据并未开始;如果数据来源节点为C,且数据更新时间在t2时刻或t2时刻之后,则设置“变量列表”中C数据节点的“变量标志”为1,表示C数据节点到B数据节点的同步数据已完成。如果上一步骤记录的“变量列表”中还有其他源数据节点,则继续判断,直至“变量列表”中的全部源数据节点的“变量标志”都设置完成,执行步骤e。
[0103] 在步骤e中,首先进行第一次查询,查询A数据节点的中存储的数据表中同时满足以下条件的数据:
[0104] 条件1.数据生成节点不是B数据节点;
[0105] 条件2.数据生成时间在t1时刻(A数据节点最近一次数据同步的起始时间)或t1时刻之后;
[0106] 条件3.数据来源系统不是“变量列表”中“变量标志”为1的源数据节点(本例中,如果“变量列表”中C数据节点的“变量标志”为1,表示C数据节点到B数据节点的同步数据已完成,则数据来源系统不能是C数据节点);
[0107] 条件4.数据更新时间在t1时刻或t1时刻之后的数据。
[0108] 然后,获取B数据节点中存储的数据表中所有数据的数据生成节点和所述数据生成节点对应的最大数据生成时间,即最接近对当前时刻的数据生成时间。例如,数据生成节点为A数据节点,则其对应的最大数据生成时间为所有以A数据节点为数据生成节点的数据所对应的数据生成时间中最接近当前时刻的数据生成时间。
[0109] 最后,进行第二次查询,在第一次查询的基础上查询:
[0110] α.第一次查询结果中,数据生成节点未在B数据节点中存储的数据表中出现的数据。
[0111] β.第一次查询结果中,满足下述条件的数据:
[0112] 数据生成节点在B数据节点中存储的数据表中出现,且前述数据生成节点(在B数据节点中存储的数据表中出现的数据生成节点)对应的数据生成时间大于前述数据生成节点在B数据节点中存储的数据表中对应的最大数据生成时间(最接近当前时刻的数据生成时间)。
[0113] 以上两部分数据α和β的合集,作为第二次查询的结果,根据所述第二次查询的结果生成增量数据控制信息。
[0114] 在一些实施例中,所述根据所述第一数据节点中的数据的来源标记和所述第二数据节点中的数据的来源标记生成所述增量数据控制信息包括:
[0115] 获取满足第一条件的第二数据节点中的数据所对应的数据生成节点的信息;根据所述数据生成节点的信息查找满足第二条件的第一数据节点中的数据,根据查找到的数据生成所述增量数据控制信息。
[0116] 其中,所述第一条件为第二数据节点中来源标记中数据生成时间大于等于第一数据节点最近一次数据同步的起始时间,且数据更新时间大于等于第二数据节点本次数据同步的起始时间;所述第二条件为第一数据节点中来源标记中数据生成节点不是所述对应的数据生成节点或所述第二数据节点,且数据生成时间或数据更新时间大于等于第一数据节点最近一次数据同步的起始时间。
[0117] 例如,作为一种可替代的方案,接上述步骤b,判定A数据节点到B数据节点的数据同步未开始则执行步骤f。
[0118] 在步骤f中,查询B数据节点中存储的数据表中数据生成时间在t1时刻(A数据节点最近一次数据同步的起始时间)或t1时刻之后,且数据更新时间在t2时刻或t2时刻之后的数据所对应的数据生成节点;
[0119] 查询A数据节点中存储的数据表中数据生成节点不是上述查询到的数据生成节点或B数据节点,且数据生成时间或数据更新时间在t1时刻或t1时刻之后的数据,根据查询到的数据生成增量数据控制信息。
[0120] 在步骤S103中,根据所述增量数据控制信息生成增量数据,向所述第二数据节点发送所述增量数据并更新所述第二数据节点中所述增量数据的来源标记。
[0121] 在一些实施例中,所述更新第二数据表中数据来源标记包括:
[0122] 更新所述第一数据节点向所述第二数据节点发送的增量数据的数据来源节点为第一数据节点,更新所述增量数据的数据更新时间为第二数据节点接收到所述增量数据的时间或第二数据节点完成对所述增量数据存储的时间。
[0123] 例如,由A数据节点根据增量数据控制信息生成增量数据,并同步传输到B数据节点,同时更新B数据节点存储的包含增量数据的数据表中。其中,数据生成节点和数据生成时间取增量数据中的字段信息,数据来源节点取A数据节点,数据更新时间更新为B数据节点接收到所述增量数据的时间t3(可能与t2时刻重合,也可能在t2时刻之后)。结束本次A数据节点到B数据节点的数据同步。
[0124] 本公开实施例提供的数据同步方法,通过配置系统中数据节点之间的数据流向,对数据添加来源标记,根据所述数据流向,所述来源标记包括的数据生成节点、数据生成时间、数据来源节点和数据更新时间在增量同步的基础上对增量数据进行逻辑判断,解决了数据反向传导和循环传导造成的数据回流问题。
[0125] 图2为本公开实施例提供的数据同步方法的流程图,如图2所示,所述方法具体由如下步骤实现:
[0126] 在步骤S201中,配置系统中数据节点之间的数据流向,生成数据流向配置信息。
[0127] 在一些实施例中,所述数据流向配置信息包括:
[0128] 源数据节点、目的数据节点和数据流向有效性标识。
[0129] 其中,所述数据流向有效性标识用于表示所述源数据节点和所述目的数据节点之间的数据流向是否有效。
[0130] 在一可选的实施例中,所述数据流向有效性标识为1表示所述源数据节点和所述目的数据节点之间的数据流向有效,所述数据流向有效性标识为0表示所述源数据节点和所述目的数据节点之间的数据流向无效。
[0131] 例如,A节点为源数据节点,B节点为目的数据节点。数据流向有效性标识为1表示A节点到B节点的数据流向有效。
[0132] 在一可选的实施例中,所述数据流向配置信息可以保存于一可读文件中,方便后续步骤调用读取。
[0133] 在步骤S202中,读取所述数据流向配置信息以及第一数据节点和第二数据节点中的数据的来源标记。
[0134] 在一些实施例中,所述来源标记包括:
[0135] 数据生成节点,表示系统中最早产生该数据的数据节点;
[0136] 数据生成时间,表示系统中最早产生该数据的时间起点;
[0137] 数据来源节点,表示将该数据发送至本数据节点的源数据节点;
[0138] 数据更新时间,表示该数据完整发送至本数据节点的时间点。
[0139] 在步骤S203中,判断以所述第一数据节点为源数据节点,以所述第二数据节点为目的数据节点的数据流向是否有效。若有效则进行步骤S204,否则进行步骤S206。
[0140] 在步骤S204中,判断第二数据节点中数据来源节点为第一数据节点的所有数据的数据更新时间是否均小于第二数据节点本次数据同步的起始时间。若是则进行步骤S205,否则进行步骤S206。
[0141] 第二数据节点中数据来源节点为第一数据节点的所有数据的数据更新时间均小于第二数据节点本次数据同步的起始时间,则说明第一数据节点未向第二数据节点同步。
[0142] 在步骤S205中,获取满足第一条件的第二数据节点中的数据所对应的数据生成节点的信息。
[0143] 在一些实施例中,所述第一条件为第二数据节点中来源标记中数据生成时间大于等于第一数据节点最近一次数据同步的起始时间,且数据更新时间大于等于第二数据节点本次数据同步的起始时间。
[0144] 在一可选的实施例中,所述数据生成节点的信息包括:在第二数据节点本次数据同步的过程中,已经通过第一数据节点外的其他路径将所生成的数据同步给第二数据节点的数据节点名称或标识。
[0145] 在步骤S206中,跳过第一数据节点和第二数据节点间的数据同步。
[0146] 在一些实施例中,跳过第一数据节点和第二数据节点间的数据同步后,可以继续按照所述方法进行其他数据节点同第二数据节点的数据同步。在第二数据节点的本次数据同步完成后,进行其他数据节点间的同步。
[0147] 在步骤S207中,根据所述数据生成节点的信息查找满足第二条件的第一数据节点中的数据,根据查找到的数据生成所述增量数据控制信息。
[0148] 在一些实施例中,所述第二条件为来源标记中数据生成节点不是所述对应的数据生成节点或所述第二数据节点,且数据生成时间或数据更新时间大于等于第一数据节点最近一次数据同步的起始时间。
[0149] 在一可选的实施例中,所述增量数据控制信息包含所有需要在第二数据节点本次数据同步过程中发送给第二数据节点的数据在第一数据节点中的索引或存储位置。
[0150] 在步骤S208中,根据所述增量数据控制信息生成增量数据,向所述第二数据节点发送所述增量数据。
[0151] 在一可选的实施例中,由第一数据节点根据所述增量数据控制信息生成增量数据,向所述第二数据节点发送所述增量数据。
[0152] 在步骤S209中,更新增量数据的数据来源节点为第一数据节点,数据更新时间为第二数据节点接收到所述增量数据的时间或第二数据节点完成对所述增量数据存储的时间。
[0153] 在一可选的实施例中,步骤S209中所述的更新在第一数据节点根据所述增量数据控制信息生成增量数据的同时进行。
[0154] 在一可选的实施例中,步骤S209中所述的更新在向所述第二数据节点发送所述增量数据后进行。
[0155] 本公开实施例提供的数据同步方法,通过多层逻辑判断,筛选出符合条件的数据,仅根据筛选结果生成增量数据,不再生成会导致数据回流问题的数据,从根本上减少数据存储所需资源,提升数据传输效率,减少网络带宽资源的占用。
[0156] 其次,所述方法的适用范围不限于应用系统的类型(事务性、分析型)、数据存储的方式(数据库表、数据文件)、以及系统的不同部署方式(同地、异地),只要可以构成数据流向的系统,均可以通过本方法避免数据回流问题。
[0157] 图3为本公开实施例提供的数据同步控制装置的结构示意图,如图3所示,数据同步控制装置30包括:数据流向配置模块301和增量数据控制模块302,增量数据控制模块302包括:数据流向判断单元3021、第一数据筛选单元3022、第二数据筛选单元3023、控制信息发送单元3024和来源标记更新单元3025。
[0158] 数据流向配置模块301用于配置系统中数据节点之间的数据流向,生成数据流向配置信息。
[0159] 在一些实施例中,所述数据流向配置信息包括:
[0160] 源数据节点、目的数据节点和数据流向有效性标识。
[0161] 其中,所述数据流向有效性标识用于表示所述源数据节点和所述目的数据节点之间的数据流向是否有效。
[0162] 例如,可以将生成的数据流向配置信息记录到一个配置文件中,所述配置文件可以为一个具有固定格式的带有表头的表格。截取所述表格的一部分如下:
[0163]源数据节点 目的数据节点 数据流向有效性标识
A B 1
A C 0
A D 0
A E 0
[0164] 如上所示,可知有一源数据节点A,与之相对的有目的数据节点B、C、D、E,通过读取源数据节点A与各个目的数据节点B、C、D、E之后的数据流向有效性标识,便可以判断对应的两个数据节点间的数据流向是否有效。如上表,源数据节点A和目的数据节点B之后的数据流向有效性标识为1,则表示源数据节点A到目的数据节点B的数据流向是有效的;源数据节点A和目的数据节点C、D、E之后的数据流向有效性标识均为0,则表示源数据节点A到目的数据节点C、D、E的数据流向均是无效的。
[0165] 如果在整个系统中有5个数据节点,即A、B、C、D、E,那么在一个完整的配置文件中会分别记录B、C、D、E作为源数据节点,源数据节点以外的其他数据节点作为目的数据节点时的数据流向有效性标识,规则同上。整个系统中有N个数据节点时,包含有源数据节点、目的数据节点和数据流向有效性标识的配置记录数M是数据节点数N的两两排列组合,即满足以下公式:
[0166]
[0167] 数据流向判断单元3021用于根据所述数据流向配置信息和所述第二数据节点中的数据的来源标记,判断所述第一数据节点是否需要向所述第二数据节点发送数据。
[0168] 在一些实施例中,通过采用对数据表进行添加来源标记字段的设计方法添加来源标记,需要在表中增加四个字段:
[0169] 数据生成节点,表示系统中最早产生该数据的数据节点;
[0170] 数据生成时间,表示系统中最早产生该数据的时间起点;
[0171] 数据来源节点,表示将该数据发送至本数据节点的源数据节点;
[0172] 数据更新时间,表示该数据完整发送至本数据节点的时间点。
[0173] 以上四个字段称为来源标记字段,在系统中的每一个数据节点内需要数据同步的表中都要设置。
[0174] 例如,数据节点中存储的数据表的原始字段的表结构为:
[0175]字段1 字段2 字段3
[0176] 则新增来源标记字段后表结构可以设计如下:
[0177]
[0178] 以上4个字段在网状系统中的每一个数据节点内需要数据同步的表中都要设置。
[0179] 例如,判断所述第一数据节点是否需要向所述第二数据节点发送数据可以通过以下步骤完成:
[0180] 在步骤a中,读取数据流向配置信息,即检索到A数据节点到B数据节点的数据流向有效性标识为1,则判定A数据节点到B数据节点的数据流向为有效流向,执行步骤b,否则结束A数据节点到B数据节点的数据同步。
[0181] 在步骤b中,读取B数据节点中存储的数据表中的所属字段为来源标记字段中数据来源节点和数据更新时间两个字段的数据信息,如果数据来源节点为A数据节点,且数据更新时间均在t2时刻(B数据节点本次数据同步的起始时刻)之前,则判定A数据节点到B数据节点的数据同步未开始,需要向所述第二数据节点发送数据;如果数据来源节点为A数据节点,且数据更新时间在t2时刻或t2时刻之后,则判定A数据节点到B数据节点的数据同步已完成,结束A数据节点到B数据节点的数据同步。
[0182] 第一数据筛选单元3022用于获取满足第一条件的第二数据节点中的数据所对应的数据生成节点的信息。
[0183] 其中,所述第一条件为第二数据节点中来源标记中数据生成时间大于等于第一数据节点最近一次数据同步的起始时间,且数据更新时间大于等于第二数据节点本次数据同步的起始时间。
[0184] 例如,接上述步骤b,判定A数据节点到B数据节点的数据同步未开始则执行步骤c。
[0185] 在步骤c中,查询B数据节点中存储的数据表中数据生成时间在t1时刻(A数据节点最近一次数据同步的起始时间)或t1时刻之后,且数据更新时间在t2时刻或t2时刻之后的数据所对应的数据生成节点;
[0186] 第二数据筛选单元3023用于根据所述数据生成节点的信息查找满足第二条件的第一数据节点中的数据,根据查找到的数据生成所述增量数据控制信息。
[0187] 其中,所述第二条件为第一数据节点中来源标记中数据生成节点不是所述对应的数据生成节点或所述第二数据节点,且数据生成时间或数据更新时间大于等于第一数据节点最近一次数据同步的起始时间。
[0188] 例如,接上述步骤c,在步骤d中,查询A数据节点中存储的数据表中数据生成节点不是上述查询到的数据生成节点或B数据节点,且数据生成时间或数据更新时间在t1时刻或t1时刻之后的数据,根据查询到的数据生成增量数据控制信息。
[0189] 在一些实施例中,增量数据控制模块302可以仅包括一个数据筛选单元,前述一个数据筛选单元的结构、功能及与其他模块的关系不限于第一数据筛选单元3022和第二数据筛选单元3023的结构、功能及与其他模块的关系。例如,前述一个数据筛选单元可以通过以下步骤根据所述数据流向配置信息和所述数据的来源标记生成增量数据控制信息:
[0190] 接上述步骤b,在步骤e中,读取数据流向配置信息,获取目的数据节点是B数据节点且数据流向有效性标识为1的配置信息中对应的源数据节点。查询数据流向配置信息结果如下:
[0191]源数据节点 目的数据节点 数据流向有效性标识
A B 1
C B 1
[0192] 即对应的源数据节点有A数据节点和C数据节点,记录除本次数据同步的源数据节点(A数据节点)外的其他源数据节点(C数据节点)到“变量列表”中,如果有多个其他源数据节点,都要记录到“变量列表”中,然后执行步骤f。
[0193] 在步骤f中,读取B数据节点中存储的数据表中的所属字段为数据来源节点和数据更新时间的数据信息,依次针对上一步骤记录的“变量列表”所列的源数据节点(本例中只有一个C数据节点)进行以下判断:
[0194] 如果数据来源节点为C数据节点,且数据更新时间均在t2时刻之前,则设置“变量列表”中C数据节点的“变量标志”为0,表示C数据节点到B数据节点的同步数据并未开始;如果数据来源节点为C,且数据更新时间在t2时刻或t2时刻之后,则设置“变量列表”中C数据节点的“变量标志”为1,表示C数据节点到B数据节点的同步数据已完成。如果上一步骤记录的“变量列表”中还有其他源数据节点,则继续判断,直至“变量列表”中的全部源数据节点的“变量标志”都设置完成,执行步骤g。
[0195] 在步骤g中,首先进行第一次查询,查询A数据节点的中存储的数据表中同时满足以下条件的数据:
[0196] 条件1.数据生成节点不是B数据节点;
[0197] 条件2.数据生成时间在t1时刻(A数据节点最近一次数据同步的起始时间)或t1时刻之后;
[0198] 条件3.数据来源系统不是“变量列表”中“变量标志”为1的源数据节点(本例中,如果“变量列表”中C数据节点的“变量标志”为1,表示C数据节点到B数据节点的同步数据已完成,则数据来源系统不能是C数据节点);
[0199] 条件4.数据更新时间在t1时刻或t1时刻之后的数据。
[0200] 然后,获取B数据节点中存储的数据表中所有数据的数据生成节点和所述数据生成节点对应的最大数据生成时间,即最接近对当前时刻的数据生成时间。例如,数据生成节点为A数据节点,则其对应的最大数据生成时间为所有以A数据节点为数据生成节点的数据所对应的数据生成时间中最接近当前时刻的数据生成时间。
[0201] 最后,进行第二次查询,在第一次查询的基础上查询:
[0202] α.第一次查询结果中,数据生成节点未在B数据节点中存储的数据表中出现的数据。
[0203] β.第一次查询结果中,满足下述条件的数据:
[0204] 数据生成节点在B数据节点中存储的数据表中出现,且前述数据生成节点(在B数据节点中存储的数据表中出现的数据生成节点)对应的数据生成时间大于前述数据生成节点在B数据节点中存储的数据表中对应的最大数据生成时间(最接近当前时刻的数据生成时间)。
[0205] 以上两部分数据α和β的合集,作为第二次查询的结果,即为满足第二条件的第一数据节点中的数据。根据所述第二次查询的结果生成增量数据控制信息。
[0206] 控制信息发送单元3024用于发送所述增量数据控制信息给所述第一数据节点。
[0207] 来源标记更新单元3025用于更新增量数据的数据来源节点为第一数据节点,数据更新时间为第二数据节点本次数据同步的起始时间。
[0208] 例如,由A数据节点根据增量数据控制信息生成增量数据,并同步传输到B数据节点,同时更新B数据节点存储的包含增量数据的数据表中。其中,数据生成节点和数据生成时间取增量数据中的字段信息,数据来源节点取A数据节点,数据更新时间更新为B数据节点接收到所述增量数据的时间t3(可能与t2时刻重合,也可能在t2时刻之后)。结束本次A数据节点到B数据节点的数据同步。
[0209] 上述装置可以置于数据节点上,也可以置于独立于数据节点其他设备上。
[0210] 本公开实施例提供的数据同步控制装置,能够实现通过配置系统中数据节点之间的数据流向,读取数据的来源标记,根据所述数据流向,所述来源标记包括的数据生成节点、数据生成时间、数据来源节点和数据更新时间在增量同步的基础上对增量数据进行逻辑判断,筛选出不会导致数据回流的增量数据。解决了数据反向传导和循环传导造成的数据回流问题。
[0211] 其次,所述装置的适用范围不限于应用系统的类型(事务性、分析型)、数据存储的方式(数据库表、数据文件)、以及系统的不同部署方式(同地、异地),只要可以构成数据流向的系统,均可以通过本装置避免数据回流问题。
[0212] 图4为本公开实施例提供的数据同步系统的结构示意图,如图4所示,所述系统包括:数据同步控制装置30、第一数据节点401和第二数据节点402。
[0213] 第一数据节点401用于根据所述增量数据控制信息生成增量数据,向所述第二数据节点发送所述增量数据。
[0214] 第二数据节点402用于存储所述第一数据节点发送的所述增量数据。
[0215] 本公开实施例提供的数据同步系统,能够实现通过配置系统中数据节点之间的数据流向,对数据添加来源标记,读取数据的来源标记,根据所述数据流向,所述来源标记包括的数据生成节点、数据生成时间、数据来源节点和数据更新时间在增量同步的基础上对增量数据进行逻辑判断,筛选出不会导致数据回流的数据,仅根据筛选结果生成增量数据。解决了数据反向传导和循环传导造成的数据回流问题,从根本上减少数据存储所需资源,提升数据传输效率,减少网络带宽资源的占用。
[0216] 图5为本公开实施例提供的数据同步控制设备的结构示意图,如图5所示,所述数据同步控制设备50包括一个处理器501和一个与处理器501关联的存储器502,存储器502中存储有一组指令,其中处理器501执行存储器502中存储的所述指令以执行下列操作:配置系统中数据节点之间的数据流向,生成数据流向配置信息;读取所述数据流向配置信息以及第一数据节点和第二数据节点中的数据的来源标记,根据所述数据流向配置信息和所述数据的来源标记生成增量数据控制信息;根据所述增量数据控制信息生成增量数据,向所述第二数据节点发送所述增量数据并更新所述第二数据节点中所述增量数据的来源标记。
[0217] 专业人员应该还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。
专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本公开的范围。
[0218] 结合本文中所公开的实施例描述的方法或算法的步骤可以用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
[0219] 以上所述的具体实施方式,对本公开的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本公开的具体实施方式而已,并不用于限定本公开的保护范围,凡在本公开的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本公开的保护范围之内。