Właściwości ACID transakcji bazodanowych

Atomowość, spójność, izolacja i trwałość - właściwości umożliwiające poprawne przetwarzanie transakcji w bazach danych

Właściwości ACID transakcji bazodanowych

Czym jest transakcja w bazach danych?

Transakcja bazodanowa to ciąg operacji, które są zintegrowane w niepodzielną całość. Przykładem takiej transakcji (w dużym uproszczeniu) może być przelew wewnętrzny 1000 złotych z jednego konta na inne w systemie bankowym:

UWAGA!
W tym artykule słowo transakcja odnosi się do transakcji bazodanowej. Nie myl jej z transakcją płatniczą: celowo w przykładzie użyłem słowa przelew.

Debtor zleca przelew na 1000 złotych, zaś Creditor otrzymuje przelane 1000 złotych. Mamy tutaj dwie operacje:

  • Zaktualizowanie (UPDATE) konta Debtora: odjęcie 1000 złotych
  • Zaktualizowanie (UPDATE) konta Creditora: dodanie 1000 złotych

Przelew zostanie przetworzony prawidłowo, gdy obydwie operacje wykonają się pomyślnie. Jeżeli odejmiemy 1000 złotych z konta Debtora, natomiast przy aktualizacji konta Creditora wystąpi nieprzewidziany błąd, transakcja bazodanowa nie będzie mogła zakończyć się pomyślnie. Co wtedy? Zmiany, które do tej pory zostały wykonane zostaną wycofane (tzw. rollback). Oznacza to, że cofnięta zostanie operacja odjęcia 1000 złotych z konta Debtora.

Właściwości ACID

ACID to nie KWAS. ACID to akronim czterech właściwości transakcji bazodanowych:

Właściwości ACID gwarantują poprawność danych nawet w przypadku awarii systemu, przerwach w dostawach prądu czy innych problemów.

Atomicity (Atomowość)

Atomowość to właściwość, która sprawia, że transakcja bazodanowa jest niepodzielna. Oznacza to, że transakcja może zakończyć się w całości powodzeniem lub nie. Albo wszystkie zmiany zostaną wykonane i transakcja zakończy się pomyślnie, albo żadne z nich w związku z czym transakcja zostanie wycofana pozostawiając bazę danych w stanie w jakim była przed rozpoczęciem transakcji.

Przykładem atomowości jest zaktualizowanie obydwu kont Debtora i Creditora. Zaktualizowanie tylko jednego z kont jest sytuacją niepożądaną, więc w przypadku niespodziewanego problemu transakcja jest wycofywana. Nie chcemy przecież by 1000 zł znikło nam z konta i nie dotarło do osoby, do której je wysłaliśmy, prawda? 😜

Consistency (Spójność)

Spójność to właściwość, która sprawia, że transakcja bazodanowa może przenieść bazę danych z jednego poprawnego stanu do drugiego poprawnego stanu zapobiegając uszkodzeniu danych. Oznacza to, że dane są spójne zanim transakcja się rozpocznie i po jej zakończeniu. Dane są zmieniane w dozwolony przez tabelę sposób i są przewidywalne.

Przykładem spójności jest poprawne zaktualizowanie obydwu kont Debtora i Creditora, tak aby wynik był zgodny z założeniami (na koncie Debtora ubędzie 1000 zł, a na koncie Creditora przybędzie 1000zł) oraz nie pozwolenie by stan konta Debtora spadł poniżej zera.

Isolation (Izolacja)

Izolacja to właściwość, która sprawia, że zmiany wykonane w jednej transakcji bazodanowej nie mogą wpłynąć na wynik innej transakcji.

Przykładem izolacji przy równoczesnym wykonaniu dwóch transakcji na tych samych kontach Debtora i Creditora jest wykonanie tylko jednej z nich. Druga nie zostanie wykonana. Istnieje kilka poziomów izolacji, które poruszę w jednym z przyszłych artykułów.

Durability (Trwałość)

Trwałość to właściwość, która sprawia, że zmiana stanu przez pomyślnie zakończoną transakcję bazodanową powinna być przechowywana i stała. Dane nie są tracone.

Przykładem trwałości jest brak utraty danych np. w przypadku awarii systemu.

Podsumowanie

Transakcja bazodanowa to ciąg operacji, które są zintegrowane w niepodzielną całość. ACID to akronim czterech właściwości transakcji bazodanowych: Atomicity (Atomowość), Consistency (Spójność), Isolation (Izolacja) i Durability (Trwałość). Właściwości te gwarantują poprawność danych nawet w przypadku awarii systemu, przerwach w dostawach prądu czy innych problemów. Warto je znać, zwłaszcza, że często pytają o nie na rozmowach rekrutacyjnych 😉

Rozwiąż Quiz i utrwal wiedzę

Liczba komentarzy:

Zaloguj się lub dołącz do społeczności Javowców, aby móc uczestniczyć w dyskusji 🙂