Optimistic Locking

Beim Optimistic Locking handelt es sich um eine Technik zur Konsistenzsicherung in Transaktionen. Anders als vom Namen suggeriert wird aber nicht mit Sperren gearbeitet, sondern jedes Datenobjekt erhält ein zusätzliches Attribut. Das Attribut speichert eine Versionsnummer.

Wenn eine Transaktion ein Datenobjekt liest, dann erhält sie eine Kopie des Datenobjekts mit der zum Zeitpunkt des Lesens aktuellen Versionsnummer. Die Versionsnummer kann durch die Transaktion selbst nicht verändert werden. Die Transaktion kann aber andere Attribute der Kopie verändern.

Wenn die Änderungen festgeschrieben werden sollen, überprüft das Datenbanksystem zunächst, ob die Versionsnummer der Kopie noch mit der aktuellen Versionsnummer des Datenobjekts übereinstimmt.

Wenn ja, dann werden die Änderungen aus der Kopie in das Original des Datenobjekts übernommen und die Versionsnummer wird inkrementiert.

Wenn die Versionsnummern nicht mehr übereinstimmen, dann hat zwischen dem Zeitpunkt des Lesens und dem Versuch des Festschreibens eine andere Transaktion das Datenobjekt verändert. Die Änderung wird deswegen zurückgewiesen.


Quelle

http://en.wikipedia.org/wiki/Optimistic_concurrency_control