一种数据的批量处理方法及系统与流程

文档序号:16430530发布日期:2018-12-28 20:06阅读:244来源:国知局
一种数据的批量处理方法及系统与流程

本发明涉及数据处理技术领域,尤其涉及一种数据的批量处理方法及系统。

背景技术

银行的信息技术it(informationtechnology)系统中通常涉及海量数据的存储与处理,每天全量或增量的数据档需要定时加载和处理,现有技术中,通过单库单表的方式集中加载和处理数据,无论数据档大小,通过调整服务器的存储空间大小,以批量方式始终往同一表里追加或更新数据。

发明人对现有的数据的批量处理方法进行研究发现,由于是单库单表机制和资源限制,不能通过多服务器并行加载和处理,只能通过串行的方式来完成所有数据的加载和处理流程,在效率和性能上难以达到令人满意的效果。



技术实现要素:

有鉴于此,本发明提供了一种数据的批量处理方法及系统,用以解决现有技术中由于是单库单表机制和资源限制,不能通过多服务器并行加载和处理,只能通过串行的方式来完成所有数据的加载和处理流程,在效率和性能上难以达到令人满意的效果的问题。具体方案如下:

一种数据的批量处理方法,包括:

当接收到对目标数据集的处理请求时,解析所述目标数据集包含的各个目标数据,确定每一个目标数据所属的集群;

并行的将每一个集群中包含的各个目标数据进行切分得到各个切片数据集;

确定所述各个切片数据集中的每一个切片数据所属的表和数据库,其中,每一个数据库中包含至少一个表;

对每一个数据库中的每一个表包含的各个切片数据进行并行处理。

上述的方法,可选的,并行的将每一个集群中包含的各个目标数据进行切分得到各个切片数据集,包括:

获取与所述目标数据集对应的各个集群;

解析所述各个集群中包含的各个目标数据;

依据每一个目标数据的切分字段对其进行切分,得到各个切片数据;

采用哈希算法并行的计算每一个切片数据的哈希值;

依据每一个切片数据的哈希值进行划分得到所述各个切片数据集。

上述的方法,可选的,确定所述各个切片数据集中的每一个切片数据所属的表和数据库,包括:

针对每一个切片数据集,获取每一个切片数据的切片编号;

在对应的预设的映射关系对照表中依据每一个切片数据的切编号查找与其对应的表和数据库,其中,所述预设的映射关系对照表存储有表,数据库和切片编号的对应关系。

上述的方法,可选的,还包括:

当检测到对任一个数据库的调整请求时,对与所述调整请求对应的预设关系对照表进行调整。

上述的方法,可选的,对每一个数据库中的每一个表包含的各个切片数据进行并行处理,包括:

针对每一个切片数据,获取与其对应的临时区分表中的临时数据和数据分区表中的存量数据;

判断所述存量数据中是否存在临时数据;

若否,对应的数据分区表中的存量数据进行更新。

一种数据的批量处理系统,包括:

解析模块,用于当接收到对目标数据集的处理请求时,解析所述目标数据集包含的各个目标数据,确定每一个目标数据所属的集群;

并行切分模块,用于并行的将每一个集群中包含的各个目标数据进行切分得到各个切片数据集;

确定模块,用于确定所述各个切片数据集中的每一个切片数据所属的表和数据库,其中每一个数据库中包含至少一个表;

并行处理模块,用于对每一个数据库中的每一个表包含的各个切片数据进行并行处理。

上述的系统,可选的,所述并行切分模块包括:

第一获取单元,用于获取与所述目标数据集对应的各个集群;

解析单元,用于解析所述各个集群中包含的各个目标数据;

切分单元,用于依据每一个目标数据的切分字段对其进行切分,得到各个切片数据;

计算单元,用于采用哈希算法并行的计算每一个切片数据的哈希值;

划分单元,用于依据每一个切片数据的哈希值进行划分得到所述各个切片数据集。

上述的系统,可选的,所述确定模块包括:

第二获取单元,用于针对每一个切片数据集,获取每一个切片数据的切片编号;

查找单元,用于在对应的预设的映射关系对照表中依据每一个切片数据的切编号查找与其对应的表和数据库,其中,所述预设的映射关系对照表存储有表,数据库和切片编号的对应关系。

上述的系统,可选的,还包括:

调整单元,用于当检测到对任一个数据库的调整请求时,对与所述调整请求对应的预设关系对照表进行调整。

上述的系统,可选的,所述并行处理模块包括:

第三获取单元,用于针对每一个切片数据,获取与其对应的临时区分表中的临时数据和数据分区表中的存量数据;

判断单元,用于判断所述存量数据中是否存在临时数据;

更新单元,用于若否,对应的数据分区表中的存量数据进行更新。

与现有技术相比,本发明包括以下优点:

本发明公开了一种数据的批量处理方法,其特征在于,包括:当接收到对目标数据集的处理请求时,解析所述目标数据集包含的各个目标数据,确定每一个目标数据所属的集群;并行的将每一个集群中包含的各个目标数据进行切分得到各个切片数据集;确定所述各个切片数据集中的每一个切片数据所属的表和数据库;对每一个数据库中的每一个表包含的各个切片数据进行并行处理。上述的处理方法,将目标数据集中的目标数据通过分片的方式分配给了不同的数据库中的不同表,通过多服务器加载进行并行处理,避免了现有技术中,由于是单库单表机制和资源限制,不能通过多服务器并行加载和处理,只能通过串行的方式来完成所有数据的加载和处理流程,处理效率低的问题。

附图说明

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

图1为本申请实施例公开的一种数据的批量处理方法流程图;

图2为本申请实施例公开的一种数据的批量处理方法又一方法流程图;

图3为本申请实施例公开的一种数据的批量处理方法又一方法流程图;

图4为本申请实施例公开的一种数据的批量处理方法又一方法流程图;

图5为本申请实施例公开的一种数据的批量处理方法又一方法流程图;

图6为本申请实施例公开的一种数据的批量处理系统结构框图。

具体实施方式

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

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

本发明公开了一种数据的批量处理方法,所述方法应用在银行系统中海量数据的存储过程中,其中,所述数据可以为余额数据,明细数据或者其它优选的数据类型,所述处理方法的执行主体可以为处理器或者控制器等,所述方法的执行流程如图1所示,包括步骤:

s101、当接收到对目标数据集的处理请求时,解析所述目标数据集包含的各个目标数据,确定每一个目标数据所属的集群;

本发明实施例中,在同一时刻或者一段时间内,银行系统中会产生各种目标数据,目标数据可以为余额数据,明细数据,交易数据等,各种目标数据组成了一个目标数据集,当接收到对所述目标数据集的处理请求时,解析所述目标数据中包含的各个目标数据,获取每一个目标数据的类型,依据所述类型确定每一个目标数据所属的集群,其中,优选的,所述集群可以为,余额集群,明细集群和交易集群等。

s102、并行的将每一个集群中包含的各个目标数据进行切分得到各个切片数据集;

本发明实施例中,解析每一个集群中包含的各个目标数据,并行的将每一个集群中包含的各个目标数据依据哈希算法进行切分得到各个切片数据集,其中,优选的,本发明采用谷歌的murmur哈希算法进行每一个目标数据的切分。

s103、确定所述各个切片数据集中的每一个切片数据所属的表和数据库,其中,每一个数据库中包含至少一个表;

本发明实施例中,优选的,每一个集群会对应一个数据库,而每一个数据库中户会包含一定数量的表,表用来存储通过切分得到的切片数据,其中,每一个数据库中表的数量依据实际情况中与其对应的目标数据的数据量进行确定。

s104、对每一个数据库中的每一个表包含的各个切片数据并行的通过sqlloader和merge的方式进行处理,优选的,各个不同的数据库之间在同一时刻也是在并行的执行各个表中的数据切片。

本发明实施例中,上述的处理方法是持续执行的,每间隔第一预设的时长,对所述预设时长内产生的数据分配给对应的集群所属的数据库进行处理,所述预设时长依据数据的产生量和处理能力进行确定,其中,不同的集群要求的处理时效不同,优选的,针对每一个数据库,可以设定一个第二预设时长,当达到所述第二预设时长时,对其对应的数据库中各个表存储的切片数据进行处理。其中,多数第二预设时长的选取与对应数切片数据要求的处理时效有关。

本发明公开了一种数据的批量处理方法,其特征在于,包括:当接收到对目标数据集的处理请求时,解析所述目标数据集包含的各个目标数据,确定每一个目标数据所属的集群;并行的将每一个集群中包含的各个目标数据进行切分得到各个切片数据集;确定所述各个切片数据集中的每一个切片数据所属的表和数据库;对每一个数据库中的每一个表包含的各个切片数据进行并行处理。上述的处理方法,将目标数据集中的目标数据通过分片的方式分配给了不同的数据库中的不同表,通过多服务器加载进行并行处理,避免了现有技术中,由于是单库单表机制和资源限制,不能通过多服务器并行加载和处理,只能通过串行的方式来完成所有数据的加载和处理流程,处理效率低的问题。

本发明实施例中,并行的将每一个集群中包含的各个目标数据进行切分得到各个切片数据集的方法流程如图2所示,包括步骤:

s201、获取与所述目标数据集对应的各个集群;

本发明实施例中,当确定完所述目标数据集中各个目标数据所属的各个集群之后,获取所述各个集群,其中,会存在多个目标数据属于一个集群的情况。

s202、解析所述各个集群中包含的各个目标数据;

本发明实施例中,为了进行后续的切分需要确定每一个集群中包含的各个目标数据。

s203、依据每一个目标数据的切分字段对其进行切分,得到各个切片数据;

本发明实施例中,获取每一个数据对应的切分字段,优选的,所述切分字段可以为账号或者卡号,依据所述切分字段对每一个目标数据进行切分。

s204、采用哈希算法并行的计算每一个切片数据的哈希值;

本发明实施例中,预先依据集群的不同划分了不同的数据库,并确定每一个数据库中包含的各个表,获取每一个表的键值,依据键值和哈希算法,计算每一个切片对应的哈希值。采用哈希算法进行切分得到的切片数据分布均匀,最大值和最小值的差值控制在2%以内。

s205、依据每一个切片数据的哈希值进行划分得到所述各个切片数据集。

本发明实施例中,依据哈希值对切片数据集进行划分,不同哈希值的切片数据被划分到不同切片数据集中,同一个切片数据集有相同的hash值,优选的,为每一个切片数据集中的切片数据分配切片编号,不同切片对应不同的切片编号,切片的数量可以根据目标数据量的大小灵活确定。

本发明实施例中,确定所述各个切片数据集中的每一个切片数据所属的表和数据库的方法流程如图3所示,包括步骤:

s301、针对每一个切片数据集,获取每一个切片数据的切片编号;

本发明实施例中,优选的,切片编号和切片数据之间存在对应关系,在同一个切片数据集中,一个切片数据对应一个唯一的切片编号,获取每一个切片数据的切片编号。

s303、在对应的预设的映射关系对照表中依据每一个切片数据的切编号查找与其对应的表和数据库,其中,所述预设的映射关系对照表存储有表,数据库和切片编号的对应关系。

本发明实施例中,所述预设的映射关系对照表中存储有切片编号,数据库和表的映射关系,所述映射关系时预先设定的,在对应的预设的映射关系对照表中依据切片编号查找与每一个切片数据对应的表和数据库。

其中,针对每一个切片数据,将其定位到具体的存放的数据库和表,所有切片数据都散列到对应的表中,避免了某个数据库出现问题而影响整个切分数据。比如,帐户类数据,根据业务需求,切分成64张表,每张表用hash分成16个分区,单表的数据条数大概在100万左右。明细类的数据,切分成512张表,每张表按照年月分成18个分区,单表的数据量大概在600万左右。如此分库分表存储后,每次访问的单表数据量较小,响应速度快,避免了大表访问的效率低问题,提高系统的吞吐率。

其中,当检测到对任一个数据库的调整请求时,对与所述调整请求对应的预设关系对照表进行调整。其中,所述调整请求可以为添加、修改或者删除表等调整请求。上述的过程,只需要在对应的预设关系对照表中,修改、添加或者删除对应的对应关系即可。基于上述的调整方法可实现灵活的横向扩展,并可最小程度的减少数据的搬家,降低数据不可用概率。

根据分库分表规则,将所有分行的数据文件利用哈希算法进行散列并切分,由于每个分行都是一个独立的切分流程,所以每个分行的数据切分是并发执行,有效提高文件切分效率;各个切片数据被多个数据库并行执行sqlloader加载到对应的临时分区表里,临时分区表与数据分区表间由于切分规则一致,采用merge的方式进行处理,根据数据库资源采用并行处理的方式,实现多库多表的并行处理。由于大量的并行写操作,通过使用独立的nas部署,保证每台ap的io独立,保证io的高效性。本发明实施例中,对每一个数据库中的每一个表包含的各个切片数据进行并行处理的方法流程如图4所示,包括步骤:

s401、针对每一个切片数据,获取与其对应的临时区分表中的临时数据和数据分区表中的存量数据;

本发明实施例中,每一个数据库中的各个表中的切片数据是存储在分区里的,以余额集群为例,针对同一个用户,在不同时间内其对应的余额可能是不同的,其中,所述临时分区表中存储的当前的余额数据,所述数据分区表中存储的是上一次获取的余额数据。优选的,当前余额数据为临时数据,上一次获取的余额数据为存量数据

s402、判断所述存量数据中是否存在临时数据;

本发明实施例中,优选的,将所述临时数据和所述存量数据进行比较,判断所述存量数据中是否存在临时数据。

s403、若否,将所述临时数据插入到所述存量数据。

本发明实施例中,当所述临时分数据与所述存量数据不相同时,将所述临时数据插入到所述存量数据,将所述临时数据插入到所述存量数据,若相同时,更新所述存量数据。

本发明实施例中,基于上述的处理方法,以余额集群为例,任意一个表中的处理过程如图5所示,以db1为例,其中db1代表数据库中的一个表,针对分行a将对应的各个分片数据通过sqlloader导入到存款余额每日增量临时表a,导入完成时,将所述存款余额每日增量临时表a中的数据导入存款余额存量表,若在分行b中接收到了与所述存款余额存量表对应的各个分片数据,采用与所述存款余额每日增量临时表a相同的处理方式,将其导入存款余额每日增量临时表b,将存款余额每日增量临时表b中的数据与存款余额存量表中数据进行比较,判断所述存款余额存量表中是否存在存款余额每日增量临时表b,若否,需要将存款余额每日增量临时表b插入到所述存款余额存量表,若是,对存款余额存量表中的数据进行更新,具体的执行流程如s401-s403所示,其中,db2,db…与上述的执行过程相同并且采用并行执行的方式。

本发明实施例中,基于上述的数据的批量处理方法,本发明实施例中还提供了一种数据的批量处理系统,所述处理系统的结构框图如图6所示,包括:

解析模块501,并行切分模块502,确定模块503和并行处理模块504。

其中,

所述解析模块501,用于当接收到对目标数据集的处理请求时,解析所述目标数据集包含的各个目标数据,确定每一个目标数据所属的集群;

所述并行切分模块502,用于并行的将每一个集群中包含的各个目标数据进行切分得到各个切片数据集;

所述确定模块503,用于确定所述各个切片数据集中的每一个切片数据所属的表和数据库,其中每一个数据库中包含至少一个表;

所述并行处理模块504,用于对每一个数据库中的每一个表包含的各个切片数据进行并行处理。

本发明公开了一种数据的批量处理系统,其特征在于,包括:当接收到对目标数据集的处理请求时,解析所述目标数据集包含的各个目标数据,确定每一个目标数据所属的集群;并行的将每一个集群中包含的各个目标数据进行切分得到各个切片数据集;确定所述各个切片数据集中的每一个切片数据所属的表和数据库;对每一个数据库中的每一个表包含的各个切片数据进行并行处理。上述的处理系统,将目标数据集中的目标数据通过分片的方式分配给了不同的数据库中的不同表,通过多服务器加载进行并行处理,避免了现有技术中,由于是单库单表机制和资源限制,不能通过多服务器并行加载和处理,只能通过串行的方式来完成所有数据的加载和处理流程,处理效率低的问题。

本发明实施例中,所述并行切分模块502包括:

第一获取单元505,解析单元506,切分单元507,计算单元508和划分单元509。

其中,

所述第一获取单元505,用于获取与所述目标数据集对应的各个集群;

所述解析单元506,用于解析所述各个集群中包含的各个目标数据;

所述切分单元507,用于依据每一个目标数据的切分字段对其进行切分,得到各个切片数据;

所述计算单元508,用于采用哈希算法并行的计算每一个切片数据的哈希值;

所述划分单元509,用于依据每一个切片数据的哈希值进行划分得到所述各个切片数据集。

本发明实施例中,所述确定模块503包括:

第二获取单元510和查找单元511。

其中,

所述第二获取单元510,用于针对每一个切片数据集,获取每一个切片数据的切片编号;

所述查找单元511,用于在对应的预设的映射关系对照表中依据每一个切片数据的切编号查找与其对应的表和数据库,其中,所述预设的映射关系对照表存储有表,数据库和切片编号的对应关系。

本发明实施例中,所述确定模块503还包括:调整单元512。

其中,

调整单元,用于当检测到对任一个数据库的调整请求时,对与所述调整请求对应的预设关系对照表进行调整。

本发明实施例中,所述并行处理模块504包括:

第三获取单元513,判断单元514和更新单元515。

其中,

所述第三获取单元513,用于针对每一个切片数据,获取与其对应的临时区分表中的临时数据和数据分区表中的存量数据;

所述判断单元514,用于判断所述存量数据中是否存在临时数据;

所述更新单元515,用于若否,对应的数据分区表中的存量数据进行更新。

需要说明的是,本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。对于装置类实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

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

为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本发明时可以把各单元的功能在同一个或多个软件和/或硬件中实现。

通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例或者实施例的某些部分所述的方法。

以上对本发明所提供的一种数据的批量处理方法及系统进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

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