Gibt es ne Möglichkeit,Datenbankveränderungen zu protokollieren?
AchimderGroße
- php
0 suit0 AchimderGroße0 suit
1 Rouven1 Tom
Welche Möglichkeiten gibt es, Datenbankveränderungen zu protokollieren?
Ich habe eine Website, bei der sich User registrieren können und weitere Features nutzen können. Bei vielen Aktionen (wie zum Beispiel Neuregistrierung) wird die Datenbank angesprochen.
Was mich interessiert:
Was mich interessiert:
- welche einfachen Möglichkeiten gibt es, so was zu kontrollieren oder zu protokollieren, was da passiert ist?
Nutze ein Logfile[1].
- Gut wäre es, wenn man auch sehen kann, was bei der Sucheeingabe der User abgefragt wurde.
Das könntest du in ein Logfile schreiben[1].
- Kann man das auch so gestalten, dass man in regelmäßigen Zeitabständen Emails kriegt mit einer Liste, was so alles verändert wurde?
Du könntest das Logfile[1] per Cron-Job als e-Mail verschicken.
[1] alternativ auch eine Tabelle mit Logeinträgen in der Datenbank oder vergleichbares.
Wie schnell lässt sich das einrichten? Ist das eine Sache von unter 30 Minuten oder muss man da länger rumbasteln?
Wie schnell lässt sich das einrichten? Ist das eine Sache von unter 30 Minuten oder muss man da länger rumbasteln?
Ohne den E-Mail-Versand?
Gewusst wo: etwa 5 Minuten.
Logfile mit fopen und a+ öffen, gewünschten Text mit fwrite() schreiben und das file mit fclose() wieder schließen.
3 Zeilen.
Das ganze in eine Funktion verpackt mit 1TBS-Schreibweise macht 5 Zeilen Code.
Jeder Aufruf der Logging-Funktion ist mit einer Zeile Code an der gewünschten Stelle erledigt.
Moin Moin!
Logfile mit fopen und a+ öffen, gewünschten Text mit fwrite() schreiben und das file mit fclose() wieder schließen.
Reicht nicht, bei parallel laufenden Prozessen erzeugt das ohne Locking Datenschrott.
3 Zeilen.
Sofern Du ohne Locking arbeitest und Datenschrott riskieren willst.
Alexander
Sofern Du ohne Locking arbeitest und Datenschrott riskieren willst.
Dann mach ein Locking dazu, dann sinds halt 5 Zeilen.
Hello,
Sofern Du ohne Locking arbeitest und Datenschrott riskieren willst.
Dann mach ein Locking dazu, dann sinds halt 5 Zeilen.
Und welches Log gedenkst Du da auszuwerten, um die Datenveränderungen in der Datenbank feststellen zu können?
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg
Und welches Log gedenkst Du da auszuwerten, um die Datenveränderungen in der Datenbank feststellen zu können?
Keines, die Logging-Funktion wird ja per Hand aufgerufen.
Im log steht dann etaws in diese Art:
DATUM - Tabelle, ID, wurde geändert/gelöscht/hinzugefügt von Benutzer xyz
Hello,
viele Systeme haben Anforderungen an Historisierung von Daten. Ich arbeite bspw. gerade an einem Stammdatensystem, das für jede "produktive" Tabelle zusätzlich eine Historientabelle führt. Hier wird die produktive Tabelle um einen neuen Primärschlüssel sowie ein technisches gültig-von und gültig-bis ergänzt. Die Pflege dieser Tabelle ist ausschließlich der Datenbank überlassen, die mittels Trigger auf Änderungen der Produktivtabelle reagiert.
MfG
Rouven
Hello,
Welche Möglichkeiten gibt es, Datenbankveränderungen zu protokollieren?
Was für eine Datenbank?
Gute Datenbanksysteme führen ein Transaktionslog, mit dessen Hilfe sich jeder Zustand seit der letzten Vollsicherung wiederherstellen lässt.
Auch MySQL kennt ein Binary Log. Wenn Du das eisnchaltest, wird das DBMS aber langsamer und die Platte wird relativ schnell voll.
http://dev.mysql.com/doc/refman/5.0/en/binary-log.html
Alternativ kannst Du den Direktzugriff auf Tabellen unterbinden und dafür Stored Programms erstellen. In diesen Programms/Procedures werden dann sowohl die von Dir vorbereiteten Zugriffe durchgeführt, als auch ein von Dir vorgesehenes Logging betrieben. Ob Du dann nur den Aufruf des Statements nebst einigen Verwaltungsinformationen abspeicherst, oder eine Datenhistorie führst, das ist dann Dir überlassen.
Sowas lässt sich aber nicht in fünf Minuten einrichten, sondern muss im Datenbankdesign berücksichtigt werden. I.d.R. macht man sowas nicht nachträglich, sondern plant es weise voraus, bevor man anfängt zu Coden.
Es gab hier neulich erst einen Thread zu diesem Thema.
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg