sql >> Databáze >  >> RDS >> Mysql

mysql (téměř) kompletní audit

Hmm, taky jsem o tom přemýšlel.

  • Mě osobně by pro mě osobně nedělalo až takový problém mít tabulku na tabulku pro uchování revizí, ale ouha.
  • Domnívám se, že uživatelské jméno lze ponechat pomocí uživatelsky definovaných proměnných (po zahájení relace problém něco jako SET @user='someone' a použijte to.
  • Dokud po INSERT, UPDATE a DELETE existují spouštěče, je získání předchozích / dalších hodnot jednoduchý dotaz, uložím pouze STARÉ hodnoty.

Stručně řečeno, pro tabulku se sloupci (a,b,c) bych vytvořil tabulku se sloupci (user_id,modtime,a,b,c).

Hlavní nevýhody:

  • dávkové aktualizace jsou pomalé (takže pečlivě vybírejte tabulky, pro které si budete revize uchovávat)
  • duplikace dat deluxe, budete / já budu muset mít dostatek úložného prostoru
  • „související“ data nespouštějí revizi (tj. změnu group_members tabulka ve skutečnosti nemění groups tabulku, ale můžete si ji ponechat jako časový bod pro groups než se ponořit do group_members změny.

Celkově se mi to zdá jako dobrý obchod, ale jak jsem to v praxi viděl jen zřídka, musí být přesvědčivé důvody, proč je to špatné, takže budu čekat na ty odpovědi.




  1. Konvence pojmenování PostgreSQL

  2. sqlalchemy.orm.exc.FlushError:Instance má klíč identity NULL

  3. Spring Data s typem Mysql JSON

  4. Jak komentovat v SQL