Hallo, Michael,
schoen, dass Du mal wieder da bist.
Ich habe eine Oberfläche gebastelt, mit der ein Benutzer Daten aus 3 Tabellen bearbeiten kann. Das funktioniert auch alles schön und gut, nur überlege ich jetzt, was denn passiert wenn 2 Leute gleichzeitig die Daten ändern, und so der eine die Änderungen des anderen überschreibt.
genau für diesen Fall wurde das Konzept der Transaktionen in Datenbanksystemen erfunden.
ich kenne Transaktionen so, dass man mithilfe dieser sicherstellt, dass mehrere Aktionen entweder zusammen ausgefuehrt werden oder gar nicht. Ausserdem sollten Transaktionen immer sehr schnell geschlossen werden, da diese sehr ressourcenfressend sind.
Wenn man aber auf Datensaetze zugreift, auf die auch andere zugreifen koennen, so wuerde ich eher mit folgenden Konzepten rechnen:
- Optimismus, d.h. wenn ein Datensatz mehrfach fuer Editierzwecke gelesen wird, gestattet man beim Zurueckschreiben einfach das jeweils alles ueberschrieben wird.
- Pessimismus, d.h. ein Locking verhindert, dass ein ausgecheckter Datensatz (unter http ist das Aus-Checken rein "logischer" Art) ein zweites mal fuer Editierzwecke geladen werden kann
- ein Zwischending - der Datensatz wird gelesen und nur dann zurueckgeschrieben, wenn der Shadow des urspruenglich gelesenen Datensatztes mit dem aktuellen Inhalt uebereinstimmt
Ausserdem denkbar noch eine Revisionierung von Aenderungen mit spaeterer Konfliktaufloesung, was aber meist wegen grossen Aufwands nicht in Betracht gezogen wird.
Viele Gruesse,
Lude