Transakcja (informatyka)

Z Wikipedii, wolnej encyklopedii

Transakcja – zbiór operacji na bazie danych, które stanowią w istocie pewną całość i jako takie powinny być wykonane wszystkie lub żadna z nich[1]. Warunki jakie powinny spełniać transakcje bardziej szczegółowo opisują zasady ACID (atomicity, consistency, isolation, durability – niepodzielność[a], spójność, izolacja, trwałość).

Przykładem transakcji może być transakcja bankowa jaką jest przelew. Muszą tu zostać dokonane 2 operacje – zabranie pieniędzy z jednego konta oraz dopisanie ich do drugiego. W przypadku niepowodzenia żadna z tych operacji nie powinna być zatwierdzona, gdyż zajście tylko jednej powodowałoby nieprawidłowości w bazie danych (pojawienie się lub zniknięcie pieniędzy).

Transakcja składa się zawsze z 3 etapów:

  • rozpoczęcia
  • wykonania
  • zamknięcia

W systemach bazodanowych istotne jest, aby transakcja trwała jak najkrócej, ponieważ równolegle może być dokonywanych wiele transakcji i część operacji musi zostać wykonana w pewnej kolejności. Każdy etap transakcji jest logowany, dzięki czemu w razie awarii systemu (dzięki zawartości logów) można odtworzyć stan bazy danych sprzed transakcji, która nie została zamknięta.

Część systemów baz danych umożliwia używanie punktów pośrednich (ang. save point), są to zapamiętane w systemie etapy transakcji, do których w razie wystąpienia błędu można się wycofać, bez konieczności anulowania wszystkich wykonanych działań.

Transakcje w SQL[edytuj | edytuj kod]

W systemach baz danych realizujących standard SQL następujące polecenia dotyczą transakcji:

  • BEGIN lub BEGIN WORK – rozpoczęcie transakcji
  • COMMIT – zatwierdzenie zmian wykonanych w obrębie transakcji
  • ROLLBACK – odrzucenie zmian wykonanych w obrębie transakcji
  • SAVEPOINT nazwa – zdefiniowanie punktu pośredniego o określonej nazwie
  • RELEASE SAVEPOINT nazwa – skasowanie punktu pośredniego (nie wpływa w żaden sposób na stan transakcji)
  • ROLLBACK TO SAVEPOINT nazwa – wycofanie transakcji do stanu zapamiętanego w podanym punkcie pośrednim.

Transakcje w systemach plików[edytuj | edytuj kod]

W przypadku systemu plików (który też jest pewnego rodzaju bazą danych) transakcje mogą być realizowane poprzez wbudowany w system obsługi plików mechanizm księgowania, który gwarantuje stabilność struktury plików, nawet w sytuacji zawieszenia całego systemu operacyjnego. Sam zapis do plików nie jest najczęściej wykonywany transakcyjnie, gdyż byłoby to zbyt kosztowne rozwiązanie. Istnieją jednak metody transakcyjnego zapisu danych do systemu plików.

Przykład prostej procedury transakcyjnej w systemach plikowych:

  1. Zapis pliku tymczasowego, w którym znajdują się nowe dane. W przypadku zawieszenia systemu operacyjnego w tej fazie pozostaje nienaruszony stary plik.
  2. Skasowanie starego pliku. W przypadku zawieszenia systemu przed skasowaniem pozostają oba pliki. W przypadku zawieszenia po kasowaniu pozostaje plik tymczasowy z nowymi danymi, które można zapisać we właściwym miejscu po odzyskaniu kontroli nad systemem.
  3. Zmiana nazwy pliku tymczasowego na plik właściwy, która kończy transakcję.

Wynika z tego, że aby końcowy efekt był poprawny, transakcja musi wykonać się w całości albo wcale.

Zobacz też[edytuj | edytuj kod]

Uwagi[edytuj | edytuj kod]

  1. Niekiedy spotyka się kalkowe tłumaczenie z języka angielskiego: „atomowość” (rzadziej: „atomiczność”).

Przypisy[edytuj | edytuj kod]

  1. Glosariusz ITIL wraz ze skrótami. s. 142. [dostęp 2014-09-13]. [zarchiwizowane z tego adresu (2014-09-12)].