为什么要将整个记录存储在审计表中?
Why store whole records in audit tables?
我在几家公司工作过,每家公司的审计表都存储了每次更改的完整记录快照。
据我了解,仅存储更改的列以在任何给定时间点重新创建记录就足够了。它会明显减少存储空间 space。此外,我认为它会提高性能,因为我们需要写入的数据量要少得多。
正如我在不同数据库和框架中看到的那样,我没有在此处放置任何特定标记。
我很乐意理解这种方法背后的原因。
这里有一些重要的原因。
首先,存储变得越来越便宜。因此,减少记录数量或大小几乎没有经济利益。
其次,"context" 周围的变化可能非常有帮助。重建发生更改时的记录可能很棘手。
第三,检测变化的逻辑比看起来要复杂。当您有 NULL
值时尤其如此。如果代码中存在错误,那么您将丢失存档。整个记录不太容易出错。
第四,记住(2)和(3)需要对每个table进行归档,进一步引入错误的可能性。
我可以将其总结为存储整个记录使用更少的代码行。更少的代码行更易于维护且不易出错。这些节省超过了减少存档大小的好处。
我在几家公司工作过,每家公司的审计表都存储了每次更改的完整记录快照。
据我了解,仅存储更改的列以在任何给定时间点重新创建记录就足够了。它会明显减少存储空间 space。此外,我认为它会提高性能,因为我们需要写入的数据量要少得多。
正如我在不同数据库和框架中看到的那样,我没有在此处放置任何特定标记。
我很乐意理解这种方法背后的原因。
这里有一些重要的原因。
首先,存储变得越来越便宜。因此,减少记录数量或大小几乎没有经济利益。
其次,"context" 周围的变化可能非常有帮助。重建发生更改时的记录可能很棘手。
第三,检测变化的逻辑比看起来要复杂。当您有 NULL
值时尤其如此。如果代码中存在错误,那么您将丢失存档。整个记录不太容易出错。
第四,记住(2)和(3)需要对每个table进行归档,进一步引入错误的可能性。
我可以将其总结为存储整个记录使用更少的代码行。更少的代码行更易于维护且不易出错。这些节省超过了减少存档大小的好处。