基于数据与代码依赖生成DAG的过程名称及相关设计模式咨询
一、基于底层数据与代码依赖创建DAG的专有名称
这个过程通常被称为依赖推导式DAG构建(Dependency-Inferred DAG Construction),也可更具体地称为数据依赖驱动的DAG合成(Data Dependency-Driven DAG Synthesis)。它的核心逻辑与预设DAG的正向定义相反——从程序实际依赖的底层资源(数据集、工件、代码调用关系)出发,自动解析阶段间的依赖边,最终生成可执行的工作流DAG。
二、生成特定阶段DAG的设计模式
针对你的分阶段迭代monorepo场景,以下几种设计模式可直接落地:
工件元数据声明模式
要求每个数据处理阶段显式声明自身的输入/输出工件信息,可通过代码注解、独立配置文件(如stage-deps.yaml)实现。例如:# stage-process-user.yaml stage_id: process_user inputs: - dataset: raw_user_logs version: v2 - config: user_process_rules.json outputs: - dataset: processed_user_features version: v1调度工具扫描所有阶段的声明文件,通过匹配输入输出的工件ID与版本,自动构建阶段间的依赖链路,生成对应DAG。
依赖契约模式
定义统一的依赖契约规范,每个阶段必须输出一份包含自身依赖与产出的契约文件。例如,阶段执行后生成dependency-manifest.json,记录它依赖的上游阶段产出的工件哈希、环境变量键值对。调度系统通过比对契约中的工件标识,自动建立阶段间的依赖关系——只要B阶段的依赖清单包含A阶段的产出标识,就将A设为B的上游节点。动态依赖解析模式
通过工具拦截程序的资源访问行为(如文件读取、数据库查询),动态捕获实际依赖。例如,在容器化环境中,用文件系统监控工具记录阶段程序读取的数据集路径,反向查找生产该路径数据的上游阶段;或通过代码静态分析,扫描程序中引用的环境变量、配置文件,自动关联到负责生成这些资源的阶段,实时构建当前状态下的DAG。阶段状态感知模式
每个阶段维护自身的状态元数据(如当前处理的数据集版本、环境变量快照),调度系统根据状态变化自动更新DAG。例如,当某个上游阶段更新了输出数据集的版本,系统自动识别所有依赖该版本的下游阶段,重新生成包含该版本依赖的DAG分支,确保调度的是符合当前状态的阶段链路。
内容的提问来源于stack exchange,提问作者guest

