基于数据仓库的数据汇聚调度方法

文档序号:6536909阅读:720来源:国知局
基于数据仓库的数据汇聚调度方法
【专利摘要】本发明涉及一种基于数据仓库的数据汇聚调度方法,该方法包括:开启调度任务中的主任务进程;所述主任务进程根据数据源的属性信息启动第一相关任务云中的第一任务云;所述第一任务云对本地的第一任务组进行遍历,从所述第一任务组中选择满足汇聚条件的表组成第一组表;将所述第一组表并行汇聚处理得到汇聚表;当所述汇聚表的可信度发生变化时,则创建汇聚子任务进行记录所述汇聚表信息;标记所述第一任务组实例状态。本发明通过任务模型配置可以最大化地利用数据库资源,并在数据缺失时及时发出告警,通过数据戳快速定位问题根源。
【专利说明】基于数据仓库的数据汇聚调度方法
【技术领域】
[0001]本发明涉及数据仓库,特别是涉及一种基于数据仓库的数据汇聚调度方法。
【背景技术】
[0002]数据仓库主要有数据缓存层、基础数据层、数据仓库层和数据集市层组成。现有的数据仓库的数据处理方式普遍采用的是周期轮询和定时作业。即ETL将数据装载至数据存储层或者基础数据层;定时作业将数据抽取、汇聚至数据仓库层;根据业务需求从数据仓库层汇聚至数据集市层。而对于装载延时或数据缺失时通常是采用某个时间点来汇聚前面几个周期的数据。
[0003]现在技术存在以下几个问题:在遇到接口数据缺失、数据装载延时或者其它导致数据无法及时装载入库的问题时,由于汇聚程序是依赖定时、周期的作业驱动,从而无法及时得到消息仍然继续定时汇聚数据,导致上层数据缺失;由于ETL装载程序和汇聚程序脱节,没有及时有效的消息传递导致上层的数据缺失,通常是问题发生了一段时间之后,才由用户反应数据缺失,造成用户体验很差;为了弥补数据缺失问题,现有方案通常是某个时间点汇聚前面几个周期的数据,这样做了很多重复的工作,很大程度的浪费了数据库资源;由于数据仓库本身就具有多接口数据源、汇聚表间的依赖关系层次较深、数据处理有大量的并发任务等特点,而目前常用的方案由于ETL和汇聚之间没有有效的消息传递导致数据质量无法及时的捕获到异常情况,在问题溯源时只能通过人工排查,效率非常低下;并且对汇聚任务无法进行合理灵活的组织,导致数据库资源资源经常得不到充分合理的利用。
[0004]针对现有技术的数据仓库的装载延时或数据缺失等问题,需要建立一种新的基于数据仓库的数据汇聚调度方法。

【发明内容】

[0005]本发明的目的是为了解决接口数据缺失、数据装载延时导致数据无法及时装载入库的问题。
[0006]为实现上述目的,本发明提供了一种基于数据仓库的数据汇聚调度方法,其特征在于,所述方法包括:
[0007]开启调度任务中的主任务进程;
[0008]所述主任务进程根据数据源的属性信息启动第一相关任务云中的第一任务云;
[0009]所述第一任务云对本地的第一任务组进行遍历,从所述第一任务组中选择满足汇聚条件的表组成第一组表;
[0010]将所述第一组表并行汇聚处理得到汇聚表;
[0011]当所述汇聚表的可信度发生变化时,则创建汇聚子任务进行记录所述汇聚表信息;
[0012]标记所述第一任务组实例状态。
[0013]进一步地,所述方法还包括:数据装载程序将数据源在数据缓存层进行装载。[0014]进一步地,所述方法还包括:所述数据装载程序通过校验标准接口获取所述数据源的属性信息。
[0015]进一步地,当所述汇聚表的可信度没有发生变化时,则标记所述第一任务组实例状态。
[0016]进一步地,所述第一任务云还包括第二任务组,所述方法还包括:
[0017]启动所述第二任务组;
[0018]所述第一任务云对本地的第二任务组进行遍历,从所述第二任务组中选择满足汇聚条件的表组成第二组表;
[0019]将所述第二组表并行汇聚处理得到汇聚表;
[0020]当所述汇聚表的可信度发生变化时,则创建汇聚子任务进行记录所述汇聚表信息;
[0021]标记所述第二任务组实例状态。
[0022]进一步地,所述第一相关任务云还包括第二任务云,所述方法还包括:
[0023]如果所述第一任务云和所述第二任务云在节点处汇合,则所述第一相关任务云遍历结束。
[0024]进一步地,所述方法还包括:所述主任务进程启动所述第二相关任务云。
[0025]进一步地,所述数据源属性信息包括:接口记录数、成功状态、数据粒度、数据戳。
[0026]进一步地,当所述第一任务云和第二任务云的所述数据源的属性信息相关时,同时启动所述第一任务云和第二任务云。
[0027]进一步地,具体的,还包括,利用所述数据戳查找数据缺失和提高补汇数据效率。
[0028]本发明的优点为:
[0029]1、本发明基于数据可信度,由任务自行触发其它关联任务,一个数据源接口的异动会自动触发汇聚所有由该接口影响的数据表,不需要人工干预,通过合理的任务模型配置可以最大可能的避免高峰期数据库资源使用瓶颈,将数据库资源科学的最大化利用;
[0030]2、可以在数据缺失时及时发出告警,并可以通过数据戳快速定位问题根源。
【专利附图】

【附图说明】
[0031]图1为本发明实施例提供的基于数据仓库的数据汇聚调度方法流程图;
[0032]图2为本发明实施例提供的调度方法流程图;
[0033]图3为本发明实施例提供的任务模型示意图;
[0034]图4为本发明实施例提供的数据可信度流程图;
[0035]图5为本发明实施例提供的数据戳结构示意图;
[0036]图6为本发明实施例提供的任务调度流程图。
【具体实施方式】
[0037]下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。
[0038]图1为本发明实施例提供的基于数据仓库的数据汇聚调度方法流程图。如图1所示,该方法包括以下步骤:
[0039]步骤101,开启调度任务中的主任务进程。[0040]进一步地,在步骤101之前,该方法还包括:数据装载程序将数据源在数据缓存层进行装载;数据装载程序通过校验标准接口获取数据源的属性信息。数据源属性信息包括:接口记录数、成功状态、数据粒度、数据戳。利用数据戳查找数据缺失和提高补汇数据效率。
[0041]步骤102,主任务进程根据数据源的属性信息启动第一相关任务云中的第一任务云。
[0042]步骤103,第一任务云对本地的第一任务组进行遍历,从第一任务组中选择满足汇聚条件的表组成第一组表。
[0043]步骤104,将第一组表并行汇聚处理得到汇聚表。
[0044]步骤105,当汇聚表的可信度发生变化时,则创建汇聚子任务进行记录所述汇聚表信息。
[0045]进一步地,当汇聚表的可信度没有发生变化时,则标记第一任务组实例状态。
[0046]步骤106,标记第一任务组实例状态。
[0047]进一步地,第一任务云还包括第二任务组,该方法还包括:
[0048]启动第二任务组;
[0049]第一任务云对本地的第二任务组进行遍历,从第二任务组中选择满足汇聚条件的表组成第二组表;
[0050]将第二组表并行汇聚处理得到汇聚表;
[0051]当汇聚表的可信度发生变化时,则创建汇聚子任务进行记录汇聚表信息;
[0052]标记第二任务组实例状态。
[0053]进一步地,第一相关任务云还包括第二任务云,当第一任务云和第二任务云的数据源的属性信息相关时,同时启动第一任务云和第二任务云,如果第一任务云和第二任务云在节点处汇合,则第一相关任务云遍历结束。
[0054]进一步地,主任务进程启动第二相关任务云,该方法包括:
[0055]开启调度任务中的主任务进程;
[0056]主任务进程根据数据源的属性信息启动第二相关任务云中的第三任务云;
[0057]第三任务云对本地的第三任务组进行遍历,从第三任务组中选择满足汇聚条件的表组成第三组表;
[0058]将第三组表并行汇聚处理得到汇聚表;
[0059]当汇聚表的可信度发生变化时,则创建汇聚子任务进行记录汇聚表信息;
[0060]标记第三任务组实例状态。
[0061]图2为本发明实施例提供的调度方法流程图。如图2所示,该方法包括以下步骤:
[0062]步骤201,数据装载程序在装载完接口数据源后,通过校验标准的接口规格记录接口的记录数、成功状态、数据粒度、数据时间戳等属性消息;
[0063]步骤202,将数据源的属性消息装载成日志,并存入日志管理中。
[0064]步骤203,调度程序在启动后会读取该消息,从数据处理程序中调用汇聚程序并遍历任务模型,启动将满足汇聚条件的汇聚任务,并记录完整的汇聚和告警日志,存入日志管理中。
[0065]步骤204,数据处理程序将自己完整的汇聚程序日志也存入日志管理中。
[0066]该调度方法的基本原理为:将不同的数据元素按照一定的逻辑组织起来,通过各汇聚表的相互制约关系来达到各任务的联动,将任务按照一定的逻辑和功能组合成一个完整的任务模型,形成一个完备的自循环与自我修复调度系统。可以最大程度的实现自动、智能、快速的数据处理和数据补汇功能,通过合理的任务配置可以在空间上将数据库性能发挥到最大化。
[0067]图3为本发明实施例提供的任务模型示意图。如图3所示,该任务模型包括:主任务进程、任务云、任务组和子任务。
[0068]该任务模型的执行步骤为:
[0069]步骤301,启动主任务进程,主任务进程会根据配置信息启动多个相关的任务云;
[0070]步骤302,当某一任务云启动后,任务云会从指定组开始逐一遍历每一组表,并将满足汇聚条件的同组表并行汇聚,形成汇聚表。
[0071]步骤303,判断汇聚表当前的可信度和上次相比是否发生变化,如果发生变化则表示源数据发生变化,并创建汇聚子任务。
[0072]步骤304,汇聚子任务完成后,判断该任务云中是否还有下一组任务,如果有,则继续完成下一组任务,如果没有,则继续下一任务云。
[0073]该任务模型中的各个模型所起的作用如下:
[0074]调度主任务:每一次调度任务被启动时,会启动一个主任务进程,主任务会根据配置信息,启动多个相关的任务云,每朵任务云相当于一个独立的进程,但会在某一个节点处汇合,表示同级任务云到此节点处结束,然后会由主任务进程启动新的相关任务云,由此循环直到本轮调度任务完全结束;
[0075]任务云:每一朵任务云被启动时,标志着一阶段内可以完全独立运行的汇聚任务开始运行,从设定的组开始启动相应的组任务,由此循环直到运行至设定的节点处,此任务云将结束生命周期,等待其它同级任务云运行结束,然后会由主任务进程启动新的相关任务云进程;
[0076]任务组:为了避免在多任务并行执行时任务间可能存在资源利用冲突的情况,即多个任务同时运行时,可能存在对某张表或某个资源同时征用的情况,在调度程序中引入了组的概念,即将没有依赖关系的表分为同一组,并行汇聚,当某个任务云启动时,会从指定组开始逐一遍历每一组表,将满足汇聚条件的同组表并行汇聚,待本组表遍历完成判断是否存在下一组表,再执行后续任务,这样既从根本上杜绝了多任务并行执行时可能造成的冲突,提闻调度程序的稳定性;
[0077]子任务:在每一组任务被启动时,会逐一遍历该组的每个汇聚表,从起始日期开始扫描,判断汇聚表当前的可信度和上次相比是否发生变化,如果有则表示源数据发生变化,会创建具体的汇聚子任务,每个被遍历过的汇聚表状态会被记录,当当前组每个汇聚表被遍历完成时会检查后续任务。每个子任务会在被启动后会有自己独立的完整的告警和调度日志记录,具体的数据处理程序会有自己的完整的汇聚日志记录,保证了任务的隔离性。
[0078]图4为本发明实施例提供的数据可信度流程图。如图4所示,表A的源表由B、C、D三个表组成,其中B为主表,C和D为次表。
[0079]该数据可信度包括以下步骤:
[0080]步骤401,当主表到位时,次表C和D还没有到位,等待一段时间后,如果次表还没有到位,就先对A表数据进行汇聚以满足上层数据需求,此处的A表数据在该时间点的可信度将由它的源表的可信度通过算法计算得出。
[0081]步骤402,当下一周期对A表进行扫描时,判断A表的源表是否增加,如果增加,则说明C和D表到位,会重新计算可信度。
[0082]图5为本发明实施例提供的数据戳结构示意图。如图5所示,数据戳是一个以表数据的构成为基础的元素集合,它由以下几部分组成:基础物理字段;时间粒度,它是将小时、天和月等粒度分别建成多张表,这些表有利于提高汇聚效率;可信度。
[0083]本实施例提供的每个粒度下数据源的分布计划模型为=A1表20130812的天粒度数据由B1X1两个表的20130812小时粒度数据汇聚而成;A2表201307月份的月数据由B2、C2的201307月份天粒度数据和D2表201307月份月粒度数据汇聚而成。
[0084]在图5中,A表20130801的天粒度数据由B1的201308月份月粒度数据、B2的201307月份月粒度数据和B3的201308月份天粒度数据、B4的201308月份天粒度数据汇聚rfu 。
[0085]由此可以得出数据戳的形成原理,其中,每个源表都有两部分组成,一个是源表,一个是目标表,它们形成了一个完整的数据地图。数据地图可以用来表示和追溯某个时间维度的数据产生的完整路径,这样可以便于查找数据缺失的原因和提高补汇数据效率。
[0086]图6为本发明实施例提供的任务调度流程图。如图6所示,该任务调度包括以下步骤:
[0087]步骤601,创建调度任务,可以手动启动调度任务,也可以在一轮调度任务完成后,自动创建下一个调度任务,转到步骤602。
[0088]步骤602,判断是否有任务存在,如果没有任务存在,转到步骤603 ;如果有任务存在,判断是否正在运行,如果没有任务运行,转到步骤604。
[0089]步骤603,启动调度任务,转到步骤605。
[0090]步骤604,修改启动时间及参数,当到达启动时间时,转到步骤603。
[0091]步骤605,创建主任务实例,并循环创建根任务云,转到步骤606。
[0092]步骤606,查看父级任务云是否到位,如果到位,创建任务云实例,转到步骤607。
[0093]步骤607,创建任务组实例,转到步骤608。
[0094]步骤608,循环创建子任务实例,转到步骤609和步骤610。
[0095]步骤609,汇聚子任务,转到步骤611。
[0096]步骤610,检查子任务。
[0097]步骤611,对汇聚子任务初始化,检查是否触发汇聚日期,如果是,转到步骤612。
[0098]步骤612,检查主父表是否到位,如果到位,转到步骤713 ;如果不到位,转到步骤616。
[0099]步骤613,检查是否汇聚过,如果是,转到步骤614 ;如果不是,转到步骤615。
[0100]步骤614,检查可信度变化,如果发生变化,转到步骤615 ;如果没有发生变化,转到步骤617。
[0101]步骤615,汇聚子任务,转到步骤616。
[0102]步骤616,汇聚子任务完成后,标记任务实例状态,转到步骤617 ;
[0103]步骤617,检查同组其他任务是否遍历完成,如果是,转到步骤618。
[0104]步骤618,标记任务组实例状态,检查是否还有下一组任务,转到步骤619。[0105]步骤619,如果有,转到步骤620 ;如果没有,转到步骤621。
[0106]步骤620,启动下一个任务组,转到步骤607。
[0107]步骤621,该任务云完成遍历,检查该任务云是否是叶子云,如果不是,转到步骤622 ;如果是,转到步骤623。
[0108]步骤622,循环创建子任务云,转到步骤606 ;
[0109]步骤623,检查所有叶子云是否完成遍历,如果完成遍历,转到步骤624。
[0110]步骤624,检查所有叶子云是否遍历到最大日期,转到步骤625。
[0111]步骤625,如果不是,转到步骤626 ;如果是,转到步骤627。
[0112]步骤626,启动新一天的主任务,转到步骤605。
[0113]步骤627,所有任务出口,转到步骤601。
[0114]以上所述的【具体实施方式】,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的【具体实施方式】而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
【权利要求】
1.一种基于数据仓库的数据汇聚调度方法,其特征在于,所述方法包括: 开启调度任务中的主任务进程; 所述主任务进程根据数据源的属性信息启动第一相关任务云中的第一任务云; 所述第一任务云对本地的第一任务组进行遍历,从所述第一任务组中选择满足汇聚条件的表组成第一组表; 将所述第一组表并行汇聚处理得到汇聚表; 当所述汇聚表的可信度发生变化时,则创建汇聚子任务进行记录所述汇聚表信息; 标记所述第一任务组实例状态。
2.根据权利要求1所述的基于数据仓库的数据汇聚调度方法,其特征在于,所述方法还包括:数据装载程序将数据源在数据缓存层进行装载。
3.根据权利要求2所述的基于数据仓库的数据汇聚调度方法,其特征在于,所述方法还包括:所述数据装载程序通过校验标准接口获取所述数据源的属性信息。
4.根据权利要求1所述的基于数据仓库的数据汇聚调度方法,其特征在于,所述方法还包括:当所述汇聚表的可信度没有发生变化时,则标记所述第一任务组实例状态。
5.根据权利要求1所述的基于数据仓库的数据汇聚调度方法,其特征在于,所述第一任务云还包括第二任务组,所述方法还包括: 启动所述第二任务组; 所述第一任务云对本地的第二任务组进行遍历,从所述第二任务组中选择满足汇聚条件的表组成第二组表; 将所述第二组表并行汇聚处理得到汇聚表; 当所述汇聚表的可信度发生变化时,则创建汇聚子任务进行记录所述汇聚表信息; 标记所述第二任务组实例状态。
6.根据权利要求1所述的基于数据仓库的数据汇聚调度方法,其特征在于,所述第一相关任务云还包括第二任务云,所述方法还包括: 如果所述第一任务云和所述第二任务云在节点处汇合,则所述第一相关任务云遍历结束。
7.根据权利要求6所述的基于数据仓库的数据汇聚调度方法,其特征在于,所述方法还包括:所述主任务进程启动所述第二相关任务云。
8.根据权利要求1所述的基于数据仓库的数据汇聚调度方法,其特征在于,所述数据源属性信息包括:接口记录数、成功状态、数据粒度、数据戳。
9.根据权利要求1所述的基于数据仓库的数据汇聚调度方法,其特征在于,当所述第一任务云和第二任务云的所述数据源的属性信息相关时,同时启动所述第一任务云和第二任务云。
10.根据权利要求8所述的基于数据仓库的数据汇聚调度方法,其特征在于,具体的,还包括,利用所述数据戳查找数据缺失和提高补汇数据效率。
【文档编号】G06F11/34GK103810258SQ201410037541
【公开日】2014年5月21日 申请日期:2014年1月26日 优先权日:2014年1月26日
【发明者】何峻, 陈亚萍, 孙勇 申请人:杭州东方通信软件技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1