【问题标题】:Why store whole records in audit tables?为什么要将整个记录存储在审计表中?
【发布时间】:2020-05-30 04:50:54
【问题描述】:

我曾在几家公司工作,每家公司的审计表都存储了每次更改的完整记录快照。

据我了解,仅存储更改的列以在任何给定时间点重新创建记录就足够了。显然会减少存储空间。此外,我认为它会提高性能,因为我们需要写入的数据量要少得多。

正如我在不同的数据库和框架中看到的那样,我没有在这里放置任何特定的标签。

我很乐意理解这种方法背后的原因。

【问题讨论】:

    标签: sql database database-design relational-database


    【解决方案1】:

    这里有一些重要的原因。

    首先,存储变得越来越便宜。因此,减少记录的数量或大小几乎没有经济利益。

    其次,围绕更改的“上下文”可能非常有用。在发生更改时重建记录的外观可能会很棘手。

    第三,检测变化的逻辑比看起来要复杂。当您有 NULL 值时尤其如此。如果代码中存在错误,那么您将丢失存档。整个记录不易出错。

    第四,记住(2)和(3)需要为每个被归档的表实现,进一步引入错误的可能性。

    我可以总结为存储整个记录使用更少的代码行。更少的代码行更易于维护且不易出错。这些节省超过了减小存档大小的好处。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-07
      • 2015-08-13
      • 2021-11-24
      • 1970-01-01
      • 1970-01-01
      • 2021-04-26
      相关资源
      最近更新 更多