Transakcje to jeden z kluczowych mechanizmów wykorzystywanych w bazach danych. Umożliwiają wykonywanie serii operacji, traktując je jako jedną całość. Wszystkie muszą zakończyć się sukcesem. Jeżeli choć jedna z nich nie może zostać wykonana, cała transakcja jest wycofywana. Transakcje zapewniają zatem utrzymanie integralności danych w bazie.
Czym tak naprawdę są transakcje?
Najlepszym i najprostszym przykładem transakcji jest transakcja bankowa pomiędzy dwoma kontami. Załóżmy, że chcemy przelać kwotę X z konta A na konto B. Dokonujemy polecenia przelewu na koncie A, a zatem stan konta zmniejsza się o kwotę X. Następną operacją powinno być więc zwiększenie stanu konta B o kwotę X. Co jeżeli pomiędzy tymi operacjami nastąpi awaria systemu? Pieniądze zniknęły – nie ma ich ani na jednym, ani na drugim koncie. Ich właściciele z pewnością nie byliby zadowoleni.
Z pomocą przychodzą transakcje w bazach danych, które nie dopuszczają do takich sytuacji.
Cechy transakcji w bazie danych
Transakcje w bazie danych muszą spełniać założenia ACID (skrót ten pochodzi od pierwszych liter kolejnych cech):
A – Atomicity (Atomowość) – mówi o tym, że wszystkie operacje wykonywane w transakcji mają być zatwierdzone, a w przypadku błędu choć jednej z nich – wszystkie wycofane.
C – Consistency (Spójność) – oznacza, że niezależnie od tego, czy transakcja zostanie zatwierdzona, czy wycofana, informacje przechowywane w bazie danych pozostaną spójne.
I – Isolation (Izolacja) – mówi o tym, że wykonywane w tym samym czasie różne transakcje nie mogą na siebie wpływać. Istnieją różne poziomy izolacji.
D – Durability (Trwałość) – zapewnia zachowanie efektów zatwierdzonych transakcji, na przykład w przypadku awarii sprzętowych.
Transakcję w bazie danych rozpoczyna się poleceniem BEGIN TRANSACTION, zatwierdza poleceniem COMMIT TRANSACTION oraz wycofuje się poleceniem ROLLBACK TRANSACTION.
Transakcje mogą jednak wpływać na wydajność bazy danych. Ich liczba i złożoność może znacznie spowolnić działanie systemu, dlatego ich implementacja musi być dobrze przemyślana i zaplanowana.
Podsumowanie
Transakcje są więc rozwiązaniem wielu problemów, szczególnie w złożonym systemie bazodanowym. Umiejętność posługiwania się nimi jest podstawowa nawet dla początkującego dewelopera. W tym artykule przedstawione zostały jedynie podstawy wiedzy o transakcjach, jednak to od nich warto zacząć.