掌桥专利:专业的专利平台
掌桥专利
首页

一种基于springbatch对于大量数据进行分片处理的算法

文献发布时间:2024-04-18 19:53:33


一种基于springbatch对于大量数据进行分片处理的算法

技术领域

本发明属于数据通信技术领域,具体的说是一种基于springbatch对于大量数据进行分片处理的算法。

背景技术

在我们常用的金融系统交易处理中,常常需要对大量的数据进行更新、删除、插入数据的操作。

现有技术中金融系统交易数据处理的方式主要分为四个步骤,首先需要对数据进行整理收集,然后将其存储到指定的数据库中,之后在对这些存储的数据进行加工,加工完成后,在将加工完成后的数据传输至指定位置,从而即可完成对数据的处理。

但是现有技术中在对数据进行操作的过程中发现,需要花费大量的时间才能完成这些数据的处理,但同时在金融交易系统中我们对于账务的处理又有时限的要求,需要更快的处理完这些数据,为此,本发明提供一种基于springbatch对于大量数据进行分片处理的算法。

发明内容

为了弥补现有技术的不足,解决背景技术中所提出的至少一个技术问题。

本发明解决其技术问题所采用的技术方案是:本发明所述的一种基于springbatch对于大量数据进行分片处理的算法,该数据分片处理的算法具体步骤如下:

S1:定义我们用到的所有变量;

S2:读取需要操作表的所有主键;

S3:从数据库进行数据读取,每次读取readNum条数据;

S4:数据处理,使用springbatch的多线程分片处理,将所有的数据分成多个片,使用多线程进行分片的处理操作;

S5:数据处理完成。

优选的,根据S1中所提出的定义我们用到的所有变量是指,start每次缓存读取的起始位置、allKeysSize每个分片要处理的allkey的大小、readNum每次读入缓存的数量、firstFlag第一次读取标识,默认为true,读取完以后修改为false;避免数据处理失败时,重新拉起批量处理数据时,数据的重复处理、currentitemCount当前处理到的第几条数据,每处理完一条数据加1。

优选的,根据S2中所提出的操作表的所有主键是指,根据数据库主键获取所有的key值allKeys、定义分片变量、firstFlag为true,表示第一次读取数据、设置allKeysSize的值为allKeys/gridsize作为每个分片要处理的数据量、第一次读取完,firstFlag置为false、start设置为0,表示从第一条数据开始。

优选的,根据S3所提出的数据读取是指,currentitemCount-1%readNum=0、Remain(剩余的总条数)=allKeysSize(总条数)-start(读取的起始位置)、localReadNum(本次需要读取的条数)=remain(剩余的条数)>=readNum(每次读入缓存的数量)readNum:remain、根据start和localReadNum来读取allKeys中的主键、根据allKeys中的主键读取出需要处理的数据、每次读取完数据,start=start+localReadNum作为下次需要截取的数据的起始位置。

优选的,根据S4所提出的数据处理是指,定义并发批量线程poolsize,假设有10个线程,10个线程同时各处理一个片的数据,可以显著提升数据的处理效率、定义支持并发批量的线程池jobs.xml配置、定义支持分片处理的分片jobs.xml配置、定义基于数据处理的processor任务,用于具体的数据更新,删除,插入等操作和writer写文件任务。

本发明的有益效果如下:

1.本发明所述的一种基于springbatch对于大量数据进行分片处理的算法,通过分片处理的算法,从而可提高处理数据时的速度,降低处理数据时所花费的时间。

附图说明

下面结合附图对本发明作进一步说明。

图1是本发明中的数据分片处理算法流程图;

图2是本发明中的数据分片处理算法具体步骤图;

具体实施方式

为了使本发明实现的技术手段、创作特征、达成目的与功效易于明白了解,下面结合具体实施方式,进一步阐述本发明。

如图2所示,本发明实施例所述的一种基于springbatch对于大量数据进行分片处理的算法,该数据分片处理的算法具体步骤如下:

S1:定义我们用到的所有变量;

S2:读取需要操作表的所有主键;

S3:从数据库进行数据读取,每次读取readNum条数据;

S4:数据处理,使用springbatch的多线程分片处理,将所有的数据分成多个片,使用多线程进行分片的处理操作;

S5:数据处理完成。

如图2所示,根据S1中所提出的定义我们用到的所有变量是指,start每次缓存读取的起始位置、allKeysSize每个分片要处理的allkey的大小、readNum每次读入缓存的数量、firstFlag第一次读取标识,默认为true,读取完以后修改为false;避免数据处理失败时,重新拉起批量处理数据时,数据的重复处理、currentitemCount当前处理到的第几条数据,每处理完一条数据加1。

如图2所示,根据S2中所提出的操作表的所有主键是指,根据数据库主键获取所有的key值allKeys、定义分片变量、firstFlag为true,表示第一次读取数据、设置allKeysSize的值为allKeys/gridsize作为每个分片要处理的数据量、第一次读取完,firstFlag置为false、start设置为0,表示从第一条数据开始。

如图2所示,根据S3所提出的数据读取是指,currentitemCount-1%readNum=0、Remain(剩余的总条数)=allKeysSize(总条数)-start(读取的起始位置)、localReadNum(本次需要读取的条数)=remain(剩余的条数)>=readNum(每次读入缓存的数量)readNum:remain、根据start和localReadNum来读取allKeys中的主键、根据allKeys中的主键读取出需要处理的数据、每次读取完数据,start=start+localReadNum作为下次需要截取的数据的起始位置。

如图2所示,根据S4所提出的数据处理是指,定义并发批量线程poolsize,假设有10个线程,10个线程同时各处理一个片的数据,可以显著提升数据的处理效率、定义支持并发批量的线程池jobs.xml配置、定义支持分片处理的分片jobs.xml配置、定义基于数据处理的processor任务,用于具体的数据更新,删除,插入等操作和writer写文件任务。

以上显示和描述了本发明的基本原理、主要特征和优点。本行业的技术人员应该了解,本发明不受上述实施例的限制,上述实施例和说明书中描述的只是说明本发明的原理,在不脱离本发明精神和范围的前提下,本发明还会有各种变化和改进,这些变化和改进都落入要求保护的本发明范围内。本发明要求保护范围由所附的权利要求书及其等效物界定。

相关技术
  • 一种变电运维用视频辅助装置
  • 一种变电运维视频辅助装置
技术分类

06120116338749