Mysql
 sql >> Datenbank >  >> RDS >> Mysql

mysql (fast) vollständiges Auditing

Hm, darüber habe ich auch nachgedacht.

  • Eine Tabelle pro Tabelle zu haben, für die Revisionen aufbewahrt werden sollen, wäre für mich persönlich kein großes Problem, aber hey.
  • Der Benutzername kann meiner Meinung nach mit benutzerdefinierten Variablen beibehalten werden (geben Sie nach dem Start einer Sitzung etwas wie SET @user='someone' aus , und verwenden Sie das.
  • Solange es Trigger nach INSERT, UPDATE und DELETE gibt, ist das Abrufen der vorherigen/nächsten Werte eine einfache Abfrage, ich werde nur die ALTEN Werte speichern.

Kurz gesagt, für eine Tabelle mit Spalten (a,b,c) würde ich eine Tabelle mit Spalten erstellen (user_id,modtime,a,b,c).

Hauptnachteile:

  • Stapelaktualisierungen sind langsam (Wählen Sie also Ihre Tabellen, für die Revisionen aufbewahrt werden sollen, sorgfältig aus)
  • Datenvervielfältigung deluxe, Sie / Ich müssen genügend Speicherplatz haben
  • 'verwandte' Daten lösen keine Überarbeitung aus (d. h. das Ändern eines group_members Tabelle ändert nicht wirklich eine groups Tabelle, während Sie dies vielleicht als Zeitpunkt für groups behalten möchten anstatt durch group_members zu tauchen Änderungen.

Alles in allem scheint es mir ein gutes Geschäft zu sein, aber wie ich es selten in der Praxis gesehen habe, gibt es Muss Es gibt zwingende Gründe, warum es schlecht ist, also warte ich auf diese Antworten.