CN117370630A - 一种数据血缘生成方法、装置、电子设备及存储介质 - Google Patents

一种数据血缘生成方法、装置、电子设备及存储介质 Download PDF

Info

Publication number
CN117370630A
CN117370630A CN202311293781.3A CN202311293781A CN117370630A CN 117370630 A CN117370630 A CN 117370630A CN 202311293781 A CN202311293781 A CN 202311293781A CN 117370630 A CN117370630 A CN 117370630A
Authority
CN
China
Prior art keywords
data
node
target
task
nodes
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.)
Pending
Application number
CN202311293781.3A
Other languages
English (en)
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.)
Beijing Baidu Netcom Science and Technology Co Ltd
Original Assignee
Beijing Baidu Netcom Science and Technology 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 Beijing Baidu Netcom Science and Technology Co Ltd filed Critical Beijing Baidu Netcom Science and Technology Co Ltd
Priority to CN202311293781.3A priority Critical patent/CN117370630A/zh
Publication of CN117370630A publication Critical patent/CN117370630A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/951Indexing; Web crawling techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N5/00Computing arrangements using knowledge-based models
    • G06N5/02Knowledge representation; Symbolic representation
    • G06N5/027Frames

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Artificial Intelligence (AREA)
  • Computational Linguistics (AREA)
  • Evolutionary Computation (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本公开提供了一种数据血缘生成方法、装置、电子设备及存储介质,涉及计算机技术领域,尤其涉及数据挖掘、数据生产加工、信息流技术领域。具体实现方案为:响应于接收到数据血缘生成请求,确定目标有向无环图中待生成数据血缘的目标数据节点;确定所述目标有向无环图中的目标路径;获取所述目标路径中的指定数据节点的赋值数据;根据所述赋值数据,按照所述目标路径执行数据生成过程,得到目标数据;根据所述目标数据、所述赋值数据以及所述目标路径,生成关于所述目标数据节点的数据血缘。通过本方案可以生成更细粒度的数据血缘。

Description

一种数据血缘生成方法、装置、电子设备及存储介质
技术领域
本公开涉及计算机技术领域,尤其涉及数据挖掘、数据生产加工、信息流技术领域,具体涉及一种数据血缘生成方法、装置、电子设备及存储介质。
背景技术
数据的生产加工,即将原始数据经过一系列的处理,生产加工出最终可展示的数据;以搜索引擎应用为例,在用户搜索时,搜索引擎对原始数据进行网页爬取、网页解析、内容提取等数据生成过程,可以获取到搜索结果页面中待展示的图片、文字、链接等数据,此时原始数据可以为URL(Universal Resource Locator,统一资源定位符)。
在数据的生成加工过程中,若需了解某一数据的生产加工过程,如:该数据通过哪些数据或处理过程而得到,或通过该数据可生成哪些数据等等,数据血缘关系尤为重要。
发明内容
本公开提供了一种数据血缘生成方法、装置、电子设备及存储介质。
根据本公开的第一方面,提供了一种数据血缘生成方法,包括:
响应于接收到数据血缘生成请求,确定目标有向无环图中待生成数据血缘的目标数据节点;其中,所述目标有向无环图中包括数据节点和任务节点,每一任务节点所连接的节点为数据节点,且任一数据节点和任一任务节点之间的边表示该数据节点表征的数据与该任务节点表征的处理任务的依赖关系;
确定所述目标有向无环图中的目标路径;其中,所述目标路径为在生成所述目标数据节点的数据时所需利用的、包含有数据节点和任务节点的数据生成路径;
获取所述目标路径中的指定数据节点的赋值数据;
根据所述赋值数据,按照所述目标路径执行数据生成过程,得到目标数据;
根据所述目标数据、所述赋值数据以及所述目标路径,生成关于所述目标数据节点的数据血缘。
根据本公开的第二方面,提供了一种数据血缘生成装置,包括:
第一确定模块,用于响应于接收到数据血缘生成请求,确定目标有向无环图中待生成数据血缘的目标数据节点;其中,所述目标有向无环图中包括数据节点和任务节点,每一任务节点所连接的节点为数据节点,且任一数据节点和任一任务节点之间的边表示该数据节点表征的数据与该任务节点表征的处理任务的依赖关系;
第二确定模块,用于确定所述目标有向无环图中的目标路径;其中,所述目标路径为在生成所述目标数据节点的数据时所需利用的、包含有数据节点和任务节点的数据生成路径;
获取模块,用于获取所述目标路径中的指定数据节点的赋值数据;
执行模块,用于根据所述赋值数据,按照所述目标路径执行数据生成过程,得到目标数据;
生成模块,用于根据所述目标数据、所述赋值数据以及所述目标路径,生成关于所述目标数据节点的数据血缘。
根据本公开的第三方面,提供了一种电子设备,包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行任一所述的数据血缘生成方法。
根据本公开的第四方面,提供了一种存储有计算机指令的非瞬时计算机可读存储介质,其中,所述计算机指令用于使所述计算机执行任一所述的数据血缘生成方法。
根据本公开的第五方面,提供了一种计算机程序产品,包括计算机程序,所述计算机程序在被处理器执行时实现任一所述的数据血缘生成方法。
应当理解,本部分所描述的内容并非旨在标识本公开的实施例的关键或重要特征,也不用于限制本公开的范围。本公开的其它特征将通过以下的说明书而变得容易理解。
附图说明
附图用于更好地理解本方案,不构成对本公开的限定。其中:
图1是根据本公开提供的一种数据血缘生成方法的流程示意图;
图2是根据本公开提供的一种strategy与task的结构关系示意图;
图3是根据本公开提供的一种有向无环图的示意图;
图4是根据本公开提供的一种仅包含任务节点的有向无环图的示意图;
图5是根据本公开提供的一种有向无环图的另一示意图;
图6是根据本公开提供的一种有向无环图的又一示意图;
图7是根据本公开提供的一种有向无环图的再一示意图;
图8是根据本公开提供的一种数据血缘生成装置的结构示意图;
图9是根据本公开提供的一种电子设备的框图。
具体实施方式
以下结合附图对本公开的示范性实施例做出说明,其中包括本公开实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本公开的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
针对数据的生产加工过程,以搜索引擎为例,用户在搜索时,搜索引擎根据用户输入的原始数据,如:URL,进行网页爬取,得到HTML(Hyper Text Markup Language,超文本标记语言)网页,并对HTML网页进行解析,并提取网页中的图片、视频等多媒体内容,并提取多媒体内容的特征,构建索引,以提供在线排序所使用的特征,并提供待展现至用户的数据。其中,离线数据处理系统可以对数据进行生产加工,实现根据原始数据生成多媒体内容、多媒体特征等在线系统可以直接利用的数据。
若需了解某一数据字段的生成加工过程,就是数据血缘的一种应用场景,例如:在搜索场景下,搜索结果中的标题,经过哪些环节的处理,依赖哪些其他数据字段而生成,所依赖的其他数据字段是如何生产加工得到的。
在科技时代,可以采用机器学习方法进行特征提取,此时需依赖较多的原始输入数据,而这些原始输入数据可能是其他方式所生成的,多个原始数据经过生产加工,最终得到高质量的特征。而上游数据迭代时,会影响那些下游特征,所影响的下游特征又进一步影响哪些处理过程;下游特征的生产加工时,若增加一个其他输入特征,此时根据原有的数据生成加工过程,是否需重新从头执行数据生产加工过程;这对数据血缘关系提出了较高的要求。
并且,数据为有价值资产,数据是业务逻辑中的核心要素,数据的数字化、智能化等需求,也对数据血缘关系提出了更高的精度要求。
相关技术中存在一些离线数据处理系统,如:flink(佛林克)、spark等等,而这些离线数据处理系统通常面向数据的生产加工过程,可以将数据的生产加工过程通过某种拓扑顺序进行组合,一般可以采用有向无环图(DAG,Directed Acyclic Graph)来刻画数据的生产加工过程,但是并不具备数据血缘关系的刻画能力。
相关技术中还存在一些工作流调度平台或系统,可以刻画粗粒度的数据血缘关系,如:文件粒度、数据集粒度等等。例如:调度hadoop(分布式系统基础架构,HadoopDistributed File System)任务的compass(站管理系统),将多个hadoop任务用DAG来编排,然后根据依赖关系和先后顺序,执行每个hadoop任务,hadoop任务会将产出的数据文件放到某个位置,下一个任务可能读取该数据文件,最终完成整个工作流。又例如:DolphinScheduler(海豚调度,是一个分布式工作流任务调度系统),可以让开发者创建一个工作流workflow,workflow也是用DAG的方式来刻画生成过程。
上述方式,针对数据血缘关系的刻画粒度较粗,仅仅可以刻画任务的整体产出,如:文件粒度、数据集粒度等等,无法刻画精细的数据字段、某个特征的数据血缘关系。
基于此,本公开实施例提供了一种数据血缘生成方法、装置、电子设备及存储介质,以生成更细粒度的数据血缘。
下面首先对本公开提供的一种数据血缘生成方法进行介绍。
其中,本公开实施例涉及的一种数据血缘生成方法可以应用于电子设备,该电子设备可以为终端设备或服务器,示例性的,终端设备可以为:手机、电脑等等,本公开并不对电子设备的具体形态进行限定。另外,本公开实施例所提供的一种数据血缘生成方法可以应用于任一具有利用数据血缘查看某一数据的上游数据、下游数据或其他依赖数据的生成过程的需求的场景,本公开实施例对于具体场景不做限定。
具体而言,该数据血缘生成方法的执行主体可以为数据血缘生成装置。示例性的,该数据血缘生成装置可以为运行于终端设备的功能软件,例如:用于生成数据血缘的功能软件;该数据血缘生成装置也可以为现有客户端的插件,例如:用于进行数据管理的客户端中的插件,此时该数据血缘生成装置可以针对所管理的数据,生成对应的数据血缘。示例性的,当该数据血缘生成装置应用于服务器时,该数据血缘生成装置可以为运行于服务器中的计算机程序,例如:该数据血缘生成装置可以为运行于服务器中的、用于进行数据管理的客户端所对应的服务端程序中的功能模块。
本公开实施例提供的一种数据血缘生成方法,可以包括如下步骤:
响应于接收到数据血缘生成请求,确定目标有向无环图中待生成数据血缘的目标数据节点;其中,所述目标有向无环图中包括数据节点和任务节点,每一任务节点所连接的节点为数据节点,且任一数据节点和任一任务节点之间的边表示该数据节点表征的数据与该任务节点表征的处理任务的依赖关系;
确定所述目标有向无环图中的目标路径;其中,所述目标路径为在生成所述目标数据节点的数据时所需利用的、包含有数据节点和任务节点的数据生成路径;
获取所述目标路径中的指定数据节点的赋值数据;
根据所述赋值数据,按照所述目标路径执行数据生成过程,得到目标数据;
根据所述目标数据、所述赋值数据以及所述目标路径,生成关于所述目标数据节点的数据血缘。
本方案中,预先构建有目标有向无环图,目标有向无环图中包括数据节点和任务节点,每一任务节点所连接的节点为数据节点,且任一数据节点和任一任务节点之间的边表示该数据节点表征的数据与该任务节点表征的处理任务的依赖关系,从而本公开可以根据目标有向无环图生成数据节点的数据血缘;具体的,可以响应于接收到数据血缘生成请求,确定目标有向无环图中待生成数据血缘的目标数据节点,并确定在生成目标数据节点的数据时所需利用的、包含有数据节点和任务节点的数据生成路径,即目标路径;进而,可以获取目标路径中所需赋值的指定数据节点的赋值数据,并根据赋值数据,按照目标路径执行数据生成过程,得到目标数据。此时,目标路径可以表征生成目标数据节点的数据时的任务节点和数据节点的生产关系,目标数据以及赋值数据可以为具体的数值或参数,可以根据目标数据、赋值数据以及目标路径,生成目标数据节点的数据血缘。可见,本公开提供的数据血缘生成方法,所生成的数据血缘中包含有针对目标数据节点的数据以及该数据生成过程中所利用的、具体的各数据,还包含有目标数据节点的数据生成时针对数据节点和任务节点的生产关系,通过本方案可以生成更细粒度的数据血缘。
下面结合附图,对本公开提供的一种数据血缘生成方法进行示例性介绍。
如图1所示,本公开提供的一种数据血缘生成方法,可以包括如下步骤:
S101:响应于接收到数据血缘生成请求,确定目标有向无环图中待生成数据血缘的目标数据节点;
其中,所述目标有向无环图中包括数据节点和任务节点,每一任务节点所连接的节点为数据节点,且任一数据节点和任一任务节点之间的边表示该数据节点表征的数据与该任务节点表征的处理任务的依赖关系。
可以理解的是,每一任务节点的上游的数据节点的赋值数据,可以作为该任务节点的输入形参的赋值数据;而针对每一任务节点的下游的数据节点而言,该任务节点的任务执行结果,可以作为该下游的数据节点的赋值数据。
本公开中,示例性的,用户可以通过点击目标有向无环图中的一数据节点,或者,输入一数据节点的名称等方式,发出数据血缘生成请求,进而,本公开可以响应于接收到数据血缘生成请求,确定目标有向无环图中待生成数据血缘的目标数据节点;相应地,可以将目标有向无环图中,该数据血缘生成请求中所指示的数据节点,作为目标数据节点,例如:将用户所点击的目标有向无环图中的数据节点作为目标数据节点,或者,将目标有向无环图中,具有用户所输入的数据节点的名称的数据节点作为目标数据节点。
当然,数据血缘生成请求也可以为其他设备或模块自动发送的请求,该请求中可以包含有一数据节点的名称,后续可以将目标有向无环图中的该数据节点确定为目标数据节点。
需要说明的是,上述确定目标有向无环图中待生成数据血缘的目标数据节点的方式,仅仅作为示例,并不应构成对本公开的限定。
可选地,目标有向无环图可以根据用户需求预先构建,所述目标有向无环图的构建方式包括:
获取基于配置界面所输入的关于数据节点和任务节点的配置信息;其中,所述配置信息中包括:待构建的各个数据节点所表征的数据的形参、待构建的各个任务节点所表征处理任务的执行策略,以及各个数据节点与任务节点的依赖关系;
基于所述配置信息中的形参以及执行策略,调用数据节点生成接口和任务节点生成接口,分别生成数据节点和任务节点,并针对任一数据节点和任一任务节点,根据所述配置信息中的依赖关系,生成连接该数据节点和该任务节点的边,以得到所述目标有向无环图。
在构建目标有向无环图时,可以先获取基于配置界面所输入的关于数据节点和任务节点的配置信息;其中,用户可以基于配置界面输入关于数据节点和任务节点的配置信息,如:待构建的各个数据节点所表征的数据的形参、待构建的各个任务节点所表征处理任务的执行策略,以及各个数据节点和任务节点的依赖关系;当然,执行本公开提供的数据血缘生成方法的电子设备还可以从其他平台获取该配置信息,例如:从调度系统中获取该配置信息。
本公开中还提供有用于生成目标有向无环图的接口,得到数据节点和任务节点的配置信息后,可以基于配置信息中的形参以及执行策略,调用数据节点生成接口和任务节点生成接口,分别生成数据节点和任务节点,并根据配置信息中的依赖关系,生成连接任一数据节点和任一任务节点的边,得到目标有向无环图。
另外,不同的待构建的数据节点所表征的数据类型可以不同,其中,目标有向无环图中可以包含数据类型包括:源数据、普通数据、状态数据以及抽象数据,当然还可以包括具体数据等等,将在后续实施例进行详细介绍,在此不做赘述。本公开提供的数据节点生成接口,可以包括多个数据类型的数据节点生成接口,当然,本公开还提供有其他用于生成目标有向无环图的接口,例如:删除数据节点的接口、删除任务节点的接口、删除当前构图内容的接口等等,以便满足不同的构图需求。本公开还提供有对目标有向无环图进行操作的其他接口,将在后续实施例进行详细介绍,在此不做赘述。
本公开提供的方案,可以获取基于配置界面所输入的关于数据节点和任务节点的配置信息,基于配置信息中的形参以及执行策略,调用数据节点生成接口和任务节点生成接口,分别生成数据节点和任务节点,并根据配置信息中的依赖关系生成连接数据节点和任务节点的边。而现有技术中所构建的有向无环图,通常仅仅是关于任务节点有向无环图,其中不包含有数据节点,现有技术中所生成的数据血缘也仅仅是粗粒度的数据血缘,无法满足更细的数据血缘需求;本公开中,目标有向无环图中包含有数据节点和任务节点,以及通过表征依赖关系的边连接数据节点和任务节点,后续可以根据任务节点和数据节点生成更细粒度的数据血缘。
其中,本公开提供的一有向无环图,如图3所示,其中包括数据节点title、a以及title_size,tid_1即title节点下游连接的任务节点,TextSize(text:title)即将tid_1的输入形参text赋值为title,并执行TextSize,经计算count后可以将tid_1下游的数据节点赋值为title_size,此时a以及title_size作为tid_2上游连接的数据节点,Add(num1:a,num2:title_size)即将任务节点tid_2的输入形参num1赋值为a,将输入形参num2赋值为title_size,并执行Add过程,得到总和sum后,tid_2下游相连接的数据节点存在其观察条件equal(four),当title节点满足该观察条件时,可以将tid_2下游相连接的数据节点赋值为sum的结果title_size+a。TextSize和Add分别为任务节点tid_1和tid_2所配置的执行逻辑。
当然,需要说明的是,目标有向无环图中,还可以显示有各个任务的运行状态等等,如:完成启动、未触发执行、跳过执行、成功触发并执行完成等等。另外,目标有向无环图中的边,根据其数据类型不同、所连接的两节点的类型不同等等,边的类型也可以不同;目标有向无环图中的数据节点和任务节点的表征类型可以不同,如数据节点可以为圆形、任务节点可以为矩形,不同类型的数据节点还可以通过双圆、椭圆进行表征,在不同状态时,数据节点和任务节点可以具有该状态对应的颜色,具体将在后续实施例进行详细介绍,在此不做赘述。
当然,在未执行时,目标有向无环图中的数据节点可以具有其形参,任务节点可以具有其配置的执行逻辑等等,在目标有向无环图执行时,可以为数据节点赋值,任一任务节点可以将其上游数据节点的赋值数据作为输入进而执行该任务节点所表征的处理任务,当然,形参也可以进行分类,如:必选输入形参、可选输入形参等等,可选输入形参是否赋值,并不影响该可选输入形参作为输入的任务节点的执行。
S102:确定所述目标有向无环图中的目标路径;
其中,所述目标路径为在生成所述目标数据节点的数据时所需利用的、包含有数据节点和任务节点的数据生成路径;
本公开中,为了通过执行生成该目标数据节点的数据的数据生产加工过程,进而生成该目标数据节点更细粒度的数据血缘,在确定目标数据节点后,可以确定目标有向无环图中,在生成目标数据节点的数据时所需利用的包含数据节点和任务节点的数据生成路径,即确定目标路径。
示例性的,针对目标数据节点,可以通过目标有向无环图进行逆向推导,回溯生成该目标数据节点所需利用的包含数据节点和任务节点的数据生成路径,当然,相邻的数据节点和任务节点之间连接有表征其依赖关系的边,后续可以执行该目标路径,即执行针对目标数据节点的数据的生产加工过程,进而生成该目标数据节点在实参的数据粒度的数据血缘。
具体地,可以从目标数据节点出发,在目标有向无环图中,进行逆向遍历,直至遍历到一个已经存在数据的数据节点,该数据节点即指定数据节点,此时可以不执行该指定数据节点上游的数据节点和任务节点,可以从该指定数据节点开始进行数据生产过程,进而后续得到目标数据节点的数据。
S103:获取所述目标路径中的指定数据节点的赋值数据;
其中,所述指定数据节点为在生成所述目标数据节点的数据时所需进行初始赋值的数据节点;
确定目标路径后,目标路径中存在在生成目标数据节点的数据时所需进行初始赋值的数据节点,即指定数据节点,为实现目标路径的数据生成过程的执行,还可以获取目标路径中指定数据节点的赋值数据。
示例性的,该指定数据节点的赋值数据可以包含于数据血缘生成请求,此时可以从数据血缘生成请求中直接获取指定数据节点的赋值数据;当然,还可以通过交互的方式,获取指定数据节点的赋值数据,例如:可以显示提示信息,使得用户输入该指定数据节点的赋值数据,或者,向其他包含有该初始节点的赋值数据的平台或设备等发送请求,使得其返回指定数据节点的赋值数据。
需要说明的是,任一种能够获取目标路径中的指定数据节点的赋值数据的方式,均适用于本公开,本公开对此不做限定。
S104:根据所述赋值数据,按照所述目标路径执行数据生成过程,得到目标数据;
得到指定数据节点的赋值数据后,可以按照目标路径执行数据生成过程,例如:基于所获得的的赋值数据对指定数据节点进行赋值,并按照目标路径中的节点顺序,执行其中任务节点所表征的处理任务,得到目标数据。
具体的,所述指定数据节点包括所述目标路径中的起始节点;
所述根据所述赋值数据,按照所述目标路径执行数据生成过程,得到目标数据,包括:
将所述目标路径中的起始节点赋值为所述赋值数据,并基于赋值后的所述起始节点,按照所述目标路径中的节点顺序,触发所述目标路径中的任务节点所表征的处理任务的执行或触发所述目标路径中的数据节点的赋值,以进行数据生成处理,得到目标数据;
其中,任一处理任务在执行时所使用的数据包括:所连接的上游的数据节点赋值所得的数据,任一数据节点在赋值时所利用的数据包括:所连接的上游的任务节点的任务执行结果或所连接的上游的数据节点赋值所得的数据。
指定数据节点可以包括目标路径中的起始节点,在执行数据生成过程时,可以将目标路径中的起始节点赋值为所获得的赋值数据,并基于赋值后的起始节点,按照目标路径中的节点顺序,触发目标路径中的任务节点所表征的处理任务的执行或触发目标路径中的数据节点的赋值,以进行数据生成处理,得到目标数据。其中,按照目标路径中的节点顺序,起始节点赋值之后,可以将起始节点赋值后的数据作为起始节点的下游任务节点的输入,也就是,任一处理任务在执行时所使用的数据为所连接的上游的数据节点赋值所得到的数据,进而执行该任务节点所表征的处理任务,并按照目标路径中的节点顺序,依次触发数据节点的赋值或任务节点表征的处理任务的执行;当然,目标路径中还可以存在除起始节点以及目标数据节点外的其他数据节点,该其他数据节点在赋值时所利用的数据可以为其所连接的上游任务节点的任务执行结果,或者所连接的上游数据节点赋值所得的数据。目标数据即目标数据节点得到数据,目标路径中除目标数据节点外的其他节点执行完毕后,可以将目标数据节点上游的连接的任务节点的任务执行结果,作为目标数据;当然,目标数据节点上游也可以连接有数据节点,此时可以将上游所连接的数据节点赋值所得的数据作为目标数据。
可以理解的是,指定数据节点包括目标路径中的起始节点,而目标路径中的起始节点并不一定为目标有向无环图中的源节点。
在执行数据生成过程时,指定数据节点可以包括目标路径中的起始节点,可以将起始节点赋值为赋值数据,如:将起始节点的形参赋值有具体的实参,并基于赋值后的起始节点,按照目标路径的节点顺序,执行数据生成过程,通过数据节点的赋值或任务节点所表征处理任务的执行,可以最终生成目标数据,后续可以根据该目标路径所进行的数据生成过程,以及其具体的数据,如:目标数据和赋值数据,生成关于目标数据节点更细粒度的数据血缘。
可选地,所述指定数据节点还包括:所述目标路径中的中间节点;
所述目标路径中的中间节点,在赋值时所利用的数据为:获取得到的所述中间节点的赋值数据。
可以理解的是,目标路径中生成目标数据节点的数据时所需进行初始赋值的数据节点还可以为目标路径中的中间的数据节点,即指定数据节点还包括目标路径中的中间节点。例如:针对目标路径中的一中间任务节点而言,该中间任务节点所表征的处理任务在执行时,上游连接有两数据节点:第一数据节点和第二数据节点,其中,第一数据节点在赋值时所利用的数据为获取得到该第一数据节点的赋值数据,第二数据节点在赋值时所利用的数据为第二数据节点所连接的上游的任务节点的任务执行结果,此时,第一数据节点即需进行初始赋值的数据节点,即指定数据节点,且第一数据节点为目标路径中的中间节点。
本公开中,指定数据节点还可以包括目标路径中的中间节点,此时可以根据获取得到的该中间节点的赋值数据,为该中间节点赋值,并执行目标路径,可以实现在不同场景的需求下,保证目标路径的顺利执行,得到目标数据。
可选地,所述目标路径中的起始节点为所述目标有向无环图中的源节点或者所述源节点以外的数据节点;
其中,所述源节点为不存在上游的节点的数据节点。
目标路径中的起始节点可以为目标有向无环图中的源节点,如首个数据节点,该起始节点还可以为目标有向无环图中的源节点以外的其他数据节点,例如:目标有向无环图中源节点与目标数据节点之间的中间数据节点等等,本公开对此不做限定。
当目标路径中的起始节点为源节点以外的数据节点时,此时,可以从目标有向无环图中的该目标路径中的起始节点开始,执行数据生成过程,进而得到目标数据。也就是,本公开中,支持从目标有向无环图中的中间的某一数据节点开始,执行目标有向无环图中的部分数据生成过程,而不必每次均从目标有向无环图中的源节点执行整体的数据生成过程,进而提升后续生成数据血缘的效率。
S105:根据所述目标数据、所述赋值数据以及所述目标路径,生成关于所述目标数据节点的数据血缘;
目标路径可以表征针对目标数据节点的数据生成过程,得到目标数据后,可以根据目标数据、赋值数据以及目标路径,生成针对目标数据节点的具体数据的、更细粒度的数据血缘。
具体而言,所述根据所述目标数据、所述赋值数据以及所述目标路径,生成关于所述目标数据节点的数据血缘,包括:
确定所述目标有向无环图中的、表征所述目标路径的子图,得到目标子图;
至少基于所述赋值数据对所述目标子图中的所述指定数据节点进行赋值,以及基于所述目标数据对所述目标子图中的目标数据节点进行赋值,得到表征所述目标数据节点的数据血缘的血缘关系图。
本公开可以根据目标有向无环图生成目标数据节点的数据血缘,所生成的数据血缘可以通过血缘关系图的方式表征,该血缘关系图可以为一种有向无环图。在生成目标数据节点的数据血缘时,可以确定目标有向无环图中的、表征目标路径的子图,得到目标子图,也就是,从目标有向无环图中,选取表征目标路径的部分有向无环图,得到目标子图;为生成更细粒度的数据血缘,可以至少基于赋值数据对目标子图中的指定数据节点赋值,以及基于目标数据对目标子图中的目标数据节点赋值,得到表征目标数据节点的数据血缘的血缘关系图。
可见,本公开可以先确定目标有向无环图中表征目标路径的目标子图,并通过赋值数据、目标数据,对目标子图中对应的数据节点进行赋值的方式,得到包含有具体数值的、更细粒度的表征目标数据节点的数据血缘的血缘关系图。
可选地,目标子图中可能还包含有除目标数据节点和指定数据节点外的其他数据节点,所述方法还包括:
确定在所述目标数据生成过程中所利用的、除所述指定数据节点和目标数据节点以外的其他数据节点所赋值的数据;
所述至少基于所述赋值数据对所述目标子图中的所述指定数据节点进行赋值,以及基于所述目标数据对所述目标子图中的目标数据节点进行赋值,得到表征所述目标数据节点的数据血缘的血缘关系图,包括:
基于所述赋值数据对所述目标子图中的所述指定数据节点进行赋值,基于所述目标数据对所述目标子图中的目标数据节点进行赋值,以及基于所确定的数据对所述其他数据节点进行赋值,得到表征所述目标数据节点的数据血缘的血缘关系图。
在生成数据血缘的血缘关系图时,还可以确定在目标数据生成过程中所利用的、除指定数据节点和目标数据节点以外的其他数据节点所赋值的数据,这些数据可以理解为利用指定数据节点的赋值数据生成目标数据时所产生的中间数据;在生成目标数据节点的数据血缘的血缘关系图时,可以基于赋值数据对目标子图中的指定数据节点赋值,基于目标数据对目标子图中的目标数据节点进行赋值,以及基于所确定的数据,即中间数据,对其他数据节点进行赋值,得到表征目标数据节点的数据血缘的血缘关系图。
此时,当目标子图中存在除目标数据节点和指定数据节点外的其他数据节点时,本公开提供的数据血缘生成方法,还可以确定其他数据节点所赋值的数据,并对目标子图中对应的数据节点赋值;针对目标子图中的目标数据节点、指定数据节点以及其他数据节点均可以进行赋值,目标子图中的任一数据节点均被赋值,可以得到完整的、包含有具体数值的、更细粒度的表征目标数据节点的数据血缘的血缘关系图。
针对图3而言的目标子图,可以对其中的数据节点进行赋值,渲染生成该目标子图对应的数据血缘的血缘关系图,所得到的血缘关系图如图5所示。
本公开的技术方案中,所涉及的目标有向无环图的收集、存储、使用、加工、传输、提供和公开等处理,均符合相关法律法规的规定,且不违背公序良俗。
需要说明的是,本实施例中的数据和任务来自于公开数据集。
本方案中,预先构建有目标有向无环图,目标有向无环图中包括数据节点和任务节点,每一任务节点所连接的节点为数据节点,且任一数据节点和任一任务节点之间的边表示该数据节点表征的数据与该任务节点表征的处理任务的依赖关系,从而本公开可以根据目标有向无环图生成数据节点的数据血缘;具体的,可以响应于接收到数据血缘生成请求,确定目标有向无环图中待生成数据血缘的目标数据节点,并确定在生成目标数据节点的数据时所需利用的、包含有数据节点和任务节点的数据生成路径,即目标路径;进而,可以获取目标路径中所需赋值的指定数据节点的赋值数据,并根据赋值数据,按照目标路径执行数据生成过程,得到目标数据。此时,目标路径可以表征生成目标数据节点的数据时的任务节点和数据节点的生产关系,目标数据以及赋值数据可以为具体的数值或参数,可以根据目标数据、赋值数据以及目标路径,生成目标数据节点的数据血缘。可见,本公开提供的数据血缘生成方法,所生成的数据血缘中包含有针对目标数据节点的数据以及该数据生成过程中所利用的、具体的各数据,还包含有目标数据节点的数据生成时针对数据节点和任务节点的生产关系,通过本方案可以生成更细粒度的数据血缘。
可选地,在本公开的另一实施例中,本公开所提供的方法还包括:
在进行数据生成处理的过程中,针对任一数据节点,响应于检测到针对该数据节点设置有关于第一指定节点的第一观察条件,则在所述第一指定节点满足第一观察条件时,触发该数据节点的赋值;其中,所述第一指定节点包括:该数据节点所连接的上游的数据节点或任务节点;
和/或,
针对任一任务节点,响应于检测到针对该任务节点设置有关于第二指定节点的第二观察条件,则在所述第二指定节点满足第二观察条件时,触发该任务节点所表征的处理任务的执行;其中,第二指定节点包括:该任务节点所连接的上游的数据节点或任务节点。
目标有向无环图中的数据节点和任务节点还可以设置有观察条件,在数据生成处理的过程中,针对任一数据节点,若该数据节点设置有关于第一指定节点的第一观察条件,则可以在第一指定节点满足第一观察条件时,触发该数据节点的赋值;针对任一任务节点,若该任务节点设置有关于第二指定节点的第二观察条件,则可以在第二指定节点满足第二观察条件时,触发该任务节点所表征的处理任务的执行。可以理解的是,所述的第一观察条件可以理解为是否对数据节点进行赋值的触发条件,而第二观察条件可以理解为任务节点是否执行的触发条件。
第一指定节点可以为该数据节点所连接的上游的数据节点或任务节点,第二指定节点可以为该任务节点所连接的上游的数据节点或任务节点,在一些场景下,第一指定节点和第二指定节点可以相同且均为数据节点,此时第一观察条件和第二观察条件也可以相同,示例性的,此时第一观察条件和第二观察条件可以为:equal(four),即第一指定节点和第二指定节点的赋值为4,此时可以触发该数据节点的赋值,以及该任务节点所表征处理任务的执行。本公开对于第一指定节点和第二指定节点的类型并不做限定,并且,对于第一观察条件和第二观察条件的具体条件内容可以根据实际情况进行设置,本公开对此不做限定。
如图3所示,数据节点title_size+a具有其观察条件,如图中虚线箭头部分,数据节点title_size+a的第一指定节点为其上游数据节点title,第一观察条件为equal(four),也就是,当数据节点title满足equal(four),即数据节点title的赋值为four时,才会触发数据节点title_size+a的赋值。如图5所示,此时数据节点title的赋值为four,则可以触发数据节点title_size+a的赋值,可见数据节点title_size+a被赋值为7。
通过第一观察条件和第二观察条件的方式,目标有向无环图中的任一数据节点的第一指定节点满足第一观察条件,才触发该数据节点的赋值,任一任务节点的第二指定节点满足第二观察条件,才触发该任务节点所表征处理任务的执行;通过观察条件可以避免目标有向无环图中的数据节点的无用赋值或任务节点所表征任务的无用执行,避免计算资源的浪费,提高数据血缘的生成效率。
可选地,在本公开的另一实施例中,本公开所提供的方法还包括:
在数据生成处理的过程中,针对任一任务节点,响应于检测到针对该任务节点具有包含输入签名和输出签名的历史数据签名,则检测所述历史数据签名中的输入签名与当前输入场景对应的签名是否匹配,以及该任务节点的上游数据节点的历史赋值数据与当前赋值的数据是否相同;
若相同,则跳过执行该任务节点所表征的处理任务,并基于所述历史数据签名中的输出签名所表征的输出形参及其历史赋值数据,确定该任务节点的任务执行结果;
若不同,则执行该任务节点所表征的处理任务;
其中,所述输入签名用于表征历史输入场景对应的签名,所述输出签名用于表征在所述历史输入场景下该任务节点的输出形参。
本公开中,在数据生成处理的过程中,当满足一定条件时,还可以跳过任务节点所表征处理任务的执行,直接确定该任务节点的任务执行结果。
可以理解的是,针对同一任务节点,当满足输入数据相同、任务的执行场景相同的情况下,其输出也相同,(即当前输入数据、任务的执行场景与历史均相同,该任务的当前输出数据与历史输出数据也相同)针对任一任务节点,若检测到该任务节点具有包含输入签名和输出签名的历史数据签名,可以检测该任务节点的历史数据签名中的输入签名与当前输入场景对应的签名是否匹配,如:检测历史数据签名的输入签名和当前数据签名的输入签名是否相同,也就是检测该任务节点当前所表征的任务与历史所表征的任务的执行场景是否相同等等;并检测该任务节点的上游数据节点的历史赋值数据与当前赋值的数据是否相同;若检测到均相同,则可以跳过执行该任务节点所表征的处理任务,而历史数据签名中的输出签名表征在历史输入场景下该任务节点的输出形参,也就是在该历史输入场景下,哪些输出形参可被计算出具体数值,因此,可以基于历史数据签名中的输出签名所表征的输出形参,以及输出形参的历史赋值数据,确定该任务节点的任务执行结果,例如:将历史数据签名中的输出签名所表征的输出形参的历史赋值数据,作为该任务节点的任务执行结果。
其中,历史数据签名可以为数据血缘生成请求所携带的内容,该内容可以为发出该数据血缘生成请求的设备历史缓存的内容。
具体的,历史数据签名可以称为process sign,其中,process sign包括input_sign:output_sign,input_sign即输入签名,output_sign即输出签名,当历史数据签名与当前数据签名一致时,表征该任务的历史执行场景与当前执行场景相同,且该任务节点的历史输出形参和当前输出形参相同,若该任务节点的当前输入形参与历史输入形参相同,则该任务节点所表征的任务可以跳过执行,直接利用output_sign所表征的输出形参及其赋值数据,确定该任务节点表征处理任务的执行结果。当然,任一任务节点的数据签名可以实时计算并缓存,其中,可以通过签名算法,以及缓存签名因子,计算该任务节点的签名,其具体实现方式将在后续实施例进行详细介绍。
本公开提供的方案,任一任务节点还可以设置有数据签名,若该任务节点具有历史数据签名,则可以检测历史数据签名中的输入签名是否与当前输入场景对应的签名匹配,以及该任务节点所连接的上游的数据节点的历史赋值数据与当前赋值数据是否相同,也就是检测该任务节点的历史输入数据与当前输入数据是否相同,历史执行场景与当前执行场景是否相同,若相同,则可以跳过执行该任务节点所表征的处理任务,直接基于历史数据签名所表征的输出形参及其历史赋值数据,确定该任务节点的任务执行结果。通过历史数据签名的方式,可以合理跳过不必重复执行的处理任务,直接利用该处理任务的历史数据,确定该处理任务的执行结果,可以节约计算资源,快速生成目标数据,提高生成数据血缘的效率。
可选地,在本公开的另一实施例中,还包括:
响应于检测到所述目标有向无环图的更新指令,对所述目标有向无环图进行更新,并基于当前更新得到的目标有向无环图的拓扑结构,生成当前更新得到的目标有向无环图的图签名;其中,目标有向无环图的拓扑结构,包括:所述目标有向无环图中数据节点的排序、任务节点的排序、任一数据节点和任一任务节点之间的边的排序、任务节点所配置的执行策略、针对任务节点所设置的观察条件和/或针对数据节点设置的观察条件;
响应于检测到针对目标有向无环图的输出指令,则输出当前更新得到的目标有向无环图以及当前更新得到的目标有向无环图的图签名。
本公开中,还可以生成目标有向无环图的图签名,不同更新版本的目标有向无环图均可以具有其对应的图签名。具体而言,用户可以根据需求对目标有向无环图进行更新,可以通过发出针对目标有向无环图的更新指令的方式对目标有向无环图进行更新,本公开提供的方案可以响应于检测到目标有向无环图的更新指令,对目标有向无环图进行更新,并基于当前更新得到的目标有向无环图的拓扑结构,生成当前更新得到的目标有向无环图的图签名;后续可以输出当前更新得到的目标有向无环图,以及其图签名。并且,本公开对于生成图签名时所利用的签名算法并不做限定。
其中,任一有向无环图的图签名,可以基于该有向无环图的拓扑结构所生成,若两有向无环图具有相同的拓扑结构,则两有向无环图的图签名也相同;示例性的,目标有向无环图的拓扑结构,包括:所述目标有向无环图中数据节点的排序、任务节点的排序、任一数据节点和任一任务节点之间的边的排序、任务节点所配置的执行策略、针对任务节点所设置的观察条件和/或针对数据节点设置的观察条件,当然,还可以包括其他拓扑结构,本公开对此不做限定。
可以理解的是,目标有向无环图以及当前更新得到的目标有向无环图均可以具有其对应的图签名,即不同版本的目标有向无环图均具有该版本对应的图签名,任一版本的目标有向无环图的图签名可以基于目标有向无环图的拓扑结构所生成,通过图签名的方式可以对不同版本的目标有向无环图进行标识和区分,并且通过图签名还可以表征有向无环图的拓扑结构。示例性的:当前页面中可以显示有目标有向无环图,若需对目标有向无环图进行更新,可以在后台对目标有向无环图进行更新操作,此时页面中还是显示的目标有向无环图,后台可以对该目标有向无环图进行更新,得到当前更新得到的目标有向无环图及其图签名,此时可以将当前更新得到的目标有向无环图及其图签名进行输出,对页面中的目标有向无环图及其图签名进行替换,替换完毕后,页面中可以显示当前更新得到的目标有向无环图及其图签名。
下面基于另一实施例,对本公开所提供的一种数据血缘生成方法进行介绍。
相关技术中的离线数据处理系统可以实现数据处理过程的编排,但无法刻画数据血缘或所刻画的数据血缘粒度太粗,本公开提供了一种DDC(data driven computing,数据驱动计算)系统,可以兼容数据处理过程的编排,并且精细刻画数据的血缘关系。
本公开中,数据的处理逻辑一般由数据data和任务task构成。用户可以定义data和task,即数据节点和任务节点,通过data与task之间的依赖关系,形成有向无环图DAG,该过程还可以称为DDC系统的建模过程。
其中,DDC系统可以生成DAG中一数据节点的数据血缘,即本公开的数据血缘生成方法,可以通过DDC系统而实现,用户可以提供指定数据节点的赋值数据,即原始数据datas集合,并确定待生成数据血缘的目标数据节点,即定义要驱动生成的datas集合,并基于DAG中关于目标数据节点的数据生成路径,驱动一次DAG计算,得到目标数据节点的目标数据,进而生成目标数据节点的数据血缘,并且,数据血缘的生成过程面向数据data本身,因此该系统可以称为DDC:data driven computing。对应上述响应于接收到数据血缘生成请求,确定目标有向无环图中待生成数据血缘的目标数据节点;确定所述目标有向无环图中的目标路径;获取所述目标路径中的指定数据节点的赋值数据;根据所述赋值数据,按照所述目标路径执行数据生成过程,得到目标数据;根据所述目标数据、所述赋值数据以及所述目标路径,生成关于所述目标数据节点的数据血缘的步骤。
DDC系统支持从源节点的数据源头开始计算,也支持用户提供DAG中的中间数据节点的中间数据,从DAG的某一中间数据节点开始计算(对应上述指定数据节点还包括:所述目标路径中的中间节点),在计算过程中,可以使用cache能力,当满足某一任务节点的条件时,可以跳过执行该任务节点。对应上述检测所述历史数据签名中的输入签名与当前输入场景对应的签名是否匹配,以及该任务节点的上游数据节点的历史赋值数据与当前赋值的数据是否相同;若相同,则跳过执行该任务节点所表征的处理任务,并基于所述历史数据签名中的输出签名所表征的输出形参及其历史赋值数据,确定该任务节点的任务执行结果。
其中,本公开提供的DDC系统,可以实现如下功能:
基于用户定义的data和task,生成DAG,并刻画DAG中一数据节点的数据血缘;
在数据生成过程中,数据血缘生成请求明确待生成数据血缘的目标数据节点,并对DAG中的部分或全部数据节点赋值,DDC系统仅触发生成目标数据节点的数据时所需执行的task的执行,并完成目标数据节点的数据血缘的推导刻画;
在数据生成过程中,可以基于部分已知数据,从DAG的某一中间数据节点开始计算,而不必从DAG的数据节点的源节点开始计算;
数据血缘生成请求中携带有针对任务节点的cache数据(如该任务节点的历史执行结果、历史输入结果等等)及该任务节点的历史数据签名,在数据生产时,若利用cache数据和历史数据签名,以及当前数据签名和输入数据,判断得到当该任务节点的当前输入和执行场景与历史输入和执行场景相同时,可以复用cache数据(如直接将历史执行结果作为该任务的执行结果),并跳过task的执行。
本公开提供了一种面向数据的数据血缘生成方法,通过由data和task构成的DAG中,可以清晰的查询data的生成过程,利用图查询语言,可以实现便捷的查询。
在离线场景下,本方案设计了从DAG的某一个中间数据节点上开启计算的功能,对数据迭代是友好的,数据迭代时,可以为某个中间节点的data赋值,测试其他data对目标数据的影响。
离线计算往往涉及大量的计算,且成本高昂。本方案给出了一种通用的cache设计思路,可以跳过执行任务节点所表征的处理任务,大幅优化离线计算成本。
下面对本公开所涉及的DDC系统进行详细介绍。
1、data
data即数据节点,是DDC系统构图的基本单位,也是计算目标,data中的数据有如下4类:
SOURCE数据:源数据,该数据是DDC系统计算执行前用户供给的原始数据,不依赖其他任务。
NORMAL数据:普通数据,该数据依赖task而生产,即task所表征的处理任务执行完毕的输出结果的数据即普通数据。创建NORMAL数据时,可以指定task,并指定该NORMAL数据映射到task的哪个输出形参上,通过task所表征处理任务的执行,以及所指定的输出形参,该输出形参的实参可以作为NORMAL数据。
STATUS数据:状态数据,该数据是task内部strategy的运行结果。创建STATUS数据时,可以指定task,task所表征处理任务在执行时,task内部所配置的strategy的运行结果即STATUS数据。
ABSTRACT数据:抽象数据,该数据是一个抽象数据,可以定义其依赖的具体数据concrete datas,concrete data可以是任意类型的Data。ABSTRACT数据与concrete datas的数据类型保持一致。例如:抽象数据为title,该抽象数据所依赖的具体数据为title1、title2、title3……title100,抽象数据title在取值时,可以取值为title=title1、title=title2……或title=title100,具体数据中可以预先配置有优先级,抽象数据在取值时,可以按照优具体数据的优先级进行取值,若高优先级的具体数据不存在具体的值,则可以取下一优先级的具体数据的具体的值,作为抽象数据的取值,例如:具体数据按照优先级由高到低依次为title1、title2、title3、title4,而title1不存在具体的值,title2存在具体的值,则抽象数据title=title2具体的值。另外,抽象数据可以与其所依赖的具体数据预先构建有映射关系,或者,DAG中针对抽象数据的数据节点,其连接的上游节点为该抽象数据所依赖的具体数据的数据节点,也就是,DAG中,数据节点和数据节点也可以通过引用关系的边相连接,而数据节点和任务节点通过其依赖关系的边相连接。
另外,可以为data添加多个Watch Data Value规则,即上述的第一观察条件,当所有Watch Data Value规则都满足时,才会触发data的赋值行为。但不影响该data所影响的task的执行行为,示例性的,可以按照该data的形参,执行该data所影响的task。
2、strategy
strategy是DDC系统中策略算子的抽象接口,task执行时可以调用strategy的process方法,strategy还可以理解为task的执行逻辑。其中,一个DDC创建出的任一有向无环图都可以复用相同配置的strategy。DDC系统还支持用户自定义新的strategy。当然,同一strategy可以应用于不同的task,此时,在不同task中,同一strategy的配置内容可以不相同。
在自定义新增strategy时,strategy只能get输入形参的值,也只能set输出形参的值,在task运行时,可以把关于输入形参的数据节点实际的值,即实参,传递给输入形参,并把输出形参的实参传递给其绑定的数据节点,实现对task输入形参和输出形参的赋值。
形参具体定义有3类:
required input parameter,即必选输入形参,DAG执行时,若必选输入形参所绑定的实参不存在,那么该必选输入形参所影响的task不会被DDC系统调度执行。
optional input parameter,即可选输入形参,该可选输入形参所影响的task的执行不要求可选输入形参绑定的实参必须存在,可选输入形参不存在其对应的实参时,该可选输入形参所影响的task可正常执行。
output parameter,即输出形参,在strategy中不要求必须对输出形参赋值。当strategy返回SUCC时,即strategy执行成功时,才会实现对输出形参的赋值,即输出形参的实参值才会传播到该输出形参所对应的数据节点。
strategy的返回状态(即执行状态)有2种:
SUCC,代表算子执行成功,此时可以利用输出实参对输出形参赋值,以保证strategy输出内容的一致性。
FAIL,代表算子执行失败,算子执行失败,不会直接影响下游task的执行,下游task可根据该task的Watch Data Value规则和必选输入形参是否有值,决定是否满足执行条件,进而是否执行该task。
3、task
task即过程节点(对应上述的任务节点),是DCC系统构图的基本单位。task的构成如下:
strategy,该task的执行主体
config,strategy的配置
data与strategy的输入形参的映射关系
cache factor,缓存签名因子,由多个{输入形参,签名算法}构成。DDC引擎根据cache factor实时计算每个task的当前的过程签名,即任务节点的签名,针对一task而言,若同用户提供的cache数据(如:task输入形参的实参值)以及过程签名,与历史的cache数据以及过程签名一致,则该task可以跳过执行,可以将该task的历史执行结果作为当前的执行结果。
strategy与task之间的关系如图2所示,可见,task中配置有各个输入形参data1……dataX,输出形参dataY……dataZ,以及Strategy,strategy有3类接口,strategy应用到task时,可以为对应的接口设置连接关系。其中,3类接口可以包括:输出形参的连接接口,配置接口以及返回值的连接接口。输出形参与该task下游的data连接。配置接口在task定义时,可以提供配置内容连接。返回值,与STATUS数据(即图中datas)连接。
创建DAG时,每创建一个task,该task就是一个唯一的task(由于strategy的唯一性,同一strategy在同一时间可被一个task所利用,因此,所创建的task所配置的strategy不同,每一task具有唯一性)。task的执行条件如下:
必选输入形参对应的实参存在具体数值;
task配置的所有Watch Data Value规则全部满足;
task如果开启了cache功能,但是用户没有提供足够的cache数据(例如:仅仅提供了task的历史执行结果,此时无法跳过执行该task,可以执行该task)。
DCC系统可以记录各task的执行状态,其中task的执行状态可以包括:
OS_STARTED,task完成启动,仍在执行中,尚未返回的状态。
OS_NOT_TRIGGERED,当前请求要求驱动计算的datas集合,即目标数据节点的数据,根据路径推导不需要触发该task节点的执行;
OS_WATCH_MISS,当前task相关的Watch Data Value规则不满足,该tsak不触发执行;
OS_NOT_SATISFIED,当前task相关的strategy的必选输入形参绑定的data不存在,即必选输入形参的实参不存在具体数值,该task不触发执行;
OS_CACHE,当前task执行了cache逻辑,即该tsak被跳过执行,底层strategy的process方法没有执行,但该task的输出形参都正确赋值,依赖该task的status数据也被赋值为SUCC。此时strategy并未执行,所以在dot文件中看到的关于strategy的status数据为UNKNOWN,UNKNOWN表征该strategy未执行。
OS_DONE,task成功触发并执行完成,此时strategy的status数据可能为SUCC或FAIL。
需要说明的是,用户可以通过init接口和process接口实现自定义strategy。其中,init接口可以接收一个配置内容作为输入,并初始化strategy的属性,决定process方法。
在同一个DDC系统创建的所有有向无环图中,当strategy应用到多个tasks时的配置内容一致,则可以复用同一个strategy实例。
4、DDC graph
DDC graph ddc graph是一个有向无环图,由节点node和边edge组成。
在DDC系统中,有向无环图DAG的节点node有两类,即上述的data与task:
data node(简称为data):数据节点。
task node(简称为task):任务节点,代表一个计算过程。task的内核是strategy,当task的执行条件满足时会执行strategy的process方法,完成计算逻辑。strategy可以输出返回值、设置输出形参等等。
节点node之间通过边连接,边edge有以下几种类型:
REQUIRED_IN_PARAM:data node指向task node,数据绑定到task node上strategy的一个必选输入形参,必选输入形参关联的数据存在,即必选输入形参的实参存在具体的值,是task node运行strategy的必要条件。
OPTIONAL_IN_PARAM:data node指向task node,数据绑定到task node上strategy的一个可选输入形参上。可选输入形参关联的数据是否存在,不影响task node运行strategy。
OUT_PARAM:task node指向data node,将task node的strategy的输出形参绑定到一个数据节点data node上。
DATA_WATCH_DATA:data node(watched data)指向data node(watch data),后者是观察者,前者是被观察对象。当watched data满足某种条件时,才会实现watch data的赋值操作。
TASK_WATCH_DATA:data node(watched data)指向task node(watch task),当watched data满足某种条件时,才会执行task node的处理任务。
ABSTRACT_DATA:data node(concrete data)指向data node(abstract data),abstract data的取值来自于concrete data,可以有多个concrete data,按照配置顺序或优先级选择有值的concrete data作为abstract data的取值。
DDC graph提供了如下构图相关接口,用户通过如下接口构建有向无环图,也可以实现二次开发,新增strategy,并实现基于配置构图:
gen_normal_data注册普通数据的接口;
gen_source_data注册源数据的接口;
gen_status_data注册状态数据的接口;
gen_abstract_data注册抽象数据的接口;
gen_task注册一个task的接口;
clear清理当前构图内容的接口;
delete_data删除一个已经注册的数据的接口。删除行为可能导致一个联通图变成非连通图,不会删除data的上游、下游内容。
delete_task删除一个已经注册的task的接口。删除行为可能导致一个联通图变成非联通图,不会删除task的上游、下游内容。
DDC graph提供图操作相关接口如下:
reload,将当前的构图内容进行加载,但不启动执行。在reload成功后,还会生成一个跟构图一致的图签名graph_sign,图签名可以表征图的版本。构图顺序不同,但是图拓扑含义一致,则图签名graph_sign一致。例如:当前页面中可以显示有目标有向无环图,若需对目标有向无环图进行更新,可以在后台对目标有向无环图进行更新操作,此时页面中还是显示的目标有向无环图,后台可以对该目标有向无环图进行更新,得到当前更新得到的目标有向无环图及其图签名graph_sign,但是当前更新得到的目标有向无环图并未被加载和显示,这就是reload。
migrate,切换运行加载好的图,例如:通过migrate将reload完毕的图切换加载并显示。
stop,停止当前运行的图,例如:不显示当前运行的有向无环图。
export,将当前的构图内容输出到文件中,下次可以让DDC系统从文件中import一个图。
import,从一个文件中读入图结构,然后调用reload与migrate,即可运行一个图。
DDC graph还提供了一些方便查看构图内容和执行结果的方法:
render(),渲染输出reload成功的图;通过参数可以控制是输出当前正在运行的图,还是reload过但还未migrate的图,可以理解为尚未发布的图。渲染输出reload成功的图如图3所示,可见,title和a数据节点即上述的指定数据节点,tid_1即title节点下游连接的任务节点,TextSize(text:title)即将tid_1的输入形参text赋值为title,并执行TextSize,经计算count后可以将tid_1下游的数据节点赋值为title_size,此时a以及title_size作为tid_2上游连接的数据节点,Add(num1:a,num2:title_size)即将输入形参num1赋值为a,将输入形参num2赋值为title_size,并执行Add过程,得到总和sum后,tid_2下游相连接的数据节点存在其观察条件equal(four),当满足该观察条件时,可以将tid_2下游相连接的数据节点赋值为sum的结果title_size+a,该有向无环图的图签名为ddc_graph_sign[7033080076767472568]Board[],其中Board代表数据血缘生成请求,Board[]可以表征无请求,即该有向无环图为reload过但还未migrate的图,当Board[]中存在具体请求时,该有向无环图可以为migrate的图。TextSize和Add分别为tid_1和tid_2的strategy。
其中,title和a分别为上述的指定数据节点,a为上述的中间节点,title为上述的起始节点;title_size为上述除所述指定数据节点和目标数据节点以外的其他数据节点;title_size+a的数据节点为上述的目标数据节点;该有向无环图所包含的数据生成路径即目标路径,该有向无环图即上述的目标子图;equal(four)为针对title_size+a的数据节点的第一观察条件,title为针对title_size+a的数据节点的第一指定节点,图中虚线表征该第一观察条件。
rill_info(),查看仅由task构成的DAG图;针对图3而言,仅由task构成的DAG图如图4所示,0-TextSize(text:title):itemwise表征第0个task,其strategy为TextSize,其输入形参为text该形参可以赋值为title,1-Add(num1:a,num2:title_size):itemwise表征第1个task,其strategy为Add,其输入形参为num1和num2,可以分别赋值为a以及title_size。该仅由task构成的DAG图的签名可以为JobRill DAG(machine generated)。
render(const Board&)渲染一个请求board的执行结果,输出graphviz格式的图,即输出目标数据节点的数据血缘的血缘关系图。可以将输出的内容使用graphviz软件进行渲染查看。针对图3而言,所渲染的针对请求Board[readme_demo]的执行结果如图5所示:
可见,指定数据节点title以及a分别被赋值为four以及3,tid_1和tid_2执行状态均为OS_DONE,且各自的strategy的结果均为SUCC,针对目标数据节点title_size+a而言,其第一指定节点title满足第一观察条件equal(four),即title被赋值为four,此时可以对目标数据节点title_size+a赋值为7。其中,针对任一数据节点而言,数据节点具有其对应的数据签名,如:针对指定数据节点title以及a而言,其数据签名为ps:0:0,针对除所述指定数据节点和目标数据节点以外的其他数据节点title_size以及目标数据节点而言,其数据签名分别为:ps:0:15020800以及ps:0:f8d65d77。此时,该目标子图的签名为:ddc_graph_sign[7033080076767472568]Board[readme_demo]。
本公开所渲染的目标有向无环图如图7所示,为方便理解,下面说明DDC graph的渲染规则:
data node格式规则:
data node用圆表示,第一行代表data名称,第二行是运行时的调试字符串debugstring,即具体赋值,当然,若数据为图片,还可以为图片名称等等,第三行是该data node的数据签名。
Source数据用双圆节点表示。
用户在board中提供值的data(锚数据anchor data)用fullfilled表示(图中是浅灰色)。
在DDC中产出的data(包括cache内容赋值给data)用绿色圆表示(即图中灰色椭圆);如果产出失败,用红色圆表示(如图7中的p1节点)。
如果data是DDC系统驱动计算的原始目标,加粗格式圆表示。
如果data node有值,会输出其debug string
如果data内容可以被cache以避免下次相关的task(如该data node上游相连接的task)执行,会输出非0的process sign,即ps,process sign格式为十六进制的"input_sign:output_sign",如:ps:332335edb:40021412。其中input_sign即上述的输入签名,可以表征生成该数据时的场景,output_sign即上述的输出签名,用来辅助判断哪些输出形参在input_sign场景下可以计算出具体数值。
另外,图中白色的数据节点为未触发赋值的数据节点。
task格式规则:
task用矩形表示,第一行代表任务名称task id,第二行是所配置的strategy的可读化标签label,第三行是task运行状态,第四行是strategy返回值,若存在第五行,第五行可以为该task的执行时间。
DDC中触发执行的task用绿色表示(触发执行的task图中用灰色表示,未触发执行的task图中用白色表示)。
data与data间的关系:
data watch data,用蓝色箭头表示,并在边上输出简要的Watch Data Value规则信息(即图中虚线);
Abstract Data依赖一个或者多个Concrete Datas,用扁平箭头表示;
task与data间的关系:
data作为task的必选输入形参的实参,用实心线与箭头表示;
data作为task的可选输入形参的实参,用虚线与箭头表示;
data作为task的输出形参对应的实参,用实心线与箭头表示,并在边上指明形参名称。
status data通过圆点箭头表示,从task指向status data;
task watch data,用蓝色箭头表示,并在边上输出简要的Watch Data Value规则信息(即图中虚线)。
需要说明的是,图7仅为示例性对本公开提供的目标有向无环图进行介绍,并不应构成对本公开的限定。
5、Watch Data Value规则
data是否赋值,通过配置Watch Data Value规则来决定,即任一数据节点可以配置有第一指定节点的第一观察条件。
假设Data D是由Task S生产出来的,如果用户希望Data D是否进行赋值,依赖某个其他Data的取值,那么可以采用Watch Data Value规则。例如:图5中的title_size+a数据节点是否赋值,依赖于title数据节点是否被赋值为four。
可以为一个data配置多个Watch Data Value规则,当同时满足时,才会为该data赋值。在为一个data配置Watch Data Value规则时,不能对同一个watched data配置多个规则。
task是否执行,通过配置Watch Data Value规则来决定,即任一任务节点可以配置有第二指定节点的第二观察条件。
如果想避免task的执行,可以为task配置Watch Data Value规则,当不满足WatchData Value规则时,task不执行。
如果task watch多个datas,即一个task针对多个数据节点均配置有Watch DataValue规则,多个datas均满足条件,该task满足Watch Data Value规则可被执行。一个task配置Watch Data Value规则时,不能对同一个watched data配置多个规则。
使用Task Watch Data Value规则,可以兼容实现传统面向过程编排的DAG,使得task合理被执行或不执行。
6、cache
当满足:输入不变,程序不变(即strategy不变),输出就不变时,可以使用cache能力,跳过task的执行。用户提前提供task输出实参的cache内容(cache内容中可以包括该task的输出实参的数值),在cache可以生效时,不执行task,直接用cache内容为task的输出实参赋值。其中,当该task的输入形参和对应的实参,以及该task的strategy不变时,即当前的是值与历史值相同,该task的输出也不变,此时可以利用该task的历史输出实参的值,为该task当前输出实参赋值,并跳过执行该task。
只有当strategy是cache-able的,task才能使用cache功能;cache-able代表task计算过程是否是稳定的,是否满足:输入不变,程序不变,输出就不变,这由配置strategy的用户决定的。其中,一些不满足cache-able条件的场景:
内部有随机因素,比如一个随机数产生算子;
内部会访问其他系统,其他系统有随机因素。
由一个cache-able的strategy构成的task,是否开启cache功能,需要task显式开启。这样可以支持同一个strategy在不同的task上,部分task开启cache,部分task不开启cache。另外,task通过add_cache_factor接口来为task添加一个或多个cache因子。cache因子代表task复用对哪些输入形参敏感。如果task enable_cache,但是没有调用add_cache_factor,则仅对算子名称+算子版本+配置敏感。其中,对某一输入形参敏感,即利用该输入形参计算cache因子,也就是,利用所敏感的内容,计算cache因子。
当task调用add_cache_factor方法添加cache因子时,会默认开启cache功能。
使用cache功能的步骤如下:
task依赖的strategy是cache-able的,依赖strategy的代码实现cache定义。
构建有向无环图时,需要显式开启task的cache功能,并按需添加cache因子。同一个strategy在不同的task上应用时,可以设置不同的cache因子。cache因子在后续进行详细介绍。
获取历史数据,获取cache value以及input_sign,input_sign在后续详细介绍。也就是获取该task的历史cache数据(如:输入实参的值、输出实参的值等等),以及历史input_sign,当然还可以获取历史的output_sign。
请求时的调用Board的cache_set接口设置部分datas的cache value和processsign;也就是,后续可以通过发起请求的方式实现数据血缘的生成,而发起请求之前,可以先设置发起请求的接口,并设置所获取的历史的cache value和process sign,所发起的请求中可以包含有历史的cache value和process sign。
发起请求;即利用上述获取的内容,发起数据血缘生成请求,根据该请求,后续可以实现该task的跳过执行,即通过上述步骤可以实现cache功能,并将历史该task的输出实参的值,作为该task当前的输出实参的值。
过程签名
process sign代表过程签名,即上述的数据节点的数据签名,由input_sign和output_sign构成,input_sign代表task执行的上下文状态,即task的执行场景,input_sign仅跟如下值(即缓存签名因子)有关系:
strategy算子名称
strategy实现版本
strategy的配置内容
task的cache因子。指定的输入形参的具体取值,以及取值计算checksum的方法。
input_sign取值的特殊情况:
在生成task时,如果没有映射strategy的可选输入形参,该形参不会影响input_sign,对应形参的cache因子设置为无效。
在生成task时,映射了strategy的可选输入形参,但是执行时对应的实参的值不存在,等价于未设置该可选形参的cache因子。
只有strategy是cache-able的,且task同时也开启cache功能时,才会计算process sign。
除了记录task执行状态上下文的签名,也可以记录在该状态下strategy能够产出哪些输出形参的值,用output_sign表征。
有些strategy在某个状态上下文下,仅部分输出形参有值。如果驱动计算的data来自于无值的输出形参,理论上是可以复用cache的,即:上次无法计算,这次也无法计算。
因此,可以通过output_sign辅助判断一个给定的形参是否能够在这个过程签名下产生值。
实现上,采用bloomfilter的思路,针对当前过程签名下能计算出来形参计算多个hash index,对应的bits位置1。在判断输出形参能否计算出来时,仅当所有的bits位全为1,所有的形参均可以计算出来(也就是,利用输入形参的取值,通过哈希的方式,计算出那些输出形参可以被计算出具体数值,当所有的bits为1时,所有的输出形参均可被计算出具体数值):
当返回值能够计算出来,由于多个形参之间存在hash冲突,可能实际无法计算出来。如果没有提供对应形参的相关的cache内容(即未提供针对该形参相关的各历史数据,如:历史赋值、历史数据签名等等),那么需要重新执行一遍strategy。但是cache功能,再执行一遍,是可以接受的。
当返回值不能计算出来,形参就一定不能计算出具体数值。如果驱动计算当前形参的相关data,且未提供cache内容,因为判断当前形参依然不会产生有效值,所以当前形参无相关cache内容不是strategy必须执行的必要条件,仍然有机会使用cache功能。
cache因子
cache因子可以理解为上述的cache factor,缓存签名因子,由多个{输入形参,签名算法}构成,具体可以为:{输入形参名称、checksum计算方法},DDC使用所有cache因子的checksum方法计算实参的checksum值,即签名,然后算出input_sign,如果input_sign与用户提供的cache内容的input_sign一致,就可以采用cache内容。即利用签名的计算方法,计算任一task当前的签名,若当前task的input_sign与历史的input_sign一致,且输入形参一致,则可以使用cache功能,跳过执行该task。
checksum计算方法的定义,依赖形参的数据类型。在DDC系统中,数据类型支持用户扩展定义。
cache miss与cache hit的影响
当一个task使用cache功能,且用户在请求Board中提供了至少一个有效cache值(并且,用户提供的历史input_sign与当前的input_sign一致,且历史输入形参与当前输入形参一致),则task cache hit,task会跳过执行。因为只要能提供有效cache值,说明当前input_sign条件下,strategy曾经返回了SUCC。此时该task的返回状态是OS_CACHE。如果DAG拓扑中有一个Status数据依赖一个task的返回值,那么不需要明确设置该Status数据的cache内容,DDC系统默认用SUCC传播给Status数据。但是如果一个strategy没有输出形参,用户想使用cache功能,那么至少需要提供Status Data的历史cache内容(即该task的历史输入形参和输出形参),以及当时的input sign。DDC系统可以用input_sign来推断当前执行环境与历史是否一致。
如果一个task的某个输出形参被映射到多个实参数据节点上,设置任意一个实参数据节点的cache值,即可将该cache值传播给该输出形参对应的所有输出实参,即将该task的输出形参传播给多个实参的数据节点。
如果驱动计算的数据节点的数据对应的输出形参在当前input_sign下可以产出值,但是用户没有提供对应的cache值,那么会导致task cache miss,需要重新触发该数据节点上游task的strategy的process方法执行。
7、从DAG切面开始执行数据生成过程
用户可以设置Source数据的初始值,然后定义目标数据节点,驱动目标数据节点的数据的生产。也可以设置Status数据、Abstract数据以及Normal数据,从一个DAG切面开始计算,即从该DAG的中间过程开始计算,而不必从该DAG的源数据节点开始计算。
DDC系统在驱动计算目标数据节点时,会从目标数据节点出发,逆向深度优先遍历,遍历到一个已经存在数据的数据节点就停止,即不再执行已经存在的数据的数据节点的上游内容。把上述功能简称为:从数据锚点开始执行。
从DAG切面开始执行数据生成过程如图6所示,用户为6个data提供了原始值:a、b、c、d、ab、cd,驱动计算数据节点abcd和数据节点ab-status。
图6灰色椭圆表示的数据都是在DDC系统的计算过程中产生的,浅灰色圆是用户初始赋值的数据、双圆是源数据。有2个task,task id分别为tid_1与tid_2,它们都采用了Addstrategy,该strategy实现一个加法操作。
用户显式为cd赋值,所以生成cd的task tid_2没有被调度。用户显式赋值ab为10,但是task tid_1由于数据节点ab-status的驱动,依然被调度。但是ab的值并未被改写,执行完task后为依然用户所赋值的内容:10。最终abcd的值为110。
当用户为非SOURCE数据赋值,可以从DAG切面开始计算,即从DAG的中间开始计算,此时有几个特殊设计考虑:
非SOURCE数据的生产任务以及其上游任务不会被DDC系统触发,除非有其他数据驱动。当有其他数据驱动这些task执行时,依然不会覆盖用户为这些SOURCE数据的初始赋值。也就是,尊重用户的显式设置,即若存在用户对数据节点赋值,无论该数据节点的上游生产任务是否执行,均以用户赋值为准。
该数据节点如果配置有Watch Data Value规则,那么对应的watched data默认不会触发生产,除非有其他数据驱动。当有其他数据驱动watched data生产,不再影响用户为非SOURCE数据的赋值。也就是,数据赋值行为已经发生是客观事实。
本公开提供了一种面向数据的数据血缘生成方法,通过由data和task构成的DAG中,可以清晰的查询data的生成过程,利用图查询语言,可以实现便捷的查询。
在离线场景下,本方案设计了从DAG的某一个中间数据节点上开启计算的功能,对数据迭代是友好的,数据迭代时,可以为某个中间节点的data赋值,测试其他data对目标数据的影响。
离线计算往往涉及大量的计算,且成本高昂。本方案给出了一种通用的cache设计思路,可以跳过执行任务节点所表征的处理任务,大幅优化离线计算成本。
基于上述方法实施例,本公开还提供了一种数据血缘生成装置,如图8所示,包括:
第一确定模块810,用于响应于接收到数据血缘生成请求,确定目标有向无环图中待生成数据血缘的目标数据节点;其中,所述目标有向无环图中包括数据节点和任务节点,每一任务节点所连接的节点为数据节点,且任一数据节点和任一任务节点之间的边表示该数据节点表征的数据与该任务节点表征的处理任务的依赖关系;
第二确定模块820,用于确定所述目标有向无环图中的目标路径;其中,所述目标路径为在生成所述目标数据节点的数据时所需利用的、包含有数据节点和任务节点的数据生成路径;
获取模块830,用于获取所述目标路径中的指定数据节点的赋值数据;
执行模块840,用于根据所述赋值数据,按照所述目标路径执行数据生成过程,得到目标数据;
生成模块850,用于根据所述目标数据、所述赋值数据以及所述目标路径,生成关于所述目标数据节点的数据血缘。
本方案中,预先构建有目标有向无环图,目标有向无环图中包括数据节点和任务节点,每一任务节点所连接的节点为数据节点,且任一数据节点和任一任务节点之间的边表示该数据节点表征的数据与该任务节点表征的处理任务的依赖关系,从而本公开可以根据目标有向无环图生成数据节点的数据血缘;具体的,可以响应于接收到数据血缘生成请求,确定目标有向无环图中待生成数据血缘的目标数据节点,并确定在生成目标数据节点的数据时所需利用的、包含有数据节点和任务节点的数据生成路径,即目标路径;进而,可以获取目标路径中所需赋值的指定数据节点的赋值数据,并根据赋值数据,按照目标路径执行数据生成过程,得到目标数据。此时,目标路径可以表征生成目标数据节点的数据时的任务节点和数据节点的生产关系,目标数据以及赋值数据可以为具体的数值或参数,可以根据目标数据、赋值数据以及目标路径,生成目标数据节点的数据血缘。可见,本公开提供的数据血缘生成装置,所生成的数据血缘中包含有针对目标数据节点的数据以及该数据生成过程中所利用的、具体的各数据,还包含有目标数据节点的数据生成时针对数据节点和任务节点的生产关系,通过本方案可以生成更细粒度的数据血缘。
可选地,所述生成模块,包括:
第一确定子模块,用于确定所述目标有向无环图中的、表征所述目标路径的子图,得到目标子图;
赋值子模块,用于至少基于所述赋值数据对所述目标子图中的所述指定数据节点进行赋值,以及基于所述目标数据对所述目标子图中的目标数据节点进行赋值,得到表征所述目标数据节点的数据血缘的血缘关系图。
可选地,所述生成模块,还包括:
第二确定子模块,用于确定在所述目标数据生成过程中所利用的、除所述指定数据节点和目标数据节点以外的其他数据节点所赋值的数据;
所述赋值子模块,具体用于:
基于所述赋值数据对所述目标子图中的所述指定数据节点进行赋值,基于所述目标数据对所述目标子图中的目标数据节点进行赋值,以及基于所确定的数据对所述其他数据节点进行赋值,得到表征所述目标数据节点的数据血缘的血缘关系图。
可选地,所述指定数据节点包括所述目标路径中的起始节点;
所述执行模块,具体用于:
将所述目标路径中的起始节点赋值为所述赋值数据,并基于赋值后的所述起始节点,按照所述目标路径中的节点顺序,触发所述目标路径中的任务节点所表征的处理任务的执行或触发所述目标路径中的数据节点的赋值,以进行数据生成处理,得到目标数据;
其中,任一处理任务在执行时所使用的数据包括:所连接的上游的数据节点赋值所得的数据,任一数据节点在赋值时所利用的数据包括:所连接的上游的任务节点的任务执行结果或所连接的上游的数据节点赋值所得的数据。
可选地,所述指定数据节点还包括:所述目标路径中的中间节点;
所述目标路径中的中间节点,在赋值时所利用的数据为:获取得到的所述中间节点的赋值数据。
可选地,所述目标路径中的起始节点为所述目标有向无环图中的源节点或者所述源节点以外的数据节点;
其中,所述源节点为不存在上游的节点的数据节点。
可选地,还包括:
第一检测模块,用于在进行数据生成处理的过程中,针对任一数据节点,响应于检测到针对该数据节点设置有关于第一指定节点的第一观察条件,则在所述第一指定节点满足第一观察条件时,触发该数据节点的赋值;其中,所述第一指定节点包括:该数据节点所连接的上游的数据节点或任务节点;
和/或,
第二检测模块,用于针对任一任务节点,响应于检测到针对该任务节点设置有关于第二指定节点的第二观察条件,则在所述第二指定节点满足第二观察条件时,触发该任务节点所表征的处理任务的执行;其中,第二指定节点包括:该任务节点所连接的上游的数据节点或任务节点。
可选地,还包括跳过执行模块,用于:
在数据生成处理的过程中,针对任一任务节点,响应于检测到针对该任务节点具有包含输入签名和输出签名的历史数据签名,则检测所述历史数据签名中的输入签名与当前输入场景对应的签名是否匹配,以及该任务节点的上游数据节点的历史赋值数据与当前赋值的数据是否相同;
若相同,则跳过执行该任务节点所表征的处理任务,并基于所述历史数据签名中的输出签名所表征的输出形参及其历史赋值数据,确定该任务节点的任务执行结果;
若不同,则执行该任务节点所表征的处理任务;
其中,所述输入签名用于表征历史输入场景对应的签名,所述输出签名用于表征在所述历史输入场景下该任务节点的输出形参。
可选地,还包括输出模块,用于:
响应于检测到所述目标有向无环图的更新指令,对所述目标有向无环图进行更新,并基于当前更新得到的目标有向无环图的拓扑结构,生成当前更新得到的目标有向无环图的图签名;其中,目标有向无环图的拓扑结构,包括:所述目标有向无环图中数据节点的排序、任务节点的排序、任一数据节点和任一任务节点之间的边的排序、任务节点所配置的执行策略、针对任务节点所设置的观察条件和/或针对数据节点设置的观察条件;
响应于检测到针对目标有向无环图的输出指令,则输出当前更新得到的目标有向无环图以及当前更新得到的目标有向无环图的图签名。
可选地,所述目标有向无环图的构建方式包括:
获取基于配置界面所输入的关于数据节点和任务节点的配置信息;其中,所述配置信息中包括:待构建的各个数据节点所表征的数据的形参、待构建的各个任务节点所表征处理任务的执行策略,以及各个数据节点与任务节点的依赖关系;
基于所述配置信息中的形参以及执行策略,调用数据节点生成接口和任务节点生成接口,分别生成数据节点和任务节点,并针对任一数据节点和任一任务节点,根据所述配置信息中的依赖关系,生成连接该数据节点和该任务节点的边,以得到所述目标有向无环图。
根据本公开的实施例,本公开还提供了一种电子设备、一种可读存储介质和一种计算机程序产品。
本公开提供了一种电子设备,包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行任一所述的数据血缘生成方法。
本公开提供了一种存储有计算机指令的非瞬时计算机可读存储介质,其中,所述计算机指令用于使所述计算机执行任一所述的数据血缘生成方法。
本公开提供了一种计算机程序产品,包括计算机程序,所述计算机程序在被处理器执行时实现任一所述的数据血缘生成方法。
图9示出了可以用来实施本公开的实施例的示例电子设备900的示意性框图。电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本公开的实现。
如图9所示,设备900包括计算单元901,其可以根据存储在只读存储器(ROM)902中的计算机程序或者从存储单元908加载到随机访问存储器(RAM)903中的计算机程序,来执行各种适当的动作和处理。在RAM 903中,还可存储设备900操作所需的各种程序和数据。计算单元901、ROM 902以及RAM 903通过总线904彼此相连。输入/输出(I/O)接口905也连接至总线904。
设备900中的多个部件连接至I/O接口905,包括:输入单元906,例如键盘、鼠标等;输出单元907,例如各种类型的显示器、扬声器等;存储单元908,例如磁盘、光盘等;以及通信单元909,例如网卡、调制解调器、无线通信收发机等。通信单元909允许设备900通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
计算单元901可以是各种具有处理和计算能力的通用和/或专用处理组件。计算单元901的一些示例包括但不限于中央处理单元(CPU)、图形处理单元(GPU)、各种专用的人工智能(AI)计算芯片、各种运行机器学习模型算法的计算单元、数字信号处理器(DSP)、以及任何适当的处理器、控制器、微控制器等。计算单元901执行上文所描述的各个方法和处理,例如数据血缘生成方法。例如,在一些实施例中,数据血缘生成方法可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元908。在一些实施例中,计算机程序的部分或者全部可以经由ROM 902和/或通信单元909而被载入和/或安装到设备900上。当计算机程序加载到RAM 903并由计算单元901执行时,可以执行上文描述的数据血缘生成方法的一个或多个步骤。备选地,在其他实施例中,计算单元901可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行数据血缘生成方法。
本文中以上描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、芯片上系统的系统(SOC)、复杂可编程逻辑设备(CPLD)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。
用于实施本公开的方法的程序代码可以采用一个或多个编程语言的任何组合来编写。这些程序代码可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器或控制器,使得程序代码当由处理器或控制器执行时使流程图和/或框图中所规定的功能/操作被实施。程序代码可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
为了提供与用户的交互,可以在计算机上实施此处描述的系统和技术,该计算机具有:用于向用户显示信息的显示装置(例如,CRT(阴极射线管)或者LCD(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给计算机。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。
可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(LAN)、广域网(WAN)和互联网。
计算机系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。服务器可以是云服务器,也可以为分布式系统的服务器,或者是结合了区块链的服务器。
应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本公开中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本公开公开的技术方案所期望的结果,本文在此不进行限制。
上述具体实施方式,并不构成对本公开保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本公开的精神和原则之内所作的修改、等同替换和改进等,均应包含在本公开保护范围之内。

Claims (23)

1.一种数据血缘生成方法,包括:
响应于接收到数据血缘生成请求,确定目标有向无环图中待生成数据血缘的目标数据节点;其中,所述目标有向无环图中包括数据节点和任务节点,每一任务节点所连接的节点为数据节点,且任一数据节点和任一任务节点之间的边表示该数据节点表征的数据与该任务节点表征的处理任务的依赖关系;
确定所述目标有向无环图中的目标路径;其中,所述目标路径为在生成所述目标数据节点的数据时所需利用的、包含有数据节点和任务节点的数据生成路径;
获取所述目标路径中的指定数据节点的赋值数据;
根据所述赋值数据,按照所述目标路径执行数据生成过程,得到目标数据;
根据所述目标数据、所述赋值数据以及所述目标路径,生成关于所述目标数据节点的数据血缘。
2.根据权利要求1所述的方法,其中,所述根据所述目标数据、所述赋值数据以及所述目标路径,生成关于所述目标数据节点的数据血缘,包括:
确定所述目标有向无环图中的、表征所述目标路径的子图,得到目标子图;
至少基于所述赋值数据对所述目标子图中的所述指定数据节点进行赋值,以及基于所述目标数据对所述目标子图中的目标数据节点进行赋值,得到表征所述目标数据节点的数据血缘的血缘关系图。
3.根据权利要求2所述的方法,所述方法还包括:
确定在所述目标数据生成过程中所利用的、除所述指定数据节点和目标数据节点以外的其他数据节点所赋值的数据;
所述至少基于所述赋值数据对所述目标子图中的所述指定数据节点进行赋值,以及基于所述目标数据对所述目标子图中的目标数据节点进行赋值,得到表征所述目标数据节点的数据血缘的血缘关系图,包括:
基于所述赋值数据对所述目标子图中的所述指定数据节点进行赋值,基于所述目标数据对所述目标子图中的目标数据节点进行赋值,以及基于所确定的数据对所述其他数据节点进行赋值,得到表征所述目标数据节点的数据血缘的血缘关系图。
4.根据权利要求1-3任一项所述的方法,其中,所述指定数据节点包括所述目标路径中的起始节点;
所述根据所述赋值数据,按照所述目标路径执行数据生成过程,得到目标数据,包括:
将所述目标路径中的起始节点赋值为所述赋值数据,并基于赋值后的所述起始节点,按照所述目标路径中的节点顺序,触发所述目标路径中的任务节点所表征的处理任务的执行或触发所述目标路径中的数据节点的赋值,以进行数据生成处理,得到目标数据;
其中,任一处理任务在执行时所使用的数据包括:所连接的上游的数据节点赋值所得的数据,任一数据节点在赋值时所利用的数据包括:所连接的上游的任务节点的任务执行结果或所连接的上游的数据节点赋值所得的数据。
5.根据权利要求4所述的方法,其中,所述指定数据节点还包括:所述目标路径中的中间节点;
所述目标路径中的中间节点,在赋值时所利用的数据为:获取得到的所述中间节点的赋值数据。
6.根据权利要求4所述的方法,其中,所述目标路径中的起始节点为所述目标有向无环图中的源节点或者所述源节点以外的数据节点;
其中,所述源节点为不存在上游的节点的数据节点。
7.根据权利要求4所述的方法,其中,还包括:
在进行数据生成处理的过程中,针对任一数据节点,响应于检测到针对该数据节点设置有关于第一指定节点的第一观察条件,则在所述第一指定节点满足第一观察条件时,触发该数据节点的赋值;其中,所述第一指定节点包括:该数据节点所连接的上游的数据节点或任务节点;
和/或,
针对任一任务节点,响应于检测到针对该任务节点设置有关于第二指定节点的第二观察条件,则在所述第二指定节点满足第二观察条件时,触发该任务节点所表征的处理任务的执行;其中,第二指定节点包括:该任务节点所连接的上游的数据节点或任务节点。
8.根据权利要求4所述的方法,还包括:
在数据生成处理的过程中,针对任一任务节点,响应于检测到针对该任务节点具有包含输入签名和输出签名的历史数据签名,则检测所述历史数据签名中的输入签名与当前输入场景对应的签名是否匹配,以及该任务节点的上游数据节点的历史赋值数据与当前赋值的数据是否相同;
若相同,则跳过执行该任务节点所表征的处理任务,并基于所述历史数据签名中的输出签名所表征的输出形参及其历史赋值数据,确定该任务节点的任务执行结果;
若不同,则执行该任务节点所表征的处理任务;
其中,所述输入签名用于表征历史输入场景对应的签名,所述输出签名用于表征在所述历史输入场景下该任务节点的输出形参。
9.根据权利要求1-3任一项所述的方法,还包括:
响应于检测到所述目标有向无环图的更新指令,对所述目标有向无环图进行更新,并基于当前更新得到的目标有向无环图的拓扑结构,生成当前更新得到的目标有向无环图的图签名;其中,目标有向无环图的拓扑结构,包括:所述目标有向无环图中数据节点的排序、任务节点的排序、任一数据节点和任一任务节点之间的边的排序、任务节点所配置的执行策略、针对任务节点所设置的观察条件和/或针对数据节点设置的观察条件;
响应于检测到针对目标有向无环图的输出指令,则输出当前更新得到的目标有向无环图以及当前更新得到的目标有向无环图的图签名。
10.根据权利要求1-3任一项所述的方法,其中,所述目标有向无环图的构建方式包括:
获取基于配置界面所输入的关于数据节点和任务节点的配置信息;其中,所述配置信息中包括:待构建的各个数据节点所表征的数据的形参、待构建的各个任务节点所表征处理任务的执行策略,以及各个数据节点与任务节点的依赖关系;
基于所述配置信息中的形参以及执行策略,调用数据节点生成接口和任务节点生成接口,分别生成数据节点和任务节点,并针对任一数据节点和任一任务节点,根据所述配置信息中的依赖关系,生成连接该数据节点和该任务节点的边,以得到所述目标有向无环图。
11.一种数据血缘生成装置,包括:
第一确定模块,用于响应于接收到数据血缘生成请求,确定目标有向无环图中待生成数据血缘的目标数据节点;其中,所述目标有向无环图中包括数据节点和任务节点,每一任务节点所连接的节点为数据节点,且任一数据节点和任一任务节点之间的边表示该数据节点表征的数据与该任务节点表征的处理任务的依赖关系;
第二确定模块,用于确定所述目标有向无环图中的目标路径;其中,所述目标路径为在生成所述目标数据节点的数据时所需利用的、包含有数据节点和任务节点的数据生成路径;
获取模块,用于获取所述目标路径中的指定数据节点的赋值数据;
执行模块,用于根据所述赋值数据,按照所述目标路径执行数据生成过程,得到目标数据;
生成模块,用于根据所述目标数据、所述赋值数据以及所述目标路径,生成关于所述目标数据节点的数据血缘。
12.根据权利要求11所述的装置,其中,所述生成模块,包括:
第一确定子模块,用于确定所述目标有向无环图中的、表征所述目标路径的子图,得到目标子图;
赋值子模块,用于至少基于所述赋值数据对所述目标子图中的所述指定数据节点进行赋值,以及基于所述目标数据对所述目标子图中的目标数据节点进行赋值,得到表征所述目标数据节点的数据血缘的血缘关系图。
13.根据权利要求12所述的装置,所述生成模块,还包括:
第二确定子模块,用于确定在所述目标数据生成过程中所利用的、除所述指定数据节点和目标数据节点以外的其他数据节点所赋值的数据;
所述赋值子模块,具体用于:
基于所述赋值数据对所述目标子图中的所述指定数据节点进行赋值,基于所述目标数据对所述目标子图中的目标数据节点进行赋值,以及基于所确定的数据对所述其他数据节点进行赋值,得到表征所述目标数据节点的数据血缘的血缘关系图。
14.根据权利要求11-13任一项所述的装置,其中,所述指定数据节点包括所述目标路径中的起始节点;
所述执行模块,具体用于:
将所述目标路径中的起始节点赋值为所述赋值数据,并基于赋值后的所述起始节点,按照所述目标路径中的节点顺序,触发所述目标路径中的任务节点所表征的处理任务的执行或触发所述目标路径中的数据节点的赋值,以进行数据生成处理,得到目标数据;
其中,任一处理任务在执行时所使用的数据包括:所连接的上游的数据节点赋值所得的数据,任一数据节点在赋值时所利用的数据包括:所连接的上游的任务节点的任务执行结果或所连接的上游的数据节点赋值所得的数据。
15.根据权利要求14所述的装置,其中,所述指定数据节点还包括:所述目标路径中的中间节点;
所述目标路径中的中间节点,在赋值时所利用的数据为:获取得到的所述中间节点的赋值数据。
16.根据权利要求14所述的装置,其中,所述目标路径中的起始节点为所述目标有向无环图中的源节点或者所述源节点以外的数据节点;
其中,所述源节点为不存在上游的节点的数据节点。
17.根据权利要求14所述的装置,其中,还包括:
第一检测模块,用于在进行数据生成处理的过程中,针对任一数据节点,响应于检测到针对该数据节点设置有关于第一指定节点的第一观察条件,则在所述第一指定节点满足第一观察条件时,触发该数据节点的赋值;其中,所述第一指定节点包括:该数据节点所连接的上游的数据节点或任务节点;
和/或,
第二检测模块,用于针对任一任务节点,响应于检测到针对该任务节点设置有关于第二指定节点的第二观察条件,则在所述第二指定节点满足第二观察条件时,触发该任务节点所表征的处理任务的执行;其中,第二指定节点包括:该任务节点所连接的上游的数据节点或任务节点。
18.根据权利要求14所述的装置,还包括跳过执行模块,用于:
在数据生成处理的过程中,针对任一任务节点,响应于检测到针对该任务节点具有包含输入签名和输出签名的历史数据签名,则检测所述历史数据签名中的输入签名与当前输入场景对应的签名是否匹配,以及该任务节点的上游数据节点的历史赋值数据与当前赋值的数据是否相同;
若相同,则跳过执行该任务节点所表征的处理任务,并基于所述历史数据签名中的输出签名所表征的输出形参及其历史赋值数据,确定该任务节点的任务执行结果;
若不同,则执行该任务节点所表征的处理任务;
其中,所述输入签名用于表征历史输入场景对应的签名,所述输出签名用于表征在所述历史输入场景下该任务节点的输出形参。
19.根据权利要求11-13任一项所述的装置,还包括:
输出模块,用于:响应于检测到所述目标有向无环图的更新指令,对所述目标有向无环图进行更新,并基于当前更新得到的目标有向无环图的拓扑结构,生成当前更新得到的目标有向无环图的图签名;其中,目标有向无环图的拓扑结构,包括:所述目标有向无环图中数据节点的排序、任务节点的排序、任一数据节点和任一任务节点之间的边的排序、任务节点所配置的执行策略、针对任务节点所设置的观察条件和/或针对数据节点设置的观察条件;
响应于检测到针对目标有向无环图的输出指令,则输出当前更新得到的目标有向无环图以及当前更新得到的目标有向无环图的图签名。
20.根据权利要求11-13任一项所述的装置,其中,所述目标有向无环图的构建方式包括:
获取基于配置界面所输入的关于数据节点和任务节点的配置信息;其中,所述配置信息中包括:待构建的各个数据节点所表征的数据的形参、待构建的各个任务节点所表征处理任务的执行策略,以及各个数据节点与任务节点的依赖关系;
基于所述配置信息中的形参以及执行策略,调用数据节点生成接口和任务节点生成接口,分别生成数据节点和任务节点,并针对任一数据节点和任一任务节点,根据所述配置信息中的依赖关系,生成连接该数据节点和该任务节点的边,以得到所述目标有向无环图。
21.一种电子设备,包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行权利要求1-10中任一项所述的方法。
22.一种存储有计算机指令的非瞬时计算机可读存储介质,其中,所述计算机指令用于使所述计算机执行根据权利要求1-10中任一项所述的方法。
23.一种计算机程序产品,包括计算机程序,所述计算机程序在被处理器执行时实现根据权利要求1-10中任一项所述的方法。
CN202311293781.3A 2023-10-08 2023-10-08 一种数据血缘生成方法、装置、电子设备及存储介质 Pending CN117370630A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311293781.3A CN117370630A (zh) 2023-10-08 2023-10-08 一种数据血缘生成方法、装置、电子设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311293781.3A CN117370630A (zh) 2023-10-08 2023-10-08 一种数据血缘生成方法、装置、电子设备及存储介质

Publications (1)

Publication Number Publication Date
CN117370630A true CN117370630A (zh) 2024-01-09

Family

ID=89401478

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311293781.3A Pending CN117370630A (zh) 2023-10-08 2023-10-08 一种数据血缘生成方法、装置、电子设备及存储介质

Country Status (1)

Country Link
CN (1) CN117370630A (zh)

Similar Documents

Publication Publication Date Title
US10866788B2 (en) System and method for automated generation of integration elements modeling process flow for an integration process with a swagger API
CN108304201B (zh) 对象更新方法、装置及设备
US10048946B2 (en) Converting visual diagrams into code
US11561772B2 (en) Low-code development platform
CN111639287A (zh) 一种页面处理方法、装置、终端设备及可读存储介质
US9471213B2 (en) Chaining applications
CN111104103B (zh) 一种软件编辑微服务的可视化方法及系统
EP2779582A2 (en) Automatic mobile application discovery and integration in a mobile telecommunication device
US20180267781A1 (en) Code generation for isomorphic data fetching
US20240160410A1 (en) Application Development Platform, Micro-program Generation Method, and Device and Storage Medium
CN109299913B (zh) 员工薪资方案生成方法及装置
CN110633959A (zh) 基于图结构的审批任务创建方法、装置、设备及介质
CN112015468A (zh) 一种接口文档处理方法、装置、电子设备以及存储介质
WO2021129812A1 (zh) 运行人工智能应用的方法、系统及设备
US10140120B2 (en) Context-specific view of a hierarchical data structure
CN113656533A (zh) 一种树形控件处理方法、装置及电子设备
CN117370630A (zh) 一种数据血缘生成方法、装置、电子设备及存储介质
CN116011955A (zh) 一种机器人流程自动化需求实现方法、装置、设备和存储介质
CN108960433B (zh) 用于运行机器学习建模过程的方法及系统
CN111858234A (zh) 一种任务执行方法、装置、设备、介质
CN113626062A (zh) 可信的应用集成
US20230230324A1 (en) Method, System, Equipment and Medium for Modifying the Layering Layer Information of Finite Element Model Unit
CN111124386A (zh) 基于Unity的动画事件处理方法、装置、设备和存储介质
CN114741072B (zh) 一种页面生成方法、装置、设备及存储介质
CN117608732A (zh) 一种Web类应用动态渲染装置、方法、设备及介质

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