一种基于kettle的大数据比对方法及装置与流程

文档序号:15615773发布日期:2018-10-09 21:20阅读:625来源:国知局

本发明涉及计算机技术领域,特别涉及一种基于kettle的大数据比对方法及装置。



背景技术:

随着计算机技术的发展,互联网中的数据呈爆发式增长,如今,大数据作为一种数据趋势,正在席卷全世界。在以数据为中心的产业链条中,数据同步定义了如何获取数据,是数据处理和分析的前提保障。其中,数据比对作为数据同步过程中的关键环节,直接影响着数据同步的效率。

kettle作为一款国外开源的etl工具,常被用于进行数据同步。利用kettle进行数据同步时,需将数据库中的数据传输到kettle中,以在kettle中进行数据进行。

随着大数据的发展,需要进行数据比对的数据量较大,能达到上千万级,将大量的数据从数据库中传输到kettle时,势必导致数据库与kettle的交互十分频繁,这将带来较大的网络及数据库连接消耗,从而容易降低数据比对效率。



技术实现要素:

本发明实施例提供了一种基于kettle的大数据比对方法及装置,能提高数据比对的效率。

第一方面,本发明实施例提供了一种基于kettle的大数据比对方法,包括:

获取数据比对请求;

从预设的源数据库中获取与所述数据比对请求相对应的至少一个源数据记录,并将所述至少一个源数据记录存储至预设内存中;

从预设的目标数据库中获取与所述数据比对请求相对应的至少一个目标数据记录,并将所述至少一个目标数据记录存储至所述预设内存中;

在所述预设内存中对各个所述源数据记录以及各个所述目标数据记录进行比对。

优选地,

在所述在所述预设内存中对各个所述源数据记录以及各个所述目标数据记录进行比对之后,进一步包括:

根据所述预设内存中的比对结果,对所述目标数据库中的所述至少一个目标数据记录进行处理。

优选地,

所述在所述预设内存中对各个所述源数据记录以及各个所述目标数据记录进行比对,以及所述根据所述预设内存中的对比结果,对所述目标数据库中的所述至少一个目标数据记录进行处理,包括:

针对每一个所述源数据记录,均执行:

确定所述源数据记录对应的第一主键;

确定所述至少一个目标数据记录分别对应的至少一个第二主键中,是否存在与所述第一主键相同的目标第二主键,如果是,根据所述源数据记录,对所述目标数据库中的与所述目标第二主键相对应的目标数据记录进行更新,否则,将所述第一主键对应的所述源数据记录插入至所述目标数据库中。

优选地,

在所述从预设的源数据库中获取与所述数据比对请求相对应的至少一个源数据记录之前,进一步包括:

利用kettle的任务设计界面,创建数据同步作业;

所述从预设的源数据库中获取与所述数据比对请求相对应的至少一个源数据记录,包括:

执行所述数据同步作业,以根据kettle的表输入组件中预设的源数据连接,对所述源数据库进行查询,得到所述至少一个源数据记录。

优选地,

所述从预设的目标数据库中获取与所述数据比对请求相对应的至少一个目标数据记录,包括:

执行所述数据同步作业,以根据kettle的表输出组件或插入更新组件中预设的目标数据库连接,对所述目标数据库进行查询,得到所述至少一个目标数据记录。

第二方面,本发明实施例提供了一种基于kettle的大数据比对装置,包括:请求获取单元、源数据获取单元、目标数据获取单元和数据比对单元;其中,

所述请求获取单元,用于获取数据比对请求;

所述源数据获取单元,用于从预设的源数据库中获取与所述数据比对请求相对应的至少一个源数据记录,并将所述至少一个源数据记录存储至预设内存中;

所述目标数据获取单元,用于从预设的目标数据库中获取与所述数据比对请求相对应的至少一个目标数据记录,并将所述至少一个目标数据记录存储至所述预设内存中;

所述数据比对单元,用于在所述预设内存中对各个所述源数据记录以及各个所述目标数据记录进行比对。

优选地,

所述数据比对单元,进一步用于根据所述预设内存中的比对结果,对所述目标数据库中的所述至少一个目标数据记录进行处理。

优选地,

所述数据比对单元,用于针对每一个所述源数据记录,均执行:确定所述源数据记录对应的第一主键;确定所述至少一个目标数据记录分别对应的至少一个第二主键中,是否存在与所述第一主键相同的目标第二主键,如果是,根据所述源数据记录,对所述目标数据库中的与所述目标第二主键相对应的目标数据记录进行更新;否则,将所述第一主键对应的所述源数据记录插入至所述目标数据库中。

优选地,

进一步包括:作业创建单元;其中,

所述作业创建单元,用于利用kettle的任务设计界面,创建数据同步作业;

所述源数据获取单元,用于执行所述数据同步作业,以根据kettle的表输入组件中预设的源数据连接,对所述源数据库进行查询,得到所述至少一个源数据记录。

优选地,

所述目标数据获取单元,用于执行所述数据同步作业,以根据kettle的表输出组件或插入更新组件中预设的目标数据库连接,对所述目标数据库进行查询,得到所述至少一个目标数据记录。

本发明实施例提供了一种基于kettle的大数据比对方法及装置,将从源数据库中获取的源数据记录以及从目标数据库中获取的目标数据记录均存入预设内存中,然后在预设内存中进行源数据记录和目标数据记录的比对,由此将数据对比的过程由kettle与数据库之间的交互调整为在内存中对比,节约了原交互机制所带来的网络及数据库连接消耗,从而提高了数据比对效率。

附图说明

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

图1是本发明一个实施例提供的一种基于kettle的大数据比对方法的流程图;

图2是本发明另一个实施例提供的一种基于kettle的大数据比对方法的流程图;

图3是本发明一个实施例提供的一种基于kettle的大数据比对装置的结构示意图。

具体实施方式

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

如图1所示,本发明实施例提供了一种基于kettle的大数据比对方法,该方法可以包括以下步骤:

步骤101:获取数据比对请求;

步骤102:从预设的源数据库中获取与所述数据比对请求相对应的至少一个源数据记录,并将所述至少一个源数据记录存储至预设内存中;

步骤103:从预设的目标数据库中获取与所述数据比对请求相对应的至少一个目标数据记录,并将所述至少一个目标数据记录存储至所述预设内存中;

步骤104:在所述预设内存中对各个所述源数据记录以及各个所述目标数据记录进行比对。

上述实施例中,将从源数据库中获取的源数据记录以及从目标数据库中获取的目标数据记录均存入预设内存中,然后在预设内存中进行源数据记录和目标数据记录的比对,由此将数据对比的过程由kettle与数据库之间的交互调整为在内存中对比,节约了原交互机制所带来的网络及数据库连接消耗,从而提高了数据比对效率。

本发明一个实施例中,在步骤104之后,可以进一步包括:

根据所述预设内存中的比对结果,对所述目标数据库中的所述至少一个目标数据记录进行处理。

由于主键为每一条数据记录的唯一标识,在进行数据比对时,可根据数据记录的主键进行比对,即比对源数据记录和目标数据记录中相同和不同的数据记录。在此过程中,可以将源数据记录和目标数据记录分别作为一个数据集合,然后以源数据记录集合或者目标数据记录集和为基准,遍历取出集合中每一条数据记录,再分别与另一个集合进行比对,即在另一个集合中查找是否存在与当前数据记录的主键一致的记录,然后根据比对结果,对目标数据库中的目标数据记录进行不同的处理,从而有利于对数据进行准确处理。

本发明一个实施例中,所述在所述预设内存中对各个所述源数据记录以及各个所述目标数据记录进行比对,以及所述根据所述预设内存中的对比结果,对所述目标数据库中的所述至少一个目标数据记录进行处理,可以包括:

针对每一个所述源数据记录,均执行:

确定所述源数据记录对应的第一主键;

确定所述至少一个目标数据记录分别对应的至少一个第二主键中,是否存在与所述第一主键相同的目标第二主键,如果是,根据所述源数据记录,对所述目标数据库中的与所述目标第二主键相对应的目标数据记录进行更新,否则,将所述第一主键对应的所述源数据记录插入至所述目标数据库中。

在这里,以源数据记录对应的集合为基准,将源数据记录逐条与各个目标数据记录进行比对。例如,源数据记录分别为a1、b1和c1,目标数据记录为a2和b2,将源数据记录逐条与各个目标数据记录进行对比,确定a1和b1的主键分别与a2和b2的主键相同,则根据a1和b1,分别对目标数据库中的a2和b2进行更新,即将a2和b2分别替换为a1和b1。另外,确定出在目标数据记录中不存在与c1的主键相同的目标数据记录,则将c1插入目标数据库中,即将c1作为新增数据加入目标数据库中,由此实现根据数据比对结果对数据的准确处理。同时,根据数据记录的主键进行数据比对,无需对各条数据记录的详细信息进行比对,并且主键为数据记录的唯一标识,由此在不影响数据比对准确性的同时,有利于提高数据比对的效率。

本发明一个实施例中,在步骤102之前,可以进一步包括:

利用kettle的任务设计界面,创建数据同步作业;

所述从预设的源数据库中获取与所述数据比对请求相对应的至少一个源数据记录,包括:

执行所述数据同步作业,以根据kettle的表输入组件中预设的源数据连接,对所述源数据库进行查询,得到所述至少一个源数据记录。

在创建数据同步作业之前,需搭建kettle数据同步运行环境,即先安装java环境,然后在win或linux下启动kettle。之后可通过kettle的任务设计界面,创建用于数据同步的转换及作业,还可对作业进行调度时间设置,使得在设置的时间,自动执行数据同步作业,以创建表输入组件中设置的源数据库连接,在执行源数据库查询后,即可获取返回的源数据记录。然后可将获取到的源数据记录放置到预设内存中,存放时可基于map或list的集合存放,以便于后期的数据比对。

本发明一个实施例中,步骤102的具体实施方式,可以包括:

执行所述数据同步作业,以根据kettle的表输出组件或插入更新组件中预设的目标数据库连接,对所述目标数据库进行查询,得到所述至少一个目标数据记录。

获取目标数据记录的方式与源数据记录的获取方式类似,执行数据同步作业,以创建表输出组件或插入更新组件中设置的目标数据库连接,在执行目标数据库查询后,可获取返回的目标数据记录。然后也将获取到的目标数据记录放置到预设内存中,存放时也可基于map或list集合存放,便于后期的数据比对。

如图2所示,本发明实施例提供了一种基于kettle的大数据比对方法,该方法可以包括以下步骤:

步骤201:搭建kettle运行环境。

安装java环境,在win或linux下启动kettle。

步骤202:获取数据比对请求,

步骤203:利用kettle的任务设计界面,创建数据同步作业。

步骤204:执行所述数据同步作业,以根据kettle的表输入组件中预设的源数据连接,对所述源数据库进行查询,得到与所述数据比对请求对应的至少一个源数据记录,并将所述至少一个源数据记录存储至预设内存中。

步骤205:执行所述数据同步作业,以根据kettle的表输出组件中预设的目标数据库连接,对所述目标数据库进行查询,得到所述至少一个目标数据记录,并将所述至少一个目标数据记录存储至所述预设内存中。

在内存中存储源数据记录和目标数据记录时,可基于map或list的集合存放,以便于后期的数据比对。

步骤206:针对所述预设内存中的每一个所述源数据记录,均执行:确定所述源数据记录对应的第一主键。

步骤207:判断所述至少一个目标数据记录分别对应的至少一个第二主键中是否存在与所述第一主键相同的目标第二主键,如果是,执行步骤208,并结束当前流程,否则执行步骤209。

步骤208:根据所述源数据记录,对所述目标数据库中的与所述目标第二主键相对应的目标数据记录进行更新。

步骤209:将所述第一主键对应的所述源数据记录插入至所述目标数据库中。

综上所述,将从源数据库中获取的源数据记录以及从目标数据库中获取的目标数据记录均存入预设内存中,然后在预设内存中进行源数据记录和目标数据记录的比对,由此将数据对比的过程由kettle与数据库之间的交互调整为在内存中对比,节约了原交互机制所带来的网络及数据库连接消耗,从而提高了数据比对效率。另一方面,将数据比对转移到内存中,势必会对比对逻辑及算法进行优化,提升了大数据量比对场景下的稳定性和可靠性。在千万级数据量及以上的大数据同步业务场景中,本实施例提供的方法可保证数据同步任务的时效性及可用性。

如图3所示,本发明实施例提供了一种基于kettle的大数据比对装置,包括:请求获取单元301、源数据获取单元302、目标数据获取单元303和数据比对单元304;其中,

所述请求获取单元301,用于获取数据比对请求;

所述源数据获取单元302,用于从预设的源数据库中获取与所述数据比对请求相对应的至少一个源数据记录,并将所述至少一个源数据记录存储至预设内存中;

所述目标数据获取单元303,用于从预设的目标数据库中获取与所述数据比对请求相对应的至少一个目标数据记录,并将所述至少一个目标数据记录存储至所述预设内存中;

所述数据比对单元304,用于在所述预设内存中对各个所述源数据记录以及各个所述目标数据记录进行比对。

本发明一个实施例中,所述数据比对单元304,进一步用于根据所述预设内存中的比对结果,对所述目标数据库中的所述至少一个目标数据记录进行处理。

本发明一个实施例中,所述数据比对单元304,用于针对每一个所述源数据记录,均执行:确定所述源数据记录对应的第一主键;确定所述至少一个目标数据记录分别对应的至少一个第二主键中,是否存在与所述第一主键相同的目标第二主键,如果是,根据所述源数据记录,对所述目标数据库中的与所述目标第二主键相对应的目标数据记录进行更新;否则,将所述第一主键对应的所述源数据记录插入至所述目标数据库中。

本发明一个实施例中,该装置可以进一步包括:作业创建单元;其中,

所述作业创建单元,用于利用kettle的任务设计界面,创建数据同步作业;

所述源数据获取单元302,用于执行所述数据同步作业,以根据kettle的表输入组件中预设的源数据连接,对所述源数据库进行查询,得到所述至少一个源数据记录。

本发明一个实施例中,所述目标数据获取单元303,用于执行所述数据同步作业,以根据kettle的表输出组件或插入更新组件中预设的目标数据库连接,对所述目标数据库进行查询,得到所述至少一个目标数据记录。

上述装置内的各单元之间的信息交互、执行过程等内容,由于与本发明方法实施例基于同一构思,具体内容可参见本发明方法实施例中的叙述,此处不再赘述。

本发明实施例提供了一种可读介质,包括执行指令,当存储控制器的处理器执行所述执行指令时,所述存储控制器执行本发明上述任一实施例提供的方法。

本发明实施例提供了一种存储控制器,包括:处理器、存储器和总线;所述存储器用于存储执行指令,所述处理器与所述存储器通过所述总线连接,当所述存储控制器运行时,所述处理器执行所述存储器存储的所述执行指令,以使所述存储控制器执行本发明上述任一实施例提供的方法。

综上所述,本发明以上各个实施例至少具有如下有益效果:

1、在本发明实施例中,将从源数据库中获取的源数据记录以及从目标数据库中获取的目标数据记录均存入预设内存中,然后在预设内存中进行源数据记录和目标数据记录的比对,由此将数据对比的过程由kettle与数据库之间的交互调整为在内存中对比,节约了原交互机制所带来的网络及数据库连接消耗,从而提高了数据比对效率。

2、在本发明实施例中,根据数据比对的结果,对目标数据库中的目标数据记录进行不同的处理,从而有利于对数据进行准确处理。

3、在本发明实施例中,根据源数据记录和目标数据记录的主键进行数据比对,无需关注源数据记录和目标数据记录的详细数据信息,并且主键为数据记录的唯一标识,由此在不影响数据比对准确性的同时,有利于提高数据比对的效率。

需要说明的是,在本文中,诸如第一和第二之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个······”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同因素。

本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储在计算机可读取的存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:rom、ram、磁碟或者光盘等各种可以存储程序代码的介质中。

最后需要说明的是:以上所述仅为本发明的较佳实施例,仅用于说明本发明的技术方案,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所做的任何修改、等同替换、改进等,均包含在本发明的保护范围内。

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