0

我的公司正在努力创建一个调度程序供我们的员工使用。

我的两个同事希望使用提供的 Quartz.Net 数据库来添加有关将要运行的项目的信息。(如用户界面提示文字,参数值类型,是否允许多个值)

我不同意这一点,因为数据库直接映射到 Quartz.Net 库的调用。在我看来,数据库仅作为一种方法来存在,如果它所持有的计算机关闭,则可以保留计划和触发器。

我确信 Quartz 数据库中不应该有任何与将要使用它的项目相关联的逻辑。

我不能真正争论我的观点,因为我没有广泛的数据库设计背景。

有人可以帮助我了解添加到提供的 Quartz.Net 数据库模式的利弊吗?

编辑:

他们不想修改现有的表,而是想将额外的表添加到数据库中并使用这些表。

4

1 回答 1

1

我不认为这应该有什么大问题,但我会小心创建与 Quartz 表的外键关系。

Quartz 表/触发器默认以 QRTZ 为前缀的事实意味着设计人员正在命名它们,以便它们不会与同一数据库中的其他表冲突,因此他们一定会期待这一点。

如果您的表正在定义与石英表的外键关系,那么缺点就开始了,这会产生对石英表的强烈依赖。

例如,如果您正在创建一个历史表来显示每个作业的计划时间,并且您选择创建从表到 QRTZ_JOB_DETAIL 表的外键约束,那么这将意味着您将无法删除该作业(除非您删除历史表中的相关记录)。

因此,最好只创建一个包含作业名称列的历史表,而不是强制引用完整性。

如果您要链接到石英表,您还需要考虑如果您想升级到数据库结构已重新设计的 Quartz 的未来版本会发生什么。

主要优点之一是信息都在同一个地方。你有一个数据库要备份,如果你的系统/服务器崩溃并且你需要从备份中恢复,那么你知道你的表和石英表中的信息是一致的。

如果您有一个现有的 Sql 数据库,并且您想要安排与数据库相关的作业。在这种情况下,将 Quartz 表添加到现有数据库而不是维护两个数据库是有意义的。

于 2013-08-30T12:42:19.337 回答