Sobes.tech
Junior — Middle

Kuidas rakendada Saga mustrit SQL-i kasutades?

sobes.tech AI

Vastus AI-lt

Saga muster on kasutatav hajutatud tehingute haldamiseks, jagades need järjestuseks kohalike tehingute ja kompensatsioonitegevustega vigade korral.

SQL-i kontekstis saab Saga rakendada oleku tabeli kaudu, kus registreeritakse sammud ja nende olekud. Näiteks:

  1. Loobetakse tabel SagaLog koos veergudega: SagaId, StepName, Status.
  2. Iga kohaliku tehingu täitmine ja edukas lõpetamine registreeritakse SagaLog-s koos Status = 'Completed'.
  3. Kui samm ebaõnnestub, käivitatakse kompensatsioonipäringud, et tagasi pöörata eelnevad sammud.

Tabeli struktuuri näide:

CREATE TABLE SagaLog (
    SagaId UNIQUEIDENTIFIER PRIMARY KEY,
    StepName NVARCHAR(100),
    Status NVARCHAR(20),
    Timestamp DATETIME DEFAULT GETDATE()
);

C#-koodis saab juhtida sammude täitmist ja registreerida nende staatust selles tabelis, tagades kontrolli ja võimaluse tagasi pöörduda vigade korral.

Nii realiseeritakse Saga tehingu sammude staatuse haldamise ja vajadusel kompensatsioon SQL-päringute täitmise kaudu.