批量数据处理的方法与装置的制作方法

文档序号:6580833阅读:465来源:国知局
专利名称:批量数据处理的方法与装置的制作方法
技术领域
本发明涉及通信行业的业务支撑技术领域,尤其涉及一种批量数据处理的方法与直O
背景技术
电信运营商通常在月初或月末集中处理批量数据,比如批量处理话单、批量生成 帐单、批量冲销费用、与各业务平台批量对帐等,一般情况下会采取单线程方式进行。单线 程方式是逐条读取数据或者一次性读入内存,然后再逐条处理,读取和处理的过程是串行 的,一般采用逐条提交。然而,单线程处理模式中,执行时间长,资源利用率最低。现有技术中还有直接取模方式,即将一定的字段(列)取模,根据模值分配至不同 的线程处理,每个线程处理的方式与串行方式相同,一般采用批量提交。直接取模方式采用 多线程处理批量数据,提高了处理效率。图1为本发明现有技术直接取模方式的示意图。以 下通过随机抽取20个号码进行模4分配处理方式举例说明直接取模方式的工作原理如图 1所示,按模4分配后,其中6个号码分配在O号线程处理,1个号码分配在1号线程处理, 6个号码分配在2号线程处理,7个号码分配在3号线程处理,所有分配是一次性完成,并且 处理的线程号是确定的。假定每个号码的处理时间相同,那么4个线程花费的时间比例是6 1 6 7。然而,在实现本发明过程中,发明人发现现有技术批量数据处理方式中存在如下 缺陷直接取模处理模式中,取模分配数据并不一定均勻,导致线程的空闲率高,数据等待 时间较长。

发明内容
本发明的目的是解决现有技术批量数据处理方式中,不能根据待处理数据的大 小,动态调整处理顺序的缺陷,提出一种批量数据处理的方法与装置,以提高线程的处理效率。为实现上述目的,根据本发明的一个方面,提供了一种批量数据处理的方法,包 括将待处理数据读入缓存,获取待处理数据的占用空间;根据预设的单位权值和占用空 间,计算待处理数据的预估权值;根据预估权值,将待处理数据插入待处理数据序列;将待 处理数据序列中的待处理数据置入各线程进行处理。优选地,本技术方案中,分配线程处理待处理数据序列中的待处理数据的步骤之 后还包括获取待处理数据的执行权值;根据多个待处理数据的执行权值,对单位权值进 行修正;根据修正后的单位权值,计算后续的待处理数据的预估权值。本技术方案中,单位权值为处理单位占用空间的数据所需要的时间;预估权值为 预估的待处理数据进行处理所需要的时间;执行权值为对待处理数据进行处理的实际时 间。本技术方案中,根据预估权值,将待处理数据插入待处理数据序列的步骤中,还可以包括采取升序或者降序,按预估权值将待处理数据插入待处理数据序列。本技术方案中,还可以包括预设最大缓存容量值;在最大缓存容量值的范围内, 根据待处理数据的数量和占用空间,动态调整缓存的容量;和/或预设最大线程数;在最大 线程数的范围内,根据系统资源利用率,和/或数据库资源利用率,动态调整线程的数目。本技术方案中,还可以包括预设线程提交数;当线程中已处理数据的数量达到 预设提交数时,将已处理数据写入数据库或者文件系统,清空线程;和/或当线程执行出现 错误时,将已处理的数据回滚至未处理的状态。本技术方案中,当采用单线程处理方式时,将所述待处理数据序列中的待处理数 据直接置入单线程进行处理;当采用多线程处理方式时,将所述待处理数据序列中的待处 理数据分配至各线程进行处理。为实现上述目的,根据本发明的另一个方面,提供了一种批量数据处理的装置,包 括获取模块,用于将待处理数据读入缓存,获取待处理数据的占用空间;预分配模块,用 于根据预设的单位权值和占用空间,计算待处理数据的预估权值;排序模块,用于根据预估 权值,将待处理数据插入待处理数据序列;分配模块,用于将待处理数据序列中的待处理数 据分配至各线程进行处理。优选地,本技术方案中,预分配模块还可以包括单位权值调整子模块,用于获取 待处理数据的执行权值;根据多个待处理数据的执行权值,对单位权值进行修正;预估权 值计算子模块,用于根据修正后的单位权值,计算后续的待处理数据的预估权值。本技术方案中,单位权值为处理单位占用空间的数据所需要的时间;预估权值为 预估的待处理数据进行处理所需要的时间;执行权值为对待处理数据进行处理的实际时 间。本技术方案中,排序模块根据系统资源利用率,采取升序或者降序,按预估权值将 待处理数据插入待处理数据序列。本发明各实施例中,根据所需处理时间的大小,对待处理数据进行排序,从而根据 用户的设置,对批量数据进行处理,以提高各线程的利用率,减少待处理数据等待的时间。本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变 得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在所写的说明 书、权利要求书、以及附图中所特别指出的结构来实现和获得。下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。


附图用来提供对本发明的进一步理解,并且构成说明书的一部分,与本发明的实 施例共同用于解释本发明,并不构成对本发明的限制。在附图中图1为本发明现有技术直接取模方式的示意图;图2为本发明实施例一批量数据处理方法的流程图;图3为本发明实施例一待处理数据升序排列的示意图;图4为本发明实施例二批量数据处理方法的示意图;图5为本发明实施例二批量数据处理方法中分配策略的示意图;图6为本发明实施例三批量数据处理方法中关闭线程的示意图7为本发明实施例四批量数据处理装置的示意图。结合附图在其上标记以下附图标记402-获取模块;404-预分配模块;406-排序模块;406-分配模块。
具体实施例方式以下结合附图对本发明的实施例进行说明,应当理解,此处所描述的实施例仅用 于说明和解释本发明,并不用于限定本发明。实施例一图2为本发明实施例一批量数据处理方法的流程图。如图2所示,本实施例包括步骤S102 将待处理数据读入缓存,获取待处理数据的占用空间;步骤S104 根据预设的单位权值和占用空间,计算待处理数据的预估权值;步骤S106 根据预估权值,将待处理数据插入待处理数据序列;步骤S108 将待处理数据序列中的待处理数据置入线程进行处理。本实施例中,在步骤S102之前,还包括将批量数据从批量数据源读入缓存,其中 批量数据源可以是以一定格式区隔的文件形式存放,或者以数据库表形式存放。权值可以 是以时间为单位,也可以以空间为单位,根据具体需要确定。单位权值为处理单位占用空间 的数据所需要的时间;预估权值为预估的处理待处理数据所需要的时间。对于单位权值,如 果处理数据的W值可量化或有历史值,可直接引用作为预设值,否则可根据读取数据的时 间或者内存占用大小计算单位权值的预设值。本实施例中,在步骤S108之后,还可以包括根据预估权值的大小插入待处理数 据序列的相应位置,确保整个队列是按预估权值一定的次序排序的。一般情况下,一段时 间内的系统资源情况并不均勻,根据系统资源情况安排,资源忙时,按照预估权值的升序排 列,安排先处理小事务;资源闲时,按照预估权值的降序排列,安排处理大事务。资源忙闲, 可以预设资源利用率阈值进行判断,也可以根据日常经验,设定不同的时间段为资源利用 忙闲的判断依据。图3为本发明实施例一待处理数据升序排列的示意图。如图3所示,从 数据源读取数据后,根据单位权值,计算待处理数据的预估权值,图中三个待处理数据的预 估权值分别为97,3,7。而后,在升序情况下,将三个待处理数据插入待处理数据序列。本实施例中,当采用单线程处理方式时,将待处理数据序列中的待处理数据直接 置入单线程进行处理;当采用多线程处理方式时,将待处理数据序列中的待处理数据分配 至各线程进行处理。本实施例中,根据所需处理时间的大小,对待处理数据进行排序,从而根据用户的 设置,对批量数据进行处理,以提高各线程的利用率,减少待处理数据等待的时间。实施例二本实施例将在实施例一的基础上,对单位权值进行动态调整,以更加准确的反映 待处理数据的大小,减少待处理数据的等待时间,提高处理效率。本实施例应用于首先设置 单位权值的初始值,而后根据对待处理数据进行处理的实际时间,即执行权值,逐步逼近合 理的单位权值。本实施例在实施例一步骤S108后,还包括步骤S202 获取待处理数据的执行权值;
步骤S204 根据多个待处理数据的执行权值,对单位权值进行修正;步骤S206 根据修正后的单位权值,计算后续的待处理数据的预估权值。本实施例中,执行权值为对待处理数据进行处理的实际时间。图4为本发明实施 例二批量数据处理方法的示意图。以下将结合图4,对批量数据处理的方法详细进行说明。一、参数设置· W值,即单位权值,实际执行后统计生成的每单位数据的平均值,权值可以是以 时间为单位,也可以以空间为单位,根据具体需要确定。如果处理数据的W值可量化或有历 史值,可直接引用,否则可根据读取数据的时间或者内存占用大小作为单位量。如果很难确 定,可先设置一初始值,根据统计W值逐步逼近。· Block值,待处理数据的占用空间,以数据缓存的基本单位计。· SWeight,即预估权值,预估的处理待处理数据所需要的时间。计算方法如下 Sffeight = WXBlock值X修正系数,上述修正系数在此处为取整运算。· Fffeight,即执行权值,对待处理数据进行处理的实际时间,计算方法如下 Fffeight =(结束执行时间EndTime-开始执行时间BeginTime) X修正系数。· TWeight,某线程中未提交数据累计W值。· Free,空闲执行线程数。· Wait,当前等待的待处理数据的数目。二、将待处理数据从数据源读取到数据缓存批量数据源可以是以一定格式区隔的文件形式存放,或者以数据库表形式存放。 在内存中,设立独立数据缓存区,根据数据量的大小,设立基于Block倍数的缓存,将数据 映射到缓存。缓存中,待处理数据的数据结构可以是类,也可以是结构体,具体包括ID:序号,具有唯一性;数据实体记录待处理数据,根据不同的数据类型确定存放的类型;Block数记录待处理数据的空间占用情况;Sffeight值记录该数据的预估权值;Fffeight值记录实际执行后的权值;执行线程号记录处理该数据被处理的线程号;ReadTime 读入缓存时间,记录该数据读入缓存的系统时间,主要用于统计;BeginTime 开始执行时间,记录该数据读入缓存的系统时间,主要用于统计。EndTime 结束执行时间记录该数据实际执行结束的系统时间,主要用于统计。CommitTime 提交的时间,记录该数据实际提交的系统时间,主要用于统计。当前状态记录该数据的运行状态,包括等待、处理中、完成等状态。其中,读取操作由独立的线程完成,根据要处理事务的属性,可顺序读取,也可尽 可能地避免相邻数据的读取,降低数据之间的耦合性。缓存本身有锁,当增加、删除、读取数 据时加锁,完成之后解锁,加锁期间除自身线程之外其他线程不能进行任何操作。三、预处理对于读入缓存的每一组数据,根据当前平均W值预计算组内每一数据的预估权值 Sffeight0以单位权值W为例,预估权值SWeight的计算方法如下SWeight = WXBlock数X 修正系数。如图3所示,读取数据源的数据后,根据W值和占用的Block数,对待处理数据进行加权,此处,修正系数可以为对WXBlock数进行取整的函数或某个值,如100,1000等。根据预估权值SWeight的大小插入待处理队列的相应位置,确保整个队列是按 SWeight值一定的次序排序的。插入后,Wait值加1。一般情况下,一段时间那的系统资源 情况并不均勻,资源忙时安排先处理小事务,资源闲时安排处理大事务,具体可参见实施例 一的相关说明。四、分配执行策略分配策略线程是一个独立的线程。分配的前提是同时有等待数据和空闲的线程, 分配线程实时轮询Wait值和Free值。如图3所示,不同的待处理任务被分配至不同的处理线程,如Wl,w2,......,wi0图5为本发明实施例二批量数据处理方法中分配策略的示意图。如图5所示,当Wait > 0和Free > 0同时成立时,分配线程依次将缓存首节点分配给 线程池中未提交事务TWeight值最大且当前空闲的线程处理。定时轮询可一次多数据分配 处理,同时减少内存占用量。分配后当前线程的TWeight增加待处理数据的SWeight值。当分配线程把待处理数据分配给空闲线程后,该线程马上置忙,同时开始按业务 逻辑处理数据。一条数据执行完成后,计算该数据的实际FWeight值。以时间权值为例, 实际FWeight值的计算方法如下FWeight =(结束执行时间EndTime-开始执行时间 BeginTime) X修正系数。,此处,修正系数可以为对EndTime-BeginTime进行取整的函数或 某个值,如100,1000等五、单位权值的修正对已经提交的线程,触发统计线程执行统计操作。统计计算每一线程w值和累计 的W值(以下以时间权值为例)。对已经提交的线程,触发统计线程执行统计操作。统计计算每一线程w值和累计 的W值(以下以时间权值为例)。1)每线程的w值
权利要求
1.一种批量数据处理的方法,其特征在于,包括 将待处理数据读入缓存,获取待处理数据的占用空间;根据预设的单位权值和所述占用空间,计算所述待处理数据的预估权值; 根据所述预估权值,将所述待处理数据插入待处理数据序列; 将所述待处理数据序列中的待处理数据置入线程进行处理。
2.根据权利要求1所述的方法,其特征在于,所述线程处理待处理数据序列中的待处 理数据的步骤之后还包括获取所述待处理数据的执行权值;根据多个待处理数据的执行权值,对所述单位权值进行修正; 根据所述修正后的单位权值,计算后续的待处理数据的预估权值。
3.根据权利要求2所述的方法,其特征在于所述单位权值为处理单位占用空间的数据所需要的时间;所述预估权值为预估的待处 理数据进行处理所需要的时间;所述执行权值为对所述待处理数据进行处理的实际时间。
4.根据权利要求1所述的方法,其特征在于,所述根据预估权值,将待处理数据插入待 处理数据序列的步骤中,包括采取升序或者降序,按预估权值将待处理数据插入待处理数据序列。
5.根据权利要求1中任一项所述的方法,其特征在于,还包括预设最大缓存容量值;在所述最大缓存容量值的范围内,根据待处理数据的数量和占 用空间,动态调整所述缓存的容量。和/或预设最大线程数;在所述最大线程数的范围内,根据系统资源利用率,和/或数 据库资源利用率,动态调整线程的数目。
6.根据权利要求1-5中任一项所述的方法,其特征在于,还包括预设线程提交数;当线程中已处理数据的数量达到预设提交数时,将已处理数据写入 数据库或者文件系统,清空所述线程;和/或当线程执行出现错误时,将已处理的数据回滚至未处理的状态。
7.根据权利要求1-5中任一项所述的方法,其特征在于,所述将待处理数据序列中的 待处理数据置入线程进行处理的步骤具体包括当采用单线程处理方式时,将所述待处理数据序列中的待处理数据直接置入单线程进 行处理;当采用多线程处理方式时,将所述待处理数据序列中的待处理数据分配至各线程进行处理。
8.一种批量数据处理的装置,其特征在于,包括获取模块,用于将待处理数据读入缓存,获取待处理数据的占用空间; 预分配模块,用于根据预设的单位权值和所述占用空间,计算所述待处理数据的预估 权值;排序模块,用于根据所述预估权值,将所述待处理数据插入待处理数据序列; 分配模块,用于将所述待处理数据序列中的待处理数据置入线程进行处理。
9.根据权利要求8所述的装置,其特征在于,所述预分配模块包括单位权值调整子模块,用于获取所述待处理数据的执行权值;根据多个待处理数据的执行权值,对所述单位权值进行修正;预估权值计算子模块,用于根据所述修正后的单位权值,计算后续的待处理数据的预 估权值。
10.根据权利要求9所述的装置,其特征在于所述单位权值为处理单位占用空间的数 据所需要的时间;所述预估权值为预估的待处理数据进行处理所需要的时间;所述执行权 值为对所述待处理数据进行处理的实际时间。
11.根据权利要求8所述的装置,其特征在于所述排序模块根据系统资源利用率,采 取升序或者降序,按预估权值将待处理数据插入待处理数据序列。
12.根据权利要求8-11中任一项所述的装置,其特征在于,还包括缓存调整模块,用于在预设的最大缓存容量值的范围内,根据待处理数据的数量和占 用空间,动态调整所述缓存的容量。和/或线程调整模块,用于在预设的最大线程数的范围内,根据系统资源利用率,和/ 或数据库资源利用率,动态调整线程的数目。
13.根据权利要求8-11中任一项所述的装置,其特征在于,还包括提交模块,用于当线程中已处理数据的数量达到预设的提交数时,将已处理数据写入 数据库或者文件系统,清空所述线程;回滚模块,用于当线程执行出现错误时,将已处理的数据回滚至未处理的状态。
14.根据权利要求8-11中任一项所述的装置,其特征在于当采用单线程处理方式时,所述分配模块将待处理数据序列中的待处理数据置入单线 程进行处理;当采用多线程处理方式时,所述将待处理数据序列中的待处理数据分配至各线程进行处理。
全文摘要
本发明公开了一种批量数据处理的方法与装置。该方法包括将待处理数据读入缓存,获取待处理数据的占用空间;根据预设的单位权值和占用空间,计算待处理数据的预估权值;根据预估权值,将待处理数据插入待处理数据序列;将待处理数据序列中的待处理数据置入线程进行处理。本发明各实施例中,根据所需处理时间的大小,对待处理数据进行排序,从而根据用户的设置,对批量数据进行处理,以提高各线程的利用率,减少待处理数据等待的时间,提高了处理效率。
文档编号G06F9/46GK102053859SQ20091017834
公开日2011年5月11日 申请日期2009年11月9日 优先权日2009年11月9日
发明者贾琨 申请人:中国移动通信集团甘肃有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1