一种任务树的优化方法和装置.pdf

上传人:111****11 文档编号:4259600 上传时间:2018-09-12 格式:PDF 页数:17 大小:486.74KB
返回 下载 相关 举报
摘要
申请专利号:

CN201110195626.9

申请日:

2011.07.13

公开号:

CN102880500A

公开日:

2013.01.16

当前法律状态:

授权

有效性:

有权

法律详情:

授权|||实质审查的生效IPC(主分类):G06F 9/46申请日:20110713|||公开

IPC分类号:

G06F9/46

主分类号:

G06F9/46

申请人:

阿里巴巴集团控股有限公司

发明人:

陈旭

地址:

英属开曼群岛大开曼资本大厦一座四层847号邮箱

优先权:

专利代理机构:

北京润泽恒知识产权代理有限公司 11319

代理人:

苏培华

PDF下载: PDF下载
内容摘要

本发明提供了一种任务树的优化方法和装置,其中的方法具体包括:接收针对任务树的优化命令;检测所述任务树中两个任务结点之间的连接,如果二者之间的连接既包括长度为1的路径,又包括长度大于1的路径,则将二者之间的长度为1的路径确定为冗余任务依赖;在所述任务树中删除检测出的冗余任务依赖。本发明能够快速、高效地检测冗余任务依赖。

权利要求书

权利要求书一种任务树的优化方法,其特征在于,包括:
接收针对任务树的优化命令;
检测所述任务树中两个任务结点之间的连接,如果二者之间的连接既包括长度为1的路径,又包括长度大于1的路径,则将二者之间的长度为1的路径确定为冗余任务依赖;
在所述任务树中删除检测出的冗余任务依赖。
如权利要求1所述的方法,其特征在于,所述检测任务树中两个任务结点之间的连接的步骤,包括:
获取所述任务树中具有两个或两个以上直接父亲的子任务结点,其中,该子任务结点到直接父亲的路径长度等于1;
从该子任务结点开始,在所述任务树中遍历相应的间接父任务结点,其中,该子任务结点到间接父任务结点的路径长度大于1;
如果所述任务树中存在某一间接父任务结点到该子任务结点的长度为1的路径,则将这一间接父任务结点到该子任务结点的长度为1的路径确定为冗余任务依赖。
如权利要求1或2所述的方法,其特征在于,采用数据库表存储所述任务树的任务依赖关系,所述数据库表的字段包括父任务标识和子任务标识。
如权利要求3所述的方法,其特征在于,所述数据库表的结构为关系数据结构。
如权利要求4所述的方法,其特征在于,所述检测任务树中两个任务结点之间的连接的步骤,包括:
基于结构化查询进行任务树中两个任务结点之间的连接的检测,所述结构化查询以记录集合作为操作对象,结构化查询语句接受集合作为输入,返回集合作为输出;
将该输出确定为冗余任务依赖。
一种任务树的优化装置,其特征在于,包括:
接口模块,用于接收针对任务树的优化命令;
检测模块,用于检测所述任务树中两个任务结点之间的连接,如果二者之间的连接既包括长度为1的路径,又包括长度大于1的路径,则将二者之间的长度为1的路径确定为冗余任务依赖;
删除模块,用于在所述任务树中删除检测出的冗余任务依赖。
如权利要求6所述的装置,其特征在于,所述检测模块,包括:
获取单元,用于获取所述任务树中具有两个或两个以上直接父亲的子任务结点,其中,该子任务结点到直接父亲的路径长度等于1;
遍历单元,用于从该子任务结点开始,在所述任务树中遍历相应的间接父任务结点,其中,该子任务结点到间接父任务结点的路径长度大于1;
判断单元,用于判断所述任务树中是否存在某一间接父任务结点到该子任务结点的长度为1的路径,若是,则将这一间接父任务结点到该子任务结点的长度为1的路径确定为冗余任务依赖。
如权利要求6或7所述的装置,其特征在于,还包括:
存储模块,用于采用数据库表存储所述任务树的任务依赖关系,所述数据库表的字段包括父任务标识和子任务标识。
如权利要求8所述的装置,其特征在于,所述数据库表的结构为关系数据结构。
如权利要求9所述的装置,其特征在于,所述检测模块,包括:
结构化查询单元,用于基于结构化查询进行所述任务树中两个任务结点之间的连接的检测,所述结构化查询以记录集合作为操作对象,结构化查询语句接受集合作为输入,返回集合作为输出;
确定单元,用于将该输出确定为冗余任务依赖。

说明书

说明书一种任务树的优化方法和装置
技术领域
本申请涉及调度技术领域,特别是涉及一种任务树的优化方法和装置。
背景技术
目前,随着社会的发展,调度在生产、电力、交通指挥、计算机作业控制等领域中得到了广泛应用。
例如,数据仓库是决策支持系统(dss,decision support system)和联机分析应用数据源的结构化数据环境,基于数据仓库的调度系统会用任务描述数据仓库的一个业务处理,其还用到如下定义和描述:
任务依赖关系:描述任务和任务之间的关系,一个任务必须依赖另一个任务执行成功后才能开始执行;
父任务:任务依赖关系中处于被依赖位置的任务,除了根任务以外,任何任务都有至少一个父任务;
子任务:相对于父任务而言,任务依赖关系中处于依赖位置的任务;
任务树:形象的描述任务和任务之间的所有依赖关系;
结点:形象的描述任务树中的任务,一个结点表示一个任务。
每一个任务依赖关系的存在,意味着子任务必须依赖父任务的输出,也即,只有父任务全部执行成功,子任务才能开始执行。随着数据仓库中业务的增长和任务的渐增,依赖关系也越来越复杂。
一旦依赖关系确立,就不能随便删除,除非可以保证即使不存在这个依赖关系,子任务开始执行时父任务一定已经执行成功,这样的依赖关系就称之为冗余任务依赖。
由于用户在确定任务依赖关系时,通常从单个任务的角度出发,当从全局的角度考虑时,很多任务依赖关系是冗余不必要的,因此不可避免存在冗余任务依赖。
参照图1,示出了已有技术一种存在冗余任务依赖的任务树的示例,用户在确定任务4依赖任务3和任务1时,并不知道任务3也间接依赖于任务1,显然任务4开始执行时任务1必然已经执行成功,因此任务4和任务1之间的依赖是冗余不必要的。参照图2,示出了删除图1中冗余任务依赖后的任务树,可以看出,任务依赖关系变得更加清楚明晰,且调度系统在判断任务4是否可以执行时,可以减少对任务1状态的查看从而提高效率。
随着任务数量规模越来越大,冗余依赖关系的存在将使得任务依赖变得更加错综复杂。如果能够检测并删除所有冗余的任务依赖关系,不仅可以使任务依赖结构变得清楚明晰,而且可以提高调度系统的效率。
对于冗余任务依赖,已有技术要么不处理,要么只能简单人工识别。但是,在不处理冗余任务依赖时,随着任务规模的扩大,比如任务数达到上万级时,用户无法查看清楚的任务依赖结构。同时每多出一条任务依赖关系,调度系统将增加一次任务状态的判断,降低调度效率;而简单的人工识别不仅浪费大量的人力,而且无法识别任务树中所有的冗余任务依赖,也即,存在识别效率和准确率低下的缺陷。
总之,需要本领域技术人员迫切解决的一个技术问题就是:如何能够快速、高效地检测冗余任务依赖。
发明内容
本申请所要解决的技术问题是提供一种任务树的优化方法和装置,能够快速、高效地检测冗余任务依赖。
为了解决上述问题,本申请公开了一种任务树的优化方法,包括:
接收针对任务树的优化命令;
检测所述任务树中两个任务结点之间的连接,如果二者之间的连接既包括长度为1的路径,又包括长度大于1的路径,则将二者之间的长度为1的路径确定为冗余任务依赖;
在所述任务树中删除检测出的冗余任务依赖。
优选的,所述检测任务树中两个任务结点之间的连接的步骤,包括:
获取所述任务树中具有两个或两个以上直接父亲的子任务结点,其中,该子任务结点到直接父亲的路径长度等于1;
从该子任务结点开始,在所述任务树中遍历相应的间接父任务结点,其中,该子任务结点到间接父任务结点的路径长度大于1;
如果所述任务树中存在某一间接父任务结点到该子任务结点的长度为1的路径,则将这一间接父任务结点到该子任务结点的长度为1的路径确定为冗余任务依赖。
优选的,采用数据库表存储所述任务树的任务依赖关系,所述数据库表的字段包括父任务标识和子任务标识。
优选的,所述数据库表的结构为关系数据结构。
优选的,所述检测任务树中两个任务结点之间的连接的步骤,包括:
基于结构化查询进行任务树中两个任务结点之间的连接的检测,所述结构化查询以记录集合作为操作对象,结构化查询语句接受集合作为输入,返回集合作为输出;
将该输出确定为冗余任务依赖。
另一方面,本申请还公开了一种任务树的优化装置,包括:
接口模块,用于接收针对任务树的优化命令;
检测模块,用于检测所述任务树中两个任务结点之间的连接,如果二者之间的连接既包括长度为1的路径,又包括长度大于1的路径,则将二者之间的长度为1的路径确定为冗余任务依赖;
删除模块,用于在所述任务树中删除检测出的冗余任务依赖。
优选的,所述检测模块,包括:
获取单元,用于获取所述任务树中具有两个或两个以上直接父亲的子任务结点,其中,该子任务结点到直接父亲的路径长度等于1;
遍历单元,用于从该子任务结点开始,在所述任务树中遍历相应的间接父任务结点,其中,该子任务结点到间接父任务结点的路径长度大于1;
判断单元,用于判断所述任务树中是否存在某一间接父任务结点到该子任务结点的长度为1的路径,若是,则将这一间接父任务结点到该子任务结点的长度为1的路径确定为冗余任务依赖。
优选的,所述装置还包括:
存储模块,用于采用数据库表存储所述任务树的任务依赖关系,所述数据库表的字段包括父任务标识和子任务标识。
优选的,所述数据库表的结构为关系数据结构。
优选的,所述检测模块,包括:
结构化查询单元,用于基于结构化查询进行所述任务树中两个任务结点之间的连接的检测,所述结构化查询以记录集合作为操作对象,结构化查询语句接受集合作为输入,返回集合作为输出;
确定单元,用于将该输出确定为冗余任务依赖。
与已有技术相比,本申请具有以下优点:
本申请检测任务树中两个任务结点之间的连接,如果二者之间的连接既包括长度为1的路径,又包括长度大于1的路径,则将二者之间的长度为1的路径确定为冗余任务依赖;由于上述检测为自动检测的过程,无需人工干预,即可以检测出任务树中所有的冗余任务依赖,因此,相对于已有技术的人工识别,能够提高检测效率和准确率;对于任务树而言,删除检测出的冗余任务依赖,能够使任务树中的任务依赖关系变得更加清楚明晰,也即达到优化任务树的目的;对于调度系统而言,在判断某一子任务是否可以执行时,可以减少对相应父任务状态的查看,从而提高调度效率。
其次,本申请的自动检测可通过结构化查询来实现,由于结构化查询语言结构简洁,功能强大,简单易学,这样,检测任务树中所有的冗余任务依赖只需一次结构化查询来实现,因而,能够大大提高检测效率和准确率。
附图说明
图1是已有技术一种存在冗余任务依赖的任务树的示例;
图2是删除图1中冗余任务依赖后的任务树;
图3是本申请一种标注有层次结构的任务树示例;
图4是本申请一种任务树的应用示例;
图5是本申请另一种任务树的应用示例;
图6是本申请一种任务树的优化方法实施例的流程图;
图7是本申请一种应用于工序调度的任务树示例;
图8是本申请再一种任务树的应用示例;
图9是本申请一种任务树的优化装置实施例的结构图。
具体实施方式
为使本申请的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本申请作进一步详细的说明。
为使本领域技术人员更好地理解本申请,以下依据任务树的结构,对任务树中任务冗余依赖进行分析。
在一颗任务树中,从根结点到某一任务结点可能会存在着多条路径,且路径长度不一,则可以选择最长路径的长度作为这一任务结点的层次,故对于任意任务结点来说它的层次就可被唯一地确定下来。参照图3,示出了本申请一种标注有层次结构的任务树示例,图中假设根结点的层次为0,且把部分任务结点按层次排列出来。
首先,根据任务依赖关系的定义,一个任务必须依赖另一个任务执行成功后才能开始执行。这样,对于只有一个父亲的任务结点,如果删除了其与唯一父亲的连接,则这个任务结点将不再有依赖,也即它可以立即执行,而无须依赖另一个任务结点的执行成功,这就违背了任务依赖关系的定义。因此,对于只有一个父亲的任务结点,其连接是不能删除的,故不属于冗余任务依赖。
其次,根据层次的定义:到根结点的最长路径数作为该任务结点的层次。这样,对于相邻的两个任务结点而言,二者之间的连接仅包括一个唯一的、长度为1的路径,如果删除二者之间的连接,则相应的子任务结点和父任务结点就不再有联系,也就肯定不能保证子任务结点执行时相应的父任务结点已经执行成功,从而违背了任务依赖关系的定义。因此,对于相邻两层的任务结点,二者之间的连接是不能删除的,故不属于冗余任务依赖。
综上,冗余依赖只存在于多余一个父亲的任务结点且非相邻层次之间。不失一般性,假设处于第n层的子任务结点A有两个或以上的父亲结点,则必然能在第n‑1层找到一个父亲结点B(否则A结点处于第n‑1层),该父亲结点一定也能在第n‑2层找到相应的父亲结点,依次上溯,直到在某一层发现另外一条到子任务结点A的路径,不妨设在第m(m<n‑1)层,这时有且仅有两种情况:
1)参照图4,在本申请一种任务树的应用示例中,到子任务结点A的两条路径的起始结点相同,都是父任务结点C,因为父任务结点B的存在,这时删除C‑>A的路径长度为1的连接,显然可以保证子任务结点A执行时父任务结点C一定已经执行成功,因此C→A的路径长度为1的连接为冗余任务依赖;
2)参照图5,在本申请另一种任务树的应用示例中,到子任务结点A的两条路径的起始结点不同,分别为父任务结点C和D。
依据冗余任务依赖的定义,子任务开始执行时父任务一定已经执行成功;这样,如果子任务结点A想开始执行,必须判断它的所有父任务,如果没有D→A的连接,那么只会判断父任务结点B是否执行成功,父任务结点B在开始执行时只会判断它的父任务C,C和D处于同一层,肯定没有任何联系;这样A在开始执行时都不会直接或间接检测D的状态,因此,并不能保证子任务结点A开始执行时父任务结点D一定已经执行成功;于是,此时并不能删除D‑>A的连接,D→A的路径长度为1的连接不是冗余任务依赖。
经过上述分析,可以得知,如果两个任务结点之间的连接既包括长度为1的路径又包括长度大于1的路径,则该长度为1的路径为冗余任务依赖;如果一路径为冗余任务依赖,则该路径的长度为1,且该路径所涉及两个任务结点之间的连接既包括该路径又包括长度大于1的路径。两个任务结点之间的连接既包括长度为1的路径又包括长度大于1的路径,是该长度为1的路径为冗余任务依赖的充分必要条件。
本申请发明人注意到了这一点,因此创造性地提出了本申请的发明构思之一,也即,检测任务树中两个任务结点之间的连接,如果二者之间的连接既包括长度为1的路径,又包括长度大于1的路径,则将二者之间的长度为1的路径确定为冗余任务依赖。由于上述检测为自动检测的过程,无需人工干预,即可以检测出任务树中所有的冗余任务依赖,因此,相对于已有技术的人工识别,能够大大提高检测效率和准确率。
参照图6,示出了本申请一种任务树的优化方法实施例的流程图,具体可以包括:
步骤601、接收针对任务树的优化命令;
步骤602、检测所述任务树中两个任务结点之间的连接,如果二者之间的连接既包括长度为1的路径,又包括长度大于1的路径,则将二者之间的长度为1的路径确定为冗余任务依赖;
步骤603、在所述任务树中删除检测出的冗余任务依赖。
本申请可以应用于生产、电力、交通指挥、计算机作业控制等领域,这些领域中的工作内容可用任务来描述,且任务树中任务之间具有依赖关系,调度系统在判断某一子任务是否可以执行时,需要查看相应父任务的状态。但是,冗余任务依赖的存在,会使得调度系统无法查看清楚的任务依赖结构;同时每多出一条任务依赖关系,调度系统将增加一次任务状态的判断,降低调度效率。
本申请的主要目的是优化任务树,具体而言,检测并删除任务树中所有的冗余任务依赖,以使得任务树中的任务依赖关系变得更加清楚明晰;对于调度系统而言,在判断某一子任务是否可以执行时,可以减少对相应父任务状态的查看,从而提高调度效率。
参照表1,示出了本申请一种工序调度的示例,其中,工序以工作为单位,具有对应的工作内容、紧前工作和工时参数。
表1
  工作  工作内容  紧前工作 工时  A  市场调查  /  4
  B  资金筹备  /  10  C  需求分析  A  3  D  产品设计  A  6  E  产品研制  D  8  F  制定成本计划  C,E  2  G  制定生产计划  F  3  H  筹备设备  B,G  2  I  筹备原材料  B,G  8  J  安装设备  H  5  K  调集人员  G  2  L  准备开工投产  I.J,K  1
如果用任务来描述表1中的工作,可得到图7所示的任务树,从而可以应用本申请来自动检测并删除该任务树中所有的冗余任务依赖,以优化该任务树,从而能够提高工序的调度效率。
在实际中,可提供给一个接口,由用户通过该接口触发针对任务树的优化命令;其中,该接口功能可以集成在某一按钮或者菜单中的某一命令中,本申请对优化命令的触发方式不加以限制。
在具体实现中,可使用各种技术手段进行任务树中两个任务结点之间的连接的检测。
在本申请的一种优选实施例中,所述检测任务树中两个任务结点之间的连接的步骤,具体可以包括:
子步骤A1、获取任务树中具有两个或两个以上直接父亲的子任务结点,其中,该子任务结点到直接父亲的路径长度等于1;
子步骤A2、从该子任务结点开始,在所述任务树中遍历相应的间接父任务结点,其中,该子任务结点到间接父任务结点的路径长度大于1;
子步骤A3、如果所述任务树中存在某一间接父任务结点到该子任务结点的长度为1的路径,则将这一间接父任务结点到该子任务结点的长度为1的路径确定为冗余任务依赖。
本优选实施例提出直接父亲和间接父任务结点的概念,其中,直接父亲为与子任务结点相邻的直接父任务结点,也即,该子任务结点到直接父亲的路径长度等于1;而间接父任务结点则是除直接父任务结点外的父任务结点,也即,该子任务结点到间接父任务结点的路径长度大于1。
为检测出满足上述充分必要条件的路径,本优选实施例首先通过“具有两个或两个以上直接父亲”的条件寻找子任务结点,然后在所述任务树中遍历与该子任务结点相应的间接父任务结点,每得到一个间接父任务结点,则判断任务树中是否存在这个间接父任务结点到该子任务结点的长度为1的路径,若是,则认为该路径满足了充分必要条件,于是,将这一间接父任务结点到该子任务结点的长度为1的路径确定为冗余任务依赖。
在本发明实施例中,优选的是,可采用数据仓库作为任务树的结构化数据环境。
进一步,可采用数据库表存储所述任务树的任务依赖关系,所述数据库表的字段可以进一步包括父任务标识和子任务标识。
例如,参照图8所示的任务树示例,可采用表2所示的数据库表对其进行存储,其中,该数据库表的名称为etl_task_tree,该数据库表的字段可以包括parent_task_id和son_task_id,该数据库表的一行则表示任务树中一条任务依赖关系的记录。
表2
  parent_task_id  son_task_id  11  12  11  13  11  14  12  15  12  18  13  17
  13  18  14  18  17  18  15  18
表2的示例中,如果检测出(12,18)为冗余任务依赖,只需在表中删除相应的记录即可。
在本申请的一种优选实施例中,所述数据库表的结构可以为关系数据结构。关系模式是对关系的描述。关系模式必须描述关系的结构,即它是由哪些属性构成,这些属性来自哪些域,以及属性与域之间的映象关系。关系通常是由赋予它的元组语义来确定的,元组语义实际上是一个n目谓词,凡是使该n目谓词为真的笛卡儿积中的元素的全体就构成了该关系模式的关系。不论关系模式的关系如何变化,关系模式都应该满足属性取值范围限定或者属性值间的相互关联等完整性约束。
而关系数据库,则是建立在关系数据库模型基础上的数据库,借助于集合代数等概念和方法来处理数据库中的数据。在实际应用中,可以采用如下关系数据库的任一种:oracle、SQL(结构化查询语言,Structured Query Language)、access、db2、sqlserver,sybase,本申请对具体的关系数据库不加以限制。
这样,所述检测任务树中两个任务结点之间的连接的步骤,可以进一步包括:
子步骤B1、基于结构化查询进行任务树中两个任务结点之间的连接的检测,所述结构化查询以记录集合作为操作对象,结构化查询语句接受集合作为输入,返回集合作为输出;
子步骤B2、将该输出确定为冗余任务依赖。
SQL语言结构简洁,功能强大,简单易学,所以自从IBM公司1981年推出以来,SQL语言得到了广泛的应用。如今无论是像Oracle、Sybase、DB2、Informix、SQL Server这些大型的数据库管理系统,还是像Visual Foxpro、PowerBuilder这些PC(个人计算机,personal computer)上常用的数据库开发系统,都支持SQL语言作为查询语言。
为使本领域技术人员更好地理解本申请,以下通过图8和表2所示任务树的检测过程进一步说明本申请,所述检测过程具体可以包括:
步骤S1、基于结构化查询,获取任务树中具有两个或两个以上直接父亲的子任务结点,其中,该子任务结点到直接父亲的路径长度等于1;
在具体实现中,可输入如下SQL语句:
Select son_task_id from etl_task_tree group by son_task_id having count(parent_task_id)>1
返回集合也即输出为18,下面的SQL语句均以18作为TASKID_I。
步骤S2、从该子任务结点开始,在所述任务树中遍历相应的间接父任务结点,其中,该子任务结点到间接父任务结点的路径长度大于1;
在所述任务树中遍历与该子任务结点相应的间接父任务结点,可通过Oracle SQL的start with...connect by语法,方便的实现:

返回集合也即输出为12、13。.
需要说明的是,上面的SQL语句中的内层SQL
Select parent_task_id,level as lv from etl_task_tree
start with son_task_id=#TASKID_I# connect by prior parent_task_id=son_task_id
会遍历得到所有的父任务结点(包括直接和间接父任务结点),但外层通过限制lv>1将得到所有间接父节点,事实上,直接父任务结点就是限制lv=1得到的节点。从另一个角度考虑,依据上面的存储方式直接父任务结点其实在etl_task_tree中对应一条记录中的parent_task_id,可以通过简单SQL语句:
Select parent_task_id from etl_task_tree where son_task_id=#TASKID_I#
直接得到。
步骤S3、如果所述任务树中存在某一间接父任务结点到该子任务结点的长度为1的路径,则将这一间接父任务结点到该子任务结点的长度为1的路径确定为冗余任务依赖。
对应表2,则本步骤则是通过查看etl_task_tree中是否有(TASKID_J,TASKID_I)这样的记录,其中,TASKID_J为步骤S2得到的查询结果12和13。由于etl_task_tree中存在(12,18)和(13,18)的记录,则本步骤SQL查询的输出为(12,18)和(13,18)。
上面逐SQL语句对各步骤进行说明,是为了说明本申请的原理,实际上,本申请可以通过一次完整的SQL语句查询来实现,也即,输入结构化查询语句接受集合作为输入,输出返回集合的即可被确定为对应TASK_I的所有冗余依赖。该完整的SQL语句可以为:

因此,相对于已有技术通过人工识别冗余任务依赖,不仅浪费大量的人力,而且无法识别任务树中所有的冗余任务依赖,本申请无需人工干预,只需通过一次完整的SQL语句查询,即可以检测出任务树中所有的冗余任务依赖,因此,能够大大提高检测效率和准确率。
与前述方法实施例相应,本申请还公开了一种任务树的优化装置,参照图9,具体可以包括:
接口模块901,用于接收针对任务树的优化命令;
检测模块902,用于检测所述任务树中两个任务结点之间的连接,如果二者之间的连接既包括长度为1的路径,又包括长度大于1的路径,则将二者之间的长度为1的路径确定为冗余任务依赖;及
删除模块903,用于在所述任务树中删除检测出的冗余任务依赖。
在本申请的一种优选实施例汇总,所述检测模块902,可以进一步包括:
获取单元,用于获取任务树中具有两个或两个以上直接父亲的子任务结点,其中,该子任务结点到直接父亲的路径长度等于1;
遍历单元,用于从该子任务结点开始,在所述任务树中遍历相应的间接父任务结点,其中,该子任务结点到间接父任务结点的路径长度大于1;
判断单元,用于判断所述任务树中是否存在某一间接父任务结点到该子任务结点的长度为1的路径,若是,则将这一间接父任务结点到该子任务结点的长度为1的路径确定为冗余任务依赖。
在本申请的另一种优选实施例中,所述装置还可以包括:
存储模块,用于采用数据库表存储所述任务树的任务依赖关系,所述数据库表的字段可以进一步包括父任务标识和子任务标识。
在本申请实施例中,优选的是,所述数据库表的结构可以为关系数据结构。
在本申请实施例中,更为优选的是,所述检测模块902,可以进一步包括:
结构化查询单元,用于基于结构化查询进行任务树中两个任务结点之间的连接的检测,所述结构化查询以记录集合作为操作对象,结构化查询语句接受集合作为输入,返回集合作为输出;
确定单元,用于将该输出确定为冗余任务依赖。
对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
以上对本申请所提供的一种任务树的优化方法和装置,进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。

一种任务树的优化方法和装置.pdf_第1页
第1页 / 共17页
一种任务树的优化方法和装置.pdf_第2页
第2页 / 共17页
一种任务树的优化方法和装置.pdf_第3页
第3页 / 共17页
点击查看更多>>
资源描述

《一种任务树的优化方法和装置.pdf》由会员分享,可在线阅读,更多相关《一种任务树的优化方法和装置.pdf(17页珍藏版)》请在专利查询网上搜索。

1、(10)申请公布号 CN 102880500 A (43)申请公布日 2013.01.16 C N 1 0 2 8 8 0 5 0 0 A *CN102880500A* (21)申请号 201110195626.9 (22)申请日 2011.07.13 G06F 9/46(2006.01) (71)申请人阿里巴巴集团控股有限公司 地址英属开曼群岛大开曼资本大厦一座四 层847号邮箱 (72)发明人陈旭 (74)专利代理机构北京润泽恒知识产权代理有 限公司 11319 代理人苏培华 (54) 发明名称 一种任务树的优化方法和装置 (57) 摘要 本发明提供了一种任务树的优化方法和装 置,其中的方。

2、法具体包括:接收针对任务树的优 化命令;检测所述任务树中两个任务结点之间的 连接,如果二者之间的连接既包括长度为1的路 径,又包括长度大于1的路径,则将二者之间的长 度为1的路径确定为冗余任务依赖;在所述任务 树中删除检测出的冗余任务依赖。本发明能够快 速、高效地检测冗余任务依赖。 (51)Int.Cl. 权利要求书2页 说明书10页 附图4页 (19)中华人民共和国国家知识产权局 (12)发明专利申请 权利要求书 2 页 说明书 10 页 附图 4 页 1/2页 2 1.一种任务树的优化方法,其特征在于,包括: 接收针对任务树的优化命令; 检测所述任务树中两个任务结点之间的连接,如果二者之间。

3、的连接既包括长度为1的 路径,又包括长度大于1的路径,则将二者之间的长度为1的路径确定为冗余任务依赖; 在所述任务树中删除检测出的冗余任务依赖。 2.如权利要求1所述的方法,其特征在于,所述检测任务树中两个任务结点之间的连 接的步骤,包括: 获取所述任务树中具有两个或两个以上直接父亲的子任务结点,其中,该子任务结点 到直接父亲的路径长度等于1; 从该子任务结点开始,在所述任务树中遍历相应的间接父任务结点,其中,该子任务结 点到间接父任务结点的路径长度大于1; 如果所述任务树中存在某一间接父任务结点到该子任务结点的长度为1的路径,则将 这一间接父任务结点到该子任务结点的长度为1的路径确定为冗余任。

4、务依赖。 3.如权利要求1或2所述的方法,其特征在于,采用数据库表存储所述任务树的任务依 赖关系,所述数据库表的字段包括父任务标识和子任务标识。 4.如权利要求3所述的方法,其特征在于,所述数据库表的结构为关系数据结构。 5.如权利要求4所述的方法,其特征在于,所述检测任务树中两个任务结点之间的连 接的步骤,包括: 基于结构化查询进行任务树中两个任务结点之间的连接的检测,所述结构化查询以记 录集合作为操作对象,结构化查询语句接受集合作为输入,返回集合作为输出; 将该输出确定为冗余任务依赖。 6.一种任务树的优化装置,其特征在于,包括: 接口模块,用于接收针对任务树的优化命令; 检测模块,用于检。

5、测所述任务树中两个任务结点之间的连接,如果二者之间的连接既 包括长度为1的路径,又包括长度大于1的路径,则将二者之间的长度为1的路径确定为冗 余任务依赖; 删除模块,用于在所述任务树中删除检测出的冗余任务依赖。 7.如权利要求6所述的装置,其特征在于,所述检测模块,包括: 获取单元,用于获取所述任务树中具有两个或两个以上直接父亲的子任务结点,其中, 该子任务结点到直接父亲的路径长度等于1; 遍历单元,用于从该子任务结点开始,在所述任务树中遍历相应的间接父任务结点,其 中,该子任务结点到间接父任务结点的路径长度大于1; 判断单元,用于判断所述任务树中是否存在某一间接父任务结点到该子任务结点的长 。

6、度为1的路径,若是,则将这一间接父任务结点到该子任务结点的长度为1的路径确定为冗 余任务依赖。 8.如权利要求6或7所述的装置,其特征在于,还包括: 存储模块,用于采用数据库表存储所述任务树的任务依赖关系,所述数据库表的字段 包括父任务标识和子任务标识。 9.如权利要求8所述的装置,其特征在于,所述数据库表的结构为关系数据结构。 权 利 要 求 书CN 102880500 A 2/2页 3 10.如权利要求9所述的装置,其特征在于,所述检测模块,包括: 结构化查询单元,用于基于结构化查询进行所述任务树中两个任务结点之间的连接的 检测,所述结构化查询以记录集合作为操作对象,结构化查询语句接受集合。

7、作为输入,返回 集合作为输出; 确定单元,用于将该输出确定为冗余任务依赖。 权 利 要 求 书CN 102880500 A 1/10页 4 一种任务树的优化方法和装置 技术领域 0001 本申请涉及调度技术领域,特别是涉及一种任务树的优化方法和装置。 背景技术 0002 目前,随着社会的发展,调度在生产、电力、交通指挥、计算机作业控制等领域中得 到了广泛应用。 0003 例如,数据仓库是决策支持系统(dss,decision support system)和联机分析应 用数据源的结构化数据环境,基于数据仓库的调度系统会用任务描述数据仓库的一个业务 处理,其还用到如下定义和描述: 0004 任务。

8、依赖关系:描述任务和任务之间的关系,一个任务必须依赖另一个任务执行 成功后才能开始执行; 0005 父任务:任务依赖关系中处于被依赖位置的任务,除了根任务以外,任何任务都有 至少一个父任务; 0006 子任务:相对于父任务而言,任务依赖关系中处于依赖位置的任务; 0007 任务树:形象的描述任务和任务之间的所有依赖关系; 0008 结点:形象的描述任务树中的任务,一个结点表示一个任务。 0009 每一个任务依赖关系的存在,意味着子任务必须依赖父任务的输出,也即,只有父 任务全部执行成功,子任务才能开始执行。随着数据仓库中业务的增长和任务的渐增,依赖 关系也越来越复杂。 0010 一旦依赖关系确。

9、立,就不能随便删除,除非可以保证即使不存在这个依赖关系,子 任务开始执行时父任务一定已经执行成功,这样的依赖关系就称之为冗余任务依赖。 0011 由于用户在确定任务依赖关系时,通常从单个任务的角度出发,当从全局的角度 考虑时,很多任务依赖关系是冗余不必要的,因此不可避免存在冗余任务依赖。 0012 参照图1,示出了已有技术一种存在冗余任务依赖的任务树的示例,用户在确定任 务4依赖任务3和任务1时,并不知道任务3也间接依赖于任务1,显然任务4开始执行时 任务1必然已经执行成功,因此任务4和任务1之间的依赖是冗余不必要的。参照图2,示 出了删除图1中冗余任务依赖后的任务树,可以看出,任务依赖关系变。

10、得更加清楚明晰,且 调度系统在判断任务4是否可以执行时,可以减少对任务1状态的查看从而提高效率。 0013 随着任务数量规模越来越大,冗余依赖关系的存在将使得任务依赖变得更加错综 复杂。如果能够检测并删除所有冗余的任务依赖关系,不仅可以使任务依赖结构变得清楚 明晰,而且可以提高调度系统的效率。 0014 对于冗余任务依赖,已有技术要么不处理,要么只能简单人工识别。但是,在不处 理冗余任务依赖时,随着任务规模的扩大,比如任务数达到上万级时,用户无法查看清楚的 任务依赖结构。同时每多出一条任务依赖关系,调度系统将增加一次任务状态的判断,降低 调度效率;而简单的人工识别不仅浪费大量的人力,而且无法识。

11、别任务树中所有的冗余任 务依赖,也即,存在识别效率和准确率低下的缺陷。 说 明 书CN 102880500 A 2/10页 5 0015 总之,需要本领域技术人员迫切解决的一个技术问题就是:如何能够快速、高效地 检测冗余任务依赖。 发明内容 0016 本申请所要解决的技术问题是提供一种任务树的优化方法和装置,能够快速、高 效地检测冗余任务依赖。 0017 为了解决上述问题,本申请公开了一种任务树的优化方法,包括: 0018 接收针对任务树的优化命令; 0019 检测所述任务树中两个任务结点之间的连接,如果二者之间的连接既包括长度为 1的路径,又包括长度大于1的路径,则将二者之间的长度为1的路径。

12、确定为冗余任务依 赖; 0020 在所述任务树中删除检测出的冗余任务依赖。 0021 优选的,所述检测任务树中两个任务结点之间的连接的步骤,包括: 0022 获取所述任务树中具有两个或两个以上直接父亲的子任务结点,其中,该子任务 结点到直接父亲的路径长度等于1; 0023 从该子任务结点开始,在所述任务树中遍历相应的间接父任务结点,其中,该子任 务结点到间接父任务结点的路径长度大于1; 0024 如果所述任务树中存在某一间接父任务结点到该子任务结点的长度为1的路径, 则将这一间接父任务结点到该子任务结点的长度为1的路径确定为冗余任务依赖。 0025 优选的,采用数据库表存储所述任务树的任务依赖。

13、关系,所述数据库表的字段包 括父任务标识和子任务标识。 0026 优选的,所述数据库表的结构为关系数据结构。 0027 优选的,所述检测任务树中两个任务结点之间的连接的步骤,包括: 0028 基于结构化查询进行任务树中两个任务结点之间的连接的检测,所述结构化查询 以记录集合作为操作对象,结构化查询语句接受集合作为输入,返回集合作为输出; 0029 将该输出确定为冗余任务依赖。 0030 另一方面,本申请还公开了一种任务树的优化装置,包括: 0031 接口模块,用于接收针对任务树的优化命令; 0032 检测模块,用于检测所述任务树中两个任务结点之间的连接,如果二者之间的连 接既包括长度为1的路径。

14、,又包括长度大于1的路径,则将二者之间的长度为1的路径确定 为冗余任务依赖; 0033 删除模块,用于在所述任务树中删除检测出的冗余任务依赖。 0034 优选的,所述检测模块,包括: 0035 获取单元,用于获取所述任务树中具有两个或两个以上直接父亲的子任务结点, 其中,该子任务结点到直接父亲的路径长度等于1; 0036 遍历单元,用于从该子任务结点开始,在所述任务树中遍历相应的间接父任务结 点,其中,该子任务结点到间接父任务结点的路径长度大于1; 0037 判断单元,用于判断所述任务树中是否存在某一间接父任务结点到该子任务结点 的长度为1的路径,若是,则将这一间接父任务结点到该子任务结点的长。

15、度为1的路径确定 说 明 书CN 102880500 A 3/10页 6 为冗余任务依赖。 0038 优选的,所述装置还包括: 0039 存储模块,用于采用数据库表存储所述任务树的任务依赖关系,所述数据库表的 字段包括父任务标识和子任务标识。 0040 优选的,所述数据库表的结构为关系数据结构。 0041 优选的,所述检测模块,包括: 0042 结构化查询单元,用于基于结构化查询进行所述任务树中两个任务结点之间的连 接的检测,所述结构化查询以记录集合作为操作对象,结构化查询语句接受集合作为输入, 返回集合作为输出; 0043 确定单元,用于将该输出确定为冗余任务依赖。 0044 与已有技术相比。

16、,本申请具有以下优点: 0045 本申请检测任务树中两个任务结点之间的连接,如果二者之间的连接既包括长度 为1的路径,又包括长度大于1的路径,则将二者之间的长度为1的路径确定为冗余任务依 赖;由于上述检测为自动检测的过程,无需人工干预,即可以检测出任务树中所有的冗余任 务依赖,因此,相对于已有技术的人工识别,能够提高检测效率和准确率;对于任务树而言, 删除检测出的冗余任务依赖,能够使任务树中的任务依赖关系变得更加清楚明晰,也即达 到优化任务树的目的;对于调度系统而言,在判断某一子任务是否可以执行时,可以减少对 相应父任务状态的查看,从而提高调度效率。 0046 其次,本申请的自动检测可通过结构。

17、化查询来实现,由于结构化查询语言结构简 洁,功能强大,简单易学,这样,检测任务树中所有的冗余任务依赖只需一次结构化查询来 实现,因而,能够大大提高检测效率和准确率。 附图说明 0047 图1是已有技术一种存在冗余任务依赖的任务树的示例; 0048 图2是删除图1中冗余任务依赖后的任务树; 0049 图3是本申请一种标注有层次结构的任务树示例; 0050 图4是本申请一种任务树的应用示例; 0051 图5是本申请另一种任务树的应用示例; 0052 图6是本申请一种任务树的优化方法实施例的流程图; 0053 图7是本申请一种应用于工序调度的任务树示例; 0054 图8是本申请再一种任务树的应用示例。

18、; 0055 图9是本申请一种任务树的优化装置实施例的结构图。 具体实施方式 0056 为使本申请的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实 施方式对本申请作进一步详细的说明。 0057 为使本领域技术人员更好地理解本申请,以下依据任务树的结构,对任务树中任 务冗余依赖进行分析。 0058 在一颗任务树中,从根结点到某一任务结点可能会存在着多条路径,且路径长度 说 明 书CN 102880500 A 4/10页 7 不一,则可以选择最长路径的长度作为这一任务结点的层次,故对于任意任务结点来说它 的层次就可被唯一地确定下来。参照图3,示出了本申请一种标注有层次结构的任务树示 例。

19、,图中假设根结点的层次为0,且把部分任务结点按层次排列出来。 0059 首先,根据任务依赖关系的定义,一个任务必须依赖另一个任务执行成功后才能 开始执行。这样,对于只有一个父亲的任务结点,如果删除了其与唯一父亲的连接,则这个 任务结点将不再有依赖,也即它可以立即执行,而无须依赖另一个任务结点的执行成功,这 就违背了任务依赖关系的定义。因此,对于只有一个父亲的任务结点,其连接是不能删除 的,故不属于冗余任务依赖。 0060 其次,根据层次的定义:到根结点的最长路径数作为该任务结点的层次。这样,对 于相邻的两个任务结点而言,二者之间的连接仅包括一个唯一的、长度为1的路径,如果删 除二者之间的连接,。

20、则相应的子任务结点和父任务结点就不再有联系,也就肯定不能保证 子任务结点执行时相应的父任务结点已经执行成功,从而违背了任务依赖关系的定义。因 此,对于相邻两层的任务结点,二者之间的连接是不能删除的,故不属于冗余任务依赖。 0061 综上,冗余依赖只存在于多余一个父亲的任务结点且非相邻层次之间。不失一般 性,假设处于第n层的子任务结点A有两个或以上的父亲结点,则必然能在第n-1层找到 一个父亲结点B(否则A结点处于第n-1层),该父亲结点一定也能在第n-2层找到相应的 父亲结点,依次上溯,直到在某一层发现另外一条到子任务结点A的路径,不妨设在第m(m n-1)层,这时有且仅有两种情况: 0062。

21、 1)参照图4,在本申请一种任务树的应用示例中,到子任务结点A的两条路径的起 始结点相同,都是父任务结点C,因为父任务结点B的存在,这时删除C-A的路径长度为 1的连接,显然可以保证子任务结点A执行时父任务结点C一定已经执行成功,因此CA 的路径长度为1的连接为冗余任务依赖; 0063 2)参照图5,在本申请另一种任务树的应用示例中,到子任务结点A的两条路径的 起始结点不同,分别为父任务结点C和D。 0064 依据冗余任务依赖的定义,子任务开始执行时父任务一定已经执行成功;这样,如 果子任务结点A想开始执行,必须判断它的所有父任务,如果没有DA的连接,那么只会 判断父任务结点B是否执行成功,父。

22、任务结点B在开始执行时只会判断它的父任务C,C和 D处于同一层,肯定没有任何联系;这样A在开始执行时都不会直接或间接检测D的状态, 因此,并不能保证子任务结点A开始执行时父任务结点D一定已经执行成功;于是,此时并 不能删除D-A的连接,DA的路径长度为1的连接不是冗余任务依赖。 0065 经过上述分析,可以得知,如果两个任务结点之间的连接既包括长度为1的路径 又包括长度大于1的路径,则该长度为1的路径为冗余任务依赖;如果一路径为冗余任务依 赖,则该路径的长度为1,且该路径所涉及两个任务结点之间的连接既包括该路径又包括长 度大于1的路径。两个任务结点之间的连接既包括长度为1的路径又包括长度大于1。

23、的路 径,是该长度为1的路径为冗余任务依赖的充分必要条件。 0066 本申请发明人注意到了这一点,因此创造性地提出了本申请的发明构思之一,也 即,检测任务树中两个任务结点之间的连接,如果二者之间的连接既包括长度为1的路径, 又包括长度大于1的路径,则将二者之间的长度为1的路径确定为冗余任务依赖。由于上 述检测为自动检测的过程,无需人工干预,即可以检测出任务树中所有的冗余任务依赖,因 说 明 书CN 102880500 A 5/10页 8 此,相对于已有技术的人工识别,能够大大提高检测效率和准确率。 0067 参照图6,示出了本申请一种任务树的优化方法实施例的流程图,具体可以包括: 0068 步。

24、骤601、接收针对任务树的优化命令; 0069 步骤602、检测所述任务树中两个任务结点之间的连接,如果二者之间的连接既包 括长度为1的路径,又包括长度大于1的路径,则将二者之间的长度为1的路径确定为冗余 任务依赖; 0070 步骤603、在所述任务树中删除检测出的冗余任务依赖。 0071 本申请可以应用于生产、电力、交通指挥、计算机作业控制等领域,这些领域中的 工作内容可用任务来描述,且任务树中任务之间具有依赖关系,调度系统在判断某一子任 务是否可以执行时,需要查看相应父任务的状态。但是,冗余任务依赖的存在,会使得调度 系统无法查看清楚的任务依赖结构;同时每多出一条任务依赖关系,调度系统将增。

25、加一次 任务状态的判断,降低调度效率。 0072 本申请的主要目的是优化任务树,具体而言,检测并删除任务树中所有的冗余任 务依赖,以使得任务树中的任务依赖关系变得更加清楚明晰;对于调度系统而言,在判断某 一子任务是否可以执行时,可以减少对相应父任务状态的查看,从而提高调度效率。 0073 参照表1,示出了本申请一种工序调度的示例,其中,工序以工作为单位,具有对应 的工作内容、紧前工作和工时参数。 0074 表1 0075 工作 工作内容 紧前工作 工时 A 市场调查 / 4 B 资金筹备 / 10 C 需求分析 A 3 D 产品设计 A 6 E 产品研制 D 8 F 制定成本计划 C,E 2 。

26、G 制定生产计划 F 3 H 筹备设备 B,G 2 I 筹备原材料 B,G 8 J 安装设备 H 5 K 调集人员 G 2 L 准备开工投产 I.J,K 1 0076 说 明 书CN 102880500 A 6/10页 9 0077 如果用任务来描述表1中的工作,可得到图7所示的任务树,从而可以应用本申请 来自动检测并删除该任务树中所有的冗余任务依赖,以优化该任务树,从而能够提高工序 的调度效率。 0078 在实际中,可提供给一个接口,由用户通过该接口触发针对任务树的优化命令;其 中,该接口功能可以集成在某一按钮或者菜单中的某一命令中,本申请对优化命令的触发 方式不加以限制。 0079 在具体。

27、实现中,可使用各种技术手段进行任务树中两个任务结点之间的连接的检 测。 0080 在本申请的一种优选实施例中,所述检测任务树中两个任务结点之间的连接的步 骤,具体可以包括: 0081 子步骤A1、获取任务树中具有两个或两个以上直接父亲的子任务结点,其中,该子 任务结点到直接父亲的路径长度等于1; 0082 子步骤A2、从该子任务结点开始,在所述任务树中遍历相应的间接父任务结点,其 中,该子任务结点到间接父任务结点的路径长度大于1; 0083 子步骤A3、如果所述任务树中存在某一间接父任务结点到该子任务结点的长度为 1的路径,则将这一间接父任务结点到该子任务结点的长度为1的路径确定为冗余任务依 。

28、赖。 0084 本优选实施例提出直接父亲和间接父任务结点的概念,其中,直接父亲为与子任 务结点相邻的直接父任务结点,也即,该子任务结点到直接父亲的路径长度等于1;而间接 父任务结点则是除直接父任务结点外的父任务结点,也即,该子任务结点到间接父任务结 点的路径长度大于1。 0085 为检测出满足上述充分必要条件的路径,本优选实施例首先通过“具有两个或两 个以上直接父亲”的条件寻找子任务结点,然后在所述任务树中遍历与该子任务结点相应 的间接父任务结点,每得到一个间接父任务结点,则判断任务树中是否存在这个间接父任 务结点到该子任务结点的长度为1的路径,若是,则认为该路径满足了充分必要条件,于 是,将。

29、这一间接父任务结点到该子任务结点的长度为1的路径确定为冗余任务依赖。 0086 在本发明实施例中,优选的是,可采用数据仓库作为任务树的结构化数据环境。 0087 进一步,可采用数据库表存储所述任务树的任务依赖关系,所述数据库表的字段 可以进一步包括父任务标识和子任务标识。 0088 例如,参照图8所示的任务树示例,可采用表2所示的数据库表对其进行存储,其 中,该数据库表的名称为etl_task_tree,该数据库表的字段可以包括parent_task_id和 son_task_id,该数据库表的一行则表示任务树中一条任务依赖关系的记录。 0089 表2 0090 说 明 书CN 1028805。

30、00 A 7/10页 10 parent_task_id son_task_id 11 12 11 13 11 14 12 15 12 18 13 17 13 18 14 18 17 18 15 18 0091 0092 表2的示例中,如果检测出(12,18)为冗余任务依赖,只需在表中删除相应的记录 即可。 0093 在本申请的一种优选实施例中,所述数据库表的结构可以为关系数据结构。关系 模式是对关系的描述。关系模式必须描述关系的结构,即它是由哪些属性构成,这些属性来 自哪些域,以及属性与域之间的映象关系。关系通常是由赋予它的元组语义来确定的,元组 语义实际上是一个n目谓词,凡是使该n目谓词为。

31、真的笛卡儿积中的元素的全体就构成了 该关系模式的关系。不论关系模式的关系如何变化,关系模式都应该满足属性取值范围限 定或者属性值间的相互关联等完整性约束。 0094 而关系数据库,则是建立在关系数据库模型基础上的数据库,借助于集合代数等 概念和方法来处理数据库中的数据。在实际应用中,可以采用如下关系数据库的任一种: oracle、SQL(结构化查询语言,Structured Query Language)、access、db2、sqlserver, sybase,本申请对具体的关系数据库不加以限制。 0095 这样,所述检测任务树中两个任务结点之间的连接的步骤,可以进一步包括: 0096 子步。

32、骤B1、基于结构化查询进行任务树中两个任务结点之间的连接的检测,所述 结构化查询以记录集合作为操作对象,结构化查询语句接受集合作为输入,返回集合作为 输出; 0097 子步骤B2、将该输出确定为冗余任务依赖。 0098 SQL语言结构简洁,功能强大,简单易学,所以自从IBM公司1981年推出以来, SQL语言得到了广泛的应用。如今无论是像Oracle、Sybase、DB2、Informix、SQL Server 这些大型的数据库管理系统,还是像Visual Foxpro、PowerBuilder这些PC(个人计算机, personal computer)上常用的数据库开发系统,都支持SQL语言。

33、作为查询语言。 0099 为使本领域技术人员更好地理解本申请,以下通过图8和表2所示任务树的检测 说 明 书CN 102880500 A 10 8/10页 11 过程进一步说明本申请,所述检测过程具体可以包括: 0100 步骤S1、基于结构化查询,获取任务树中具有两个或两个以上直接父亲的子任务 结点,其中,该子任务结点到直接父亲的路径长度等于1; 0101 在具体实现中,可输入如下SQL语句: 0102 Select son_task_id from etl_task_tree group by son_task_id having count(parent_task_id)1 0103 返回。

34、集合也即输出为18,下面的SQL语句均以18作为TASKID_I。 0104 步骤S2、从该子任务结点开始,在所述任务树中遍历相应的间接父任务结点,其 中,该子任务结点到间接父任务结点的路径长度大于1; 0105 在所述任务树中遍历与该子任务结点相应的间接父任务结点,可通过Oracle SQL 的start with.connect by语法,方便的实现: 0106 0107 返回集合也即输出为12、13。. 0108 需要说明的是,上面的SQL语句中的内层SQL 0109 Select parent_task_id,level as lv from etl_task_tree 0110 st。

35、art with son_task_id#TASKID_I# connect by prior parent_task_id son_task_id 0111 会遍历得到所有的父任务结点(包括直接和间接父任务结点),但外层通过限制 lv1将得到所有间接父节点,事实上,直接父任务结点就是限制lv1得到的节点。从 另一个角度考虑,依据上面的存储方式直接父任务结点其实在etl_task_tree中对应一条 记录中的parent_task_id,可以通过简单SQL语句: 0112 Select parent_task_id from etl_task_tree where son_task_id#TA。

36、SKID_ I# 0113 直接得到。 0114 步骤S3、如果所述任务树中存在某一间接父任务结点到该子任务结点的长度为 1的路径,则将这一间接父任务结点到该子任务结点的长度为1的路径确定为冗余任务依 赖。 0115 对应表2,则本步骤则是通过查看etl_task_tree中是否有(TASKID_J,TASKID_I) 这样的记录,其中,TASKID_J为步骤S2得到的查询结果12和13。由于etl_task_tree中 存在(12,18)和(13,18)的记录,则本步骤SQL查询的输出为(12,18)和(13,18)。 0116 上面逐SQL语句对各步骤进行说明,是为了说明本申请的原理,实际。

37、上,本申请可 以通过一次完整的SQL语句查询来实现,也即,输入结构化查询语句接受集合作为输入,输 出返回集合的即可被确定为对应TASK_I的所有冗余依赖。该完整的SQL语句可以为: 说 明 书CN 102880500 A 11 9/10页 12 0117 0118 因此,相对于已有技术通过人工识别冗余任务依赖,不仅浪费大量的人力,而且无 法识别任务树中所有的冗余任务依赖,本申请无需人工干预,只需通过一次完整的SQL语 句查询,即可以检测出任务树中所有的冗余任务依赖,因此,能够大大提高检测效率和准确 率。 0119 与前述方法实施例相应,本申请还公开了一种任务树的优化装置,参照图9,具体 可以包。

38、括: 0120 接口模块901,用于接收针对任务树的优化命令; 0121 检测模块902,用于检测所述任务树中两个任务结点之间的连接,如果二者之间的 连接既包括长度为1的路径,又包括长度大于1的路径,则将二者之间的长度为1的路径确 定为冗余任务依赖;及 0122 删除模块903,用于在所述任务树中删除检测出的冗余任务依赖。 0123 在本申请的一种优选实施例汇总,所述检测模块902,可以进一步包括: 0124 获取单元,用于获取任务树中具有两个或两个以上直接父亲的子任务结点,其中, 该子任务结点到直接父亲的路径长度等于1; 0125 遍历单元,用于从该子任务结点开始,在所述任务树中遍历相应的间。

39、接父任务结 点,其中,该子任务结点到间接父任务结点的路径长度大于1; 0126 判断单元,用于判断所述任务树中是否存在某一间接父任务结点到该子任务结点 的长度为1的路径,若是,则将这一间接父任务结点到该子任务结点的长度为1的路径确定 为冗余任务依赖。 0127 在本申请的另一种优选实施例中,所述装置还可以包括: 0128 存储模块,用于采用数据库表存储所述任务树的任务依赖关系,所述数据库表的 字段可以进一步包括父任务标识和子任务标识。 0129 在本申请实施例中,优选的是,所述数据库表的结构可以为关系数据结构。 0130 在本申请实施例中,更为优选的是,所述检测模块902,可以进一步包括: 0。

40、131 结构化查询单元,用于基于结构化查询进行任务树中两个任务结点之间的连接的 检测,所述结构化查询以记录集合作为操作对象,结构化查询语句接受集合作为输入,返回 说 明 书CN 102880500 A 12 10/10页 13 集合作为输出; 0132 确定单元,用于将该输出确定为冗余任务依赖。 0133 对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关 之处参见方法实施例的部分说明即可。 0134 本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与 其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。 0135 以上对本申请所提供的一种。

41、任务树的优化方法和装置,进行了详细介绍,本文中 应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助 理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想, 在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本 申请的限制。 说 明 书CN 102880500 A 13 1/4页 14 图1图2 图3 说 明 书 附 图CN 102880500 A 14 2/4页 15 图4 图5 说 明 书 附 图CN 102880500 A 15 3/4页 16 图6 图7 说 明 书 附 图CN 102880500 A 16 4/4页 17 图8 图9 说 明 书 附 图CN 102880500 A 17 。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 物理 > 计算;推算;计数


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1