设计任务调度依赖配置表

版权声明:如若转载,请联系作者。 https://blog.csdn.net/liu16659/article/details/82734230

设计任务调度依赖配置表

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’。而且不存在冗余。对于任何一个依赖关系,只有一条记录。

猜你喜欢

转载自blog.csdn.net/liu16659/article/details/82734230