CN113326063A - 数据处理方法、电子设备及存储介质 - Google Patents

数据处理方法、电子设备及存储介质 Download PDF

Info

Publication number
CN113326063A
CN113326063A CN202110671384.XA CN202110671384A CN113326063A CN 113326063 A CN113326063 A CN 113326063A CN 202110671384 A CN202110671384 A CN 202110671384A CN 113326063 A CN113326063 A CN 113326063A
Authority
CN
China
Prior art keywords
script
task
data table
identifier
time
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN202110671384.XA
Other languages
English (en)
Other versions
CN113326063B (zh
Inventor
邹宇
赵学亮
曾广锐
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
WeBank Co Ltd
Original Assignee
WeBank Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by WeBank Co Ltd filed Critical WeBank Co Ltd
Priority to CN202110671384.XA priority Critical patent/CN113326063B/zh
Publication of CN113326063A publication Critical patent/CN113326063A/zh
Priority to PCT/CN2021/140176 priority patent/WO2022262240A1/zh
Application granted granted Critical
Publication of CN113326063B publication Critical patent/CN113326063B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/74Reverse engineering; Extracting design information from source code

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Stored Programmes (AREA)

Abstract

本发明公开了一种数据处理方法、电子设备及存储介质,数据处理方法包括:从接收到的至少两个任务脚本中每个任务脚本的源码中,提取出每个任务脚本对应的采用结构化查询语言描述的第一文本;从提取的每个第一文本对应的抽象语法树中,确定出每个任务脚本对应的输入项和输出项;基于第一任务脚本对应的输入项与至少一个第二任务脚本中每个第二任务脚本对应的输出项之间的交集,确定出所述第一任务脚本对应的邻接关系集合;基于确定出的每个所述第一任务脚本对应的邻接关系集合,确定出所述至少两个任务脚本对应的至少一个有向边集合,并输出所述至少一个有向边集合中每个有向边集合对应的有向无环图。

Description

数据处理方法、电子设备及存储介质
技术领域
本发明涉及计算机技术领域,尤其涉及一种数据处理方法、电子设备及存储介质。
背景技术
随着计算机技术的发展,越来越多的技术(例如,大数据等)应用在金融领域,传统金融业正在逐步向金融科技转变,然而,由于金融行业的安全性、实时性要求,金融科技也对技术提出了更高的要求。金融科技领域下,在大数据平台对应的服务器处理批量任务的应用场景下,终端将任务和任务对应的配置文件发送至服务器,配置文件用于指定任务之间的依赖关系,以便服务器基于接收到的配置文件,确定出批量任务中各任务的执行顺序。然而,相关技术中,需要人工设置每个任务对应的配置文件,不仅效率低,且容易出错,可能导致服务器确定出的批量任务的执行顺序不正确。
发明内容
有鉴于此,本发明实施例提供一种数据处理方法、电子设备及存储介质,以解决相关技术中人工设置每个任务对应的配置文件中包括的任务间的依赖关系,效率低且易出错的技术问题。
为达到上述目的,本发明的技术方案是这样实现的:
本发明实施例提供了一种数据处理方法,包括:
从接收到的至少两个任务脚本中每个任务脚本的源码中,提取出每个任务脚本对应的采用结构化查询语言描述的第一文本;
从提取的每个第一文本对应的抽象语法树中,确定出每个任务脚本对应的输入项和输出项;
基于第一任务脚本对应的输入项与至少一个第二任务脚本中每个第二任务脚本对应的输出项之间的交集,确定出所述第一任务脚本对应的邻接关系集合;
基于确定出的每个所述第一任务脚本对应的邻接关系集合,确定出所述至少两个任务脚本对应的至少一个有向边集合,并输出所述至少一个有向边集合中每个有向边集合对应的有向无环图;其中,
所述第一任务脚本和所述第二任务脚本为所述至少两个任务脚本中不同的任务脚本;邻接关系集合中的邻接关系表征第一任务脚本的邻接依赖任务和对应的交集;所述有向边集合中的有向边表征每两个任务脚本之间的依赖关系。
上述方案中,所述基于第一任务脚本对应的输入项与至少一个第二任务脚本中每个第二任务脚本对应的输出项之间的交集,确定出所述第一任务脚本对应的邻接关系集合,包括:
将每个任务脚本的脚本标识、对应的输入项集合和输出项集合,关联写入第一数据表;
基于所述第一数据表中第一任务脚本对应的输入项集合与第二任务脚本对应的输出项集合之间的交集,确定出所述第一任务脚本对应的邻接关系;
将所述第一任务脚本的脚本标识和对应确定出的邻接关系,关联写入第二数据表;其中,所述第二数据表用于关联存储脚本标识和邻接关系集合。
上述方案中,所述方法还包括以下至少之一:
在接收到针对第三任务脚本的删除指令的情况下,从所述第一数据表和所述第二数据表中删除所述第三任务脚本的脚本标识对应的数据,以及删除包含所述第三任务脚本的脚本标识的邻接关系;
在接收到新增的第三任务脚本的情况下,将所述第三任务脚本的脚本标识、对应的输入项集合和输出项集合,关联写入第一数据表,以及将所述第三任务脚本的脚本标识和对应的邻接关系集合,关联写入第二数据表。
上述方案中,所述第一数据表还包括表征变更输入项集合的第一时间和表征变更输出项集合的第二时间;所述第二数据表还包括表征变更邻接关系的第三时间和表征变更邻接依赖任务的第四时间,所述方法还包括以下至少之一:
在第一任务脚本的源码发生变更的情况下,更新所述第一数据表中第一任务脚本对应的输入项集合、输出项集合、第一时间和第二时间中的至少一组;
在第一任务脚本对应的第三时间早于对应的第一时间的情况下,基于对应更新后的输入项集合和除第一任务脚本之外的任务脚本对应的输出项集合之间的交集,更新所述第二数据中第一任务脚本对应的邻接关系集合和第四时间中的至少之一;
在第一任务脚本对应的第三时间早于对应的第二时间的情况下,基于对应更新后的输出项集合和第一任务脚本的邻接依赖任务对应的输入项集合之间的交集,更新所述第二数据中邻接依赖第一任务脚本的任务脚本对应的邻接关系集合和第四时间中的至少之一;
将第一任务脚本对应的第三时间,更新为对应的第一时间和对应的第二时间中的最大值;其中,
第四时间在对应更新后的邻接关系集合中的邻接依赖任务发生变更的情况下更新。
上述方案中,所述基于确定出的每个所述第一任务脚本对应的邻接关系集合,确定出所述至少两个任务脚本对应的至少一个有向边集合,并输出所述至少一个有向边集合中每个有向边集合对应的有向无环图,包括:
在第三数据表存储的脚本标识中查找所述第二数据表存储的脚本标识中的第一脚本标识;其中,所述第三数据表用于关联存储脚本标识、依赖任务集合、有向边集合和表征变更有向无环图的第五时间;
在所述第三数据表中查找到第一脚本标识的情况下,检测所述第三数据表中第一脚本标识对应的第五时间是否等于或晚于对应的第四时间;
在第一脚本标识对应的第五时间等于或晚于对应的第四时间的情况下,输出数据库中与第一脚本标识关联存储的有向无环图;
在所述第三数据表中未查找到第一脚本标识,或第一脚本标识对应的第五时间早于对应的第四时间的情况下,基于确定出的每个所述第一任务脚本对应的邻接关系集合,更新所述三数据表中第一脚本标识对应的依赖任务集合和有向边集合,并基于第一脚本标识对应的更新后的依赖任务集合和有向边集合,输出对应的有向无环图。
上述方案中,所述基于确定出的每个所述第一任务脚本对应的邻接关系集合,更新所述三数据表中第一脚本标识对应的依赖任务集合和有向边集合,包括:
在所述第三数据表中关联写入第一脚本标识、对应的第一依赖任务集合和对应的第一有向边集合的情况下,将由第一脚本标识对应的邻接关系集合确定出的有向边集合,添加至对应的第一有向边集合并去重;所述第一依赖任务集合中包括第一脚本标识;
判断所述第一依赖任务集合中是否存在第一脚本标识对应的邻接关系集合中的第i个脚本标识;
在所述第一依赖任务集合中存在第i个脚本标识,且i小于第i个脚本标识所处的邻接关系集合中包括的脚本标识的总数的情况下,将i赋值为i+1,执行所述判断所述第一依赖任务集合中是否存在第一脚本标识对应的邻接关系集合中的第i个脚本标识;
在所述第一依赖任务集合中不存在第i个脚本标识的情况下,判断所述第三数据表存储的脚本标识中是否包括第i个脚本标识;
在所述第三数据表存储的脚本标识中包括第i个脚本标识的情况下,判断第i个脚本标识对应的第五时间是否等于或晚于对应的第四时间;
在第i个脚本标识对应的第五时间等于或晚于对应的第四时间的情况下,将第i个脚本标识添加至所述第一依赖任务集合并去重,将第i个脚本标识在所述第三数据表中对应的有向边集合,添加至所述第一有向边集合并去重;将i赋值为i+1,执行所述判断所述第一依赖任务集合中是否存在第一脚本标识对应的邻接关系集合中的第i个脚本标识;
在所述第三数据表存储的脚本标识中不包括第i个脚本标识,或者第i个脚本标识对应的第五时间早于对应的第四时间的情况下,将第i个脚本标识添加至所述第一依赖任务集合并去重,将由第i个脚本标识对应的邻接关系集合确定出的有向边集合,添加至所述第一有向边集合并去重;
将第i个脚本标识识别为第一脚本标识,执行所述判断所述第一依赖任务集合中是否存在第一脚本标识对应的邻接关系集合中的第i个脚本标识;其中,
在i等于第i个脚本标识所处的邻接关系集合中包括的脚本标识的总数,或第i个脚本标识对应的邻接关系集合为空集的情况下,退出循环,或针对对应的第一脚本标识所处的邻接关系集合中的下一个脚本标识,执行所述判断所述第一依赖任务集合中是否存在第一脚本标识对应的邻接关系集合中的第i个脚本标识。
上述方案中,在第三数据表中未查找到第一脚本标识的情况下,所述基于确定出的每个所述第一任务脚本对应的邻接关系集合,更新所述三数据表中第一脚本标识对应的依赖任务集合和有向边集合,还包括:
在所述第三数据表中关联写入第一脚本标识、对应的第一依赖任务集合和对应的第一有向边集合;其中,第一依赖任务集合和第一有向边集合均为空集;
将第一脚本标识添加至所述第一依赖任务集合。
本发明实施例还提供了一种电子设备,包括:
提取单元,用于从接收到的至少两个任务脚本中每个任务脚本的源码中,提取出每个任务脚本对应的采用结构化查询语言描述的第一文本;
第一确定单元,用于从提取的每个第一文本对应的抽象语法树中,确定出每个任务脚本对应的输入项和输出项;
第二确定单元,用于基于第一任务脚本对应的输入项与至少一个第二任务脚本中每个第二任务脚本对应的输出项之间的交集,确定出所述第一任务脚本对应的邻接关系集合;
输出单元,用于基于确定出的每个所述第一任务脚本对应的邻接关系集合,确定出所述至少两个任务脚本对应的至少一个有向边集合,并输出所述至少一个有向边集合中每个有向边集合对应的有向无环图;其中,
所述第一任务脚本和所述第二任务脚本为所述至少两个任务脚本中不同的任务脚本;邻接关系集合中的邻接关系表征第一任务脚本的邻接依赖任务和对应的交集;所述有向边集合中的有向边表征每两个任务脚本之间的依赖关系。
本发明实施例还提供了一种电子设备,处理器和用于存储能够在处理器上运行的计算机程序的存储器,其中,所述处理器用于运行所述计算机程序时,执行上述数据处理方法的步骤。
本发明实施例还提供了一种存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述数据处理方法的步骤。
本发明实施例中,从批量的任务脚本中每个任务脚本的源码,确定出每个任务脚本对应的输入项和输出项;基于第一任务脚本的输入项与第二任务脚本的输出项之间的交集,确定出第一任务脚本对应的邻接关系集合;基于确定出的每个第一任务脚本对应的邻接关系集合,确定出批量的任务脚本对应的至少一个有向边集合,输出至少一个有向边集合中每个有向边集合对应的有向无环图。本方案中通过任务脚本的源码即可确定出任务脚本之间的依赖关系,不需要人工配置任务脚本之间的依赖关系,提高了确定任务脚本之间的依赖关系的效率,降低了出错率。另外,由于有向无环图中每两个任务脚本之间的有向边,表征了对应的两个任务脚本的执行顺序,因此,电子设备可以基于有向无环图准确地确定出批量的任务脚本对应的执行顺序。
附图说明
图1为本发明实施例提供的数据处理方法的实现流程示意图;
图2为本发明实施例提供的数据处理方法中确定邻接关系集合的实现流程示意图;
图3为本发明实施例提供的一种有向无环图的示意图;
图4为本发明实施例提供的数据处理方法中确定任务脚本的执行顺序的示意图;
图5为本发明实施例提供的数据处理方法中确定有向无环图的实现流程示意图;
图6为本发明应用实施例提供的数据处理方法中更新依赖任务集合和有向边集合的实现流程示意图;
图7为本发明实施例提供的电子设备的结构示意图;
图8为本发明实施例提供的电子设备的硬件组成结构示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本发明。
图1为本发明实施例提供的数据处理方法的实现流程示意图,其中,流程的执行主体为终端设备、服务器等电子设备。如图1示出的,数据处理方法包括:
步骤101:从接收到的至少两个任务脚本中每个任务脚本的源码中,提取出每个任务脚本对应的采用结构化查询语言描述的第一文本。
在实际应用中,电子设备在执行批量的任务脚本的情况下,需要确定出批量的任务脚本对应的执行顺序。批量的任务脚本由至少两个任务脚本构成。
考虑到在实际应用中可能采用不同的编程语言编写任务脚本,为了准确地提取出任务脚本对应的输入项和输出项,电子设备将任务脚本的源码转换为采用结构化查询语言(SQL,Structured Query Language)描述的第一文本。实现过程如下:
电子设备基于每个任务脚本的后缀名,判断对应的任务脚本是否为SQL编写的任务脚本,得到第一判断结果。其中,在任务脚本的后缀名为sql的情况下,表征该任务脚本为采用SQL编写的任务脚本。
在第一判断结果为第一任务脚本为采用SQL编写的任务脚本的情况下,读取第一任务脚本中包括的源码,得到第一任务脚本对应的第一文本。第一任务脚本为至少两个任务脚本中的任一任务脚本。
在第一判断结果表征第一任务脚本不是采用SQL编写的任务脚本的情况下,通过设定的正则表达式,从第一任务脚本包括的源码中提取出SQL文本内容,得到第一文本;其中,设定的正则表达式用于提取SQL文本内容。
步骤102:从提取的每个第一文本对应的抽象语法树中,确定出每个任务脚本对应的输入项和输出项。
这里,电子设备按设定的分隔符,将每个任务脚本对应的第一文本中的内容分割成多条独立的SQL语句;对每个第一文本对应的分割得到的SQL语句进行格式规整,得到对应的第一文本对应的规整后的SQL语句,例如,采用设定字符替换SQL语句中的格式占位符等干扰字符;将每个任务脚本对应的第一文本对应的规整后的SQL语句转换成抽象语法树(AST,Abstract Syntax Tree),从而得到每个任务脚本对应的抽象语法树。AST是源码语法结构的一种抽象表示,AST以树状的形式表现编程语言的语法结构,树上的每个节点都表示源码中的一种语法结构。
实际应用时,设定的分隔符可以为封号(;)。
需要说明的是,在任务脚本的源码发生变更的情况下,电子设备在确定出SQL语句的情况下,从确定出的SQL语句中过滤掉无数据变更的SQL语句,从而得到有数据变更的SQL语句,并基于有数据变更的SQL语句更新该任务脚本对应的抽象语法树。有数据变更是指输入项和/或输出项发生变更。
在确定出每个任务脚本对应的抽象语法树的情况下,电子设备从任务脚本对应的抽象语法树中识别出第一语句和第二语句,从识别出的第一语句中确定出该任务脚本对应的输入项,从识别出的第二语句中确定出该任务脚本对应的输出项。任务脚本的输入项表征该任务脚本中涉及的函数对应的输入参数;任务脚本的输出项表征该任务脚本中涉及的函数对应的输出参数。
实际应用时,第一语句为查询语句(Select Statement),第二语句为插入语句(Insert Statement)。
实际应用时,任务脚本用于执行跟数据库相关的数据查询、数据更新等操作;输出项和输出项均为数据表。也就是说,输入项为查询语句中包括的数据表,输出项为插入语句中包括的数据表。例如,从任务脚本对应的抽象语法树中识别出的第一语句为selectT1.XXX,T2.XXX from T1,T2 where T1.XXX=T2.XXX,识别出的第二语句为insertoverwrite table T3的情况下,该任务脚本对应的输入项为数据表T1和T2,输出项为数据表T3。
本实施例中,可以根据任务脚本的编程语言类型的不同,采用不同方式从对应的任务脚本中提取出SQL文本内容,基于提取出的SQL文本内容确定出对应的任务脚本对应的抽象语法树,并基于任务脚本对应的抽象语法树中包括的第一语句和第二语句,分别确定出该任务脚本的输入项和输出项。由此,可以完整且准确地提取出每个任务脚本对应的输入项和输出项。
步骤103:基于第一任务脚本对应的输入项与至少一个第二任务脚本中每个第二任务脚本对应的输出项之间的交集,确定出所述第一任务脚本对应的邻接关系集合。
其中,第一任务脚本与第二任务脚本不同,第一任务脚本和第二任务脚本均是泛指接收到的至少两个任务脚本中的任一任务脚本。邻接关系集合中的任一邻接关系表征第一任务脚本的邻接依赖任务和对应的交集。
在实际应用中,针对接收到每个任务脚本,电子设备可以将任一任务脚本Jx的输入项与除任务脚本Jx之外的每个任务脚本Jy的输出项进行比较,从而判断任务脚本Jx的输入项与任务脚本Jy的输出项是否存在交集,得到第一判断结果。
在第一判断结果表征任务脚本Jx的输入项与任务脚本Jy的输出项不存在交集的情况下,表征任务脚本Jy不是任务脚本Jx的邻接依赖任务,任务脚本Jx和任务脚本Jy之间不存在邻接关系。
在第一判断结果表征任务脚本Jx的输入项与任务脚本Jy的输出项存在交集的情况下,表征任务脚本Jy是任务脚本Jx的邻接依赖任务,基于该交集确定出任务脚本Jx对应的其中一个邻接关系。
按照此方法,电子设备可以确定出任务脚本Jx对应的所有邻接关系,得到任务脚本Jx对应的邻接关系集合。
在实际应用中,邻接关系的格式可以为:第一任务脚本的邻接依赖任务的脚本标识:对应的交集。当任务脚本J1的输入项与任务脚本J2的输出项存在交集T1和T2,任务脚本J1的输入项与任务脚本J4的输出项存在交集T1的情况下,任务脚本J1对应的邻接关系集合为{J2:T1,J2:T2,J4:T1}。为了更快且准确地确定出每个任务脚本对应的邻接关系,以及更快且准确地基于每个任务脚本对应的邻接关系确定出任务脚本之间的依赖关系,可以采用第一数据表存储每个任务脚本对应的输入项和输出项,以及采用第二数据表存储每个任务脚本对应的邻接关系。如图2所示,在一些实施例中,所述基于第一任务脚本对应的输入项与至少一个第二任务脚本中每个第二任务脚本对应的输出项之间的交集,确定出所述第一任务脚本对应的邻接关系集合,包括:
步骤201:将每个任务脚本的脚本标识、对应的输入项集合和输出项集合,关联写入第一数据表;
步骤202:基于所述第一数据表中第一任务脚本对应的输入项集合与第二任务脚本对应的输出项集合之间的交集,确定出所述第一任务脚本对应的邻接关系;
步骤203:将所述第一任务脚本的脚本标识和对应确定出的邻接关系,关联写入第二数据表;其中,所述第二数据表用于关联存储脚本标识和邻接关系集合。
这里,电子设备在确定出的每个任务脚本对应的输入项和输出项的情况下,将每个任务脚本的脚本标识、对应的输入项集合和输出项集合,关联写入第一数据表。实际应用时,第一数据表至少包括脚本标识、脚本标识对应的输入项集合和输出项集合。考虑到任务脚本中的源码可能会发生变更,而在任务脚本中的输入项和/或输出项发生变更的情况下,需要同步更新任务脚本对应的邻接关系,因此,为了准确地确定出任务脚本对应的邻接关系,第一数据表还包括表征变更输入项集合的第一时间和表征变更输出项集合的第二时间。
在一实施例中,第一数据表如下:
Figure BDA0003119412900000101
Figure BDA0003119412900000111
如第一数据表所示,任务脚本J1的输入项集合由T1和T2构成,输出项集合由T3和T4构成;任务脚本J2的输入项集合由T5和T6构成,输出项集合由T1和T2构成;任务脚本J3的输出项集合包括T8,输出项集合由T5和T10构成;任务脚本J4的输入项集合由T9和T10构成,输出项集合由T1和T6构成;任务脚本J5的输入项集合为空集,输出项集合由T2和T9构成。
电子设备在将每个任务脚本的脚本标识、对应的输入项集合和输出项集合,关联写入第一数据表的情况下,针对第一数据表中的任意两个任务脚本Jx和Jy,在Jx的Cin与Jy的Cout存在交集的情况下,表征Jy是Jx的邻接依赖任务,使用Jx.rel=Jy:Tz表示Jx通过Tz邻接依赖Jy;即,Jy:Tz表征任务脚本Jx对应的一个邻接关系;将Jx和对应确定出的邻接关系,关联写入第二数据表;按照这种方式,确定出每个任务脚本对应的所有邻接关系,并将确定出的所有邻接关系写入第二数据表。其中,
Jx.rel={Jy:Tz}(Tz∈Jx.Cin∩Jy.Cout,x=1、2、3…n;y=1、2、3…n,x≠y);Jx.Cin∩Jy.Cout表征Jx的Cin与Jy的Cout的交集。
实际应用时,电子设备每确定出一个邻接关系,将确定出的邻接关系写入第二数据表。第二数据表用于关联存储脚本标识和邻接关系集合。第二数据表中包括脚本标识和对应的邻接关系集合。考虑到在任务脚本中的输入项和/或输出项发生变更的情况下,需要同步更新任务脚本对应的邻接关系,由于在更新了任务脚本对应的邻接关系的情况下,可能导致任务脚本对应的邻接依赖任务发生变更,而邻接依赖任务发生更新的情况下,需要更新对应的有向无环图,因此,为了方便确定是否需要更新对应的有向无环图,第二数据表还包括表征变更邻接关系的第三时间和表征变更邻接依赖任务的第四时间。在一实施例中,第二数据表如下:
脚本标识 邻接关系集合(rel) 第三时间(rel_upate_time) 第四时间(r_upate_time)
J1 {J2:T1,J2:T2,J4:T1} yyyymmdd:HH:MM:SS yyyymmdd:HH:MM:SS
J2 {J3:T5,J4:T6}
J3 {J5:T8}
J4 {J3:T10,J5:T9}
J5 {}
Jn
其中,在第二数据表中J1对应的邻接关系集合由3个邻接关系构成。第三时间对应于邻接关系集合最后一次变更的时间,第四时间对应于邻接依赖任务最后一次变更的时间。需要说明的是,即使任务脚本对应的邻接关系集合中的邻接关系发生变更,但是该任务脚本对应的邻接关系集合中包括的邻接依赖任务无变更的情况下,该任务脚本对应的第四时间不更新。例如,在J1的邻接关系由{J2:T1,J2:T2,J4:T1}变更为{J2:T1,J2:T3,J4:T1}的情况下,由于J1对应的邻接依赖任务仍然为J2和J4,此时,J1对应的第四时间不更新。
考虑到在实际应用中用户可能在批量的任务脚本中新增任务脚本和/或删除任务脚本,需要对第一数据表和/或第二数据表中的相关数据进行更新,以保证确定出的邻接关系集合的准确性。在一些实施例中,在将任务脚本的相关数据写入第一数据表和第二数据表之后,所述方法还包括以下至少之一:
在接收到针对第三任务脚本的删除指令的情况下,从所述第一数据表和所述第二数据表中删除所述第三任务脚本的脚本标识对应的数据,以及删除包含所述第三任务脚本的脚本标识的邻接关系;
在接收到新增的第三任务脚本的情况下,将所述第三任务脚本的脚本标识、对应的输入项集合和输出项集合,关联写入第一数据表,以及将所述第三任务脚本的脚本标识和对应的邻接关系集合,关联写入第二数据表。
这里,电子设备在接收到针对第三任务脚本的删除指令的情况下,从第一数据表中删除第三任务脚本的脚本标识和对应的输入项集合、输出项集合、第一时间、第二时间;从第二数据表中删除第三任务脚本的脚本标识和对应的邻接关系集合、第三时间、第四时间,以及包含第三任务脚本的脚本标识的邻接关系。例如,在第三任务脚本的脚本标识为J3的情况下,从第一数据表中删除J3、{T8}、{T5、T10}、J3对应的第一时间和第二时间;从第二数据表中删除J3、{J3:T10,J5:T9}、J3对应的第三时间和第四时间,还从第二数据表中删除J3:T5和J3:T10。
在第三任务脚本为新增的任务脚本的情况下,电子设备按照上述方法确定出第三任务脚本对应的所有输入项和所有输出项;将第三任务脚本的脚本标识、对应的所有输入项和所有输出项,写入第一数据表;将写入第三任务脚本对应的最后一个输入项的时间作为对应的第一时间,并将该第一时间写入第一数据表,以及将写入第三任务脚本对应的最后一个输出项的时间作为对应的第二时间,并将该第二时间写入第一数据表。电子设备基于上述方法确定出第三任务脚本对应的邻接关系,将第三任务脚本的脚本标识对应的所有邻接关系,写入第二数据表;将写入第三任务脚本对应的最后一个邻接关系的时间作为对应的第三时间和对应的第四时间,将该第三时间和该第四时间对应写入第二数据表。
考虑到在实际应用中用户可能修改已提交过的任务脚本中的输入项和/或输出项,此时,需要对第一数据表和/或第二数据表中的相关数据进行更新,以保证确定出的邻接关系集合的准确性。在一些实施例中,在将任务脚本的相关数据写入第一数据表和第二数据表之后,所述方法还包括以下至少之一:
在第一任务脚本的源码发生变更的情况下,更新所述第一数据表中第一任务脚本对应的输入项集合、输出项集合、第一时间和第二时间中的至少一组;
在第一任务脚本对应的第三时间早于对应的第一时间的情况下,基于对应更新后的输入项集合和除第一任务脚本之外的任务脚本对应的输出项集合之间的交集,更新所述第二数据中第一任务脚本对应的邻接关系集合和第四时间中的至少之一;
在第一任务脚本对应的第三时间早于对应的第二时间的情况下,基于对应更新后的输出项集合和第一任务脚本的邻接依赖任务对应的输入项集合之间的交集,更新所述第二数据中对应的邻接依赖任务对应的邻接关系集合和第四时间中的至少之一;
将第一任务脚本对应的第三时间,更新为对应的第一时间和对应的第二时间中的最大值;其中,
第四时间在对应更新后的邻接关系集合中的邻接依赖任务发生变更的情况下更新。
这里,输入项集合和第一时间为一组,输出项集合和第二时间为一组。电子设备通过比较第一任务脚本对应的第三时间与对应的第一时间,来判断第一数据表中对应的输入项是否发生变更;以及通过比较第一任务脚本对应的第三时间与对应的第二时间,来判断第一数据表中对应的输出项是否发生变更。其中,在第一任务脚本对应的第三时间早于对应的第一时间的情况下,表征第一数据表中对应的输入项发生变更;在第一任务脚本对应的第三时间等于或晚于对应的第一时间的情况下,表征第一数据表中对应的输入项未发生变更;在第一任务脚本对应的第三时间早于对应的第二时间的情况下,表征第一数据表中对应的输出项发生变更;在第一任务脚本对应的第三时间等于或晚于对应的第二时间的情况下,表征第一数据表中对应的输出项未发生变更。
电子设备在检测到至少两个任务脚本中的第一任务脚本的源码发生变更的情况下,按照上述方法确定出变更后的第一任务脚本对应的输入项集合和输出项集合,并比较确定出的输入项集合和第一数据表中第一任务脚本对应的输入项集合,从而判断变更后的第一任务脚本对应的输入项集合中的输入项是否发生变更;比较确定出的输出项集合和第一数据表中第一任务脚本对应的输出项集合,从而判断变更后的第一任务脚本对应的输出项集合中的输出项是否发生变更。在第一任务脚本对应的输入项和/或输出项发生变更的情况下,执行以下至少之一:
在第一任务脚本对应的输入项发生变更的情况下,更新第一数据表中第一任务脚本的脚本标识对应的输入项集合和第一时间。
在第一任务脚本对应的输出项发生变更的情况下,更新第一数据表中第一任务脚本的脚本标识对应的输出项集合和第二时间。
将第一时间与第三数据表中第一任务脚本的脚本标识对应的第三时间进行比较,由于在更新了第一数据表中对应的输入项集合和第一时间的情况下,第一任务脚本对应的第三时间早于对应的第一时间,电子设备按照上述方法,基于对应更新后的输入项集合和除第一任务脚本之外的任务脚本对应的输出项集合之间的交集,确定出更新后的第一任务脚本对应的邻接关系集合;将确定出的邻接关系集合与第二数据表中第一任务脚本对应的邻接关系集合进行比较,在两者不同的情况下,表征第一任务脚本对应的邻接关系集合发生变更,此时,将第二数据表中第一任务脚本对应的邻接关系集合,替换为确定出的邻接关系集合,并更新第一任务脚本对应的第三时间;以及基于第一任务脚本对应的两个邻接关系集合,判断第一任务脚本对应的邻接依赖任务是否发生变更,在第一任务脚本对应的邻接依赖任务发生变更的情况下,更新第二数据表中第一任务脚本对应的第四时间。其中,在第一任务脚本对应的邻接关系集合中的邻接关系未发生变更的情况下,不需要更新第二数据表中第一任务脚本对应的第三时间。在第一任务脚本对应的邻接依赖任务未发生变更的情况下,不需要更新第二数据表中第一任务脚本对应的第四时间。
将第二时间与第三数据表中第一任务脚本的脚本标识对应的第四时间进行比较,由于在更新了第一数据表中对应的输出项集合和第二时间的情况下,第一任务脚本对应的第四时间早于对应的第二时间,电子设备按照上述方法,确定出对应更新后的输出项集合和第一数据表中除第一任务脚本之外的任务脚本对应的输入项集合之间是否存在交集,在第一任务脚本对应的更新后的输出项集合和任一任务脚本对应的输入项集合之间存在交集的情况下,表征该任务脚本邻接依赖第一任务脚本,也就是说,第一任务脚本为该任务脚本的邻接依赖任务,此时,将由第一任务脚本和该交集表征的邻接关系,更新至该任务脚本对应的邻接关系集合中,并在该任务脚本对应的邻接依赖任务发生变更的情况下,更新第二数据表中该任务脚本对应的第四时间。
在第一任务脚本在第一数据表中对应的第一时间晚于第二时间的情况下,将第一任务脚本在第二数据表中对应的第三时间更新为对应的第一时间;在第一任务脚本在第一数据表中对应的第二时间晚于第一时间的情况下,将第一任务脚本在第二数据表中对应的第三时间更新为对应的第二时间;在第一任务脚本在第一数据表中对应的第二时间等于第一时间的情况下,将第一任务脚本在第二数据表中对应的第三时间更新为对应的第一时间或第二时间。
下面以脚本标识为Jx的任务脚本中的源码发生变更为例,说明更新第二数据表的相关数据的实现过程:
判断Jx在第一数据表中对应的Cin和Cout是否有变更,即,判断是否满足(Jx.rel_upate_time≥Jx.in_update_time)和(Jx.rel_upate_time≥Jx.out_update_time)这两个条件;其中,Jx.rel_upate_time表征Jx对应的第三时间(rel_upate_time);Jx.in_update_time表征Jx对应的第一时间;Jx.out_update_time表征Jx对应的第二时间。
在满足(Jx.rel_upate_time≥Jx.in_update_time)和(Jx.rel_upate_time≥Jx.out_update_time)这两个条件的情况下,表征Jx在第一数据表中对应的Cin和Cout均没有变更,此时,不需要更新第二数据表;
在Jx.rel_upate_time<Jx.in_update_time的情况下,表征Jx在第一数据表中对应的Cin发生变更,此时,更新Jx.rel={Jy:Tz}(Tz∈Jx.Cin∩Jy.Cout,y=1、2、3…n,y≠x);在Jx.rel的更新导致Jx的邻接依赖任务发生变更的情况下,将Jx对应的第四时间替换为Jx.in_update_time;例如,当Jx对应的邻接关系集合由{J2:T1,J2:T2,J4:T1}变更为{J2:T1,J2:T2}的情况下,表征Jx对应的邻接依赖任务有变更;当Jx对应的邻接关系集合由{J2:T1,J2:T2,J4:T1}变更为{J2:T1,J4:T1}的情况下,表征Jx对应的邻接依赖任务没有变更,不需要更新第三数据表中对应的第四时间。
在Jx.rel_upate_time<Jx.out_update_time的情况下,表征Jx在第一数据表中对应的Cout有变更,电子设备更新第二数据表中所有邻接依赖Jx的任务脚本对应的邻接关系Jy.rel,Jy.rel={Jx:Tz}(Tz∈Jy.Cin∩Jx.Cout,y=1、2、3…n,y≠x),并且在Jy.rel的更新导致Jy的邻接依赖任务发生变更的情况下,将Jy对应的第四时间替换为Jx.out_update_time。
将Jx对应的第三时间,替换为Jx.in_update_tim和Jx.out_update_tim中的最大值,即Jx.rel_upate_time=MAX(Jx.in_update_tim,Jx.out_update_tim)。
步骤104:基于确定出的每个所述第一任务脚本对应的邻接关系集合,确定出所述至少两个任务脚本对应的至少一个有向边集合,输出所述至少一个有向边集合中每个有向边集合对应的有向无环图;其中,
所述有向边集合中的有向边表征每两个任务脚本之间的依赖关系。
这里,电子设备确定出的每个第一任务脚本对应的邻接关系集合中的邻接关系,确定出相互间具有邻接依赖关系的一组任务脚本,得到第一依赖任务集合;基于第一依赖任务集合中每个脚本标识对应的邻接关系集合中的每个邻接关系,确定出对应的有向边,从而得到由确定出的有向边构成的第一有向边集合;将第一有向边集合中入度为零的脚本标识,确定为第一有向边集合对应的有向无环图的起点,按照第一有向边集合中包括的有向边,将第一依赖任务集合中包括的脚本标识进行有向连接,得到第一有向边集合对应的有向无环图,并输出第一有向边集合对应的有向无环图。其中,
第一有向边集合表征对应的第一依赖任务集合中每两个具有邻接依赖关系的任务脚本;
一个邻接关系确定出一条有向边,一条有向边由邻接关系中的脚本标识(邻接依赖任务的脚本标识)指向对应的第一任务脚本的脚本标识。例如,在J1对应的邻接关系集合为{J2:T1,J2:T2,J4:T1}的情况下,由J1对应的邻接关系集合确定出的有向边包括<J2,J1>和<J4,J1>。
第一依赖任务集合中包括第一脚本标识、第二脚本标识和第三脚本标识;第一脚本标识为第二数据表中第一任务脚本的脚本标识,第二脚本标识表征第一任务脚本的脚本标识对应的邻接关系集合中包括的脚本标识,第三脚本标识表征第二脚本标识对应的邻接关系集合中包括的脚本标识。
第一有向边集合包括第一子集、第二子集和第三子集。
第一子集是由第一脚本标识对应的邻接关系集合中的邻接关系确定出的有向边集合;第二子集是由对应的第二脚本标识的邻接关系集合中的邻接关系确定出的有向边集合;第三子集是由对应的第三脚本标识对应的邻接关系集合中的邻接关系确定出的有向边集合。
对确定出的所有第一集合进行去重处理,以删除重复的第一集合,得到去重后的第一集合,基于第一集合对应的第二集合中每两个具有依赖关系的任务脚本,确定出第一集合对应的有向边,基于确定出的有向边,输出对应的第一集合对应的有向无环图。其中,有向无环图的数量与去重后的第一集合的数量相同。一条有向边表征两个任务脚本之间的依赖关系。
下面以上文第二数据表中的数据为例,确定出一个第一依赖任务集合和对应的第一有向边集合,第一依赖任务集合为{J1、J2、J3、J4和J5},第一有向边集合为{<J2,J1>,<J4,J1>,<J3,J2>,<J4,J2>,<J5,J3>,<J3,J4>,<J5,J4>},其中,第一有向边的第一子集为{<J2,J1>,<J4,J1>},第二子集为{<J3,J2>,<J4,J2>},第二子集为{<J5,J3>,<J3,J4>,<J5,J4>}。电子设备对应输出的有向无环图如图3所示。
在一些实施例中,在步骤104之后,所述方法还包括:
基于输出的有向无环图,确定出所述至少两个任务脚本对应的任务脚本的执行顺序,按照确定出的执行顺序,执行所述至少两个任务脚本。
这里,电子设备基于每个有向无环图中每两个任务脚本之间的有向边,确定出每个有向无环图中的任务脚本的执行顺序;并基于确定出的执行顺序,执行批量的任务脚本。
需要说明的是,当批量的任务脚本包括至少两个有向无环图时,电子设备可以并行执行不同的有向无环图对应的任务脚本。
在实际应用中,电子设备按照以下方式确定出有向无环图对应的任务脚本的执行顺序:
1、在有向无环图中找出第k个不依赖其他任务脚本的目标任务脚本,并输出第k个目标任务脚本的标识;
2、删除第k个目标任务脚本;
3、在k小于有向无环图中包含的任务脚本的总数的情况下,将k赋值为k+1,并执行1;
4、在k等于有向无环图中包含的任务脚本的总数的情况下,结束。
其中,基于图3所示的有向无环图,确定任务脚本的执行顺序的示意图如图4所示,该有向无环图对应的任务脚本的执行顺序为。
本发明实施例中,从批量的任务脚本中每个任务脚本的源码,确定出每个任务脚本对应的输入项和输出项;基于第一任务脚本的输入项与第二任务脚本的输出项之间的交集,确定出第一任务脚本对应的邻接关系集合;基于确定出的每个第一任务脚本对应的邻接关系集合,确定出批量的任务脚本对应的至少一个有向边集合,输出至少一个有向边集合中每个有向边集合对应的有向无环图。本方案中通过任务脚本的源码即可确定出任务脚本之间的依赖关系,不需要人工配置任务脚本之间的依赖关系,提高了确定任务脚本之间的依赖关系的效率,降低了出错率。另外,由于有向无环图中每两个任务脚本之间的有向边,表征了对应的两个任务脚本的执行顺序,因此,电子设备可以基于有向无环图准确地确定出批量的任务脚本对应的执行顺序。
另外,由于有向无环图能够准确地反映出任务脚本之间的依赖关系,电子设备基于有向无环图确定出任务脚本的执行顺序,可以提高确定任务脚本的执行顺序的准确度和效率,基于准确的执行顺序执行任务脚本,可以保证执行结果的准确性。
在实际应用中,电子设备在生成第一有向边集合对应的有向无环图的情况下,可以将脚本标识、对应的依赖任务集合、对应的有向边集合和表征变更有向无环图的第五时间关联写入第三数据表中,以便后续获取到的批量任务脚本对应的依赖任务集合和有向边集合,与第三数据表中存储的依赖任务集合和对应的有向边集合均相同的情况下,可以输出数据库中对应的有向无环图,不需要重新生成对应的有向无环图,提升了输出有向无环图的效率。
其中,第五时间为生成或更新对应的有向边集合对应的有向无环图的时间。
示例性地,由第二数据表的数据得到的第三数据表如下所示:
Figure BDA0003119412900000201
需要说明的是,在一些实施例中,第三数据表中的依赖任务集合可以表征任务脚本的执行顺序,也就是说,第三数据表中J1对应的依赖任务集合可以为[J5、J3、J4、J2、J1]。
在将脚本标识、对应的依赖任务集合、对应的有向边集合和表征变更有向无环图的第五时间关联写入第三数据表的基础上,如图5所示,在一些实施例中,所述基于确定出的每个所述第一任务脚本对应的邻接关系集合,确定出所述至少两个任务脚本对应的至少一个有向边集合,输出所述至少一个有向边集合中每个有向边集合对应的有向无环图,包括:
步骤501:在第三数据表存储的脚本标识中查找所述第二数据表存储的脚本标识中的第一脚本标识;其中,所述第三数据表用于关联存储脚本标识、依赖任务集合、有向边集合和表征变更有向无环图的第五时间。
这里,电子设备在确定出每个任务脚本对应的邻接关系集合,并将任务脚本对应的脚本标识和邻接关系,关联写入第二数据表的情况下,在第三数据表存储的脚本标识中查找第二数据表存储的脚本标识中的第一脚本标识。
在第三数据表中查找到第二数据表中的第一脚本标识的情况下,表征在此之前已生成了第一脚本标识对应的有向边集合对应的有向无环图,执行步骤502;在第三数据表中未查找到第二数据表中的第一脚本标识的情况下,表征在此之前未生成第一脚本标识对应的有向边集合对应的有向无环图,第三数据表中也不存在第一脚本标识对应的依赖任务集合和有向边集合,执行步骤504。
步骤502:在所述第三数据表中查找到第一脚本标识的情况下,检测所述第三数据表中第一脚本标识对应的第五时间是否等于或晚于对应的第四时间。
这里,在第三数据表中第一脚本标识对应的第五时间等于或晚于对应的第四时间,表征第一脚本标识对应的有向边集合对应的有向无环图,是在变更了第一脚本标识对应的邻接关系集合表征的邻接依赖关系之后生成的,该有向无环图为最新的有向无环图,执行步骤503。
在第三数据表中第一脚本标识对应的第五时间早于对应的第四时间的情况下,表征数据库中存储的第一脚本标识对应的有向边集合对应的有向无环图,是在变更第一脚本标识对应的邻接关系集合表征的邻接依赖关系之前生成的,需要重新生成对应的有向无环图,此时,执行步骤504。
步骤503:在第一脚本标识对应的第五时间等于或晚于对应的第四时间的情况下,输出数据库中与第一脚本标识关联存储的有向无环图。
这里,电子设备从数据库中获取第一脚本标识对应的有向边集合对应的有向无环图,并输出获取到的有向无环图。
步骤504:在所述第三数据表中未查找到第一脚本标识,或第一脚本标识对应的第五时间早于对应的第四时间的情况下,基于确定出的每个所述第一任务脚本对应的邻接关系集合,更新所述三数据表中第一脚本标识对应的依赖任务集合和有向边集合,并基于第一脚本标识对应的更新后的依赖任务集合和有向边集合,输出对应的有向无环图。
这里,在第三数据表中未查找到第一脚本标识的情况下,基于确定出的每个第一任务脚本对应的邻接关系集合,按照上述方法确定出对应的依赖关系集合和对应的有向边集合,并基于确定出的依赖关系集合和有向边集合,生成对应的有向无环图,并将第一脚本标识、对应的邻接关系集合、对应的有向边集合、生成对应的有向无环图的时间关联写入第三数据表。其中,生成对应的有向无环图具体实现过程请参照步骤104中的相关描述,此处不赘述。
在第三数据表中查找到第一脚本标识,且第一脚本标识对应的第五时间早于对应的第四时间的情况下,更新第三数据表中第一脚本标识对应的邻接关系集合和对应的有向边集合,并基于更新后的依赖关系集合和有向边集合,重新生成对应的有向无环图,将第三数据表中第一脚本标识对应的第五时间,更新为重新生成对应的有向无环图的时间。
下面,以第一脚本标识为J1为例,说明基于第二数据表和第三数据表,输出对应的有向无环图的实现过程:
电子设备从第三数据表存储的脚本标识中,查找第二数据表中的脚本标识J1;在第三数据表存储的脚本标识中查找到脚本标识J1的情况下,表征在此之前已生成J1对应的依赖任务集合对应的有向无环图,此时,电子设备判断J1对应的第五时间是否等于或晚于对应的第四时间,在J1对应的第五时间等于晚于对应的第四时间的情况下,输出数据库中与J1关联存储的有向无环图。
在J1对应的第五时间早于对应的第四时间的情况下,此时,需要更新第三数据表中J1对应的依赖任务集合和有向边集合,并基于J1对应的更新后的依赖任务集合和有向边集合,输出对应的有向无环图;
在第三数据表存储的脚本标识中未查找到脚本标识J1的情况下,表征在此之前未生成J1对应的依赖任务集合对应的有向无环图,此时,需要基于第二数据表中存储的脚本标识对应的邻接关系集合,确定出J1对应的依赖任务集合和有向边集合,基于J1对应的依赖任务集合和有向边集合,生成对应的有向无环图,并将J1、对应的依赖任务集合、对应的有向边集合、生成对应的有向无环图的第五时间关联写入第三数据表。
在本实施例中,可以通过第三数据表中记录的脚本标识,来判断数据库中是否已存在对应的有向无环图,通过第三数据表中记录的第五时间,来判断数据库中存储的对应的有向无环图是否为最新的有向无环图;在数据库中不存在对应的有向无环图或对应的有向无环图不是最新的有向无环图时,生成对应的有向无环图;在数据库中存储有最新的有向无环图时,可以直接输出对应的有向无环图,不需要重新生成有向无环图,提高了输出有向无环图的效率。
图6为本发明应用实施例提供的数据处理方法中更新依赖任务集合和有向边集合的实现流程示意图。如图6所示,步骤504中,所述基于确定出的每个所述第一任务脚本对应的邻接关系集合,更新所述三数据表中第一脚本标识对应的依赖任务集合和有向边集合,包括:
步骤601:在所述第三数据表中关联写入第一脚本标识、对应的第一依赖任务集合和对应的第一有向边集合的情况下,将由第一脚本标识对应的邻接关系集合确定出的有向边集合,添加至对应的第一有向边集合并去重;所述第一依赖任务集合中包括第一脚本标识。
这里,基于第一脚本标识对应的邻接关系集合确定出对应的有向边集合,并将第一脚本标识对应的有向边集合添加至第一有向边集合。其中,
基于邻接关系集合确定出对应的有向边集合的实现过程请参照步骤104中的相关描述,此处不赘述。
在第三数据表中查找到第一脚本标识,且第一脚本标识对应的第五时间早于对应的第四时间的情况下,电子设备由第一脚本标识对应的邻接关系集合确定出的有向边集合添加至对应的第一有向边集合之后,对第一有向边集合进行去重处理。
在第三数据表中未查找到第一脚本标识的情况下,电子设备由第一脚本标识对应的邻接关系集合确定出的有向边集合添加至对应的第一有向边集合之后,不需要对第一有向边集合进行去重处理。
实际应用中,在所述第三数据表中未查找到第一脚本标识的情况下,在步骤601之前还包括:
在所述第三数据表中关联写入第一脚本标识、对应的第一依赖任务集合和对应的第一有向边集合;其中,第一依赖任务集合和第一有向边集合均为空集;
将第一脚本标识添加至所述第一依赖任务集合。
这里,在第三数据表中未查找到第一脚本标识的情况下,电子设备将第一脚本标识写入第三数据表中用于记录脚本标识的位置,并在第三数据表中创建对应的第一依赖任务集合和对应的第一有向边集合,此时,第一依赖任务集合和第一有向边集合均为空集,将第一脚本标识添加至创建的第一依赖任务集合;基于第一脚本标识对应的邻接关系集合确定出对应的有向边集合,并将第一脚本标识对应的有向边集合添加至第一有向边集合。
电子设备在执行完步骤601之后,针对第二数据表中第一脚本标识对应的邻接关系集合中包括的脚本标识,按照步骤602至步骤608进行处理。
步骤602:判断所述第一依赖任务集合中是否存在第一脚本标识在所述第二数据表中对应的邻接关系集合中的第i个脚本标识。
这里,i为正整数,且i小于或等于第二数据表中第i个脚本标识所处的邻接关系集合中包括的脚本标识的总数。
实际应用时,在首次执行步骤602时,i等于1。
其中,在第一依赖任务集合中存在第一脚本标识在第二数据表中对应的邻接关系集合中的第i个脚本标识的情况下,判断i是否小于第i个脚本标识所处的邻接关系集合中包括的脚本标识的总数。
在i小于第i个脚本标识所处的邻接关系集合中包括的脚本标识的总数的情况下,执行步骤603。
在第一依赖任务集合中不存在第一脚本标识在第二数据表中对应的邻接关系集合中的第i个脚本标识的情况下,执行步骤604。
步骤603:在所述第一依赖任务集合中存在第i个脚本标识,且i小于第i个脚本标识所处的邻接关系集合中包括的脚本标识的总数的情况下,将i赋值为i+1,执行所述判断所述第一依赖任务集合中是否存在第一脚本标识对应的邻接关系集合中的第i个脚本标识。
这里,在第一依赖任务集合中存在第一脚本标识对应的第i个脚本标识,且i小于第i个脚本标识所处的邻接关系集合中包括的脚本标识的总数的情况下,表征已将由第i个脚本标识所处的邻接关系集合确定出的有向边集合,添加至对应的第一有向边集合,此时,将i赋值为i+1,返回步骤602。
在i等于第i个脚本标识所处的邻接关系集合中包括的脚本标识的总数,或第i个脚本标识对应的邻接关系集合为空集的情况下,退出循环,或针对对应的第一脚本标识所处的邻接关系集合中的下一个脚本标识,执行步骤602。
其中,在i等于第i个脚本标识所处的邻接关系集合中包括的脚本标识的总数的情况下,判断第二数据表中对应的第一脚本标识所处的邻接关系集合中,是否存在下一个脚本标识。
在对应的第一脚本标识所处的邻接关系集合中存在下一个脚本标识的情况下,针对对应的第一脚本标识对应的邻接关系集合中的下一个脚本标识,执行步骤602。在对应的第一脚本标识所处的邻接关系集合中不存在下一个脚本标识的情况下,判断该邻接关系集合对应的第一脚本标识所处的邻接关系集合中是否存在下一个脚本标识;在该邻接关系集合对应的第一脚本标识所处的邻接关系集合中不存在下一个脚本标识的情况下,退出循环;在该邻接关系集合对应的第一脚本标识所处的邻接关系集合中存在下一个脚本标识的情况下,针对该邻接关系集合对应的第一脚本标识所处的邻接关系集合中存在下一个脚本标识执行步骤602。
步骤604:在所述第一依赖任务集合中不存在第i个脚本标识的情况下,判断所述第三数据表存储的脚本标识中是否包括第i个脚本标识。
这里,在第三数据表存储的脚本标识中包括第一脚本标识对应的第i个脚本标识的情况下,表征在此之前已生成了第一脚本标识对应的第i个脚本标识对应的有向边集合对应的有向无环图,执行步骤605;在第三数据表存储的脚本标识中不包括第一脚本标识对应的第i个脚本标识的情况下,表征在此之前从未生成第一脚本标识对应的第i个脚本标识对应的有向边集合对应的有向无环图,执行步骤607至步骤608。
步骤605:在所述第三数据表存储的脚本标识中包括第i个脚本标识的情况下,判断第i个脚本标识对应的第五时间是否等于或晚于对应的第四时间。
其中,在第一脚本标识对应的第i个脚本标识对应的第五时间等于或晚于对应的第四时间的情况下,表征第三数据表中第一脚本标识对应的第i个脚本标识对应的依赖任务集合和有向边集合均是最新的,执行步骤606。
在第一脚本标识对应的第i个脚本标识对应的第五时间早于对应的第四时间的情况下,表征需要更新第三数据表中第一脚本标识对应的第i个脚本标识对应的依赖任务集合和有向边集合,以重新生成对应的有向无环图,此时,执行步骤607至步骤608。
步骤606:在第i个脚本标识对应的第五时间等于或晚于对应的第四时间的情况下,将第i个脚本标识添加至所述第一依赖任务集合并去重,将第i个脚本标识在所述第三数据表中对应的有向边集合,添加至所述第一有向边集合并去重;将i赋值为i+1,执行所述步骤602。
这里,电子设备将第二数据表中第一脚本标识对应的第i个脚本标识,添加至第三数据表中第一脚本标识对应的第一依赖任务集合,并对第一依赖任务集合进行去重处理;从第三数据表中读取第一脚本标识对应的第i个脚本标识对应的有向边集合,并将读取出的有向边集合添加至第一脚本标识对应的第一有向边集合中,并对第一有向边集合进行去重处理。
在i小于第i个脚本标识所处的邻接关系集合中包括的脚本标识的总数的情况下,表征已将由第i个脚本标识所处的邻接关系集合确定出的有向边集合,添加至对应的第一有向边集合,此时,将i赋值为i+1,返回步骤602。
在i等于第i个脚本标识所处的邻接关系集合中包括的脚本标识的总数的情况下,退出循环,或针对第i个脚本标识所处的邻接关系集合对应的第一脚本标识对应的邻接关系集合中的下一个脚本标识,执行步骤602。
步骤607:在所述第三数据表存储的脚本标识中不包括第i个脚本标识,或者第i个脚本标识对应的第五时间早于对应的第四时间的情况下,将第i个脚本标识添加至所述第一依赖任务集合并去重,将由第i个脚本标识对应的邻接关系集合确定出的有向边集合,添加至所述第一有向边集合并去重。
这里,在第三数据表存储的脚本标识中不包括第一脚本标识对应的第i个脚本标识,或者第i个脚本标识对应的第五时间早于对应的第四时间的情况下,将第二数据表中第一脚本标识对应的第i个脚本标识,添加至第三数据表中第一脚本标识对应的第一依赖任务集合,并对第一依赖任务集合进行去重处理;从第二数据表中读取第i个脚本标识对应的邻接关系集合,并基于第i个脚本标识对应的邻接关系集合,确定出该邻接关系集合对应的有向边集合,将确定出的有向边集合添加至第一有向边集合,并对第一有向边集合进行去重处理。
步骤608:将第i个脚本标识识别为第一脚本标识,执行所述判断所述第一依赖任务集合中是否存在第一脚本标识在所述第二数据表中对应的邻接关系集合中的第i个脚本标识。
电子设备在执行步骤607的情况下,将第一脚本标识对应的第i个脚本标识识别为第一脚本标识,返回步骤602,以针对第一脚本标识对应的第i个脚本标识在第二数据表中对应的邻接关系集合中包括的每个脚本标识,按照步骤602至步骤608进行处理。
需要说明的是,在i等于第i个脚本标识所处的邻接关系集合中包括的脚本标识的总数,或第i个脚本标识对应的邻接关系集合为空集的情况下,退出循环,或针对对应的第一脚本标识所处的邻接关系集合中的下一个脚本标识,执行步骤602,具体实现过程请参照步骤603中的相关描述,此处不赘述。
下面,以第一脚本标识为J1为例,说明在第三数据表中未查找到第一脚本标识,或第一脚本标识对应的第五时间早于对应的第四时间的情况下,基于确定出的每个所述第一任务脚本对应的邻接关系集合,更新所述三数据表中第一脚本标识对应的依赖任务集合和有向边集合的实现过程:
电子设备从第三数据表存储的脚本标识中,查找第二数据表中的脚本标识J1。
在第三数据表中未查找到第一脚本标识的情况下,从第二数据表中取出J1,将J1写入第三数据表,并在第三数据表中新建J1对应的第一依赖任务集合Ls和第一有向边集合E,此时,J1对应的Ls和E1均为空集;将J1添加至Ls,根据第二数据表中J1对应的邻接关系集合J1.rel={J2:T1,J2:T2,J4:T1},确定出J1对应的有向边集合E1={<J2,J1>,<J4,J1>},将E1添加至E。
在第三数据表存储的脚本标识中查找到脚本标识J1,且J1对应的第五时间早于对应的第四时间的情况下,表征在此之前已生成J1对应的依赖任务集合对应的有向无环图,此时,第三数据表中J1对应的第一依赖任务集合Ls和第一有向边集合E均不是空集,电子设备将J1对应的有向边集合E1添加至第三数据表中J1对应的E中,并对E进行去重处理。
考虑到在第三数据表中未查找到第一脚本标识的情况下,以及在第三数据表存储的脚本标识中查找到第一脚本标识的情况下,确定出第三数据表中第一脚本标识对应的依赖任务集合和有向边集合中的各元素的实现方法类似,为了方便描述,下面以在第三数据表中未查找到J1的情况下,说明在将J1对应的E1添加至对应的E的情况下,针对第二数据表中J1对应的邻接关系集合中的脚本标识J2和J4,分别按照上述步骤602至步骤608进行处理:
判断J1对应的第一依赖任务集合Ls中是否存在J1对应的邻接关系集合中的第一个脚本标识J2,得到第一判断结果。
由于在第三数据表中未查找到J1的情况下,第三数据表中J1对应的Ls中只包括J1,第一判断结果表征第一依赖任务集合Ls中不存在J2,此时,执行步骤604,判断第三数据表存储的脚本标识中是否包括J2,得到第二判断结果。
由于在第三数据表中未查找到J1的情况下,第二判断结果表征第三数据表中不包括J2,此时,执行步骤607,将J2添加至J1对应的Ls中,根据第二数据表中J2对应的邻接关系集合J2.rel={J3:T5,J4:T6},确定出J2对应的有向边集合E2={<J3,J2>,<J4,J2>},将E2添加至J1对应的E中,并对J1对应的E进行去重处理,执行步骤608,针对J2对应的邻接关系集合J2.rel中的J3和J4分别按照上述步骤602至步骤608进行处理。
这里,执行步骤602时,判断J1对应的Ls中是否存在J2对应的邻接关系集合中的第一个脚本标识J3,得到第三判断结果。
此时,由于在第三数据表中未查找到J1的情况下,J1对应的Ls中不存在J3,第三判断结果表征J1对应的Ls中不存在J3,此时,执行步骤604,判断第三数据表存储的脚本标识中是否包括J3,得到第四判断结果。
由于,在第三数据表中未查找到J1的情况下,第三数据表中不存在J3,因此,第四判断结果表征第三数据表存储的脚本标识中不包括J3,执行步骤607,将J3添加至J1对应的Ls中,并对J1对应的Ls进行去重处理;根据第二数据表中J3对应的邻接关系集合J3.rel={J5:T8},得到J3对应的有向边集合E3={<J8,J3>},将E3添加至J1对应的E中,并对J1对应的E进行去重处理;执行步骤608,针对J3对应的邻接关系集合J3.rel中的J5按照上述步骤602至步骤608进行处理。
这里,在执行步骤602时,判断J1对应的Ls中是否存在J3对应的邻接关系集合中的第一个脚本标识J5,得到第五判断结果。此时,第五判断结果表征J1对应的Ls中不存在J3对应的邻接关系集合中的J5,执行步骤604,判断第三数据表存储的脚本标识中是否包括J5。此时,判断结果表征第三数据表存储的脚本标识中不包括J5,执行步骤607,将J5添加至J1对应的Ls中并去重,由第二数据表中J5对应的邻接关系集合J5.rel={}确定出的有向边集合为空集,由于J5对应J5.rel为空集,结束对J5的处理,针对J5所处的邻接关系集合对应的第一脚本标识J3所处的邻接关系集合中的下一个脚本标识,按照步骤602至步骤608进行处理。
这里,J3所处的邻接关系集合为J2.rel={J3:T5,J4:T6},J2.rel中的下一个脚本标识为J4,因此,针对J4按照步骤602至步骤608进行处理。
针对J4执行步骤602时,判断J1对应的Ls中是否存在J4。由于J1对应的Ls中不存在J4,此时,执行步骤604判断第三数据表存储的脚本标识中是否包括J4,由于第三数据表存储的脚本标识中不包括J4,执行步骤607将J4添加至J1对应的Ls中并去重,由J4对应的邻接关系集合J4.rel={J3:T10,J5:T9}确定出J4对应的有向边集合E4={<J3,J4>,<J5,J4>},将E4添加至J1对应的E中并去重,执行步骤608将J4识别为第一脚本标识,返回步骤602,以针对第二数据表中J4对应的邻接关系集合中的J3和J5,按照步骤602至步骤608进行处理。
在执行步骤602时,判断J1对应的Ls中是否存在J4对应的邻接关系集合中的第一个脚本标识J3,由于J1对应的Ls中存在J3,此时,执行步骤603。由于J4对应的邻接关系集合中包括2个脚本标识,因此,将i赋值为i+1,执行步骤602,判断J1对应的Ls中是否存在J4对应的邻接关系集合中的第二个脚本标识J5,由于J1对应的Ls中存在J5,此时,执行步骤603,由于i等于J5所处的邻接关系集合中包括的脚本标识的总数,针对J5所处的邻接关系集合对应的第一脚本标识J4所处的邻接关系集合J2.rel中的下一个脚本标识,执行步骤602;由于J4为J2.rel中的最后一个脚本标识,因此,针对J4所处的邻接关系集合对应的第一脚本标识J2所处的邻接关系集合J1.rel中的下一个脚本标识,执行步骤602,由于J4为J1.rel中的最后一个脚本标识,因此,退出循环,输出J1对应的Ls和E。此时,J1对应的Ls=[J5,J3,J4,J2,J1],J1对应的E={<J2,J1>,<J4,J1>,<J3,J2>,<J4,J2>,<J5,J3>,<J3,J4>,<J5,J4>}。
为实现本发明实施例的方法,本发明实施例还提供了一种电子设备,如图7所示,该电子设备包括:
提取单元71,用于从接收到的至少两个任务脚本中每个任务脚本的源码中,提取出每个任务脚本对应的采用结构化查询语言描述的第一文本;
第一确定单元72,用于从提取的每个第一文本对应的抽象语法树中,确定出每个任务脚本对应的输入项和输出项;
第二确定单元73,用于基于第一任务脚本对应的输入项与至少一个第二任务脚本中每个第二任务脚本对应的输出项之间的交集,确定出所述第一任务脚本对应的邻接关系集合;
输出单元74,用于基于确定出的每个所述第一任务脚本对应的邻接关系集合,确定出所述至少两个任务脚本对应的至少一个有向边集合,并输出所述至少一个有向边集合中每个有向边集合对应的有向无环图;其中,
所述第一任务脚本和所述第二任务脚本为所述至少两个任务脚本中不同的任务脚本;邻接关系集合中的邻接关系表征第一任务脚本的邻接依赖任务和对应的交集;所述有向边集合中的有向边表征每两个任务脚本之间的依赖关系。
在一些实施例中,第一确定单元72具体用于:
将每个任务脚本的脚本标识、对应的输入项集合和输出项集合,关联写入第一数据表;
基于所述第一数据表中第一任务脚本对应的输入项集合与第二任务脚本对应的输出项集合之间的交集,确定出所述第一任务脚本对应的邻接关系;
将所述第一任务脚本的脚本标识和对应确定出的邻接关系,关联写入第二数据表;其中,所述第二数据表用于关联存储脚本标识和邻接关系集合。
在一些实施例中,该电子设备还包括第一更新单元,用于执行以下至少之一:
在接收到针对第三任务脚本的删除指令的情况下,从所述第一数据表和所述第二数据表中删除所述第三任务脚本的脚本标识对应的数据,以及删除包含所述第三任务脚本的脚本标识的邻接关系;
在接收到新增的第三任务脚本的情况下,将所述第三任务脚本的脚本标识、对应的输入项集合和输出项集合,关联写入第一数据表,以及将所述第三任务脚本的脚本标识和对应的邻接关系集合,关联写入第二数据表。
在一些实施例中,所述第一数据表还包括表征变更输入项集合的第一时间和表征变更输出项集合的第二时间;所述第二数据表还包括表征变更邻接关系的第三时间和表征变更邻接依赖任务的第四时间,该电子设备还包括第二更新单元,用于执行以下至少之一:
在第一任务脚本的源码发生变更的情况下,更新所述第一数据表中第一任务脚本对应的输入项集合、输出项集合、第一时间和第二时间中的至少一组;
在第一任务脚本对应的第三时间早于对应的第一时间的情况下,基于对应更新后的输入项集合和除第一任务脚本之外的任务脚本对应的输出项集合之间的交集,更新所述第二数据中第一任务脚本对应的邻接关系集合和第四时间中的至少之一;
在第一任务脚本对应的第三时间早于对应的第二时间的情况下,基于对应更新后的输出项集合和第一任务脚本的邻接依赖任务对应的输入项集合之间的交集,更新所述第二数据中邻接依赖第一任务脚本的任务脚本对应的邻接关系集合和第四时间中的至少之一;
将第一任务脚本对应的第三时间,更新为对应的第一时间和对应的第二时间中的最大值;其中,第四时间在对应更新后的邻接关系集合中的邻接依赖任务发生变更的情况下更新。
在一些实施例中,输出单元74具体用于:
在第三数据表存储的脚本标识中查找所述第二数据表存储的脚本标识中的第一脚本标识;其中,所述第三数据表用于关联存储脚本标识、依赖任务集合、有向边集合和表征变更有向无环图的第五时间;
在所述第三数据表中查找到第一脚本标识的情况下,检测所述第三数据表中第一脚本标识对应的第五时间是否等于或晚于对应的第四时间;
在第一脚本标识对应的第五时间等于或晚于对应的第四时间的情况下,输出数据库中与第一脚本标识关联存储的有向无环图;
在所述第三数据表中未查找到第一脚本标识,或第一脚本标识对应的第五时间早于对应的第四时间的情况下,基于确定出的每个所述第一任务脚本对应的邻接关系集合,更新所述三数据表中第一脚本标识对应的依赖任务集合和有向边集合,并基于第一脚本标识对应的更新后的依赖任务集合和有向边集合,输出对应的有向无环图。
在一些实施例中,在所述第三数据表中未查找到第一脚本标识,或第一脚本标识对应的第五时间早于对应的第四时间的情况下,输出单元74具体用于:
在所述第三数据表中关联写入第一脚本标识、对应的第一依赖任务集合和对应的第一有向边集合的情况下,将由第一脚本标识对应的邻接关系集合确定出的有向边集合,添加至对应的第一有向边集合并去重;所述第一依赖任务集合中包括第一脚本标识;
判断所述第一依赖任务集合中是否存在第一脚本标识对应的邻接关系集合中的第i个脚本标识;
在所述第一依赖任务集合中存在第i个脚本标识,且i小于第i个脚本标识所处的邻接关系集合中包括的脚本标识的总数的情况下,将i赋值为i+1,执行所述判断所述第一依赖任务集合中是否存在第一脚本标识对应的邻接关系集合中的第i个脚本标识;
在所述第一依赖任务集合中不存在第i个脚本标识的情况下,判断所述第三数据表存储的脚本标识中是否包括第i个脚本标识;
在所述第三数据表存储的脚本标识中包括第i个脚本标识的情况下,判断第i个脚本标识对应的第五时间是否等于或晚于对应的第四时间;
在第i个脚本标识对应的第五时间等于或晚于对应的第四时间的情况下,将第i个脚本标识添加至所述第一依赖任务集合并去重,将第i个脚本标识在所述第三数据表中对应的有向边集合,添加至所述第一有向边集合并去重;将i赋值为i+1,执行所述判断所述第一依赖任务集合中是否存在第一脚本标识对应的邻接关系集合中的第i个脚本标识;
在所述第三数据表存储的脚本标识中不包括第i个脚本标识,或者第i个脚本标识对应的第五时间早于对应的第四时间的情况下,将第i个脚本标识添加至所述第一依赖任务集合并去重,将由第i个脚本标识对应的邻接关系集合确定出的有向边集合,添加至所述第一有向边集合并去重;
将第i个脚本标识识别为第一脚本标识,执行所述判断所述第一依赖任务集合中是否存在第一脚本标识对应的邻接关系集合中的第i个脚本标识;其中,
在i等于第i个脚本标识所处的邻接关系集合中包括的脚本标识的总数,或第i个脚本标识对应的邻接关系集合为空集的情况下,退出循环,或针对对应的第一脚本标识所处的邻接关系集合中的下一个脚本标识,执行所述判断所述第一依赖任务集合中是否存在第一脚本标识对应的邻接关系集合中的第i个脚本标识。
在一些实施例中,在所述第三数据表中未查找到第一脚本标识的情况下,输出单元74还用于:
在所述第三数据表中关联写入第一脚本标识、对应的第一依赖任务集合和对应的第一有向边集合;其中,第一依赖任务集合和第一有向边集合均为空集;
将第一脚本标识添加至所述第一依赖任务集合。
实际应用时,电子设备包括的各单元可通过电子设备中的处理器,比如中央处理器(CPU,Central Processing Unit)、数字信号处理器(DSP,Digital Signal Processor)、微控制单元(MCU,Microcontroller Unit)或可编程门阵列(FPGA,Field-ProgrammableGate Array)等实现。
需要说明的是:上述实施例提供的电子设备在进行数据处理时,仅以上述各程序模块的划分进行举例说明,实际应用中,可以根据需要而将上述处理分配由不同的程序模块完成,即将装置的内部结构划分成不同的程序模块,以完成以上描述的全部或者部分处理。另外,上述实施例提供的电子设备与数据处理方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
基于上述程序模块的硬件实现,且为了实现本发明实施例的方法,本发明实施例还提供了一种电子设备。图8为本发明实施例提供的电子设备的硬件组成结构示意图,如图8所示,电子设备8包括:
通信接口81,能够与其它设备比如网络设备等进行信息交互;
处理器82,与所述通信接口81连接,以实现与其它设备进行信息交互,用于运行计算机程序时,执行上述一个或多个技术方案提供的数据处理方法。而所述计算机程序存储在存储器83上。
当然,实际应用时,电子设备8中的各个组件通过总线系统84耦合在一起。可理解,总线系统84用于实现这些组件之间的连接通信。总线系统84除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。但是为了清楚说明起见,在图8中将各种总线都标为总线系统84。
本发明实施例中的存储器83用于存储各种类型的数据以支持电子设备8的操作。这些数据的示例包括:用于在电子设备8上操作的任何计算机程序。
可以理解,存储器83可以是易失性存储器或非易失性存储器,也可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(ROM,Read Only Memory)、可编程只读存储器(PROM,Programmable Read-Only Memory)、可擦除可编程只读存储器(EPROM,Erasable Programmable Read-Only Memory)、电可擦除可编程只读存储器(EEPROM,Electrically Erasable Programmable Read-Only Memory)、磁性随机存取存储器(FRAM,ferromagnetic random access memory)、快闪存储器(Flash Memory)、磁表面存储器、光盘、或只读光盘(CD-ROM,Compact Disc Read-Only Memory);磁表面存储器可以是磁盘存储器或磁带存储器。易失性存储器可以是随机存取存储器(RAM,Random AccessMemory),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM可用,例如静态随机存取存储器(SRAM,Static Random Access Memory)、同步静态随机存取存储器(SSRAM,Synchronous Static Random Access Memory)、动态随机存取存储器(DRAM,Dynamic Random Access Memory)、同步动态随机存取存储器(SDRAM,SynchronousDynamic Random Access Memory)、双倍数据速率同步动态随机存取存储器(DDRSDRAM,Double Data Rate Synchronous Dynamic Random Access Memory)、增强型同步动态随机存取存储器(ESDRAM,Enhanced Synchronous Dynamic Random Access Memory)、同步连接动态随机存取存储器(SLDRAM,SyncLink Dynamic Random Access Memory)、直接内存总线随机存取存储器(DRRAM,Direct Rambus Random Access Memory)。本发明实施例描述的存储器83旨在包括但不限于这些和任意其它适合类型的存储器。
上述本发明实施例揭示的方法可以应用于处理器82中,或者由处理器82实现。处理器82可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器82中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器82可以是通用处理器、DSP,或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。处理器82可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者任何常规的处理器等。结合本发明实施例所公开的方法的步骤,可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于存储介质中,该存储介质位于存储器83,处理器82读取存储器83中的程序,结合其硬件完成前述方法的步骤。
可选地,所述处理器82执行所述程序时实现本发明实施例的各个方法中由终端实现的相应流程,为了简洁,在此不再赘述。
在示例性实施例中,本发明实施例还提供了一种存储介质,即计算机存储介质,具体为计算机可读存储介质,例如包括存储计算机程序的第一存储器83,上述计算机程序可由终端的处理器82执行,以完成前述方法所述步骤。计算机可读存储介质可以是FRAM、ROM、PROM、EPROM、EEPROM、Flash Memory、磁表面存储器、光盘、或CD-ROM等存储器。
在本发明所提供的几个实施例中,应该理解到,所揭露的设备和方法,可以通过其它的方式实现。以上所描述的设备实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,如:多个单元或组件可以结合,或可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的各组成部分相互之间的耦合、或直接耦合、或通信连接可以是通过一些接口,设备或单元的间接耦合或通信连接,可以是电性的、机械的或其它形式的。
上述作为分离部件说明的单元可以是、或也可以不是物理上分开的,作为单元显示的部件可以是、或也可以不是物理单元,即可以位于一个地方,也可以分布到多个网络单元上;可以根据实际的需要选择其中的部分或全部单元来实现本实施例方案的目的。
另外,在本发明各实施例中的各功能单元可以全部集成在一个处理模块中,也可以是各单元分别单独作为一个单元,也可以两个或两个以上单元集成在一个单元中;上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:移动存储设备、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
需要说明的是,本发明实施例所记载的技术方案之间,在不冲突的情况下,可以任意组合。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。

Claims (10)

1.一种数据处理方法,其特征在于,包括:
从接收到的至少两个任务脚本中每个任务脚本的源码中,提取出每个任务脚本对应的采用结构化查询语言描述的第一文本;
从提取的每个第一文本对应的抽象语法树中,确定出每个任务脚本对应的输入项和输出项;
基于第一任务脚本对应的输入项与至少一个第二任务脚本中每个第二任务脚本对应的输出项之间的交集,确定出所述第一任务脚本对应的邻接关系集合;
基于确定出的每个所述第一任务脚本对应的邻接关系集合,确定出所述至少两个任务脚本对应的至少一个有向边集合,并输出所述至少一个有向边集合中每个有向边集合对应的有向无环图;其中,
所述第一任务脚本和所述第二任务脚本为所述至少两个任务脚本中不同的任务脚本;邻接关系集合中的邻接关系表征第一任务脚本的邻接依赖任务和对应的交集;所述有向边集合中的有向边表征每两个任务脚本之间的依赖关系。
2.根据权利要求1所述的方法,其特征在于,所述基于第一任务脚本对应的输入项与至少一个第二任务脚本中每个第二任务脚本对应的输出项之间的交集,确定出所述第一任务脚本对应的邻接关系集合,包括:
将每个任务脚本的脚本标识、对应的输入项集合和输出项集合,关联写入第一数据表;
基于所述第一数据表中第一任务脚本对应的输入项集合与第二任务脚本对应的输出项集合之间的交集,确定出所述第一任务脚本对应的邻接关系;
将所述第一任务脚本的脚本标识和对应确定出的邻接关系,关联写入第二数据表;其中,所述第二数据表用于关联存储脚本标识和邻接关系集合。
3.根据权利要求2所述的方法,其特征在于,所述方法还包括以下至少之一:
在接收到针对第三任务脚本的删除指令的情况下,从所述第一数据表和所述第二数据表中删除所述第三任务脚本的脚本标识对应的数据,以及删除包含所述第三任务脚本的脚本标识的邻接关系;
在接收到新增的第三任务脚本的情况下,将所述第三任务脚本的脚本标识、对应的输入项集合和输出项集合,关联写入第一数据表,以及将所述第三任务脚本的脚本标识和对应的邻接关系集合,关联写入第二数据表。
4.根据权利要求2所述的方法,其特征在于,所述第一数据表还包括表征变更输入项集合的第一时间和表征变更输出项集合的第二时间;所述第二数据表还包括表征变更邻接关系的第三时间和表征变更邻接依赖任务的第四时间,所述方法还包括以下至少之一:
在第一任务脚本的源码发生变更的情况下,更新所述第一数据表中第一任务脚本对应的输入项集合、输出项集合、第一时间和第二时间中的至少一组;
在第一任务脚本对应的第三时间早于对应的第一时间的情况下,基于对应更新后的输入项集合和除第一任务脚本之外的任务脚本对应的输出项集合之间的交集,更新所述第二数据中第一任务脚本对应的邻接关系集合和第四时间中的至少之一;
在第一任务脚本对应的第三时间早于对应的第二时间的情况下,基于对应更新后的输出项集合和第一任务脚本的邻接依赖任务对应的输入项集合之间的交集,更新所述第二数据中邻接依赖第一任务脚本的任务脚本对应的邻接关系集合和第四时间中的至少之一;
将第一任务脚本对应的第三时间,更新为对应的第一时间和对应的第二时间中的最大值;其中,
第四时间在对应更新后的邻接关系集合中的邻接依赖任务发生变更的情况下更新。
5.根据权利要求4所述的方法,其特征在于,所述基于确定出的每个所述第一任务脚本对应的邻接关系集合,确定出所述至少两个任务脚本对应的至少一个有向边集合,并输出所述至少一个有向边集合中每个有向边集合对应的有向无环图,包括:
在第三数据表存储的脚本标识中查找所述第二数据表存储的脚本标识中的第一脚本标识;其中,所述第三数据表用于关联存储脚本标识、依赖任务集合、有向边集合和表征变更有向无环图的第五时间;
在所述第三数据表中查找到第一脚本标识的情况下,检测所述第三数据表中第一脚本标识对应的第五时间是否等于或晚于对应的第四时间;
在第一脚本标识对应的第五时间等于或晚于对应的第四时间的情况下,输出数据库中与第一脚本标识关联存储的有向无环图;
在所述第三数据表中未查找到第一脚本标识,或第一脚本标识对应的第五时间早于对应的第四时间的情况下,基于确定出的每个所述第一任务脚本对应的邻接关系集合,更新所述三数据表中第一脚本标识对应的依赖任务集合和有向边集合,并基于第一脚本标识对应的更新后的依赖任务集合和有向边集合,输出对应的有向无环图。
6.根据权利要求5所述的方法,其特征在于,所述基于确定出的每个所述第一任务脚本对应的邻接关系集合,更新所述三数据表中第一脚本标识对应的依赖任务集合和有向边集合,包括:
在所述第三数据表中关联写入第一脚本标识、对应的第一依赖任务集合和对应的第一有向边集合的情况下,将由第一脚本标识对应的邻接关系集合确定出的有向边集合,添加至对应的第一有向边集合并去重;所述第一依赖任务集合中包括第一脚本标识;
判断所述第一依赖任务集合中是否存在第一脚本标识对应的邻接关系集合中的第i个脚本标识;
在所述第一依赖任务集合中存在第i个脚本标识,且i小于第i个脚本标识所处的邻接关系集合中包括的脚本标识的总数的情况下,将i赋值为i+1,执行所述判断所述第一依赖任务集合中是否存在第一脚本标识对应的邻接关系集合中的第i个脚本标识;
在所述第一依赖任务集合中不存在第i个脚本标识的情况下,判断所述第三数据表存储的脚本标识中是否包括第i个脚本标识;
在所述第三数据表存储的脚本标识中包括第i个脚本标识的情况下,判断第i个脚本标识对应的第五时间是否等于或晚于对应的第四时间;
在第i个脚本标识对应的第五时间等于或晚于对应的第四时间的情况下,将第i个脚本标识添加至所述第一依赖任务集合并去重,将第i个脚本标识在所述第三数据表中对应的有向边集合,添加至所述第一有向边集合并去重;将i赋值为i+1,执行所述判断所述第一依赖任务集合中是否存在第一脚本标识对应的邻接关系集合中的第i个脚本标识;
在所述第三数据表存储的脚本标识中不包括第i个脚本标识,或者第i个脚本标识对应的第五时间早于对应的第四时间的情况下,将第i个脚本标识添加至所述第一依赖任务集合并去重,将由第i个脚本标识对应的邻接关系集合确定出的有向边集合,添加至所述第一有向边集合并去重;
将第i个脚本标识识别为第一脚本标识,执行所述判断所述第一依赖任务集合中是否存在第一脚本标识对应的邻接关系集合中的第i个脚本标识;其中,
在i等于第i个脚本标识所处的邻接关系集合中包括的脚本标识的总数,或第i个脚本标识对应的邻接关系集合为空集的情况下,退出循环,或针对对应的第一脚本标识所处的邻接关系集合中的下一个脚本标识,执行所述判断所述第一依赖任务集合中是否存在第一脚本标识对应的邻接关系集合中的第i个脚本标识。
7.根据权利要求6所述的方法,其特征在于,在第三数据表中未查找到第一脚本标识的情况下,所述基于确定出的每个所述第一任务脚本对应的邻接关系集合,更新所述三数据表中第一脚本标识对应的依赖任务集合和有向边集合,还包括:
在所述第三数据表中关联写入第一脚本标识、对应的第一依赖任务集合和对应的第一有向边集合;其中,第一依赖任务集合和第一有向边集合均为空集;
将第一脚本标识添加至所述第一依赖任务集合。
8.一种电子设备,其特征在于,包括:
提取单元,用于从接收到的至少两个任务脚本中每个任务脚本的源码中,提取出每个任务脚本对应的采用结构化查询语言描述的第一文本;
第一确定单元,用于从提取的每个第一文本对应的抽象语法树中,确定出每个任务脚本对应的输入项和输出项;
第二确定单元,用于基于第一任务脚本对应的输入项与至少一个第二任务脚本中每个第二任务脚本对应的输出项之间的交集,确定出所述第一任务脚本对应的邻接关系集合;
第三确定单元,用于基于确定出的每个所述第一任务脚本对应的邻接关系集合,确定出所述至少两个任务脚本对应的至少一个有向边集合,并输出所述至少一个有向边集合中每个有向边集合对应的有向无环图;其中,
所述第一任务脚本和所述第二任务脚本为所述至少两个任务脚本中不同的任务脚本;邻接关系集合中的邻接关系表征第一任务脚本的邻接依赖任务和对应的交集;所述有向边集合中的有向边表征每两个任务脚本之间的依赖关系。
9.一种电子设备,其特征在于,包括:处理器和用于存储能够在处理器上运行的计算机程序的存储器,
其中,所述处理器用于运行所述计算机程序时,执行权利要求1至7任一项所述的方法的步骤。
10.一种存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至7任一项所述的方法的步骤。
CN202110671384.XA 2021-06-17 2021-06-17 数据处理方法、电子设备及存储介质 Active CN113326063B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN202110671384.XA CN113326063B (zh) 2021-06-17 2021-06-17 数据处理方法、电子设备及存储介质
PCT/CN2021/140176 WO2022262240A1 (zh) 2021-06-17 2021-12-21 数据处理方法、电子设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110671384.XA CN113326063B (zh) 2021-06-17 2021-06-17 数据处理方法、电子设备及存储介质

Publications (2)

Publication Number Publication Date
CN113326063A true CN113326063A (zh) 2021-08-31
CN113326063B CN113326063B (zh) 2023-03-03

Family

ID=77423625

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110671384.XA Active CN113326063B (zh) 2021-06-17 2021-06-17 数据处理方法、电子设备及存储介质

Country Status (2)

Country Link
CN (1) CN113326063B (zh)
WO (1) WO2022262240A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2022262240A1 (zh) * 2021-06-17 2022-12-22 深圳前海微众银行股份有限公司 数据处理方法、电子设备及存储介质

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5231698A (en) * 1991-03-20 1993-07-27 Forcier Mitchell D Script/binary-encoded-character processing method and system
US20120079395A1 (en) * 2010-09-24 2012-03-29 International Business Machines Corporation Automating web tasks based on web browsing histories and user actions
CN104216888A (zh) * 2013-05-30 2014-12-17 中国电信股份有限公司 数据处理任务关系设置方法及系统
US20180204160A1 (en) * 2017-01-13 2018-07-19 Atheer, Inc. Methods and apparatus for providing procedure guidance
CN109445881A (zh) * 2018-11-02 2019-03-08 拉卡拉支付股份有限公司 脚本运行方法、装置、电子设备及存储介质
CN109787858A (zh) * 2018-12-29 2019-05-21 福建天泉教育科技有限公司 一种批量发布服务的方法及终端

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9477519B2 (en) * 2014-09-18 2016-10-25 Robert D. Pedersen Distributed activity control systems and methods
CN110795455B (zh) * 2019-09-06 2023-11-21 中国平安财产保险股份有限公司 依赖关系解析方法、电子装置、计算机设备及可读存储介质
CN110727834A (zh) * 2019-09-30 2020-01-24 北京百度网讯科技有限公司 有向无环图的获取方法、装置、电子设备和存储介质
CN113326063B (zh) * 2021-06-17 2023-03-03 深圳前海微众银行股份有限公司 数据处理方法、电子设备及存储介质

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5231698A (en) * 1991-03-20 1993-07-27 Forcier Mitchell D Script/binary-encoded-character processing method and system
US20120079395A1 (en) * 2010-09-24 2012-03-29 International Business Machines Corporation Automating web tasks based on web browsing histories and user actions
CN104216888A (zh) * 2013-05-30 2014-12-17 中国电信股份有限公司 数据处理任务关系设置方法及系统
US20180204160A1 (en) * 2017-01-13 2018-07-19 Atheer, Inc. Methods and apparatus for providing procedure guidance
CN109445881A (zh) * 2018-11-02 2019-03-08 拉卡拉支付股份有限公司 脚本运行方法、装置、电子设备及存储介质
CN109787858A (zh) * 2018-12-29 2019-05-21 福建天泉教育科技有限公司 一种批量发布服务的方法及终端

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
朱沙沙: "分布式数据处理系统的研究与应用", 《中国优秀硕士学位论文全文数据库(信息科技辑)》 *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2022262240A1 (zh) * 2021-06-17 2022-12-22 深圳前海微众银行股份有限公司 数据处理方法、电子设备及存储介质

Also Published As

Publication number Publication date
WO2022262240A1 (zh) 2022-12-22
CN113326063B (zh) 2023-03-03

Similar Documents

Publication Publication Date Title
US9646030B2 (en) Computer-readable medium storing program and version control method
WO2017084410A1 (zh) 一种网管数据同步方法及装置
CN109408589B (zh) 数据同步方法及装置
KR20060047941A (ko) 외부 메타데이터 프로세싱 방법 및 시스템
US9384202B1 (en) Gateway module to access different types of databases
CN106991100B (zh) 数据导入方法及装置
CN109739828B (zh) 一种数据处理方法、设备及计算机可读存储介质
CN105740303A (zh) 改进的对象存储的方法及装置
CN111124474A (zh) 一种api版本控制方法及装置
CN110019111B (zh) 数据处理方法、装置、存储介质以及处理器
US20180246717A1 (en) Identification of duplicate function implementations
CN107609011B (zh) 一种数据库记录的维护方法和装置
CN113326063B (zh) 数据处理方法、电子设备及存储介质
CN113918658A (zh) 恢复数据的方法及装置
CN111984666B (zh) 数据库访问方法、装置、计算机可读存储介质和计算机设备
CN105677805A (zh) 一种利用protobuf的数据存储、读取方法及装置
CN113177021B (zh) 一种不同数据源的数据导出方法及装置
US20210303404A1 (en) Systems and methods for database migration
CN111026736B (zh) 数据血缘管理方法及装置、数据血缘解析方法及装置
CN111176901B (zh) 一种hdfs删除文件恢复方法、终端设备及存储介质
CN109542860B (zh) 基于hdfs的业务数据管理方法、终端设备
US20180300126A1 (en) Program analysis device, program analysis method, and recording medium storing analysis program
CN116010345A (zh) 一种实现流批一体数据湖的表服务方案的方法、装置及设备
CN110795915A (zh) xml文件批量修改方法、系统、设备和计算机可读存储介质
CN113901025A (zh) 数据库管理方法、装置、设备和存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant