在默认的Quartz.Net数据库结构上构建的优缺点是什么?

时间:2013-08-29 02:23:41

标签: database database-design quartz-scheduler quartz.net

我的公司正致力于为员工创建一个调度程序。

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

我不同意这一点,因为数据库是直接映射到Quartz.Net库的调用。在我看来,数据库只作为一种方法来保存计划和触发器,如果​​它被关闭的计算机关闭。

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

由于我在数据库设计方面没有广泛的背景,所以我无法论证我的观点。

有人可以帮助我添加提供的Quartz.Net数据库架构的优点/缺点吗?

编辑:

他们不想修改现有的表,但是想要在数据库和数据库中添加额外的表。使用这些。

1 个答案:

答案 0 :(得分:1)

我不认为应该有一个大问题,但我会小心使用Quartz表创建外键关系。

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

如果您的表正在使用石英表定义外键关系,则会启动缺点,这会对石英表产生强烈的依赖关系。

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

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

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

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

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