Streszczenie Transakcje bazodanowe, SQL i architektury
Transakcje bazodanowe, SQL i Architektury – Kompletny Przewodnik
Wprowadzenie
Transakcje są podstawową jednostką pracy z relacyjną bazą danych. Służą do zapewnienia spójności danych przy jednoczesnym dostępie wielu użytkowników oraz w przypadku możliwych błędów systemu. Niniejszy materiał podsumowuje pojęcia, właściwości transakcji, zachowanie w środowisku rozproszonym, protokoły zatwierdzania, odzyskiwanie po awarii oraz synchronizację.
Definicja: Transakcja to sekwencja logicznie powiązanych operacji, które muszą zostać wykonane albo wszystkie, albo żadna; przenosi bazę danych z jednego spójnego stanu do drugiego.
Właściwości transakcji (ACID i inne)
Atomowość
- Cała sekwencja operacji jest traktowana jako jedna logiczna jednostka. Albo wszystkie operacje zostaną wykonane, albo wszystkie zmiany zostaną wycofane (ROLLBACK).
Definicja: Atomowość oznacza, że transakcja jest niepodzielna; nieukończone zmiany muszą zostać wycofane.
Izolowana odwracalność (izolacja + brak kaskadowego wycofywania)
- Wycofanie jednej transakcji nie może negatywnie wpływać na inne transakcje. W przeciwnym razie może dojść do kaskadowego wycofania (cascading rollback).
Definicja: Izolowana odwracalność zapewnia, że nieukończone zmiany nie są widoczne dla innych transakcji.
Trwałość
- Raz zatwierdzone (COMMIT) zmiany są trwale zapisywane i nie mogą zostać utracone.
Definicja: Trwałość oznacza, że po operacji COMMIT zmiany są trwale zapisywane w pamięci masowej.
Uporządkowalność (serializowalność)
- Wynik równoległego wykonywania transakcji musi odpowiadać pewnemu szeregowemu (sekwencyjnemu) wykonaniu tych transakcji.
Definicja: Serializowalność = możliwość odtworzenia wyniku równoległego przebiegu jako wyniku pewnego szeregowego harmonogramu.
Transakcje lokalne vs. globalne (rozproszone)
- Transakcja lokalna odwołuje się tylko do danych na jednym węźle.
- Transakcja globalna (rozproszona) wykracza poza granice jednego węzła i składa się z cząstkowych transakcji lokalnych na różnych węzłach.
Definicja: Transakcja globalna to transakcja, która koordynuje wiele transakcji lokalnych między węzłami.
Rozproszony system baz danych — podstawowe zasady
- Baza danych jest fragmentowana i alokowana na wielu węzłach z połączeniami komunikacyjnymi.
- Transakcja globalna rozpoczyna się na węźle pierwotnym (koordynującym) i rozpada się na podtransakcje.
- Transakcja pierwotna (koordynator) zarządza podziałem, zbieraniem odpowiedzi oraz ostateczną decyzją (COMMIT/ABORT).
Komponenty na węźle (przegląd)
- Program aplikacyjny
- Moduł zarządzania transakcjami (logika koordynacji)
- Moduł komunikacyjny
- Moduły zarządzania danymi (lokalny DBMS)
- System operacyjny, sprzęt
Definicja: Moduł zarządzania transakcjami przetwarza żądania, dzieli transakcję globalną, zbiera podwyniki i konstruuje ostateczną odpowiedź.
Dwufazowy protokół zatwierdzania (2PC)
Cel: zapewnić atomowe zatwierdzenie globalnej transakcji w środowisku rozproszonym.
Faza 1 — głosowanie (voting / prepare)
- Koordynator prosi wszystkie podtransakcje, aby osiągnęły punkt, w którym mogą oświadczyć, czy są gotowe do ZATWIERDZENIA (RC - ready to commit).
- Każda podtransakcja wykonuje lokalne przygotowanie i odpowiada: RC (ready / prepared) lub ABORT.
- Po RC lokalny węzeł nie udostępnia jeszcze zmian innym transakcjom.
Faza 2 — zatwierdzanie/anulowanie (commit/abort)
- Jeśli wszystkie odpowiedzi to RC, koordynator wysyła globalny COMMIT, a podtransakcje wykonują swoje lokalne zatwierdzenie (a zmiany stają się widoczne).
- Jeśli co najmniej jedna odpowiedź to ABORT lub ktoś nie osiągnie RC w limicie czasu, koordynator wysyła globalny ABORT i wszystkie podtransakcje zostają wycofane.
Definicja: 2PC zapewnia, że wszystkie zaangażowane węzły dochodzą do tej samej decyzji COMMIT lub ABORT.
Błędy i limity czasu (timeouts)
Możliwe sytuacje i rozwiązania:
- Nie można zainicjować podtransakcji -> koordynator próbuje z innym węzłem lub wysyła ABORT do wszystkich.
- Brakująca wiadomość RC -> koordyn
Masz już konto? Zaloguj się
Transakcje - przegląd
Klíčové pojmy: Transakce je logická jednotka provedení operací, Atomičnost: vše nebo nic (ROLLBACK), Izolovaná vratnost zabraňuje cascading rollback, Pernamentnost zajišťuje trvalost po COMMITu, Globální transakce se skládají z lokálních podtransakcí, Dvoufázový protokol (2PC): prepare + commit/abort, Žurnál a checkpointy umožňují UNDO/REDO zotavení, Uzamykání + 2PL zajišťují serializovatelnost, Deadlock se detekuje čekacím grafem (hledání cyklů), Time-stamp metody: Wait-Die a Wound-Wait, SAVEPOINT umožňuje částečný ROLLBACK v SQL