Pobierz prezentację
Pobieranie prezentacji. Proszę czekać
OpublikowałMateusz Czerwiński Został zmieniony 9 lat temu
1
Transakcje Przedmiot: Bazy Danych Prowadzący: mgr inż. Leszek Siwik Autorzy: Grzegorz Szymczyk Damian Wieczorek
2
Plan wykładu Wstęp Model ACID, założenia teoretyczne transakcji Implementacja obsługi transakcji wykonywanych szeregowo wykonywanych równolegle Zaawansowane zagadnienia związane z transakcjami
3
Wstęp Transakcja – fragment programu, który z punktu widzenia użytkownika (logiki systemu): jest operacją niepodzielną zachowuje spójność danych Transakcja albo jest wykonana w całości, albo w ogóle. Przykład: Przelew pieniędzy z jednego konta bankowego na drugie.
4
Model ACID Atomicity (niepodzielność) – transakcja jest wykonana w całości, albo w ogóle nie jest wykonana. Consistency (spójność) – transakcja nie może wykonywać operacji niezgodnych z logiką systemu (musi zachować spójność danych). Isolation (izolacja) – System zapewnia, że transakcje nie są świadome swego równoległego wykonywania (mają wrażenie, że są wykonywane szeregowo). Durability (trwałość) – dokonanie transakcji ma trwały efekt (nawet w przypadku awarii sprzętu lub systemu).
5
Przykład: ACID i przelewy bankowe ;) T i : read(A); A = A - 50; write(A);read(B); B = B + 50; write(B); Spójność: A+B – stałe. Zapewnienie spójności jest zadaniem programisty tworzącego transakcję. Niepodzielność – jeśli transakcja nie zostanie wykonana niepodzielnie, to albo „zgubimy” część pieniędzy, albo je „utworzymy”. Trwałość – jeśli transakcja nie będzie trwała w skutkach (na przykład po awarii systemu), to użytkownik może dostać informację o jej dokonaniu, natomiast faktycznie nie będzie ona dokonana. Oczywiście nie jest to sytuacja pożądana. Izolacja – Po zmianie zawartości konta A, ale przed zmianą zawartości B, system jest chwilowo w stanie niespójnym. Ani użytkownik, ani inne transakcje, nie powinny w tym czasie mieć dostępu do A i B.
6
Stany transakcji Aktywna – stan początkowy, transakcja podczas wykonywania jest w stanie aktywnym. Częściowo dokonana – po wykonaniu wszystkich instrukcji, przed zakończeniem. Niepowodzenie – gdy transakcja nie może dalej kontynuować swojego normalnego działania (błąd). Wycofana – transakcja jest anulowana, baza danych znajduje się w takim stanie, w jakim była przed uruchomieniem transakcji Dokonana – po zakończeniu transakcji sukcesem.
7
Diagram stanów transakcji Po napotkaniu błędu transakcja jest wycofywana. Następnie może zostać: wykonana ponownie (jeśli źródłem błędu była awaria sprzętu zaniechana (jeśli źródłem błędu był błąd logiczny wewnątrz transakcji)
8
Implementacja Implementacja niepodzielności i trwałości Równoległe wykonywanie transakcji Szeregowalność Naprawialność
9
Implementacja niepodzielności i trwałości Problem: transakcja składa się z operacji, które nie są wykonywane niepodzielnie. Proste rozwiązanie: wykonywać operacje na kopii, a następnie zamienić oryginalną bazę danych z kopią. Założenia: Operacja zamiany oryginalnej bazy danych z kopią jest niepodzielna (można to uzyskać poprzez użycie wskaźnika do bazy) Transakcje nie są wykonywane równolegle. Metoda ta jest prymitywna i nieefektywna.
10
Równoległe wykonywanie transakcji Za: Lepsze wykorzystanie zasobów. Mniejszy czas odpowiedzi. Przeciw: Naturalnym sposobem wykonania transakcji jest wykonywanie szeregowe. Trudności z utrzymaniem spójności BD przy równoległym wykonywaniu transakcji.
11
Przykład poprawnego planu równoległego TiTiTiTi TjTjTjTj read(A) A = A – 50 write(A)read(B) B = B + 50 write(B)read(A) tmp = A * 0,22 A = A - tmp write(A)read(B) B = B + tmp write(B) TiTiTiTi TjTjTjTjread(A) A = A – 50 write(A)read(B) B = B + 50 write(B)read(A) tmp = A * 0,22 A = A - tmp write(A)read(B) B = B + tmp write(B) Plan szeregowyRównoważny plan równoległy
12
Przykład błędnego planu równoległego TiTiTiTi TjTjTjTj read(A) A = A – 50 write(A)Read(B) B = B + 50 Write(B)read(A) tmp = A * 0,22 A = A - tmp write(A)Read(B) B = B + tmp Write(B) TiTiTiTi TjTjTjTjread(A) A = A – 50 write(A)Read(B) B = B + 50 Write(B)read(A) tmp = A * 0,22 A = A - tmp write(A)Read(B) B = B + tmp Write(B) Plan szeregowyBłędny plan równoległy
13
Szeregowalność System musi zapewnić poprawność równoległego wykonywania transakcji (tzn. efekt wykonania równoległego, musi być taki sam jak efekt wykonania szeregowego). System nie może analizować działania całego kodu transakcji, zamiast tego interesują go tylko instrukcje odczytu (read) oraz zapisu (write). Omówimy dwie metody sprawdzania poprawności równoległego wykonywania transakcji: Szeregowalność konfliktowa (conflict serializability) Szeregowalność widokowa (view serializability)
14
Szeregowalność konfliktowa Jeśli dwie instrukcje z różnych transakcji odwołują się do tej samej danej i przynajmniej jedna z nich jest operacją zapisu, to mówimy, że instrukcje te są w konflikcie ze sobą. Jeśli możemy przetransformować dany plan równoległy S’ do planu szeregowego S poprzez zamiany instrukcji nie będących w konflikcie, to plan S’ jest konfliktowo równoważny planowi S. Każdy plan równoległy konfliktowo równoważny planowi szeregowemu S, ma taki sam efekt końcowy jak S.
15
Przykład TiTiTiTi TjTjTjTj read(A)write(A)read(B)write(B)read(A)write(A)read(B)write(B) TiTiTiTi TjTjTjTjread(A)write(A)read(B)write(B)read(A)write(A)read(B)write(B) Czy lewy plan wykonania jest konfliktowo równoważny prawemu (szeregowemu)?
16
Przykład C.D. TiTiTiTi TjTjTjTj read(A)write(A)read(B)write(B)read(A)write(A)read(B)write(B) TiTiTiTi TjTjTjTjread(A)write(A)read(B)write(B)read(A)write(A)read(B)write(B) Sprawdźmy, czy można przetransformować ten plan do planu szeregwego. Zamieniamy kolejność instrukcji nie konfliktujących ze sobą:
17
Przykład C.D. TiTiTiTi TjTjTjTj read(A)write(A)read(B)write(B)read(A)write(A)read(B)write(B) TiTiTiTi TjTjTjTjread(A)write(A)read(B)write(B)read(A)write(A)read(B)write(B) Udaje nam się przetransformować plan równoległy do planu szeregowego. Plan równoległy jest równoważny konfliktowo planowi szeregowemu, zatem jest poprawny.
18
Szeregowalność widokowa Plan wykonania S jest równoważny widokowo planowi S’, jeśli dla każdej danej Q jest spełnione: jeśli w planie S transakcja T i odczytuje wartość początkową Q, to w planie S’ T i również musi odczytać wartość początkową Q. jeśli w planie S transakcja T i odczytuje wartość Q wyprodukowaną przez T j, to w planie S’ T i również musi odczytać wartość wyprodukowaną przez T j. jeśli w planie S transakcja T i zapisuje wartość końcową Q, to w planie S’ T i również musi zapisać wartość końcową Q.
19
Naprawialność (recoverability) Jeśli jakaś transakcja będzie musiała być wycofana, niektóre plany szeregowalne mogą okazać się błędne. Przykład: T1T1T1T1 T2T2T2T2 read(A)write(A)read(B)read(A) Transakcja T 2 może zostać dokonana zaraz po odczycie A, natomiast transakcja T 1 nie jest jeszcze zakończona i może zostać wycofana. Wtedy transakcja T 2 również powinna zostać wycofana. Nie można tego zrobić, ponieważ została już wcześniej dokonana. Taka sytuacja jest niepożądana.
20
Plany kaskadowe Nawet jeśli plan jest naprawialny, to może wystąpić zjawisko kaskadowego wycofywania: T1T1T1T1 T2T2T2T2 T3T3T3T3 read (A) read (B) write (A) read (A) write (B) read (A) Przedstawiony plan jest naprawialny, ale jeśli transakcja T 1 zostanie wycofana, trzeba będzie również wycofać transakcję T 2 oraz T 3. Takie zjawisko jest niekorzystne.
21
Zaawansowane techniki w transakcjach Zdalne kopie zapasowe Monitory przetwarzania transakcji Systemy wysokiej wydajności Transakcje interaktywne Transakcje czasu rzeczywistego (RT) Workflows
22
Zdalne kopie zapasowe Za: Większa dostępność i bezpieczeństwo danych (większa odporność na powodzie, pożary…). Przeciw: Mniejsza wydajność (konieczność synchronizacji)
23
Zdalne kopie zapasowe C.D. Dwu-fazowe dokonywanie transakcji operacje są synchronizowane na węźle podstawowym i zapasowym Przetwarzanie typu primary-secondary Operacje są wykonywane tylko na węźle podstawowym Do węzła zapasowego są przesyłane kopie danych oraz dzienniki operacji. W przypadku awarii węzła podstawowego, transakcje są wykonywane na węźle zapasowym
24
Kwestie związane ze zdalnymi kopiami zapasowymi Wykrywanie awarii odpowiednie protokoły, wiele łączy Przejęcie kontroli przez węzeł zapasowy węzeł zapasowy staje się podstawowym Opóźnienia powodowane przez awarie Węzeł zapasowy musi odtworzyć stan BD na podstawie dziennika Opóźnianie dokonywania transakcji aby zapewnić trwałość transakcji, trzeba poczekać z dokonaniem, aż dziennik dotrze do węzła zapasowego
25
Monitory przetwarzania transakcji Motywacja: potrzeba wielodostępu do systemu bazy danych. Przykład: rozproszony system rezerwacji lotów.
26
Architektury monitorów Process-per-clientSingle-process Many-server, single-router Many-server, many-router
27
Systemy wysokiej wydajności Bazy danych w pamięci operacyjnej dostęp do pamięci operacyjnej jest szybszy niż dostęp do dysku. dzienniki są zapisywane do NVRAM. optymalizacja struktur danych pod względem rozmiaru, nie szybkości. Grupowe dokonywanie transakcji system czeka na odpowiednią ilość transakcji przed dokonaniem.
28
Transakcje interaktywne Długi czas trwania czas reakcji człowieka jest relatywnie długi dla komputera. Konieczność udostępnienia danych niedokonanej transakcji użytkownikowi lub innym transakcjom. Podzadania transakcja może składać się z podzadań, które mogą być wycofywane (sama transakcja nie musi być przez to wycofana). Naprawialność niedopuszczalne jest wycofanie długiej, interaktywnej transakcji z powodu awarii sprzętu. Wydajność od dużej przepustowości ważniejszy jest czas odpowiedzi.
29
Transakcje czasu rzeczywistego Poprawność wykonania transakcji nie zależy tylko od utrzymania spójności w bazie danych, ale także od jej czasowego ukończenia. Istnieją dwa rodzaje ograniczeń czasowych wykonania transakcji: Hard Soft Często implementowane jako bazy danych w pamięci operacyjnej.
30
Workflows Workflow – działanie składające się z wielu zadań wykonywanych przez różnego rodzaju jednostki (komputery, ludzie…). Rozszerzenie transakcji na całe schematy działania. schematy są bardziej rozbudowane, ale muszą spełniać podobne do transakcji warunki. większa automatyzacja (ale potrzebny jest język do definiowania workflows).
31
Przykład Klient Urzędnik bankowy Przekaz pieniężny weryfikacja Wyższy urzędnik wniosek akceptacja odrzucenie
32
Pytania Rozwiń akronim ACID i opisz poszczególne cechy W jakich stanach może znajdować się transakcja i jakie są możliwe przejścia między stanami (diagram stanów) Podaj przykład planu wykonania transakcji, który jest szeregowalny (serializable), ale nie jest naprawialny (recoverable) Wymień dwa sposoby (modele) działania systemów ze zdalnymi kopiami zapasowymi
33
Koniec Koniec Dziękujemy za uwagę
34
Odp. Pytanie 1 Atomicity (niepodzielność) – transakcja jest wykonana w całości, albo w ogóle nie jest wykonana. Consistency (spójność) – transakcja nie może wykonywać operacji niezgodnych z logiką systemu (musi zachować spójność danych). Isolation (izolacja) – System zapewnia, że transakcje nie są świadome swego równoległego wykonywania (mają wrażenie, że są wykonywane szeregowo). Durability (trwałość) – dokonanie transakcji ma trwały efekt (nawet w przypadku awarii sprzętu lub systemu).
35
Odp. Pytanie 2: Aktywna – stan początkowy, transakcja podczas wykonywania jest w stanie aktywnym. Częściowo dokonana – po wykonaniu wszystkich instrukcji, przed zakończeniem. Niepowodzenie – gdy transakcja nie może dalej kontynuować swojego normalnego działania (błąd). Wycofana – transakcja jest anulowana, baza danych znajduje się w takim stanie, w jakim była przed uruchomieniem transakcji Dokonana – po zakończeniu transakcji sukcesem. (Diagram jest w prezentacji)
36
Odp. Pytanie 3: plan serializable not-recoverable T1T1T1T1 T2T2T2T2 read(A)write(A)read(B)read(A) Plan jest szeregowalny i transakcja T 2 może zostać zaakceptowana przed T 1. W tej sytuacji jeśli T 1 będzie musiała być wycofana, wystąpi błąd – zatwierdzona transakcja T 2 będzie musiała być wycofana.
37
Odp. Pytanie 4: Dwu-fazowe dokonywanie transakcji operacje są synchronizowane na węźle podstawowym i zapasowym Przetwarzanie typu primary-secondary Operacje są wykonywane tylko na węźle podstawowym Do węzła zapasowego są przesyłane kopie danych oraz dzienniki operacji. W przypadku awarii węzła podstawowego, transakcje są wykonywane na węźle zapasowym
Podobne prezentacje
© 2024 SlidePlayer.pl Inc.
All rights reserved.