一种在etl中优化任务处理的方法及系统的制作方法

文档序号:10512174阅读:242来源:国知局
一种在etl中优化任务处理的方法及系统的制作方法
【专利摘要】本发明公开了一种在ETL中优化任务处理的方法及系统,其中,所述方法包括:根据ETL需调度的各个任务间的相互关系构造网络图,且所述网络图标识有各个任务的任务先后执行顺序;计算所述各个任务的执行时间段和/或所述执行时间段中涉及的具体时间点参数,得到用于标识各个任务时间的计算结果;按照预设规则扫描所述网络图中的所述各个任务间的相互关系及所述任务先后执行顺序,以生成第一关系表;根据所述计算结果对所述第一关系表中的任务先后执行顺序重新排序,得到包含关键任务的第二关系表,根据所述第二关系表优化调度所述关键任务的执行处理。
【专利说明】
一种在ETL中优化任务处理的方法及系统
技术领域
[0001] 本发明涉及业务支撑领域的检测技术,尤其涉及一种在查询萃取转置加载(ETL, Extract-Transform-Load)中优化任务处理的方法及系统。
【背景技术】
[0002] 本申请发明人在实现本申请实施例技术方案的过程中,至少发现相关技术中存在 如下技术问题:
[0003] 所谓ETL指将数据从来源端经过萃取(extract)、转置(transform)、加载(load) 至目的端的过程,主要应用于数据仓库技术,是该数据仓库中的关键技术,但其对象不限定 于数据仓库。所述ETL主要包括数据的清洗、转换和加载,采用所述ETL技术,用户能从数 据源抽取出所需的数据,经过数据清洗,最终按照预先定义好的数据仓库模型,将数据加载 到数据仓库中去。
[0004] 以应用于数据仓库技术而言,由于ETL中包含众多的调度任务作业,如何有效管 理这些调度,提高ETL执行效率,是提高整个数据仓库处理能力的关键。采用现有ETL解决 方案和产品,大多使用分布式的架构和体系,通过并行增加服务器或者并行执行任务来提 高ETL的处理速度,通过并行的方式来提高ETL的处理能力,通过增加硬件开销来换取处理 能力的提升,也就是说,现有技术是通过额外增加硬件来换取处理能力的提升,以提高ETL 调度多任务的效率,但是会存在增加硬件开销及提高制造成本的问题,对于这个问题,相关 技术中并未存在有效的解决方案。

【发明内容】

[0005] 有鉴于此,本发明实施例希望提供一种在ETL中优化任务处理的方法及系统,至 少解决了现有技术存在的问题。
[0006] 本发明实施例的技术方案是这样实现的:
[0007] 本发明实施例的一种在ETL中优化任务处理的方法,所述方法包括:
[0008] 根据ETL需调度的各个任务间的相互关系构造网络图,且所述网络图标识有各个 任务的任务先后执行顺序;
[0009] 计算所述各个任务的执行时间段和/或所述执行时间段中涉及的具体时间点参 数,得到用于标识各个任务时间的计算结果;
[0010] 按照预设规则扫描所述网络图中的所述各个任务间的相互关系及所述任务先后 执行顺序,以生成第一关系表;
[0011] 根据所述计算结果对所述第一关系表中的任务先后执行顺序重新排序,得到包含 关键任务的第二关系表,根据所述第二关系表优化调度所述关键任务的执行处理。
[0012] 上述方案中,所述根据ETL需调度的各个任务间的相互关系构造网络图,包括:
[0013] 获取各个节点的位置,至少两个节点构成一个任务;
[0014] 根据所述各个节点的位置对应的位置关系和任务依赖因素来建立所述ETL需调 度的各个任务间的相互关系。
[0015] 上述方案中,所述计算所述各个任务的执行时间段,包括:
[0016] 获取第一时间数据,所述第一时间数据用于表征符合第一条件所达到的任务最快 可能完成时间;
[0017] 获取第二时间数据,所述第二时间数据用于表征符合第二条件所达到的任务最可 能完成时间;
[0018] 获取第三时间数据,所述第三时间数据用于表征符合第三条件所达到的任务最慢 可能完成时间;
[0019] 根据所述第一时间数据、所述第二时间数据和所述第三时间数据得到所述各个任 务对应的期望时间数据,并将所述期望时间数据作为所述各个任务的执行时间段。
[0020] 上述方案中,所述按照预设规则扫描所述网络图中的所述各个任务间的相互关系 及所述任务先后执行顺序,以生成第一关系表,包括:
[0021] 所述预设规则为存在相互关系的各个任务中,在当前任务未完成时不允许所述当 前任务后续的紧后任务开始执行;
[0022] 提取存在相互关系的各个任务,得到所述当前任务和所述紧后任务;
[0023] 按照所述任务先后执行顺序,建立包含所述当前任务和所述紧后任务的所述第一 关系表;
[0024] 所述第一关系表包含各个任务中所述当前任务的任务编号,和所述紧后任务的任 务编号。
[0025] 上述方案中,根据所述计算结果对所述第一关系表中的任务先后执行顺序重新排 序,得到包含关键任务的第二关系表,包括:
[0026] 根据所述计算结果遍历所述第一关系表中的各个任务,对任务先后执行顺序重新 排序,判断出所述当前任务和所述紧后任务在所述第一关系表中排序靠前时,将所述当前 任务和所述紧后任务确定为所述关键任务;
[0027] 将所述当前任务和所述紧后任务插入所述第二关系表,并从所述第一关系表中删 除所述当前任务和所述紧后任务,同时更新所述第二关系表中的任务执行优先级;
[0028] 所述第二关系表包含各个任务中所述当前任务的任务编号,所述紧后任务的任务 编号,和任务执行优先级。
[0029] 上述方案中,所述任务执行优先级不是固定不变的,是随着所述计算结果的变化 重新排序后的动态调整结果。
[0030] 上述方案中,所述根据所述第二关系表优选调度所述关键任务的执行处理,包 括:
[0031] 在判断出所述第一关系表为空时,结束对所述第一关系表的遍历后,读取所述第 -关系表;
[0032] 对所述第二关系表的各个任务中当前任务和紧后任务按照所述任务执行优先级 的顺序进行任务优化,以优化调度所述关键任务的执行处理。
[0033] 本发明实施例的一种在ETL中优化任务处理的系统,所述系统包括:
[0034] 构造单元,用于根据ETL需调度的各个任务间的相互关系构造网络图,且所述网 络图标识有各个任务的任务先后执行顺序;
[0035] 计算单元,用于计算所述各个任务的执行时间段和/或所述执行时间段中涉及的 具体时间点参数,得到用于标识各个任务时间的计算结果;
[0036] 扫描单元,用于按照预设规则扫描所述网络图中的所述各个任务间的相互关系及 所述任务先后执行顺序,以生成第一关系表;
[0037] 表生成及调度单元,用于根据所述计算结果对所述第一关系表中的任务先后执行 顺序重新排序,得到包含关键任务的第二关系表,根据所述第二关系表优化调度所述关键 任务的执行处理。
[0038] 上述方案中,所述计算单元,进一步包括:
[0039] 第一获取子单元,用于获取第一时间数据,所述第一时间数据用于表征符合第一 条件所达到的任务最快可能完成时间;
[0040] 第二获取子单元,用于获取第二时间数据,所述第二时间数据用于表征符合第二 条件所达到的任务最可能完成时间;
[0041] 第三获取子单元,用于获取第三时间数据,所述第三时间数据用于表征符合第三 条件所达到的任务最慢可能完成时间;
[0042] 运算子单元,用于根据所述第一时间数据、所述第二时间数据和所述第三时间数 据得到所述各个任务对应的期望时间数据,并将所述期望时间数据作为所述各个任务的执 行时间段。
[0043] 上述方案中,所述扫描单元,进一步包括:
[0044] 提取子单元,用于在所述预设规则为存在相互关系的各个任务中,在当前任务未 完成时不允许所述当前任务后续的紧后任务开始执行的情况下,提取存在相互关系的各个 任务,得到所述当前任务和所述紧后任务;
[0045] 第一关系表建立子单元,用于按照所述任务先后执行顺序,建立包含所述当前任 务和所述紧后任务的所述第一关系表;所述第一关系表包含各个任务中所述当前任务的任 务编号,和所述紧后任务的任务编号。
[0046] 上述方案中,所述表生成及调度单元,进一步包括:
[0047] 遍历及判断子单元,用于根据所述计算结果遍历所述第一关系表中的各个任务, 对任务先后执行顺序重新排序,判断出所述当前任务和所述紧后任务在所述第一关系表中 排序靠前时,将所述当前任务和所述紧后任务确定为所述关键任务;
[0048] 插入及更新子单元,用于将所述当前任务和所述紧后任务插入所述第二关系表, 并从所述第一关系表中删除所述当前任务和所述紧后任务,同时更新所述第二关系表中的 任务执行优先级;所述第二关系表包含各个任务中所述当前任务的任务编号,所述紧后任 务的任务编号,和任务执行优先级;
[0049] 上述方案中,所述表生成及调度单元,进一步还包括:
[0050] 读取子单元,在通过所述遍历及判断子单元判断出所述第一关系表为空时,结束 对所述第一关系表的遍历后,读取所述第二关系表;
[0051] 优化处理子单元,用于对所述第二关系表的各个任务中当前任务和紧后任务按照 所述任务执行优先级的顺序进行任务优化,以优先调度所述关键任务的执行处理。
[0052] 本发明实施例的在ETL中优化任务处理的方法包括:根据ETL需调度的各个任务 间的相互关系构造网络图,且所述网络图标识有各个任务的任务先后执行顺序;计算所述 各个任务的执行时间段和/或所述执行时间段中涉及的具体时间点参数,得到用于标识各 个任务时间的计算结果;按照预设规则扫描所述网络图中的所述各个任务间的相互关系及 所述任务先后执行顺序,以生成第一关系表;根据所述计算结果对所述第一关系表中的任 务先后执行顺序重新排序,得到包含关键任务的第二关系表,根据所述第二关系表优化调 度所述关键任务的执行处理。
[0053] 采用本发明实施例,能构造得到网络图,网络图由各个任务间的相互关系构成并 标识有各个任务的任务先后执行顺序,计算得到用于标识各个任务时间的计算结果,按照 预设规则扫描所述网络图中的所述各个任务间的相互关系及所述任务先后执行顺序,以生 成第一关系表,根据所述计算结果对所述第一关系表中的任务先后执行顺序重新排序,得 到包含关键任务的第二关系表,根据所述第二关系表优化调度所述关键任务的执行处理, 通过这些软件层面实现的技术,本发明实施例是一种无需增加硬件从而避免硬件开销高及 避免提高制造成本的方案,解决了现有技术存在的问题。
【附图说明】
[0054] 图1为本发明实施例的方法流程示意图;
[0055] 图2为应用本发明实施例的一应用场景的ETL优化流程图;
[0056] 图3为应用本发明实施例的另一应用场景的ETL优化流程图。
【具体实施方式】
[0057] 下面结合附图对技术方案的实施作进一步的详细描述。
[0058] 本发明实施例的在ETL中优化任务处理的方法,如图1所示,包括:
[0059] 步骤101、根据ETL需调度的各个任务间的相互关系构造网络图,且所述网络图标 识有各个任务的任务先后执行顺序。
[0060] 步骤102、计算所述各个任务的执行时间段和/或所述执行时间段中涉及的具体 时间点参数,得到用于标识各个任务时间的计算结果。
[0061] 步骤103、按照预设规则扫描所述网络图中的所述各个任务间的相互关系及所述 任务先后执行顺序,以生成第一关系表。
[0062] 步骤104、根据所述计算结果对所述第一关系表中的任务先后执行顺序重新排序, 得到包含关键任务的第二关系表,根据所述第二关系表优化调度所述关键任务的执行处 理。
[0063] 在本发明实施例一实施方式中,所述根据ETL需调度的各个任务间的相互关系构 造网络图,包括:获取各个节点的位置,至少两个节点构成一个任务;根据所述各个节点的 位置对应的位置关系和任务依赖因素来建立所述ETL需调度的各个任务间的相互关系。
[0064] 在本发明实施例一实施方式中,所述计算所述各个任务的执行时间段,包括:获 取第一时间数据,所述第一时间数据用于表征符合第一条件所达到的任务最快可能完成时 间;获取第二时间数据,所述第二时间数据用于表征符合第二条件所达到的任务最可能完 成时间;获取第三时间数据,所述第三时间数据用于表征符合第三条件所达到的任务最慢 可能完成时间;根据所述第一时间数据、所述第二时间数据和所述第三时间数据得到所述 各个任务对应的期望时间数据,并将所述期望时间数据作为所述各个任务的执行时间段。
[0065] 在本发明实施例一实施方式中,所述按照预设规则扫描所述网络图中的所述各个 任务间的相互关系及所述任务先后执行顺序,以生成第一关系表,包括:所述预设规则为存 在相互关系的各个任务中,在当前任务未完成时不允许所述当前任务后续的紧后任务开始 执行;提取存在相互关系的各个任务,得到所述当前任务和所述紧后任务;按照所述任务 先后执行顺序,建立包含所述当前任务和所述紧后任务的所述第一关系表;所述第一关系 表包含各个任务中所述当前任务的任务编号,和所述紧后任务的任务编号。
[0066] 在本发明实施例一实施方式中,根据所述计算结果对所述第一关系表中的任务先 后执行顺序重新排序,得到包含关键任务的第二关系表,包括:根据所述计算结果遍历所述 第一关系表中的各个任务,对任务先后执行顺序重新排序,判断出所述当前任务和所述紧 后任务在所述第一关系表中排序靠前时,将所述当前任务和所述紧后任务确定为所述关键 任务;将所述当前任务和所述紧后任务插入所述第二关系表,并从所述第一关系表中删除 所述当前任务和所述紧后任务,同时更新所述第二关系表中的任务执行优先级;所述第二 关系表包含各个任务中所述当前任务的任务编号,所述紧后任务的任务编号,和任务执行 优先级。
[0067] 在本发明实施例一实施方式中,所述任务执行优先级不是固定不变的,是随着所 述计算结果的变化重新排序后的动态调整结果。
[0068] 在本发明实施例一实施方式中,所述根据所述第二关系表优选调度所述关键任务 的执行处理,包括:在判断出所述第一关系表为空时,结束对所述第一关系表的遍历后,读 取所述第二关系表;对所述第二关系表的各个任务中当前任务和紧后任务按照所述任务执 行优先级的顺序进行任务优化,以优化调度所述关键任务的执行处理。
[0069] 本发明实施例的在ETL中优化任务处理的系统,所述系统包括:
[0070] 构造单元,用于根据ETL需调度的各个任务间的相互关系构造网络图,且所述网 络图标识有各个任务的任务先后执行顺序;
[0071] 计算单元,用于计算所述各个任务的执行时间段和/或所述执行时间段中涉及的 具体时间点参数,得到用于标识各个任务时间的计算结果;
[0072] 扫描单元,用于按照预设规则扫描所述网络图中的所述各个任务间的相互关系及 所述任务先后执行顺序,以生成第一关系表;
[0073] 表生成及调度单元,用于根据所述计算结果对所述第一关系表中的任务先后执行 顺序重新排序,得到包含关键任务的第二关系表,根据所述第二关系表优化调度所述关键 任务的执行处理。
[0074] 在本发明实施例一实施方式中,所述计算单元,进一步包括:
[0075] 第一获取子单元,用于获取第一时间数据,所述第一时间数据用于表征符合第一 条件所达到的任务最快可能完成时间;
[0076] 第二获取子单元,用于获取第二时间数据,所述第二时间数据用于表征符合第二 条件所达到的任务最可能完成时间;
[0077] 第三获取子单元,用于获取第三时间数据,所述第三时间数据用于表征符合第三 条件所达到的任务最慢可能完成时间;
[0078] 运算子单元,用于根据所述第一时间数据、所述第二时间数据和所述第三时间数 据得到所述各个任务对应的期望时间数据,并将所述期望时间数据作为所述各个任务的执 行时间段。
[0079] 在本发明实施例一实施方式中,所述扫描单元,进一步包括:
[0080] 提取子单元,用于在所述预设规则为存在相互关系的各个任务中,在当前任务未 完成时不允许所述当前任务后续的紧后任务开始执行的情况下,提取存在相互关系的各个 任务,得到所述当前任务和所述紧后任务;
[0081] 第一关系表建立子单元,用于按照所述任务先后执行顺序,建立包含所述当前任 务和所述紧后任务的所述第一关系表;所述第一关系表包含各个任务中所述当前任务的任 务编号,和所述紧后任务的任务编号。
[0082] 在本发明实施例一实施方式中,所述表生成及调度单元,进一步包括:
[0083] 遍历及判断子单元,用于根据所述计算结果遍历所述第一关系表中的各个任务, 对任务先后执行顺序重新排序,判断出所述当前任务和所述紧后任务在所述第一关系表中 排序靠前时,将所述当前任务和所述紧后任务确定为所述关键任务;
[0084] 插入及更新子单元,用于将所述当前任务和所述紧后任务插入所述第二关系表, 并从所述第一关系表中删除所述当前任务和所述紧后任务,同时更新所述第二关系表中的 任务执行优先级;所述第二关系表包含各个任务中所述当前任务的任务编号,所述紧后任 务的任务编号,和任务执行优先级;
[0085] 在本发明实施例一实施方式中,所述表生成及调度单元,进一步还包括:
[0086] 读取子单元,在通过所述遍历及判断子单元判断出所述第一关系表为空时,结束 对所述第一关系表的遍历后,读取所述第二关系表;
[0087] 优化处理子单元,用于对所述第二关系表的各个任务中当前任务和紧后任务按照 所述任务执行优先级的顺序进行任务优化,以优先调度所述关键任务的执行处理。
[0088] 以一个现实应用场景为例对本发明实施例阐述如下:
[0089] 现有ETL方案和产品中,大多使用分布式的架构和体系,通过并行增加服务器或 者并行执行任务来提高ETL的处理速度,很少通过考虑ETL任务自身的优化来缩短运行时 间,这是会增加硬件成本和硬件开销的。对于这个问题,本应用场景采用本发明实施例,是 设计一种软件算法,即:利用ETL中各个节点的位置关系和任务依赖,绘制节点和任务相互 关系的网络图,然后以执行时间为主要计算单元,找出ETL中的关键任务和关键的执行过 程,通过优化关键任务和关键的执行过程来达到降低整个ETL任务族的执行时间的目的。 也就是说,是将软件算法引入ETL的任务处理中,通过时间参数的计算,找出关键工作,针 对关键工作进行优化,可以缩短整个任务的总时间,来达到提高ETL执行效率的目的。另 外,由于是将软件算法纳入到一个动态处理的体系里,达到实时计算、持续优化的目的。
[0090] 举例来说,所述节点可以指两个数据表(表一和表二),在表一和表二之间存在一 种关联或交互等,即在表一和表二间建立一种任务,执行该任务,也就是说,ETL中各个节点 间存在位置关系,至少任意两个节点间构成一个任务,形成任务依赖,所以可以称之为;每 个任务的最小单元是节点,节点可以是接口或者数据库表,而在每个任务中还包括执行存 储过程或者SQL语句的控制流。通过ETL调度的配置,可以建立整个ETL任务之间的相互 关系。
[0091] 应用场景一:
[0092] 如图2所示为应用本发明实施例的一应用场景的ETL优化流程图,包括:
[0093] 步骤201 :建立任务之间的相互关系,根据任务间的相互关系构造任务之间的网 络图。
[0094] 这里,通过配置ETL调度任务,可以得到所有任务之间的相互关系。通过有向图标 注出各个任务之间的执行顺序和相互依赖关系。
[0095] 步骤202 :计算各个任务的执行时间。
[0096] 这里,时间的计算可以利用经验采用最可能时间的方式,或者利用三点时间估计 法确定的方式来实现。
[0097] 针对所述利用三点时间估计法确定的方式而言,a为任务最快可能完成时间,m为 任务最可能完成时间,b为任务最慢可能完成时间,利用这三个时间来确定每个任务的期望
[0098] 这里需要指出的是,本步骤得到的时间是一个由起点和终点所构成时间段的概 念,而后续步骤203得到的时间是时间点的概念,该时间点可以是起点,可以是终端,也可 以是位于时间段内的一个具体位置点。
[0099] 步骤203 :计算涉及任务的各个时间参数。
[0100] 这里,一个任务(i,j)的最早可能开始时间用tES(i,j)表示,需要指出是,这个时 间并不是任务(i,j)的执行时间,而是任务(i,j)开始运行的时间,依赖于所有跟节点i有 关的,在节点i之前的任务都完成以后才能开始的时间,所以是取的所有i之前的任务(k, i)的最早开始时间和任务(k,i)的执行时间之和的最大值。最早完成时间用tEF(i,j)表 示,所述t ES(i,j)和所述tEF(i,j)通过以下公式⑴计算。每个任务开始前,其前面依赖的 任务必须全部执行完成。
[0101] 公式⑴中的i,j,k代表节点标号,节点标号从1到n,如果节点i,j之间存在 任务就标注为tu,如果节点k,i之间存在任务就标注为t ki,则所述tES (k, i)表示节点k,i 之间存在任务(k,i)对应的最早可能开始时间,所述tES(i,j)表示节点i,j之间存在任务 (i,j)对应的最早可能开始时间;t ES(0, j)表示一个起始,就是一个初始化的意思,0不是实 际存在的节点,是一个虚节点,表示所有任务在开始的时候都由一个起始节点触发,就是一 个开始符,这个节点和后续实际节点组成的虚任务的最早开始时间都是〇 ;t(i,j)就是任 务(i,j)的执行完成时间

[0103] 这里,一个任务的最晚开始时间用Ui,j)表示,最晚必须完成时间用kF(i,j)表 示,所述t LS(i, j)和所述tLF(i, j)通过以下公式(2)计算。
[0104] 公式⑵中的i,j,k,η代表节点标号,节点标号从1到n,如果节点i,η之间 存在任务就标注为t in,如果节点j,k之间存在任务就标注为tjk,则所述Uj,k)表示节 点j,k之间存在任务(j,k)对应的最晚可能开始时间,所述Ui,j)表示节点i,j之间 存在任务(i,j)对应的最晚可能开始时间;t(i,j)就是任务(i,j)的执行完成时间,就是
_算的时间;??Ρ·(;?,η)是任务(i,n)的最晚结束时间,t EF(i,n)就是任务(i,n) 的最早结束时间,这个节点η已经是最后一个节点了,它和前面的节点i组成的任务(i,η) 其实就是最后要执行的任务了,这个任务执行的时候前面所有的任务都已经执行完了,这 样,这个任务(i,η)最早结束和最晚结束没有什么区别,则tji,n) = tEF(i,η)表示的意 思就是二者时间也相等的意思;Ui,j)表示任务(i,j)对应的最晚可能开始时间,它表示 的任务(i,j)最晚必须开始的时间,是依赖于所有跟节点j后续相关的节点k,取的是任务 (j,k)的最晚开始时间减去任务(i,j)的执行时间的最小值。
[0106] 任务的总时差用R(i,j)表示,通过以下公式(3)计算,表示延迟任务开始的最大 时间幅度,R(i,j) = tLF(i,j)-tEF(i,j) (3)
[0107] 任务的单时差用r(i,j)表示,通过以下公式(4)计算,表示不影响后面的任务的 最早开始时间的条件下,这个任务可以延迟开始的最大时间幅度;
[0108] r(i,j) = tES(j, k)-tEF(i, j) (4)
[0109] 步骤204 :利用以下如程序代码段PI所揭示的软件算法原理构成的预设规则动态 扫描任务相关关系,找到关键任务和关键执行过程。
[0110] 这里,针对所述软件算法原理而言,该原理包括:
[0111] 首先,建立为每个节点i标号,从1到n,如果节点i,j之间存在任务就标注为b, 然后建立只有任务和其紧后任务的关系表ta Sk_relati〇n,该表包含两个字段,一个是某任 务编号,另一个是该任务的紧后任务编号,这个表里插入所有的ETL先后关系。
[0112] 然后,建立一个关键任务关系表kpi_task_relati〇n,该表是含有三个字段,任务 编号、紧后任务编号和优先级,这个表初始为空。
[0113] 接着,通过遍历task_relation,根据网络计划的方法,找到关键任务,插入到 kpi_task_relation,并且设置优先级为1。
[0114] 最后,从task_relation表中删除已经插入kpi_task_relation的任务关系,重新 遍历task_relation,同样将结果插入kpi_task_relation,并且设置优先级为2.依次类 推,直到task_relation只有一条记录,将这一条记录插入kpi_task_relation,设置最低 优先级。
[0115] 步骤205 :进行持续的任务优化。
[0116] 这里,根据kpi_task_relation的优先级,依次对任务进行优化,优化完成后,重 新开始遍历task_relation,生成新的kpi_task_relation表再次对任务进行优化,直到 kpi_task_relation里优先级高的任务无优化的可能为止,就达到了使ETL执行效率整体 优化提尚的目的。
[0117] 应用场景二:
[0118] 如图3所示为应用本发明实施例的一应用场景的ETL优化流程图,包括:
[0119] 步骤301、构造任务之间的网络图,计算各任务执行时间。
[0120] 步骤302、建立只包含任务和紧后任务的task_relation表。
[0121] 步骤 303、遍历 task_relation 表。
[0122] 步骤304、判断该任务和紧后任务是否为关键任务,如果是,则执行步骤305;否 贝 1J,不予处理。
[0123] 步骤306、将任务和紧后任务插入kip_task_relation表,并更新优先级。
[0124] 步骤307、判断task_relation是否为空,如果是,执行步骤308,否则,转入执行步 骤 303。
[0125] 步骤308、根据kip_task_relation表中任务和紧后任务的优先级顺序进行任务 优化。
[0126] 这里需要指出的是,执行完本步骤后,转入步骤302,以持续优化,重新建立task_ relation表来达到持续优化的目的。
[0127] 这里需要指出的是,应用场景一中步骤204所述涉及的软件算法,及应用场景二 中步骤304用于查找该任务和紧后任务是否为关键任务的算法都是通过以下程序代码段 P1实现,该程序代码段P1为整个ETL优化过程找到关键任务的程序代码:


[0131] 综上所述,本发明实施例主要包括:通过任务之间的关系,采用程序,找到ETL中 的关键任务和关键执行过程,可以有针对性的对关键任务进行优化,提高ETL执行效率。并 且该程序还可以实现实时计算、持续优化任务的目的。
[0132] 采用本发明实施例的有益效果为:本发明实施例中查询关键任务,进一步还包括 查询关键任务的关键执行过程,进而根据查询结果进行优化的技术是通过软件算法实现, 该算法是"找出关键工作,针对关键工作进行优化",从而,可以缩短整个任务的执行总时 间,从而达到提高ETL执行效率的目的;而且,本发明实施例无需要像现有技术一般,必须 额外增加硬件来提升ETL执行效率,可见,采用本发明实施例也不会增加制造成本,仅仅针 对ETL任务本身进行优化,并没有硬件的开销;另外,本发明实施例的技术不只是一次性优 化,而是利用软件算法实现持续优化任务的目的。
[0133] 本发明实施例所述集成的模块如果以软件功能模块的形式实现并作为独立的产 品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明 实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现 出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备 (可以是个人计算机、服务器、或者网络设备等)执行本发明各个实施例所述方法的全部或 部分。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随 机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介 质。这样,本发明实施例不限制于任何特定的硬件和软件结合。
[0134] 相应的,本发明实施例还提供一种计算机存储介质,其中存储有计算机程序,该计 算机程序用于执行本发明实施例的在ETL中优化任务处理的方法。
[0135] 以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。
【主权项】
1. 一种在ETL中优化任务处理的方法,其特征在于,所述方法包括: 根据ETL需调度的各个任务间的相互关系构造网络图,且所述网络图标识有各个任务 的任务先后执行顺序; 计算所述各个任务的执行时间段和/或所述执行时间段中涉及的具体时间点参数,得 到用于标识各个任务时间的计算结果; 按照预设规则扫描所述网络图中的所述各个任务间的相互关系及所述任务先后执行 顺序,以生成第一关系表; 根据所述计算结果对所述第一关系表中的任务先后执行顺序重新排序,得到包含关键 任务的第二关系表,根据所述第二关系表优化调度所述关键任务的执行处理。2. 根据权利要求1所述的方法,其特征在于,所述根据ETL需调度的各个任务间的相互 关系构造网络图,包括: 获取各个节点的位置,至少两个节点构成一个任务; 根据所述各个节点的位置对应的位置关系和任务依赖因素来建立所述ETL需调度的 各个任务间的相互关系。3. 根据权利要求1所述的方法,其特征在于,所述计算所述各个任务的执行时间段,包 括: 获取第一时间数据,所述第一时间数据用于表征符合第一条件所达到的任务最快可能 完成时间; 获取第二时间数据,所述第二时间数据用于表征符合第二条件所达到的任务最可能完 成时间; 获取第三时间数据,所述第三时间数据用于表征符合第三条件所达到的任务最慢可能 完成时间; 根据所述第一时间数据、所述第二时间数据和所述第三时间数据得到所述各个任务对 应的期望时间数据,并将所述期望时间数据作为所述各个任务的执行时间段。4. 根据权利要求1所述的方法,其特征在于,所述按照预设规则扫描所述网络图中的 所述各个任务间的相互关系及所述任务先后执行顺序,以生成第一关系表,包括: 所述预设规则为存在相互关系的各个任务中,在当前任务未完成时不允许所述当前任 务后续的紧后任务开始执行; 提取存在相互关系的各个任务,得到所述当前任务和所述紧后任务; 按照所述任务先后执行顺序,建立包含所述当前任务和所述紧后任务的所述第一关系 表; 所述第一关系表包含各个任务中所述当前任务的任务编号,和所述紧后任务的任务编 号。5. 根据权利要求4所述的方法,其特征在于,根据所述计算结果对所述第一关系表中 的任务先后执彳丁顺序重新排序,得到包含关键任务的第^关系表,包括: 根据所述计算结果遍历所述第一关系表中的各个任务,对任务先后执行顺序重新排 序,判断出所述当前任务和所述紧后任务在所述第一关系表中排序靠前时,将所述当前任 务和所述紧后任务确定为所述关键任务; 将所述当前任务和所述紧后任务插入所述第二关系表,并从所述第一关系表中删除所 述当前任务和所述紧后任务,同时更新所述第二关系表中的任务执行优先级; 所述第二关系表包含各个任务中所述当前任务的任务编号,所述紧后任务的任务编 号,和任务执行优先级。6. 根据权利要求5所述的方法,其特征在于,所述任务执行优先级不是固定不变的,是 随着所述计算结果的变化重新排序后的动态调整结果。7. 根据权利要求6所述的方法,其特征在于,所述根据所述第二关系表优选调度所述 关键任务的执行处理,包括: 在判断出所述第一关系表为空时,结束对所述第一关系表的遍历后,读取所述第二关 系表; 对所述第二关系表的各个任务中当前任务和紧后任务按照所述任务执行优先级的顺 序进行任务优化,以优化调度所述关键任务的执行处理。8. -种在ETL中优化任务处理的系统,其特征在于,所述系统包括: 构造单元,用于根据ETL需调度的各个任务间的相互关系构造网络图,且所述网络图 标识有各个任务的任务先后执行顺序; 计算单元,用于计算所述各个任务的执行时间段和/或所述执行时间段中涉及的具体 时间点参数,得到用于标识各个任务时间的计算结果; 扫描单元,用于按照预设规则扫描所述网络图中的所述各个任务间的相互关系及所述 任务先后执行顺序,以生成第一关系表; 表生成及调度单元,用于根据所述计算结果对所述第一关系表中的任务先后执行顺序 重新排序,得到包含关键任务的第二关系表,根据所述第二关系表优化调度所述关键任务 的执行处理。9. 根据权利要求8所述的系统,其特征在于,所述计算单元,进一步包括: 第一获取子单元,用于获取第一时间数据,所述第一时间数据用于表征符合第一条件 所达到的任务最快可能完成时间; 第二获取子单元,用于获取第二时间数据,所述第二时间数据用于表征符合第二条件 所达到的任务最可能完成时间; 第三获取子单元,用于获取第三时间数据,所述第三时间数据用于表征符合第三条件 所达到的任务最慢可能完成时间; 运算子单元,用于根据所述第一时间数据、所述第二时间数据和所述第三时间数据得 到所述各个任务对应的期望时间数据,并将所述期望时间数据作为所述各个任务的执行时 间段。10. 根据权利要求8所述的系统,其特征在于,所述扫描单元,进一步包括: 提取子单元,用于在所述预设规则为存在相互关系的各个任务中,在当前任务未完成 时不允许所述当前任务后续的紧后任务开始执行的情况下,提取存在相互关系的各个任 务,得到所述当前任务和所述紧后任务; 第一关系表建立子单元,用于按照所述任务先后执行顺序,建立包含所述当前任务和 所述紧后任务的所述第一关系表;所述第一关系表包含各个任务中所述当前任务的任务编 号,和所述紧后任务的任务编号。11. 根据权利要求10所述的系统,其特征在于,所述表生成及调度单元,进一步包括: 遍历及判断子单元,用于根据所述计算结果遍历所述第一关系表中的各个任务,对任 务先后执行顺序重新排序,判断出所述当前任务和所述紧后任务在所述第一关系表中排序 靠前时,将所述当前任务和所述紧后任务确定为所述关键任务; 插入及更新子单元,用于将所述当前任务和所述紧后任务插入所述第二关系表,并从 所述第一关系表中删除所述当前任务和所述紧后任务,同时更新所述第二关系表中的任务 执行优先级;所述第二关系表包含各个任务中所述当前任务的任务编号,所述紧后任务的 任务编号,和任务执行优先级。12.根据权利要求11所述的系统,其特征在于,所述表生成及调度单元,进一步还包 括: 读取子单元,在通过所述遍历及判断子单元判断出所述第一关系表为空时,结束对所 述第一关系表的遍历后,读取所述第二关系表; 优化处理子单元,用于对所述第二关系表的各个任务中当前任务和紧后任务按照所述 任务执行优先级的顺序进行任务优化,以优先调度所述关键任务的执行处理。
【文档编号】G06F17/30GK105868190SQ201510025286
【公开日】2016年8月17日
【申请日】2015年1月19日
【发明人】刘毅, 董云龙, 李湛, 田江涛
【申请人】中国移动通信集团河北有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1