Was ist ein Commit-Protokoll?
Sichere Transaktionen durchführen
Du hast sicher auch schon davon gehört, dass es bestimmte einheitliche Verfahren gibt, um sicherzustellen, dass Transaktionen in einem Datenbanksystem, das verteilt arbeitet, konsistent auszuführen sind und Fehler so gut es geht minimiert werden können. Mit diesen Verfahren sollen unterschiedliche Fehlerkonstellationen wie beispielsweise einzelne Systemausfälle oder eine Unterbrechung der Netzwerkverbindung verhindert werden.
Was ist ein Commit-Protokoll?
Ein Commit-Protokoll ist ein Verfahren, das Transaktionen sicherer machen soll und neben der Konsistenz auch die Einhaltung der ACID-Standards bei Transaktionen sicherstellen soll. An diesem Verfahren sind der Koordinator und einzelne Agenten beteiligt, die die Transaktionen vereinbaren und festschreiben.
Welche Varianten gibt es?
Die beiden häufigsten Varianten sind das 2-Phasen-Commit sowie das 3-Phasen-Commit-Protokoll. Je nach der Erfordernis, wie stabil und konsistent ein System und die darin zu erfolgenden Transaktionen sein sollen, fällt die Wahl auf eine der beiden Lösungen.
Zwei-Phasen-Commit-Protokoll
Im Grundprinzip beim 2-Phasen Commit kommen zwei einzelne Phasen (das erklärt den Namen) zur Anwendung, die die Transaktion absolvieren müssen.
Phase eins ist dabei die Vorbereitungsphase. Zu diesem Zeitpunkt setzt der Koordinator die Agenten davon in Kenntnis, dass er eine Transaktion durchführen möchte. Die involvierten Agenten können dann zustimmen oder die Transaktion ablehnen.
Das Ergebnis von Phase 1 teilt der Koordinator den Agenten mit. Nur wenn alle zustimmen erfolgt der Commit durch den Koordinator und die Festschreibung durch die Agenten. Sofern die Agenten ablehnen oder nicht antworten, erfolgt das Rücksetzen der Transaktion durch den Koordinator (Rollback).
In der Anwendung erfolgt in den beiden Phasen eine wechselseitige Kommunikation zwischen dem Koordinator und den Agenten und je nach der Antwort der Agenten wird die Transaktion entweder festgeschrieben oder abgebrochen. Durch dieses genormte Vorgehen wird eine signifikante Reduzierung der Fehlerhäufigkeit erreicht.
Vorteile
Der Hauptvorteil, den Du bei der Verwendung des 2-Phasen Commit hast, besteht darin, natürlich die erhöhte Konsistenz bei den Transaktion zu erzielen und die Reduzierung der Fehlerhäufigkeit zu erreichen. Es kann zum Beispiel auch keine Probleme mit einzelnen abstürzenden Rechnern geben, weil immer sichergestellt ist, dass die Korrektheit der Transaktion bei jedem Empfänger gleichlautend eingeht.
Nachteile
Es gibt aber auch Nachteile. Das größte Risiko beim Zwei-Phasen-Commit Verfahren ist die Blockierung der gewünschten Transaktion. Diese kommt dann vor, wenn in der Vorbereitungsphase eine Antwort des Koordinators auf die Mitteilung der Entscheidung für oder gegen die Transaktion durch den Agenten bzw. Koordinator nicht erfolgt. Während der Agent auf die Antwort des Koordinators wartet, kann der Agent die Transaktion weder abschließen noch eine Rücksetzung erteilen. Ressourcen sind in dieser Phase blockiert und weitere andere Transaktionen können gar nicht erst erfolgen. Bei Fehlern in der Kommunikation kann dieses Blockade Phase auch länger andauern. In der Zeit können die Agenten auch keine anderen Transaktionen bearbeiten.
Drei-Phasen-Commit-Protokoll
Das Grundprinzip lautet Stabilität sichern. Um das Verfahren mit Commit Protokollen stabiler zu machen, gibt es auch die Variante als 3-Phasen-Commit.
Hierbei ist das Hauptziel, die Gefahr von drohenden Blockaden zu vermeiden. Dafür wird zum einen die Zahl der erforderlichen Nachrichtenrunden erhöht, damit, wenn der Koordinator ausfallen sollte, dessen Funktion im Protokoll durch eine anderen Koordinator übernommen werden kann.
Bei der Anwendung wird das 3-Phasen-Commit-Protokoll immer dann eingesetzt, wenn das System noch störungsfreier sein muss und unbedingt sichergestellt werden muss, dass die Transaktion auch konsistent durchgeführt wird. Der Vorteil liegt vor allem darin, dass die Anzahl der Protokollierungen und der notwendigen Nachrichten reduziert wird. Dadurch wird die Transaktion stabiler. Als Nachteil ist zu nennen, dass das Verfahren logistisch aufwendiger ist, weil Du mehr als einen Koordinator benötigst.
Fazit
Lösungen und genormte Verfahren wie ein Commit-Protokoll bieten Dir eine hohe Sicherheit dafür, dass Transaktionen konsistent in einem Datensystem, das verteilt arbeitet, gesichert durchgeführt werden können und Störungen weitgehend neutralisiert werden können. In der Praxis sind das Zwei-Phasen-Commit-Protokoll sowie das Drei-Phasen-Commit-Protokoll die bewährten Verfahren, die dieses erwünschte Ergebnis sicherstellen.
Rückmeldungen