Mysql
 sql >> Database >  >> RDS >> Mysql

mysql (quasi) completo di auditing

Mah, ci stavo pensando anche io.

  • Avere una tabella per le revisioni da mantenere non sarebbe un gran problema per me personalmente, ma ehi.
  • Il nome utente può essere mantenuto con variabili definite dall'utente credo, (dopo l'inizio di una sessione emette qualcosa come SET @user='someone' , e usalo.
  • Finché ci sono trigger dopo INSERT, UPDATE ed DELETE, ottenere i valori precedente/successivo è una semplice query, memorizzerò solo i VECCHI valori.

In breve, per una tabella con colonne (a,b,c) creerei una tabella con colonne (user_id,modtime,a,b,c).

Principali inconvenienti:

  • Gli aggiornamenti batch sono lenti (quindi scegli le tue tabelle per cui conservare le revisioni con attenzione)
  • Duplicazione dati deluxe, dovrai/dovrò disporre di spazio di archiviazione sufficiente
  • i dati "correlati" non attivano una revisione (ad esempio:alterare un group_members la tabella in realtà non altera un groups tabella, mentre potresti voler tenerlo come punto nel tempo per i groups piuttosto che approfondire group_members alterazioni.

Tutto sommato mi sembra un buon affare, ma come l'ho visto raramente nella pratica, deve essere motivi convincenti per cui è negativo, quindi aspetterò quelle risposte.