| 

.NET C# Java Javascript Exception

1
In manchen Fällen ist es wichtig bzw. vom Chef verlangt, dass Änderungen an der Datenbank nachvollziehbar sind und zwar lückenlos. Wie kann man das in der eigenen Applikation am geschicktesten Umsetzen, so dass man nicht ständig loggen oder Kopien der alten Daten speichern muss? Ich meine die Frage Datenbankübergreifen, als best-practice.
09.09.2009
florio 137 1 1 4
1 Antwort
2
Datenbankübergreifend wird das echt schwierig. Manche Datenbank-Systeme unterstützen automatische History-Tables (z.b. MSSQL-Server 2008). In den meißten anderen Datenbanksystemen würde man es händisch mit Triggern und selbst definierten Historytabellen lösen. Die von dir aufgezählten DBMS (mysql, oracle, postgres, sql-server) unterstützen Trigger meines wissen nach. Der Vorteil dieser beiden Lösungen ist, das du ein vollautomatisches und somit vollständiges Logging erreichen kannst.

Wenn du keine Trigger verwenden möchtest und es sich nur um eine Anwendung handelt, wirst du nicht drum herum kommen, die History selber zu schreiben. Zum einen kannst du das über SQL-Statments und Transaktionen lösen, zum anderen könnte man Object-Mapping-Frameworks wie zum Beispiel Hibernate / NHibernate entsprechend so angepasst bzw. dazu angehalten werden, dies für dich zu übernehmen.

Leider werden bei allen Lösungansätzen die Zeilen redundant gespeichert. Wobei dir History immer den aktuell Datensatz mit enthalten kann, oder alle Datensätze ohne den aktuell um Platz zu sparen. Die Trigger und SQL-Statements können ohne weiteres sicherstellen, das auch nur Historyeinträge erzeugt werden, wenn sich auch wirklich etwas ändert.
09.09.2009
Floyd 14,6k 3 9
jor 791 2 7
Stimme Floyd hier zu: Trigger sind in den meisten DBs enthalten und lösen bei jedem Update, Insert oder Delete (egal ob vom Programm selbst oder via händischen SQL) ein Event aus, in dem sie eine programmierte Aktion ausführen!

Kann ich nur empfehlen.
Dustin Klein 10.09.2009

Stelle deine Sql-Frage jetzt!
TOP TECHNOLOGIES CONSULTING GmbH