Definition „Commit (Versionskontrolle)“ Was ist ein Commit?

Von Egoloizos

Anbieter zum Thema

Als Ausdruck der Softwaretechnik bezeichnet Commit eine bestätigende Freischaltung einer bestimmten oder mehrerer Änderungen. Der Ausdruck Commit ist von Bedeutung in der Daten-Persistierung in einer Datenbank sowie in Versionsverwaltungssystemen.

In der Versionsverwaltung bezeichnet der Commit den Prozess, bei dem neuer oder veränderter Quelltext bestätigt und somit eingespielt wird.
In der Versionsverwaltung bezeichnet der Commit den Prozess, bei dem neuer oder veränderter Quelltext bestätigt und somit eingespielt wird.

In Datenbanken bezeichnet Commit als Ausdruck einen erfolgreichen Abschluss einer Transaktion.Auch in Versionsverwaltungssystemen findet der Ausdruck Commit Anwendung beim Einpflegen des Programm-Quelltexts.

Im Zusammenhang mit Datenbanken trägt Commit dazu bei, dass das Ergebnis der verschiedenen Verarbeitungs-Prozessschritte dauerhaft zu speichern. Diese dauerhafte Speicherung geschieht typischerweise durch den SQL-Befehl Commit. Dazu im Gegensatz steht der Rollback: dieser macht die einzelnen Schritte der Transaktion rückgängig, womit das System wieder in den Ausgangszustand zurückgeführt wird.

Diese Art von Transaktion ist nicht nur im Zusammenhang mit Datenbanken verbreitet. Anwendung finden sie zum Beispiel auch im Rahmen der Nutzung von Message Oriented Middleware. Auch in diesem Anwendungsszenario ist bei Transaktionen von einem Commit oder im gegenteiligen Fall von einem Rollback die Rede.

Commit und die Durchführung sicherer Transaktionen

Transaktionen sind in Datenbanksystemen so zu gestalten, dass sie sicher und konsistent ablaufen. Fehler sind in diesem Zusammenhang so weit wie möglich zu vermeiden oder zu minimieren. Zu diesem Zweck existieren einheitliche Verfahren, die eine konsistente und sichere Ablaufweise der Transaktionen gewährleisten. Diese Verfahren tragen dazu bei, dass verschiedene Fehler im Vorfeld verhindert oder zumindest minimiert werden. Auf diese Weise lassen sich Unterbrechungen der Netzwerkverbindungen oder komplette Systemausfälle problemlos vermeiden.

Der Ausdruck Commit in der Versionsverwaltung

Geht es um Versionsverwaltungssysteme, so bezeichnet der Commit (oder auch Check-in) den Prozess, bei dem neuer oder veränderter Quelltext eingespielt wird. Sobald ein modifizierter oder neuer Quelltext oder andere Dateien in das System der Versionsverwaltung eingespielt wird, handelt es sich um einen so genannten Commit. Jede an der Softwareentwicklung beteiligte Partei erhält im Rahmen dessen die jeweils neue Version der Software zur Ansicht zur Verfügung.

Ein weiteres Anwendungsgebiet des Ausdrucks Commit findet sich im Taskmanager von Windows 10. Microsoft verwendet in diesem Zusammenhang den Begriff in der Bedeutung der Committed Memory. Der Ausdruck hat hierbei die Bedeutung eines zugesicherten Speichers.

Commit-Protokolle

Damit bei der Durchführung von Transaktionen Konsistenz gewahrt bleibt, gibt es bestimmte Protokoll-Verfahren. Diese tragen zudem dazu bei, dass bestimmte ACID-Standards und deren Einhaltung im Rahmen der Transaktionen sichergestellt werden. Im Rahmen dieses Verfahrens spielen der Koordinator sowie mehrere einzelne Agenten eine wichtige Rolle. Diese vereinbaren die Transaktionen und schreiben bestimmte Standards im Ablauf fest.

Arten und Varianten des Commit-Protokolls

Commit-Protokolle lassen sich unterscheiden in bestimmte Varianten. Diese unterscheiden sich unter anderem in der Anzahl ihrer Phasen. Hierbei sind das 3-Phasen- sowie das 2-Phasen-Commit-Protokoll am weitesten verbreitet. Die Wahl des jeweiligen Modells hängt unter anderem davon ab, wie konsistent die Transaktionen sowie das System innerhalb dessen sie ablaufen sein soll und wie stabil es ablaufen soll.

Das 2-Phasen-Commit-Protokoll

Das 2-Phasen-Commit-Protokoll lässt sich in die beiden Phasen der Vorbereitung und der Reaktion (Zustimmung oder Rollback). Die Transaktion wird demnach durch zwei einzelne Phasen geleitet, die von jeweils wechselseitiger Kommunikation geprägt sind.

In der ersten Phase, der Vorbereitungsphase, setzen Koordinatoren die Agenten in Kenntnis über den Wunsch der Durchführung einer Transaktion. Im Anschluss können die beteiligten Agenten der Durchführung der Transaktion zustimmen oder diese ablehnen.

Das Ergebnis der Vorbereitung in der ersten Phase teilt ein Koordinator den Agenten mit. Der Commit erfolgt nur dann, wenn eine Zustimmung aller vorliegt. Ebenso erfolgt nur in diesem Falle eine Festschreibung durch die Agenten. Kommt es zu einer Ablehnung durch die Agenten oder bleibt deren Antwort aus, so wird die Transaktion zurückgesetzt. Dies nimmt der Koordinator vor. Diese Zurücksetzung ist auch als Rollback bekannt.

Das Modell ist von einer ständigen Kommunikation zwischen Koordinator sowie sämtlichen Agenten geprägt. In Abhängigkeit der Antwort der Agenten kommt es zur Festschreibung oder zu einem Abbruch der Transaktion. Da das Vorgehen genormt ist, wird die Fehleranfälligkeit deutlich reduziert.

Jetzt Newsletter abonnieren

Täglich die wichtigsten Infos zu Softwareentwicklung und DevOps

Mit Klick auf „Newsletter abonnieren“ erkläre ich mich mit der Verarbeitung und Nutzung meiner Daten gemäß Einwilligungserklärung (bitte aufklappen für Details) einverstanden und akzeptiere die Nutzungsbedingungen. Weitere Informationen finde ich in unserer Datenschutzerklärung.

Aufklappen für Details zu Ihrer Einwilligung

Das 2-Phasen Commit-Modell birgt den Vorteil einer großen Konsistenz bei der Ausführung der Transaktionen. Auch die reduzierte Fehleranfälligkeit und -häufigkeit ist als Vorteil zu verstehen.

Probleme einzelner System- oder Rechnerabstürze sind unwahrscheinlich, da die Präzision der Transaktionen bei jedem empfangenden Agenten gleichlautend eingeht.

Als Risiko oder Nachteil des 2-Phasen-Commit-Modells ist anzuführen, dass gewünschte Transaktionen blockiert werden können. Eine solche Blockade tritt auf, wenn in der Phase der Vorbereitung keine Antworten durch Agenten oder Koordinator erfolgt. Während ein Agent auf Antwort eines Koordinators wartet, ist ein Abschluss der Transaktion ebenso wenig möglich wie eine Rücksetzung. Da die Ressourcen blockiert sind, können weitere Transaktionen nicht erfolgen.

3-Phasen-Commit-Protokoll

Das 3-Phasen-Commit-Protokoll ist darauf ausgelegt, die Stabilität zu sichern und Ausfälle durch Blockaden zu minimieren. Dieses Verfahren soll das Risiko von Blockaden, wie sie im 2-Phasen-Modell auftreten können, vermeiden. Um dies zu realisieren, kommt es zur Erhöhung der Zahl der Nachrichtenrunden. Sollte ein Koordinator ausfallen oder nicht antworten, kann dessen Funktion im Protokoll durch einen anderen Koordinator übernommen werden.

Zur Anwendung kommt das 3-Phasen-Protokoll stets dann, wenn es im Besonderen auf eine konsistente Ausführung der Transaktion ankommt. Zu berücksichtigen ist, dass es sich um ein aufwändigeres Protokoll handelt, da hier mehr als ein Koordinator zum Einsatz kommen muss.

(ID:48673172)