Transakcje i właściwości ACID

Autor: coach1

Zapewnienie spójności: Transakcje bazodanowe

W skomplikowanych systemach finansowych, bankowych lub e-commerce często jedna operacja biznesowa składa się z wielu mniejszych zapytań SQL. Przelew środków wymaga odjęcia pieniędzy z jednego konta i dodania ich na drugie. Co się stanie, jeśli po pierwszej operacji nastąpi awaria zasilania serwera lub przerwane zostanie połączenie sieciowe? Pieniądze po prostu znikną w próżni. Aby temu zapobiec, stosujemy transakcje.

Zasada "Wszystko albo nic"

Transakcja to logiczna jednostka pracy, która grupuje jedno lub więcej zapytań SQL w nierozłączną całość. Jeśli wszystkie zapytania wewnątrz transakcji wykonają się poprawnie, zmiany są trwale zapisywane w pamięci (operacja COMMIT). Jeśli chociaż jedno zapytanie napotka błąd, cała transakcja jest natychmiast wycofywana do stanu z samego początku (operacja ROLLBACK). Gwarantuje to absolutną spójność danych.

Paradygmat ACID

Profesjonalne relacyjne bazy danych (jak MySQL z silnikiem InnoDB, PostgreSQL czy Oracle) muszą spełniać cztery rygorystyczne reguły znane pod akronimem ACID:

  • Atomicity (Atomowość): Transakcja wykonuje się w całości albo nie wykonuje się wcale. Nie ma stanów pośrednich ani połowicznie zaktualizowanych danych.
  • Consistency (Spójność): Po pomyślnym zakończeniu transakcji baza danych musi przejść z jednego spójnego stanu w drugi, nie łamiąc żadnych ustalonych reguł integralności (np. nie pozwalając na naruszenie kluczy obcych).
  • Isolation (Izolacja): Równolegle i jednocześnie wykonywane transakcje nie mogą na siebie wpływać. Wynik ich pracy musi być taki sam, jakby wykonywano je po kolei w odizolowanej kolejce.
  • Durability (Trwałość): Po zatwierdzeniu zmiany, są one permanentne i bezpieczne, nawet w przypadku nagłej awarii fizycznej infrastruktury serwera.

Miejsce na baner reklamowy Google AdSense w treści artykułu