Zadejte hledaný výraz...

Logování změn

Honza
verified
rating uzivatele
(17 hodnocení)
20. 8. 2009 09:19:16
Jak máte ve svých větších webových aplikacích vymyšlené logování událostí v databázi (MySQL)?
Potřubuju zaznamenávat hlavně každou změnu nějaké položky jinde v databázi (kdo jí provedl, co jak změnil apod.).
Můj aktuální nápad na tabulku logu (pořád ho upravuju):
Zatím má tu nevýhodu, že když se změní víc sloupců u položky, byl by potřeba na každý změněný sloupec jeden řádek v logu.
Navrhuju něco takového poprvé, tak bych rád věděl, jak se to má správně dělat :)
Díky
---------- Doplňující příspěvek odeslán v 09:35 ----------
Další možnost by byla pro každou tabulku mít úplně stejnou kopii + pár detailů o změně.. ale vyplatí se to?
20. 8. 2009 09:19:16
https://webtrh.cz/diskuse/logovani-zmen/#reply357586
sladdy
verified
rating uzivatele
(2 hodnocení)
20. 8. 2009 10:01:11
podle mě to máš navrhnutý dobře, dělat kopie každé tabulky podle mě neni dobrý nápad.
ps : určitě potřebuješ `id` i `action_id` ?
20. 8. 2009 10:01:11
https://webtrh.cz/diskuse/logovani-zmen/#reply357585
Honza
verified
rating uzivatele
(17 hodnocení)
20. 8. 2009 10:01:56
action_id bude typ akce.. vytvoření/změna/smazání záznamu, i jiné
---------- Doplňující příspěvek odeslán v 10:20 ----------
Tak mě napadá.. umí nějaká databáze sama od sebe sledovat historii změn v tabulce?
20. 8. 2009 10:01:56
https://webtrh.cz/diskuse/logovani-zmen/#reply357584
Tohle jsme taky nedávno řešili a po vyzkoušení všech možných řešeních jsme se rozhodli pro to úplně nejjednodušší, které prostě funguje a je strašně pohodlné na používání. Tedy pro každou tabulku table, kterou chceme sledovat, mít tabulku table_log s úplně stejnou strukturou + flagy pro další události. Pomocí triggerů se navážeme na události, které nás zajímají, a do table_log přidáme novou položku pouze s tím, co se změnilo. Následné vypsání kompletního logu pro určitou položku nebo vrácení se ke staré verzi je otázka jednoho dotazu a trocha zpracování.
Samozřejmě hlavní nevýhodou je silná vazba na originální tabulku a samotný fakt, že pro každou tabulku je nutné mít ještě jednu.
20. 8. 2009 13:17:49
https://webtrh.cz/diskuse/logovani-zmen/#reply357583
sladdy
verified
rating uzivatele
(2 hodnocení)
21. 8. 2009 01:35:50
Napsal mekishizufu;345692
Tohle jsme taky nedávno řešili a po vyzkoušení všech možných řešeních jsme se rozhodli pro to úplně nejjednodušší, které prostě funguje a je strašně pohodlné na používání. Tedy pro každou tabulku table, kterou chceme sledovat, mít tabulku table_log s úplně stejnou strukturou + flagy pro další události. Pomocí triggerů se navážeme na události, které nás zajímají, a do table_log přidáme novou položku pouze s tím, co se změnilo. Následné vypsání kompletního logu pro určitou položku nebo vrácení se ke staré verzi je otázka jednoho dotazu a trocha zpracování.
Samozřejmě hlavní nevýhodou je silná vazba na originální tabulku a samotný fakt, že pro každou tabulku je nutné mít ještě jednu.
osobně, vím že je to amatérské a pro opravdu velký projekt nevím jak by to šlo použít, ale párkrát jsem použil (pokud jsem chtěl opravdu LOG co se v DB dělo, né udělat zálohu) tak sem veškeré aplikace ukládal ještě do externího souboru (např. txt)
log.txt by mohl vypadat takto:
14:21 update aaa from bbb where ccc
14:20 - select xxx from xx
21. 8. 2009 01:35:50
https://webtrh.cz/diskuse/logovani-zmen/#reply357582
Pro odpověď se přihlašte.
Přihlásit