一种数据铺底方法及装置与流程

文档序号:16248631发布日期:2018-12-11 23:48阅读:1065来源:国知局
一种数据铺底方法及装置与流程

本发明涉及数据处理技术领域,更具体地说,涉及一种数据铺底方法及装置。

背景技术

铺底数据是性能测试之前在数据库里面除数据库字典表外按照业务逻辑存入的大量的数据。其对系统的业务逻辑没有实际的影响,但对系统的性能却有着很大的影响。

现阶段在铺底数据准备过程中,常采用串行流程,比如存储过程中的loop循环将源表数据循环插入至目标表中。但是这种方式效率较低,在面对大数据量级别要求时,会出现执行耗时极长的问题。



技术实现要素:

为解决上述问题,本发明提供一种数据铺底方法及装置,技术方案如下:

一种数据铺底方法,包括:

获取源表和铺底条件,所述铺底条件至少包括分区规则和铺底并行度;

按照所述分区规则对所述源表进行分区处理得到源表分区;

根据所述铺底并行度从所述源表分区中选取待铺底的目标源表分区;

使用所述目标源表分区的数据进行铺底,同时判断处于铺底状态的所述目标源表分区的数量是否小于所述铺底并行度;

若是,则返回执行所述根据所述铺底并行度从所述源表分区中选取待铺底的目标源表分区,这一步骤。

优选的,在所述分区规则包括主分区规则和子分区规则、所述铺底并行度包括主分区铺底并行度和子分区铺底并行度的情况下,所述按照所述分区规则对所述源表进行分区处理得到源表分区,包括:

按照所述主分区规则对所述源表进行分区处理得到源表主分区;

按照所述子分区规则对所述源表主分区进行分区处理得到源表子分区;

相应的,所述根据所述铺底并行度从所述源表分区中选取待铺底的目标源表分区,包括:

根据所述主分区铺底并行度从所述源表主分区中选取待铺底的目标源表主分区;

基于所述子分区铺底并行度从所述目标源表主分区中选取待铺底的目标源表子分区;

相应的,所述使用所述目标源表分区的数据进行铺底,同时判断处于铺底状态的所述目标源表分区的数量是否小于所述铺底并行度,包括:

使用所述目标源表子分区的数据进行铺底,同时判断处于铺底状态的所述目标源表子分区的数量是否小于所述子分区铺底并行度。

优选的,在所述铺底条件还包括其他铺底规则的情况下,所述方法还包括:

判断所述源表的数据铺底信息是否满足所述其他铺底规则;

若是,则执行所述根据所述铺底并行度从所述源表分区中选取待铺底的目标源表分区,这一步骤。

优选的,所述其他铺底规则,包括:

铺底日期小于预设日期阈值和铺底数据量小于预设数据量阈值中的一个或多个。

优选的,所述判断处于铺底状态的所述目标源表分区的数量是否小于所述铺底并行度之前,所述方法还包括:

获取监控权限,所述监控权限用于监控处于铺底状态的所述目标源表分区的数量。

一种数据铺底装置,包括:

第一获取模块,用于获取源表和铺底条件,所述铺底条件至少包括分区规则和铺底并行度;

分区模块,用于按照所述分区规则对所述源表进行分区处理得到源表分区;

选取模块,用于根据所述铺底并行度从所述源表分区中选取待铺底的目标源表分区;

铺底判断模块,用于使用所述目标源表分区的数据进行铺底,同时判断处于铺底状态的所述目标源表分区的数量是否小于所述铺底并行度;若是,则触发所述选取模块。

优选的,所述选取模块具体用于:

在所述分区规则包括主分区规则和子分区规则、所述铺底并行度包括主分区铺底并行度和子分区铺底并行度的情况下,按照所述主分区规则对所述源表进行分区处理得到源表主分区;按照所述子分区规则对所述源表主分区进行分区处理得到源表子分区;

相应的,所述铺底判断模块,具体用于:

根据所述主分区铺底并行度从所述源表主分区中选取待铺底的目标源表主分区;基于所述子分区铺底并行度从所述目标源表主分区中选取待铺底的目标源表子分区;使用所述目标源表子分区的数据进行铺底,同时判断处于铺底状态的所述目标源表子分区的数量是否小于所述子分区铺底并行度。

优选的,所述装置还包括:

判断模块,用于判断所述源表的数据铺底信息是否满足所述其他铺底规则;若是,则触发所述选取模块。

优选的,所述其他铺底规则,包括:

铺底日期小于预设日期阈值和铺底数据量小于预设数据量阈值中的一个或多个。

优选的,所述装置还包括:第二获取模块,用于获取监控权限,所述监控权限用于监控处于铺底状态的所述目标源表分区的数量。

以上本发明提供了一种数据铺底方法及装置,该方法按照分区规则对源表进行分区处理,将数据铺底细化至源表分区;进而利用铺底并行度控制目标源表分区的数据进行铺底,这就保证了并行铺底的效率。基于此,本发明实现了数据铺底的纵深化实施,保证了铺底效率,在面对大数据量基本要求时,可以降低甚至避免执行耗时极长的问题。

附图说明

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

图1为本发明实施例提供的数据铺底方法的方法流程图;

图2为本发明实施例提供的数据铺底方法的另一方法流程图;

图3为本发明实施例提供的数据铺底方法的再一方法流程图;

图4为本发明实施例提供的数据铺底装置的结构示意图。

具体实施方式

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

本发明实施例提供一种数据铺底方法,该方法的方法流程图如图1所示,包括如下步骤:

s10,获取源表和铺底条件,铺底条件至少包括分区规则和铺底并行度。

本实施例中,可以从基于脚本或直接传入的源表表名获取源表。而铺底条件和铺底并行度可以基于源表表名获取,成为后续作业的基础。

s20,按照分区规则对源表进行分区处理得到源表分区。

在执行步骤s20的过程中,分区规则中包含分区的结构以及数据量要求。如果分区规则包括主分区规则和子分区规则,则分区的结构可以具体为主分区和主分区下的子分区。此时,可以按照主分区规则对源表进行分区处理得到源表主分区;按照子分区规则对源表主分区进行分区处理得到源表子分区。

比如,分区规则中设置了2个主分区——主分区1和主分区2。以主分区1举例来说,主分区1的数据量为1000万条数据,主分区1中包含有2个一级子分区——子分区1和子分区2,其中,子分区1的数据量为200万条数据,子分区2的数据量为800万条数据。当然子分区还可以进一步分为一级子分区、二级子分区等等,主分区和子分区具有主从关系和数据量关系。

s30,根据铺底并行度从源表分区中选取待铺底的目标源表分区。

在执行步骤s30的过程中,铺底并行度可以根据不同环境性能进行个性化设置。如果分区规则包括主分区规则和子分区规则,铺底并行度包括主分区铺底并行度和子分区铺底并行度,此时可以根据主分区铺底并行度从源表主分区中选取待铺底的目标源表主分区;基于子分区铺底并行度从目标源表主分区中选取待铺底的目标源表子分区。

当然,铺底并行度还可以仅针对源表主分区,比如源表主分区的铺底并行度为5,也就是同一时间最多可以有5个源表主分区进行数据铺底;还可以仅针对源表子分区,比如源表子分区的铺底并行度为5,也就是同一时间最多可以有5个源表子分区进行数据铺底;还可以指定针对某个源表主分区下的源表子分区,比如源表主分区1中子分区的铺底并行度为5,也就是同一时间源表主分区1中最多可以有5个源表子分区进行数据铺底。

而基于铺底并行度选取待铺底的目标源表分区的方式可以为随机选取,还可以按照一定规则,比如数据量由高到底,再比如位于源表中的位置等等来选取。

比如,步骤s20中将源表分区分为2个源表主分区,并且源表主分区1下有5个源表子分区、源表主分区2下有2个源表子分区。在铺底并行度为“源表子分区、并行度3”时,可以首先从源表主分区1中选取待铺底的3个源表子分区作为目标源表分区,并执行后续使用目标源表子分区的数据进行铺底工作。如果3个源表子分区中有1个源表子分区完成,则继续从源表主分区1中选取下一个待铺底的源表子分区,直到源表主分区1下的5个源表子分区的数据全部铺底完成,再继续从源表主分区2中选取目标源表子分区……。

s40,使用目标源表分区的数据进行铺底,同时判断处于铺底状态的目标源表分区的数量是否小于铺底并行度。若是,则返回执行步骤s30。

在执行步骤s40的过程中,在使用所选取的目标源表分区的数据进行铺底的过程中,可以同时监控目标源表分区的铺底执行情况,比如目标源表分区a处于铺底状态,也就是正在铺底中,再比如目标源表分区b处于铺底结束状态等等。

如果处于铺底状态的目标源表分区的数量小于铺底并行度,则表示存在铺底完成的目标源表分区,此时,可以进一步返回步骤s30继续选取目标源表分区,直至全部铺底完成。

在实际应用过程中,可以通过oracle数据库中的dba_jobs_running监控正在运行的job数,来监控处于铺底状态的目标源表分区的数量。可以通过create_job的方式循环调用用于执行铺底操作的存储过程,来循环完成数据铺底。

此外,存储过程中包含有使用sql语句时的解析方式,比如软解析或者硬解析。

在其他一些实施例中,为满足不同数据铺底要求,在图1示出的数据铺底方法基础上,还包括如下步骤,数据铺底方法的方法流程图如图2所示:

s50,判断源表的数据铺底信息是否满足其他铺底规则;若是,则执行步骤s30。

其他铺底规则中的内容还可以结合实际需要具体设置。可选的,其他铺底规则包括铺底日期小于预设日期阈值和铺底数据量小于预设数据量阈值中的一个或多个。

以其他铺底规则包括“铺底日期小于预设日期阈值”和“铺底数据量小于预设数据量阈值”为例进行说明,首先判断当前铺底数据量是否大于预设数据量阈值;如果当前铺底数据量不大于预设数据量阈值,则进一步判断当前铺底日期是否大于预设日期阈值;如果当前铺底日期不大于预设日期阈值,则执行步骤s30。

反之,如果当前铺底数据量大于预设数据量阈值或者当前铺底日期大于预设日期阈值,则结束数据铺底。

在其他一些实施例中,为保证数据铺底的安全性,在图1示出的数据铺底方法基础上,还包括如下步骤,数据铺底方法的方法流程图如图3所示:

s60,获取监控权限,监控权限用于监控处于铺底状态的目标源表分区的数量。

本实施例中,只有获得dbms_scheduler的相关权限,才可以监控处于铺底状态的目标源表分区的数量。

本发明提供实施例提供的数据铺底方法,该方法按照分区规则对源表进行分区处理,将数据铺底细化至源表分区;进而利用铺底并行度控制目标源表分区的数据进行铺底,这就保证了并行铺底的效率。基于此,本发明实现了数据铺底的纵深化实施,保证了铺底效率,在面对大数据量基本要求时,可以降低甚至避免执行耗时极长的问题。

基于上述实施例提供的数据铺底方法,本发明实施例则对应提供执行上述数据铺底方法的装置,该装置的结构示意图如图4所示,包括:

第一获取模块10,用于获取源表和铺底条件,铺底条件至少包括分区规则和铺底并行度;

分区模块20,用于按照分区规则对源表进行分区处理得到源表分区;

选取模块30,用于根据铺底并行度从源表分区中选取待铺底的目标源表分区;

铺底判断模块40,用于使用目标源表分区的数据进行铺底,同时判断处于铺底状态的目标源表分区的数量是否小于铺底并行度;若是,则触发选取模块30。

可选的,选取模块30具体用于:

在分区规则包括主分区规则和子分区规则、铺底并行度包括主分区铺底并行度和子分区铺底并行度的情况下,按照主分区规则对源表进行分区处理得到源表主分区;按照子分区规则对源表主分区进行分区处理得到源表子分区;

相应的,铺底判断模块40,具体用于:

根据主分区铺底并行度从源表主分区中选取待铺底的目标源表主分区;基于子分区铺底并行度从目标源表主分区中选取待铺底的目标源表子分区;使用目标源表子分区的数据进行铺底,同时判断处于铺底状态的目标源表子分区的数量是否小于子分区铺底并行度。

可选的,装置还包括:

判断模块,用于判断源表的数据铺底信息是否满足其他铺底规则;若是,则触发选取模块30。

可选的,其他铺底规则,包括:

铺底日期小于预设日期阈值和铺底数据量小于预设数据量阈值中的一个或多个。

可选的,装置还包括:第二获取模块,用于获取监控权限,监控权限用于监控处于铺底状态的目标源表分区的数量。

本发明提供实施例提供的数据铺底装置,实现了数据铺底的纵深化实施,保证了铺底效率,在面对大数据量基本要求时,可以降低甚至避免执行耗时极长的问题。

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

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

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

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

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