TurboDB Engine Dokumentation

Transaktionen

Previous  Top  Next

TurboDB unterstützt Transaktionen basierend auf einem zusätzlichen Speicherobjekt pro Tabelle, dem Redo-Log. Nach dem Start einer Transaktion werden alle folgenden Änderungen an den Datenbank-Tabellen in die Redo-Logs eingetragen. Ist die Transaktion mit Commit abgeschlossen,  werden die Redo-Logs einfach gelöscht. Bei einem Rollback wird die im Redo-Log vorhandene Information verwendet um die Änderungen rückgängig zu machen. Das bedeutet, TurboDB folgt einem optimistischen Transaktionsschema: Das Committen einer Transaktion ist sehr schnell, während ein Rollback wesentlich aufwändiger ist.

Die während einer Transaktion geänderten Tabellen sind für andere Anwendungen gesperrt, bis die Transaktion abgeschlossen ist. Aus Gründen der Geschwindigkeit werden Tabellen, die während einer Transaktion gelesen werden, nicht gesperrt. Der TurboDB Transaktions-Level ist Read Commited.

Da TurboDB Anwendungen auf Dateiebene miteinander kommunizieren (d.h. ohne Datenbankserver), ist das Handling von Anwendungen, die während einer Transaktion sterben schwierig. TurboDB Engine erkennt, dass eine andere Anwendung gestorben ist und führt ein Rollback aus. Da in diesem Fall eine andere Anwendung die vom gestorbenen Client durchgeführten Änderungen rückgängig macht, nennen wir diesen Mechanismus Hijacking.