Junior — Middle
Wie implementiert man das Saga-Muster mit SQL?
sobes.tech KI
Antwort von AI
Das Saga-Muster wird verwendet, um verteilte Transaktionen zu verwalten, indem sie in eine Sequenz von lokalen Transaktionen mit Kompensationsaktionen bei Fehlern aufgeteilt werden.
Im SQL-Kontext kann Saga durch eine Status-Tabelle implementiert werden, in der die Schritte und deren Status festgehalten werden. Zum Beispiel:
- Es wird eine Tabelle
SagaLogmit den Spalten erstellt:SagaId,StepName,Status. - Jede lokale Transaktion wird ausgeführt und nach erfolgreichem Abschluss in
SagaLogmitStatus = 'Completed'eingetragen. - Wenn ein Schritt fehlschlägt, werden Kompensationsanfragen ausgeführt, um die vorherigen Schritte rückgängig zu machen.
Beispiel für die Tabellenstruktur:
CREATE TABLE SagaLog (
SagaId UNIQUEIDENTIFIER PRIMARY KEY,
StepName NVARCHAR(100),
Status NVARCHAR(20),
Timestamp DATETIME DEFAULT GETDATE()
);
Im C#-Code kann die Ausführung der Schritte verwaltet und deren Status in dieser Tabelle festgehalten werden, um Kontrolle zu gewährleisten und bei Fehlern eine Rücksetzung zu ermöglichen.
Auf diese Weise wird Saga durch die Verwaltung des Status der Transaktionsschritte und die Ausführung von Kompensations-SQL-Abfragen bei Bedarf umgesetzt.