1 Wprowadzenie (1) 2 Baza danych jest abstrakcyjnym odzwierciedleniem wybranego fragmentu rzeczywistości (ang. miniworld) Przetwarzanie transakcyjne świat rzeczywisty miniworld' DB świat wirtualny miniworld' DB Baza danych jest spójna jeŝeli jej stan odpowiada stanowi świata rzeczywistego Wprowadzenie (2) 3 Problemy przygotowania aplikacji 4 Zmiany zachodzące w świecie rzeczywistym muszą być zakodowane w postaci programu, który będzie transformował bazę danych z jednego stanu spójnego do innego stanu spójnego Niebezpieczeństwa związane z realizacją programu transformującego bazę danych awaryjność środowiska sprzętowo-programowego współbieŝny dostęp do danych rozproszenie baz danych Przykład: Napisać aplikację przelewu kwoty N z konta A na konto B problem 1 awaria systemu Po pobraniu kwoty N z konta A, i zapisaniu tej aktualizacji do bazy danych, wystąpiła awaria systemu. W wyniku awarii systemu wykonana została jedynie część operacji składających się na daną aplikację problem 2 współbieŝny dostęp do danych Operacje współbieŝnie wykonywanych transakcji mogą naruszać spójność bazy danych, lub generować niepoprawne wyniki problem 3 - utrata danych w wyniku awarii Wyniki zakończonych aplikacji, buforowane w pamięci operacyjnej, mogą zostać utracone w wyniku awarii systemu
Transakcja 5 Przykład transakcji 6 Rozwiązaniem problemu awaryjności, rozproszenia i wielodostępności środowiska systemu bazy danych koncepcja transakcji BEGIN UPDATE konta SET stan = stan N WHERE id_konta = A; Transakcja Transakcja jest sekwencją logicznie powiązanych operacji na bazie danych, która przeprowadza bazę danych z jednego stanu spójnego w inny stan spójny. Typy operacji na bazie danych obejmują: odczyt i zapis danych oraz zakończenie i akceptację (zatwierdzenie), lub wycofanie transakcji SAVEPOINT s; UPDATE konta SET stan = stan + N WHERE id_konta = B; INSERT INTO log VALUES (A,B,N,SYSTIMESTAMP); COMMIT; Własności transakcji (1) 7 Własności transakcji (2) 8 A(tomicity) C(onsistency) I(solation) D(urability) Izolacja (I) Atomowość (A) Zbiór operacji wchodzących w skład transakcji jest niepodzielny: albo zostaną wykonane wszystkie operacje transakcji albo Ŝadna. Dotyczy to równieŝ wszystkich operacji transakcji wykonywanych na obiektach rzeczywistych (tak zwane akcje rzeczywiste) np. wypłata gotówki z bankomatu Spójność (C) Transakcja przeprowadza bazę danych z jednego stanu spójnego do innego stanu spójnego. W trakcie wykonywania transakcji baza danych moŝe być przejściowo niespójna. Transakcja nie moŝe naruszać ograniczeń integralnościowych Transakcje są od siebie logicznie odseparowane. Transakcje oddziałują na siebie poprzez dane. Mimo współbieŝnego wykonywania, transakcje widzą stan bazy danych tak, jak gdyby były wykonywane w sposób sekwencyjny Trwałość (D) Wyniki zatwierdzonych transakcji nie mogą zostać utracone w wyniku wystąpienia awarii systemu. Zatwierdzone dane w bazie danych, w przypadku awarii, muszą być odtwarzalne
Analiza cech transakcji 9 Diagram stanów transakcji 10 Transakcja jest: atomowa: jeŝeli pieniądze zostaną poprawnie przetransferowane z konta A do B spójna: jeŝeli kwota odjęta z konta A jest równa kwocie dodanej do konta B izolowana: jeŝeli inne transakcje wykonywane współbieŝnie, czytające i modyfikujące konta A i B, nie mają wpływu na transakcję trwała: jeŝeli po zakończeniu transakcji, baza danych trwale odzwierciedla nowe stany kont A i B Read Write Begin End Transaction Transaction Commit Active Partially committed Committed Abort Abort Faild Terminated begin transaction: początek transakcji. read, write: operacje odczytu i zapisu danych w bazie danych. end transaction: koniec transakcji: commit: zatwierdzenie (akceptacja) wyników transakcji. rollback: wycofanie wyników transakcji Zakończenie transakcji 11 12 Transakcja logiczna a transakcja fizyczna end transaction: koniec transakcji oznacza, ze wszystkie operacje odczytu i/lub zapisu transakcji zostały wykonane. W tym momencie, zachodzi konieczność podjęcia decyzji, czy zmiany wprowadzone przez transakcję mają być wprowadzone do bazy danych (zatwierdzenie transakcji) czy teŝ mają być wycofane z bazy danych commit: zatwierdzenie (akceptacja transakcji) oznacza pomyślne zakończenie transakcji - zmiany wprowadzone przez transakcję mają być wprowadzone do bazy danych rollback: wycofanie transakcji oznacza niepoprawne zakończenie transakcji i konieczność wycofania z bazy danych wszystkich ewentualnych zmian wprowadzonych przez transakcję transakcja logiczna UPDATE employees SET salary = 1.15 * salary WHERE work_period > 5;... COMMIT; transakcja fizyczna read (A); write (A);... read (Z); write (Z); commit;
Model transakcji (1) 13 Model transakcji (2) 14 Transakcją T i nazywamy uporządkowaną parę: T i T j = ( T i, < T j ) = { o j : 1 j n i }, zbiór operacji na bazie danych: { R-odczyt, W-zapis, C zatwierdzenie, A-wycofanie} KaŜda transakcja moŝe być reprezentowana przez graf skierowany: G = (V,E), gdzie: V jest zbiorem węzłów odpowiadających operacjom transakcji T i E jest zbiorem krawędzi reprezentujących porządek na zbiorze operacji <T j jest relacją częściowego porządku na zbiorze T i Przykład: Przyjmiemy następującą notację: r i (x) lub r i (x, wartość) w i (x) lub w i (x, wartość) c i lub a i a) r 1 (x) w 1 (x) r 2 (y) w 2 (y) b) r 1 (x) w 1 (x) w 2 (y) r 2 (y) c 1 c 1 Klasyfikacja transakcji 15 Realizacje transakcji (1) 16 Ze względu na porządek operacji transakcja sekwencyjna transakcja współbieŝna Ze względu na zaleŝność operacji transakcja zaleŝna od danych transakcja niezaleŝna od danych Ze względu na typy operacji transakcja odczytu (read read-only) transakcja aktualizująca (read read-write) Częściowo uporządkowaną sekwencją operacji naleŝących do zbioru współbieŝnie wykonywanych transakcji nazywamy realizacją (historią). Realizacja modeluje, formalnie, współbieŝne wykonanie zbioru transakcji Formalnie, realizacją S realizacją S zbioru n transakcji T 1, T 2,..., T n nazywamy takie uporządkowanie operacji współbieŝnie wykonywanych transakcji, w którym, dla kaŝdej transakcji T i w realizacji S, porządek wykonania operacji transakcji T i jest taki sam jak porządek <T i
Realizacje transakcji (2) 17 Realizacje transakcji (3) 18 S( τ) = ( T r ( τ), < r) Realizacja zawierająca tylko operacje zatwierdzonych transakcji nazywana jest zaakceptowaną projekcją gdzie: 1. T r(τ) zbiór operacji wszystkich transakcji naleŝących do zbioru τ 2. < r relacja częściowego porządku na zbiorze T r (τ), 3. Dla dowolnej pary operacji o i, o j T r (τ), takich, Ŝe Ŝądają one dostępu do tej samej danej i co najmniej jedna z nich jest operacją zapisu, zachodzi o i <r o j lub o j <r o i Przykład: S(τ): w 0 (x), w 0 (y), c 0, r 1 (x), r 2 (x), w 1 (x), r 1 (y), w 2 (x), c 2, w 1 (y), c 1, r f (x), r f (y), c f ; Realizacje transakcji (4) 19 Realizacje sekwencyjne i współbieŝne 20 Dowolną realizację moŝna przedstawić w postaci grafu skierowanego, nazywanego grafem realizacji, GR(S(τ)) = (V,E). Węzły grafu odpowiadają operacjom ze zbioru T r (τ), natomiast krawędzie grafu reprezentują relację częściowego porządku <r Przykład: Mówimy, Ŝe dana realizacja jest sekwencyjna jeŝeli, dla kaŝdych dwóch transakcji, wszystkie operacje jednej z nich poprzedzają wszystkie operacje drugiej W przeciwnym wypadku realizacja jest współbieŝna c 1 w 0 (x) r 1 (x) w 1 (x) r 1 (y) w 1 (y) r f (y) c 0 w 0 (y) r 2 (x) w 2 (x) c 2 cf r f (x)
Stan i obraz bazy danych 21 Uszeregowalność realizacji (1) 22 Stan bazy danych zbiór wartości wszystkich danych w bazie danych ZałoŜenie 1: Obraz bazy danych widziany przez transakcję T i KaŜda realizacja sekwencyjna jest poprawna ZałoŜenie 2: zbiór wartości danych odczytywanych przez transakcję Ti KaŜda realizacja współbieŝna równowaŝna dowolnej realizacji sekwencyjnej tego samego zbioru transakcji jest równieŝ poprawna Uszeregowalność realizacji (2) 23 Uszregowalność realizacji (3) 24 Przykład: Realizacja sekwencyjna transakcji T 1 i T 2 : dane (początkowe wartości): A=50, B=50 transakcja T 1 : sumuje konta A i B transakcja T 2 : przelewa 30 PLN z konta A na konto B przykładowa realizacja zbioru τ = {T 1,T 2 } S(τ) : r 1 (A,20) r 1 (B,50) c 1 r 2 (A,50) w 2 (A,20) r 2 (B,50) w 2 (B,80) c 2 końcowy stan bazy danych: A = 20, B= 80 obraz bazy danych widziany przez T 2 : A = 50, B = 50 obraz bazy danych widziany przez T 1 : A = 50, B = 50 S(τ) : r 2 (A,50) w 2 (A,20) r 1 (A,20) r 1 (B,50) r 2 (B,50) w 2 (B,80) c 1 c 2 Czy powyŝsza realizacja jest poprawna?
Konflikt (1) 25 Konflikt (2) 26 Dwie operacje o i (x), o j (y) współbieŝnej realizacji są konfliktowe, wtedy i tylko wtedy, gdy są spełnione następujące trzy warunki: x = y: operacje na róŝnych danych nie są konfliktowe i j : operacje konfliktowe naleŝą do róŝnych transakcji jedna z operacji o i lub o j musi być operacją zapisu Transakcje T i i T j są konfliktowe, jeŝeli zawierają wzajemnie konfliktowe operacje Mówimy, Ŝe operacja o i (x) poprzedza operację o j (y) w realizacji S(τ), τ co zapisujemy jako o i (x) o j (y), jeŝeli operacje te są konfliktowe i o i (x) <r o j (y) Następujące pary operacji mogą znajdować się w konflikcie: r i (x) w j (x) w i (x) r j (x) w i (x) w j (x) Konfliktowa równowaŝność 27 28 Kryterium konfliktowej uszeregowalności Kryterium konfliktowej uszeregowalności Mówimy, Ŝe transakcja T i poprzedza transakcję T j w realizacji S(τ), co zapisujemy jako T i T j, jeŝeli transakcje T i i T j zawierają odpowiednio operacje o i(x) i o j(x), między którymi zachodzi związek poprzedzania Mówimy, Ŝe dwie realizacje S(τ) = (T r (τ), <r ) i S'(τ) = (T r (τ), <r' ) są konfliktowo równowaŝne, jeŝeli dla kaŝdej pary operacji o i (x) i o j (y) w realizacji S(τ), takich, Ŝe o i (x) o j (x), zachodzi równieŝ o i (x) o j (y) w realizacji S'(τ) Realizacja S(τ) zbioru transakcji τ jest konfliktowo uszeregowalna wtedy i tylko wtedy, gdy jest ona konfliktowo równowaŝna dowolnej sekwencyjnej realizacji zbioru transakcji τ Graf konfliktowej uszeregowalności realizacji S(τ) Graf konfliktowej uszeregowalności realizacji S(τ) τ to skierowany graf CSRG(S(τ)) = (V,E), taki, w którym wierzchołki v V odpowiadają transakcjom ze zbioru τ, natomiast zbiór krawędzi E = {(T i, T j ) : T i T j } Twierdzenie o konfliktowej uszeregowalności Realizacja S(τ) zbioru transakcji jest konfliktowouszeregowalna wtedy i tylko wtedy, gdy jej graf konfliktowej uszeregowalności CSRG(S(τ)) jest acykliczny
Przykład 29 Realizacje odtwarzalne (1) 30 Dla poniŝszych realizacji narysuj graf uszeregowalności konfliktowej i, na podstawie cech grafu, określ, czy dana realizacja jest konfliktowo uszeregowalna. Jeśli jest, podaj równowaŝną jej realizację sekwencyjną. r 1 (x) r 2 (z) r 1 (z) r 3 (x) r 3 (y) w 1 (x) w 3 (y) r 2 (y) w 2 (z) w 2 (y) c 1 c 2 c 3 r 1 (x) r 2 (z) r 3 (x) r 1 (z) r 2 (y) r 3 (y) w 1 (x) w 2 (z) w 3 (y) w 2 (y) c 1 c 2 c 3 Czy własność uszeregowalności gwarantuje wolność od anomalii? Przykład: H = r 1 (x) w 1 (x) r 1 (y) r 2 (x) w 1 (y) r 2 (y) c 2 r 1 (z) w 1 (z) crash c 1 Historia H jest uszeregowalna, ale nie jest wolna od anomalii (brudny odczyt). Po restarcie systemu transakcja T 2 nie zostanie poprawnie odtworzona Definicje 31 Realizacje odtwarzalne (2) 32 Mówimy, Ŝe transakcja T i czyta daną x z transakcji T j w realizacji H jeŝeli: w j (x) < r i (x) a j < r i(x) jeŝeli istnieje operacja w k (x) taka, Ŝe w j (x) < w k (x) < r i (x), wówczas a k < r i (x) Mówimy, Ŝe transakcja T i czyta z transakcji T j w realizacji H, jeŝeli T i czyta jakąś daną z transakcji T j w realizacji H Realizacja H jest odtwarzalna (ang. recoverable) (RC) wówczas, jeśli gdy transakcja T i czyta z transakcji T j (i j) w realizacji H i c i H, to c j <c i Realizacja H unika kaskadowych wycofań (ang. avoids cascading aborts) (ACA) wówczas, jeśli gdy transakcja T i czyta z transakcji T j (i j), to c j <r i (x) Realizacja H jest ścisła (ang. strict) (ST) wówczas, jeśli gdy w j (x)<o i (x) (i j), zachodzi a j <o i (x) lub c j <o i (x), gdzie o i (x) jest jedną z operacji r i [x] lub w i [x]
Realizacje odtwarzalne (3) 33 ZaleŜności między zbiorami realizacji RC, ACA i ST 34 Przykład: ST ACA RC T 1 = w 1 [x] w 1 [y] w 1 [z] c 1 T 2 = r 2 [u] w 2 [x] r 2 [y] w 2 [y] c 2 H 1 = w 1 [x] w 1 [y] r 2 [u] w 2 [x] r 2 [y] w 2 [y] c 2 w 1 [z] c 1 H 2 = w 1 [x] w 1 [y] r 2 [u] w 2 [x] r 2 [y] w 2 [y] w 1 [z] c 1 c 2 H 3 = w 1 [x] w 1 [y] r 2 [u] w 2 [x] w 1 [z] c 1 r 2 [y] w 2 [y] c 2 H 4 = w 1 [x] w 1 [y] r 2 [u] w 1 [z] c 1 w 2 [x] r 2 [y] w 2 [y] c 2 wszystkie RC ACA ST SR sekwencyjne Realizacje uszeregowalne 35 Graf uszergowalności (1) 36 Realizacja S(τ) zbioru transakcji τ jest poprawna (uszeregowalna) jeŝeli jest ona obrazowo i stanowo równowaŝna jakiejkolwiek sekwencyjnej realizacji tego zbioru transakcji. Realizację taką nazywamy realizacją uszeregowalną (SR) Grafem uszeregowalności realizacji S(τ) nazywamy skierowany graf SG(S(τ)) = (V,E), taki, w którym wierzchołki v V odpowiadają transakcjom ze zbioru τ, natomiast zbiór krawędzi jest zdefiniowany następująco: jeŝeli istnieje dana x, i operacje r i (x) w j (x) S(τ), takie, Ŝe r i (x) czyta wartość danej x zapisanej przez operację w j (x), to (T j, T i ) E jeŝeli T j T 0, T i T f i istnieje operacja w k (x) S(τ), T k T 0, to (T k, T j ) E lub (T i, T k ) E jeŝeli T j T 0, to (T 0,T j ) E jeŝeli T j =T 0, T i T f i istnieje operacja w k (x) S(τ), T k T 0, to (Ti, T k ) E jeŝeli T i =T f, i istnieje w k (x) S(τ), to (T k, T j ) E
Graf uszeregowalności (2) 37 38 Uszeregowalność transakcji - klasyfikacja Dana realizacja S(τ) jest uszeregowalna wtedy i tylko wtedy, gdy moŝna skonstruować dla niej acykliczny skierowany graf uszeregowlaności SG(S(τ)) τ wszystkie RC ACA ST SR CSR sekwencyjne