レコード全体を監査テーブルに保存する理由

2020-02-14 sql database database-design relational-database

私はいくつかの会社で働いており、それぞれの監査テーブルは、すべての変更の記録の完全なスナップショットを保存しています。

私の理解では、特定の時点でレコードを再作成するには、変更された列のみを保存するだけで十分です。それは明らかにストレージスペースを削減します。さらに、はるかに少ない量のデータを書き込む必要があるため、パフォーマンスが向上すると思います。

さまざまなデータベースやフレームワークで見たように、ここには特定のタグを入れていません。

このアプローチの背後にある理由を喜んで理解します。

Answers

ここにいくつかの重要な理由があります。

まず、ストレージはどんどん安くなっています。そのため、レコードの数やサイズを削減しても、金銭的なメリットはほとんどありません。

第二に、変更に関する「コンテキスト」は非常に役立ちます。変更が発生したときに見えるようにレコードを再構築するのは難しい場合があります。

第三に、変更を検出するロジックは見かけよりも巧妙です。これは、 NULL値がある場合に特に当てはまります。コードにバグがある場合、アーカイブは失われます。レコード全体のエラーが少なくなります。

第4に、(2)と(3)をアーカイブするすべてのテーブルに実装する必要があることを忘れないでください。エラーが発生する可能性があります。

これは、レコード全体を保存するのに使用するコード行が少なくなると言っていると要約できます。コードの行数を少なくすると、保守が容易になり、エラーが発生しにくくなります。そして、それらの節約は、アーカイブのサイズを縮小することの利点を上回ります。

Related