用于同步数据的方法及设备与流程

文档序号:12667321阅读:222来源:国知局
用于同步数据的方法及设备与流程

本发明涉及数据信息处理与数据同步领域,具体而言,涉及一种用于同步数据的方法及设备。



背景技术:

现有技术中,为了保证数据库同步性能,数据同步往往采用纵向分组或者横向分组的方式进行。但单纯的纵向分组或者是横向分组都是有很大的缺陷的。

纵向分组是将所有要同步的表根据关联性分组,组间数据并发做同步。这种分组方式在遇到多表的场景时,能够大大的提升数据同步性能。但是纵向分组无法解决个别大表的同步性能问题,当数据库中某些大表的数据量远远大于其他表时,该表所在组的同步性能将远远慢于其他分组,这造成了数据库整体同步完成时间的延后。

横向分组只适用于针对某个单表,将某个单表的数据根据一定的规则分组,组间数据并发做同步。这个分组方式适用于某些大表的单表同步,将大表数据拆分开同步可以成倍的提升大表数据的同步性能。但横向分组不能解决多表同步的场景,且数据是一直不停变化的,横向分组无法保证组间的数据永远均匀。

因此,需要一种新的用于同步数据的方法及设备。

在所述背景技术部分公开的上述信息仅用于加强对本发明的背景的理解,因此它可以包括不构成对本领域普通技术人员已知的现有技术的信息。



技术实现要素:

有鉴于此,本发明提供一种用于同步数据的方法及设备,能够提升数据同步性能。

本发明的其他特性和优点将通过下面的详细描述变得显然,或部分地通过本发明的实践而习得。

根据本发明的一方面,提出了一种用于同步数据的方法,该方法包括:根据预定规则对第一数据表进行分组,生成同步组;判断同步组中的第一数据表的数据量是否超过第一阈值;如果同步组中的第一数据表的数据量超过第一阈值,则将第一数据表中的数据进行分组,生成分组数据;以及将同步组中的数据和/或分组数据并发同步至目标数据库。

在本公开的一种示例性实施例中,还包括:监控源数据库数据的变动;获取变动的数据对应的数据表,生成第一数据表。

在本公开的一种示例性实施例中,还包括:实时监控并发同步过程中的相关数据,根据相关数据,动态调整分组数据。

在本公开的一种示例性实施例中,实时监控并发同步过程中的相关数据,根据相关数据,动态调整分组数据,包括:判断分组数据的积压量是否超过第二阈值,如果分组数据的积压量超过第二阈值,动态调整分组数据。

在本公开的一种示例性实施例中,实时监控并发同步过程中的相关数据,根据相关数据,动态调整分组数据,包括:判断处理分组数据的队列是否空闲;如果处理分组数据的队列空闲,动态调整分组数据。

在本公开的一种示例性实施例中,根据预定规则对第一数据表进行分组,生成同步组,包括:根据第一数据表之间的关联关系,对第一数据表进行分组,生成同步组。

在本公开的一种示例性实施例中,如果同步组中的第一数据表的数据量超过第一阈值,则将第一数据表中的数据进行分组,生成分组数据,包括:确定分组数量;根据分组数量,将第一数据表中的数据进行分组。

在本公开的一种示例性实施例中,根据分组数量,将第一数据表中的数据进行分组,包括:通过分组数量与数据主键值,将第一数据表中的数据进行分组。

在本公开的一种示例性实施例中,包括:获取分组数据中动态调整的数据;通过数据分析将动态调整的数据分配到其他分组数据中。

在本公开的一种示例性实施例中,包括:待其他分组数据处理完成之后,处理动态调整数据。

根据本发明的一方面,提出了一种用于同步数据的设备,该设备包括:同步组模块,用于根据预定规则对第一数据表进行分组,生成同步组;判断模块,用于判断同步组中的第一数据表的数据量是否超过第一阈值;分组模块,用于在同步组中的第一数据表的数据量超过第一阈值,则将第一数据表中的数据进行分组,生成分组数据;以及同步模块,用于将同步组中的数据和/或分组数据并发同步至目标数据库。

在本公开的一种示例性实施例中,还包括:监控模块,用于监控源数据库数据的变动;制表模块,用于获取变动的数据对应的数据表,生成第一数据表。

在本公开的一种示例性实施例中,还包括:调整模块,用于实时监控并发同步过程中的相关数据,根据相关数据,动态调整分组数据。

在本公开的一种示例性实施例中,调整模块,包括:第一判断子模块,用于判断分组数据的积压量是否超过第二阈值;第一动态调整子模块,用于在分组数据的积压量超过第二阈值时,动态调整分组数据;第二判断子模块,用于判断处理分组数据的队列是否空闲;第二动态调整子模块,用于在处理分组数据的队列空闲时,动态调整分组数据。

根据本发明的用于同步数据的方法及设备,能够提升数据同步性能。

应当理解的是,以上的一般描述和后文的细节描述仅是示例性的,并不能限制本发明。

附图说明

通过参照附图详细描述其示例实施例,本发明的上述和其它目标、特征及优点将变得更加显而易见。下面描述的附图仅仅是本发明的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是根据一示例性实施例示出的一种用于同步数据的方法的流程图。

图2是根据另一示例性实施例示出的一种用于同步数据的方法的示意图。

图3是根据另一示例性实施例示出的一种用于同步数据的方法的示意图。

图4是根据另一示例性实施例示出的一种用于同步数据的方法的示意图。

图5是根据另一示例性实施例示出的一种用于同步数据的方法的示意图。

图6是根据一示例性实施例示出的一种用于同步数据的设备的框图。

图7是根据另一示例性实施例示出的一种用于同步数据的设备的框图。

图8是根据另一示例性实施例示出的一种用于同步数据的设备的框图。

具体实施例

现在将参考附图更全面地描述示例实施例。然而,示例实施例能够以多种形式实施,且不应被理解为限于在此阐述的实施例;相反,提供这些实施例使得本发明将全面和完整,并将示例实施例的构思全面地传达给本领域的技术人员。在图中相同的附图标记表示相同或类似的部分,因而将省略对它们的重复描述。

此外,所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施例中。在下面的描述中,提供许多具体细节从而给出对本发明的实施例的充分理解。然而,本领域技术人员将意识到,可以实践本发明的技术方案而没有特定细节中的一个或更多,或者可以采用其它的方法、组元、装置、步骤等。在其它情况下,不详细示出或描述公知方法、装置、实现或者操作以避免模糊本发明的各方面。

附图中所示的方框图仅仅是功能实体,不一定必须与物理上独立的实体相对应。即,可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。

附图中所示的流程图仅是示例性说明,不是必须包括所有的内容和操作/步骤,也不是必须按所描述的顺序执行。例如,有的操作/步骤还可以分解,而有的操作/步骤可以合并或部分合并,因此实际执行的顺序有可能根据实际情况改变。

应理解,虽然本文中可能使用术语第一、第二、第三等来描述各种组件,但这些组件不应受这些术语限制。这些术语乃用以区分一组件与另一组件。因此,下文论述的第一组件可称为第二组件而不偏离本公开概念的教示。如本文中所使用,术语「及/或」包括相关联的列出项目中的任一个及一或多者的所有组合。

本领域技术人员可以理解,附图只是示例实施例的示意图,附图中的模块或流程并不一定是实施本发明所必须的,因此不能用于限制本发明的保护范围。

图1是根据一示例性实施例示出的一种用于同步数据的方法的流程图。

如图1所示,在S102中,根据预定规则对第一数据表进行分组,生成同步组。如上文背景技术中所述,在本实施例中的数据同步的描述的是多个不同的数据库存储相同的数据,并需要保证数据的同步。在任何实时数据同步和复制中,需要考虑如下几个关键问题:事务一致性:在复制目标端需要按照源端相同的事务环境进行提交,确保目标上数据一致性。检查点机制:在抽取和负责时都需要记录检查点位置,确保网络故障或本身故障下仍然能够完整复制。可靠数据传输:需要保证数据传输的完整性,请求和应答,同时提供数据加密和传输过程中的压缩。在本实施例中,带同步的数据为数据表数据,可例如为第一数据表数据,获取待同步的第一数据表之后,根据预定的规则对第一数据表进行分组,可例如,将同步过程中,无关联的表格分到不同的组中,形成同步组。还可例如,按照第一数据表格的数据量进行分组,本发明不以此为限。

在S104中,判断同步组中的第一数据表的数据量是否超过第一阈值。在同步组中,根据组中第一数据表中的数据,进行判断,可例如,设置第一阈值,组中第一数据表中的数据超过预定的第一阈值时,进入步骤S106。还可例如,当组中第一数据表中的数据没有超过预定的第一阈值时,进入步骤S108,不发明不以此为限。

在S106中,将第一数据表中的数据进行分组,生成分组数据。根据第一数据表中的数据量的不同,将超过第一阈值的第一数据表中的数据继续分组。在对第一数据表中所有数据的分组时,可例如,利用第一数据表中数据的编号进行分组,尾号为1和6的数据分到组1,尾号为2和7的分到组2,尾号为3和8的分配到组3,尾号为4和9的分配到组4,尾号为5和0的分配到组5。还可例如,利用第一数据表中数据主键的哈希值进行分组,将哈希值进行处理,以便分组,本发明不以此为限。第一数据表中的数据进行分组之后生成分组数据。

在S108中,将同步组中的数据和/或分组数据并发同步至目标数据库。

根据本发明的用于同步数据的方法,通过将待同步的数据表先进行分组,再将数据表中的数据进行分组的方式,能够提升数据同步性能。

应清楚地理解,本发明描述了如何形成和使用特定示例,但本发明的原理不限于这些示例的任何细节。相反,基于本发明公开的内容的教导,这些原理能够应用于许多其它实施例。

在本公开的一种示例性实施例中,还包括:监控源数据库数据的变动;获取变动的数据对应的数据表,生成第一数据表。数据库中捕获变化数据可例如,有四种手法,本发明不以此为限:

a.触发器:在要抽取的表上建立需要的触发器,一般要建立插入、修改、删除三个触发器,每当源表中的数据发生变化,就被相应的触发器将变化的数据写入一个临时表,抽取线程从临时表中抽取数据,临时表中抽取过的数据被标记或删除。触发器方式的优点是数据抽取的性能较高,缺点是要求业务表建立触发器,对业务系统有一定的影响。

b.时间戳:它是一种基于快照比较的变化数据捕获方式,在源表上增加一个时间戳字段,系统中更新修改表数据的时候,同时修改时间戳字段的值。当进行数据抽取时,通过比较系统时间与时间戳字段的值来决定抽取哪些数据。

c.全表比对:典型的全表比对的方式是采用MD5校验码。ETL工具事先为要抽取的表建立一个结构类似的MD5临时表,该临时表记录源表主键以及根据所有字段的数据计算出来的MD5校验码。每次进行数据抽取时,对源表和MD5临时表进行MD5校验码的比对,从而决定源表中的数据是新增、修改还是删除,同时更新MD5校验码。

d.日志对比:通过分析数据库自身的日志来判断变化的数据。Oracle的改变数据捕获(CDC,Changed Data Capture)技术是这方面的代表。利用CDC,在对源表进行insert、update或delete等操作的同时就可以提取数据,并且变化的数据被保存在数据库的变化表中。这样就可以捕获发生变化的数据,然后利用数据库视图以一种可控的方式提供给目标系统。CDC体系结构基于发布者/订阅者模型。发布者捕捉变化数据并提供给订阅者。

图2是根据另一示例性实施例示出的一种用于同步数据的方法的示意图。如图2所示,在本实施例中,数据源中的数据有变动的时候,获取待同步的第一数据表,将第一数据表经过两次数据处理,可例如:生成同步组(第一次分组)以及生成分组数据(第二次分组),将处理之后的数据发送给目标数据库。

在本公开的一种示例性实施例中,根据预定规则对第一数据表进行分组,生成同步组,包括:根据第一数据表之间的关联关系,对第一数据表进行分组,生成同步组。由于存在关联关系的数据表,在进行数据同步处理时,有处理的先后次序,所以在本实施例中,将没有相关性的第一数据表分为不同的组,然后同步数据,可以使得组中的数据各不影响。分组数量可例如,由待同步的第一数据表的不相干的数据表的数量决定,还可例如,预设置组数,本发明不以此为限。在本实施例中,可例如,预设置的分组数量为5,如图3所示,将不存在关联关系的六张第一数据表分别分配到5个组中,然后并发同步数据。在原有的处理方式中,原有的第一数据表由于部分表格存在关联关系,在实际同步处理时,需要按照顺序同步数据,同步完成总耗时为15秒,分配到5个组中,再进行同步时,各个分组的数据各不影响,组内按时序同步,同步完成,需要耗时为最慢的组的时间,5秒。

根据本发明的用于同步数据的方法,通过将待同步的数据表先进行分组在进行同步的方式,能够解决了多张表串行同步性能慢的问题。可以在保证源数据库和目标数据库数据最终一致的情况下大大提升数据同步性能。

图4是根据另一示例性实施例示出的用于同步数据的方法的示意图。如图4所示,在本公开的一种示例性实施例中,如果同步组中的第一数据表的数据量超过第一阈值,则将第一数据表中的数据进行分组,生成分组数据,包括:确定分组数量;根据分组数量,将第一数据表中的数据进行分组。还包括:通过分组数量与数据主键值,将第一数据表中的数据进行分组。对超过第一阈值的第一数据表的数据进行分组处理,可例如,待分组数量为5。把第一数据表中所有数据分成五组。可例如,将数据主键的hash值余10,然后将计算所得余数为1和6的数据分到组1,余数为2和7的分到组2,余数为3和8的分配到组3,余数为4和9的分配到组4,余数为5和0的分配到组5。如图5所述,按照原有的不对表中数据进行分组的方式同步数据表的时候,总耗时为20秒,在将表中数据进行分组的情况下,同步耗时为6秒,耗时时间为最慢的分组数据同步所花费的时间。

在本公开的一种示例性实施例中,还包括:实时监控并发同步过程中的相关数据,根据相关数据,动态调整分组数据。可例如包括:判断分组数据的积压量是否超过第二阈值,如果分组数据的积压量超过第二阈值,动态调整分组数据。判断处理分组数据的队列是否空闲;如果处理分组数据的队列空闲,动态调整分组数据。实时监控同步过程,在分组数据的积压量超过第二阈值以及处理队列中存在空闲时,调整分组数据。

根据本发明的用于同步数据的方法,通过动态调整分组数据的方法,解决了在同步过程中,由于个别大表数据造成同步时积压大的问题以及单次分组无法保证组间数据永远均匀的问题。

在本公开的一种示例性实施例中,包括:获取分组数据中动态调整的数据;通过数据分析将动态调整的数据分配到其他分组数据中。可例如,分析待处理的数据量,通过数据量调整数据分组。

在本公开的一种示例性实施例中,包括:待其他分组数据处理完成之后,处理动态调整数据。

图5是根据另一示例性实施例示出的用于同步数据的方法的示意图。在本实施例中,如图5所示,监控器监测到分组1积压了10000条数据,而分组2中无积压数据,两个组之间负载不均衡,此时将触发动态重新分组操作:

先计算出各分组积压数据的大致的组成部分,得到:分组1中的数据大约50%属于用户1,50%属于用户6。分组2中无数据积压,为了使两个分组的工作量接近,系统判定将用户1的数据分配到分组2中。此时要注意的是:需要先将分组1中的用户1数据同步完之后才能开始在分组2中同步用户1的数据。步骤如下:

1)分组2开始将用户1的数据读取到内存中,并将用户1的数据先挂起。

2)同时分组1将停止读取用户1的数据,并且优先同步用户1的数据。

3)当分组1中用户1的数据同步完成时,分组1发送信号给分组2,通知分组2开始同步用户1的数据。

4)重新分组完成,监视器继续监控各组间的数据积压情况。

本领域技术人员可以理解实现上述实施例的全部或部分步骤被实现为由CPU执行的计算机程序。在该计算机程序被CPU执行时,执行本发明提供的上述方法所限定的上述功能。所述的程序可以存储于一种计算机可读存储介质中,该存储介质可以是只读存储器,磁盘或光盘等。

此外,需要注意的是,上述附图仅是根据本发明示例性实施例的方法所包括的处理的示意性说明,而不是限制目的。易于理解,上述附图所示的处理并不表明或限制这些处理的时间顺序。另外,也易于理解,这些处理可以是例如在多个模块中同步或异步执行的。

下述为本发明装置实施例,可以用于执行本发明方法实施例。对于本发明装置实施例中未披露的细节,请参照本发明方法实施例。

图6是根据一示例性实施例示出的一种用于同步数据的设备的框图。

其中同步组模块602用于根据预定规则对第一数据表进行分组,生成同步组。

判断模块604用于判断同步组中的第一数据表的数据量是否超过第一阈值。

分组模块606用于在同步组中的第一数据表的数据量超过第一阈值,则将第一数据表中的数据进行分组,生成分组数据。

同步模块608用于将同步组中的数据和/或分组数据并发同步至目标数据库。

根据本发明的用于同步数据的设备,通过将待同步的数据表先进行分组,再将数据表中的数据进行分组的方式,能够提升数据同步性能。

图7是根据另一示例性实施例示出的一种用于同步数据的设备的框图。

其中,监控模块702用于监控源数据库数据的变动。

制表模块704用于获取变动的数据对应的数据表,生成第一数据表。

调整模块706用于实时监控并发同步过程中的相关数据,根据相关数据,动态调整分组数据。

图8是根据另一示例性实施例示出的一种用于同步数据的设备的框图。

其中,第一判断子模块7062用于判断分组数据的积压量是否超过第二阈值。

第一动态调整子模块7064用于在分组数据的积压量超过第二阈值时,动态调整分组数据。

第二判断子模块7066用于判断处理分组数据的队列是否空闲。

第二动态调整子模块7068用于在处理分组数据的队列空闲时,动态调整分组数据。

本领域技术人员可以理解上述各模块可以按照实施例的描述分布于装置中,也可以进行相应变化唯一不同于本实施例的一个或多个装置中。上述实施例的模块可以合并为一个模块,也可以进一步拆分成多个子模块。

通过以上的实施例的描述,本领域的技术人员易于理解,这里描述的示例实施例可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本发明实施例的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、移动终端、或者网络设备等)执行根据本发明实施例的方法。

通过以上的详细描述,本领域的技术人员易于理解,根据本发明实施例的用于同步数据的方法及设备具有以下优点中的一个或多个。

根据一些实施例,本发明的用于同步数据的方法,通过将待同步的数据表先进行分组,再将数据表中的数据进行分组的方式,能够提升数据同步性能。

根据另一些实施例,本发明的用于同步数据的方法,通过将待同步的数据表先进行分组在进行同步的方式,能够解决了多张表串行同步性能慢的问题。可以在保证源数据库和目标数据库数据最终一致的情况下大大提升数据同步性能。

根据另一些实施例,本发明的用于同步数据的方法,通过动态调整分组数据的方法,解决了在同步过程中,由于个别大表数据造成同步时积压大的问题以及单次分组无法保证组间数据永远均匀的问题。

以上具体地示出和描述了本发明的示例性实施例。应可理解的是,本发明不限于这里描述的详细结构、设置方式或实现方法;相反,本发明意图涵盖包含在所附权利要求的精神和范围内的各种修改和等效设置。

此外,本说明书说明书附图所示出的结构、比例、大小等,均仅用以配合说明书所公开的内容,以供本领域技术人员了解与阅读,并非用以限定本公开可实施的限定条件,故不具技术上的实质意义,任何结构的修饰、比例关系的改变或大小的调整,在不影响本公开所能产生的技术效果及所能实现的目的下,均应仍落在本公开所公开的技术内容得能涵盖的范围内。同时,本说明书中所引用的如「上」、「第一」、「第二」及「一」等的用语,也仅为便于叙述的明了,而非用以限定本公开可实施的范围,其相对关系的改变或调整,在无实质变更技术内容下,当也视为本发明可实施的范畴。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1