一种数据对比方法及装置与流程

文档序号:11407459阅读:281来源:国知局
一种数据对比方法及装置与流程

本发明涉及数据迁移技术领域,更具体地说,涉及一种数据对比方法及装置。



背景技术:

随着系统的不断发展,原有的旧系统从启用到被新系统取代,在其使用期间往往积累了大量珍贵的历史数据,其中许多历史数据都是新系统顺利启用所必须的,此时则需要将这些历史数据由旧系统中迁移至新系统中。具体来说,数据迁移,就是将这些历史数据进行清洗、转换,并装载到新系统中的过程。数据在迁移完成前后必须保证数据的正确性、完整性。现有技术在这两方面做的都没有问题,但是都存在数据对比的速度缓慢的问题,特别是对于大数据量来说情况更严重。

综上所述,现有技术中用于在数据迁移完成前后实现数据对比的技术方案存在对比速度缓慢的问题。



技术实现要素:

本发明的目的是提供一种数据对比方法及装置,以解决现有技术中用于在数据迁移完成前后实现数据对比的技术方案存在的对比速度缓慢的问题。

为了实现上述目的,本发明提供如下技术方案:

一种数据对比方法,包括:

由数据迁移得到的多个数据表中确定出目标数据表,并为每个所述目标数据表生成一个对应的调度线程;

利用每个调度线程基于对应目标数据表的行数生成多个子线程;

利用每个调度线程将对应目标数据表按行数划分成多个子表,并利用每个目标数据表对应的多个子线程对该目标数据表的多个子表并行进行数据对比操作。

优选的,由数据迁移得到的多个数据表中确定出目标数据表,包括:

获取数据迁移得到的每个数据表的大小,并确定数据表的大小大于预设值的数据表为目标数据表。

优选的,为每个所述目标数据表生成一个对应的调度线程,包括:

在cpu的多个cpu核上生成与每个所述目标数据表对应的调度线程,其中所述cpu核与所述调度线程一一对应。

优选的,利用每个目标数据表对应的多个子线程对该目标数据表的多个子表并行进行数据对比操作,包括:

如果任一所述目标数据表的子表数量大于对应子线程的数量,则在该目标数据表的调度线程接收到任一对应子线程完成数据对比操作的消息后,利用所述调度线程指示该子线程对未被进行过数据对比操作的其他对应子表进行数据对比操作。

优选的,还包括:

如果任一子线程在进行数据对比操作过程中出现错误,则重启该子线程。

一种数据对比装置,包括:

第一生成模块,用于:由数据迁移得到的多个数据表中确定出目标数据表,并为每个所述目标数据表生成一个对应的调度线程;

第二生成模块,用于:利用每个调度线程基于对应目标数据表的行数生成多个子线程;

数据对比模块,用于:利用每个调度线程将对应目标数据表按行数划分成多个子表,并利用每个目标数据表对应的多个子线程对该目标数据表的多个子表并行进行数据对比操作。

优选的,所述第一生成模块包括:

确定单元,用于:获取数据迁移得到的每个数据表的大小,并确定数据表的大小大于预设值的数据表为目标数据表。

优选的,所述第一生成模块包括:

生成单元,用于:在cpu的多个cpu核上生成与每个所述目标数据表对应的调度线程,其中所述cpu核与所述调度线程一一对应。

优选的,所述数据对比模块包括:

数据对比单元,用于:如果任一所述目标数据表的子表数量大于对应子线程的数量,则在该目标数据表的调度线程接收到任一对应子线程完成数据对比操作的消息后,利用所述调度线程指示该子线程对未被进行过数据对比操作的其他对应子表进行数据对比操作。

优选的,还包括:

重启模块,用于:如果任一子线程在进行数据对比操作过程中出现错误,则重启该子线程。

本发明提供了一种数据对比方法及装置,其中该方法包括:由数据迁移得到的多个数据表中确定出目标数据表,并为每个所述目标数据表生成一个对应的调度线程;利用每个调度线程基于对应目标数据表的行数生成多个子线程;利用每个调度线程将对应目标数据表按行数划分成多个子表,并利用每个目标数据表对应的多个子线程对该目标数据表的多个子表并行进行数据对比操作。本申请公开的技术方案中,对于数据迁移得到的每个目标数据表,生成对应的调度线程,并利用该调度线程生成多个子线程,以利用同一目标数据表的多个子线程对该目标数据表划分得到的多个子表同时进行并行数据对比操作,从而大大提高了数据对比的对比速度。

附图说明

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

图1为本发明实施例提供的一种数据对比方法的流程图;

图2为本发明实施例提供的一种数据对比装置的结构示意图。

具体实施方式

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

请参阅图1,其示出了本发明实施例提供的一种数据对比方法的流程图,可以包括:

s11:由数据迁移得到的多个数据表中确定出目标数据表,并为每个目标数据表生成一个对应的调度线程。

数据迁移过程完成后,可以在新系统中得到多个存储有迁移的数据的数据表,由这些数据表中确定出目标数据表具体可以是确定全部数据表均为目标数据表,或者按照预先设定的原则选取一部分数据表为目标数据表等,均在本发明的保护范围之内。确定出目标数据表后,为每个目标数据表生成一个对应的调度线程,由此每个目标数据表均具有一个调度线程,该调度线程作为目标数据表及后续生成子线程的管理线程。

s12:利用每个调度线程基于对应目标数据表的行数生成多个子线程。

针对任一目标数据表及对应调度线程对上述利用调度线程生成多个子线程进行具体说明,调度线程可以确定目标数据表的行数,按照行数越多生成的子线程越多的原则生成多个子线程,具体来说,可以预先设定一个原则,如不同的行数范围对应不同的子线程个数,由此确定出目标数据表的行数在哪个行数范围内,进而生成该行数范围对应个数的子线程。

s13:利用每个调度线程将对应目标数据表按行数划分成多个子表,并利用每个目标数据表对应的多个子线程对该目标数据表的多个子表并行进行数据对比操作。

利用每个调度线程将对应目标数据表按行数划分成多个子表,具体来说可以预先设定每个子表包含的指定行数,由此将目标数据表划分成多个具有指定行数个行的子表,当然如果划分得到一些子表之后剩余的行数小于指定行数,则将剩余的这些行作为一个子表,由此利用同一目标数据表的多个子线程对该目标数据表的多个子表同时进行并行数据对比操作。需要说明的是,如果子线程数量大于或者等于对应子表的数量,则可以利用与子表数量相同数量个子线程对这些子表进行并行数据对比,如果子线程数量小于对应子表的数量,则可以利用每个子线程对子线程数量个子表进行并行数据对比。

本申请公开的技术方案中,对于数据迁移得到的每个目标数据表,生成对应的调度线程,并利用该调度线程生成多个子线程,以利用同一目标数据表的多个子线程对该目标数据表划分得到的多个子表同时进行并行数据对比操作,从而大大提高了数据对比的对比速度。

本发明实施例提供的一种数据对比方法,由数据迁移得到的多个数据表中确定出目标数据表,可以包括:

获取数据迁移得到的每个数据表的大小,并确定数据表的大小大于预设值的数据表为目标数据表。

确定出每个数据表的大小,并将其大小大于预先根据实际需要设定的预设值的数据表确定为目标数据表,其中预设值可以为10m,由此对较大的数据表按照本申请公开的步骤s11至步骤s13进行数据对比,对于其他数据表则可以按照现有技术中的方式利用一个线程一行一行的进行数据比对,从而不仅保证了数据对比的速度,而且能够节省资源。

本发明实施例提供的一种数据对比方法,为每个目标数据表生成一个对应的调度线程,可以包括:

在cpu的多个cpu核上生成与每个目标数据表对应的调度线程,其中cpu核与调度线程一一对应。

在cpu的多个cpu核上生成调度线程,且调度线程与cpu核一一对应,由此能够充分利用计算机的cpu资源,进一步加快了数据对比速度。

本发明实施例提供的一种数据对比方法,利用每个目标数据表对应的多个子线程对该目标数据表的多个子表并行进行数据对比操作,可以包括:

如果任一目标数据表的子表数量大于对应子线程的数量,则在该目标数据表的调度线程接收到任一对应子线程完成数据对比操作的消息后,利用调度线程指示该子线程对未被进行过数据对比操作的其他对应子表进行数据对比操作。

各个子线程可以实时向对应调度线程汇报操作执行情况,对于子表数量大于子线程数量的目标数据表,如果调度线程接收到任一子线程返回的操作完成的信息,则利用该子线程实现剩余子表的数据对比操作,从而充分利用了多线程的执行能力,加快了数据对比。如果没有剩余的未被执行数据对比操作的子表,则确定数据对比完成。

本发明实施例提供的一种数据对比方法,还可以包括:

如果任一子线程在进行数据对比操作过程中出现错误,则重启该子线程。

如果子线程在进行数据对比操作中出现错误,则重启该子线程,并在重启后判断该子线程是否能够正常工作,如果是,则利用该子线程实现对应数据对比操作,如果否,则再对该子线程进行重启,并在重启后判断该子线程是否能够正常工作,以此类推,直至该子线程被重启根据实际需要设定的预设次数(如3次)后或者该子线程被重启至能够正常工作后。其中如果子线程重启预设次数后还是不能正常工作,则可以利用调度线程重新生成一个子线程来完成无法正常工作的子线程应完成的工作。从而保证了数据对比操作的顺利进行。

本发明实施例还提供了一种数据对比装置,如图2所示,可以包括:

第一生成模块11,用于:由数据迁移得到的多个数据表中确定出目标数据表,并为每个目标数据表生成一个对应的调度线程;

第二生成模块12,用于:利用每个调度线程基于对应目标数据表的行数生成多个子线程;

数据对比模块13,用于:利用每个调度线程将对应目标数据表按行数划分成多个子表,并利用每个目标数据表对应的多个子线程对该目标数据表的多个子表并行进行数据对比操作。

本发明实施例提供的一种数据对比装置,第一生成模块可以包括:

确定单元,用于:获取数据迁移得到的每个数据表的大小,并确定数据表的大小大于预设值的数据表为目标数据表。

本发明实施例提供的一种数据对比装置,第一生成模块可以包括:

生成单元,用于:在cpu的多个cpu核上生成与每个目标数据表对应的调度线程,其中cpu核与调度线程一一对应。

本发明实施例提供的一种数据对比装置,数据对比模块可以包括:

数据对比单元,用于:如果任一目标数据表的子表数量大于对应子线程的数量,则在该目标数据表的调度线程接收到任一对应子线程完成数据对比操作的消息后,利用调度线程指示该子线程对未被进行过数据对比操作的其他对应子表进行数据对比操作。

本发明实施例提供的一种数据对比装置,还可以包括:

重启模块,用于:如果任一子线程在进行数据对比操作过程中出现错误,则重启该子线程

本发明实施例提供的一种数据对比装置中相关部分的说明请参见本发明实施例提供的一种数据对比方法中对应部分的详细说明,在此不再赘述。另外本发明实施例提供的上述技术方案中与现有技术中对应技术方案实现原理一致的部分并未详细说明,以免过多赘述。

对所公开的实施例的上述说明,使本领域技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

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