设计任务调度依赖配置表
2023-09-14 09:13:14 时间
设计任务调度依赖配置表
1.问题场景
在任务调度系统中,每个任务既有上游,也有下游。如何设计底层存储的表结构支撑这种存储。
2.解决方法
使用mysql等关系型数据库。
- 方案A : 将 上下游依赖关系作为任务的属性存储起来。 即:任务id(主键)、任务名称、任务的上游id list、任务的下游id list。
特点: 这是最容易想到的方案。 但直观上可以感受到这不是很佳的方案,而且也显然不满足3NF的设计原理。 - 方案B:只存储任务的上游依赖。即任务id(主键)、任务名称、任务的上游id list。
- 方案C:将任务之间的依赖关系单独作为一个记录表保存。依赖关系记录表的表结构:自增主键id、上游任务id、下游任务id。同时将第二列、第三列都增加索引。
3.推荐设计C.
优点: 因为依赖关系是相对的,如果A和B有依赖关系,显然上游任务id就是A,下游任务id就是B。作为一条记录 insert 记录表。
- 如何查询A的所有下游?
SQL:
select 下游任务id from 表 where 上游任务id=’A’。如果记录条数为0,则说明A无下游。 - 如何查询A的所有上游?
SQL:
select 上游任务id from 表 where下游任务id=’A’。而且不存在冗余。对于任何一个依赖关系,只有一条记录。
相关文章
- 02·灵魂前端工程师养成-安装配置Node.js
- Mac 上的开发配置总结
- maven repositories配置_maven排除依赖
- pycharm pyqt5图形界面UI配置[通俗易懂]
- 【MySQL入门篇】2.MySQL的下载、安装、配置
- SQL Server配置链接服务器
- eclipse配置android_零基础电脑初学者入门教程
- [网站优化]低配置服务器nginx性能调整设置
- 【Android 安全】DEX 加密 ( 代理 Application 开发 | multiple-dex-core 依赖库开发 | 配置元数据 | 获取 apk 文件并准备相关目录 )
- 【OkHttp】Android 项目导入 OkHttp ( 配置依赖 | 配置 networkSecurityConfig | 配置 ViewBinding | 代码示例 )
- 【Android Gradle 插件】工程根目录下 build.gradle 配置文件 ( 远程仓库配置 | 依赖配置 | 所有子模块配置 | task clean 任务 )
- 【Android Gradle 插件】Android 依赖管理 ④ ( 常用依赖配置分析 | implementation 依赖作用 | api 依赖作用 | compileOnly 依赖作用 )
- 【Android Gradle 插件】组件化中的 Gradle 构建脚本实现 ⑤ ( 优化 Gradle 构建脚本 | 构建脚本结构 | 闭包定义及用法 | 依赖配置 | android 块配置 )
- 如何取消 SAP ALE 中已经配置的跨系统主数据验证
- Windows IIS配置Jsp和php环境方法
- Linux图形界面快速网络配置指南(linux图形网络配置)
- Oracle系统典型配置实践指南(oracle 典型配置)
- 下载MYSQL实现游戏键盘配置优化(MYSQL下载游戏键盘)