500 likes | 587 Views
Systemy zarządzania bazami danych. 8. Dzienniki i odtwarzanie. Integralność/poprawność danych. Chcemy by dane zawsze były „dokładne ” lub inaczej „poprawne” EMP. Nazwisko. Wiek. Miller Tusk Jaro. 52 3421 1. Więzy integralności. Predykaty, które muszą być spełnione przez dane
E N D
Systemy zarządzania bazami danych 8. Dzienniki i odtwarzanie 8. Dzienniki i odtwarzanie
Integralność/poprawność danych • Chcemy by dane zawsze były„dokładne” lub inaczej „poprawne” EMP Nazwisko Wiek Miller Tusk Jaro 52 3421 1 8. Dzienniki i odtwarzanie
Więzy integralności • Predykaty, które muszą być spełnione przez dane • Przykłady - xjest kluczem relacji R - zależność funkcyjna xyzachodzi w R - dom(x) = { Czerwony, Żółty, Zielony } - a jest poprawnym indeksem atrybutu x relacji R - żaden pracownik nie powinien zarabiać powyżej dwóch średnich pensji (socjalizm?) 8. Dzienniki i odtwarzanie
Integralność • Stan integralny • stan, w którym są spełnione wszystkie więzy integralności • Integralna baza danych • baza danych w stanie integralnym 8. Dzienniki i odtwarzanie
Takie więzy nie załatwiają wszystkiego • Przykład 1: więzy transakcyjne: • Gdy zmienia się Zarobek, nowy Zarobek > stary Zarobek • Gdy usuwane jest Konto, saldo = 0 8. Dzienniki i odtwarzanie
Możliwa emulacja • Wiezy transakcyjne można emulować zwykłymi (przy pewnych zmianach schematu): Konto Więzy: usunięte? saldo = 0 Nr …. saldo usunięte? 8. Dzienniki i odtwarzanie
Wiezy integralności nie dają spójności • Przykład 2:Baza danych ma odzwierciedlać stan świata rzeczywistego Rzeczywistość Baza danych 8. Dzienniki i odtwarzanie
Tylko integralność jest jednak dostępna... • Obserwacja: Baza danych musi mieć możliwość bycia nieintegralną • Przykład więzów : a1 + a2 +…. an = S Zaksięguj 100złnaa2: a2 a2 + 100 S S + 100 • Suma aktywów = Sum pasywów • Ale nie tuż po pierwszej operacji podwójnego księgowania 8. Dzienniki i odtwarzanie
Przykład więzów : a1 + a2 +…. an = S Zaksięguj 100złnaa2: a2 a2 + 100 S S + 100 a2 S . . . . . . 50 150 150 . . . . . . 1000 1000 1100 8. Dzienniki i odtwarzanie
Transakcja • Ciąg operacji zachowujących integralność • Założenie: jeśli transakcja T zaczyna działanie w stanie integralnym i działa w izolacji, to pozostawia bazę w stanie integralnym Integralna baza danych Integralna baza danych’ Transakcja 8. Dzienniki i odtwarzanie
Poprawność • Jeśli zakonczą się wszystkie transakcje, to baza danych będzie integralna • Każda transakcja widzi integralny stan bazy danych 8. Dzienniki i odtwarzanie
Jak może dojść do złamania więzów? • Błąd w transakcji • Błąd w SZBD (oprogramowanie jak każde) • Awaria sprzętu n.p., awaria sprzetu powoduje zmianę sald kont • Błędne nałożenie się transakcji n.p: T1: daje 10% podwyżki programistom T2: zmienia programistów w analityków systemowych 8. Dzienniki i odtwarzanie
Abstrahujemy od: • Pisania poprawnych transakcji • Pisania poprawnych SZBD • Sprawdzania więzów spojności i czyszczenia danych • Metody z tego wykładu nie są od nich zależne 8. Dzienniki i odtwarzanie
Model awarii Zdarzenia Pożądane Niepożądane Spodziewane Niespodziewane procesor pamięć dysk CPU D M 8. Dzienniki i odtwarzanie
I to by było na tyle!! Zdarzenia niepożądane niespodziewane: wszystko inne! Zdarzenie pożądane:czytaj podręcznik produktu…. Zdarzenia niepożądane spodziewane: Awaria systemu: - utrata zawartości pamięci - zawieszenie procesora 8. Dzienniki i odtwarzanie
Niepożądane niespodziewane • Utrata danych na dysku • Utrata pamięci bez zawieszenia procesora • Supernowa akurat gdzieś blisko procesora 8. Dzienniki i odtwarzanie
Czy ten model ma sens? Rozwiązanie:Kontrole niskopoziomowe i nadmiarowość w celu zwiększenia prawdopodobieństwa adekwatności modelu Np., Powiel dyskowe składowisko danych Parzystość pamięci, sumy kontrolne Kontrole na procesorze 8. Dzienniki i odtwarzanie
Hierarchia pamięci x x Pamięć Dysk 8. Dzienniki i odtwarzanie
Podstawowe operacje • Input (x): blok ze zmienną x pamięć • Output (x): blok ze zmienną x dysk • Read (x,t): zrób input(x) jeśli trzeba t wartość x w bloku • Write (x,t): zrób input(x) jeśli trzebawartość x w bloku t t zmienna lokalna, x obiekt bazy danych 8. Dzienniki i odtwarzanie
Niedokończona transakcja PrzykładWięzy: A=B T1: A A 2 B B 2 8. Dzienniki i odtwarzanie
awaria! 16 16 16 T1: Read (A,t); t t2 Write (A,t); Read (B,t); t t2 Write (B,t); Output (A); Output (B); A: 8 B: 8 A: 8 B: 8 pamięć dysk 8. Dzienniki i odtwarzanie
Atomowość • Wykonaj wszystkie akcje transakcji albo żadną • Rozwiązanie: dziennik wycofań + zapis natychmiastowy • Specjalne podziękowania dla Jasia i Małgosi • Jeszcze zanim spotkali Babę Jagę • Dziennik trwały i nietrwały 8. Dzienniki i odtwarzanie
<T1, start> <T1, A, 8> 16 16 16 16 Dziennik wycofań, zapis natychmiastowy T1: Read (A,t); t t2 A=B Write (A,t); Read (B,t); t t2 Write (B,t); Output (A); Output (B); A:8 B:8 A:8 B:8 <T1, B, 8> <T1, commit> dysk pamięć dziennik 8. Dzienniki i odtwarzanie
16 Zły stan # 1 Pewna komplikacja • Dziennik najpierw powstaje w pamięci • Nie idzie na dysk przy każdej akcji pamięć BD Dziennik A: 8 B: 8 A: 8 16 B: 8 16 Log: <T1,start> <T1, A, 8> <T1, B, 8> 8. Dzienniki i odtwarzanie
16 Zły stan # 2 Pewna komplikacja • Dziennik najpierw powstaje w pamięci • Nie idzie na dysk przy każdej akcji pamięć BD Dziennik A: 8 B: 8 A: 8 16 B: 8 16 Log: <T1,start> <T1, A, 8> <T1, B, 8> <T1, commit> ... <T1, B, 8> <T1, commit> 8. Dzienniki i odtwarzanie
Reguły dziennika wycofań • Dla każdej akcji wygeneruj wpis dziennika (zawierający starą wartość) (2) Zanim zmieniony xznajdzie się na dysku, dotyczący go wpis dziennika musi trafić na dysk. (zapis wyprzedzający – WALwrite ahead logging) (3) Zanim do dziennika na dysku trafi wpis commit, wszystkie zmiany w danych muszą być zapisane na dysku 8. Dzienniki i odtwarzanie
Odtwarzanie z dziennika wycofań Dla każdej Ti mającej <Ti, start> w dzienniku: - Jeśli <Ti,commit> lub <Ti,abort> są w dzienniku, nic nie rób- W p.p.dla każdego <Ti, X, v> w dzienniku: write (X, v) output (X ) zapisz <Ti, abort> do dziennika Czy to poprawne?? 8. Dzienniki i odtwarzanie
Odtwarzanie w tył dziennika wycofań (1) Niech S = zbiór transakcji mających w dzienniku wpis <Ti, start> ale nie mających wpisu <Ti, commit> ani <Ti, abort> (2) Dla każdego wpisu dziennika <Ti, X, v>, w odwrotnym porzadku chronologicznym rób: - jeśli Ti S - write (X, v) - output (X) (3) Dla każdej transakcji Ti S rób - zapisz do dziennika <Ti, abort> 8. Dzienniki i odtwarzanie
Awaria w czasie odtwarzania? • Nie ma problemu • Tu: wycofanie jest idempotentne f(f(x)) = f(x) • Nie zawsze tak musi być 8. Dzienniki i odtwarzanie
<T1, start> <T1, A, 16> <T1, B, 16> <T1, commit> output 16 16 16 16 Dziennik powtorzeń, zapis opóźniony T1: Read(A,t); t t2; write (A,t); Read(B,t); t t2; write (B,t); Output(A); Output(B) A: 8 B: 8 A: 8 B: 8 <T1, end> Baza danych pamięć Dziennik 8. Dzienniki i odtwarzanie
Reguły dziennika powtórzeń • Dla każdej akcji wygeneruj wpis dziennika (zawierający nową wartość) (2) Zanim zmieniony xznajdzie się na dysku, wszystkie wpisy dotyczące transakcji, która zmodyfikowała x muszą trafić na dysk. (3) Przy commit, zrzuć dziennik na dysk (flush) (4) Po wykonaniu wszystkich zmian w bazie danych, dodaj do dzienika wpis END 8. Dzienniki i odtwarzanie
Odtwarzanie z dziennika powtórzeń • Dla każdej Ti mającej w dzienniku <Ti, commit> • Dla każdego wpisu dziennika <Ti, X, v> Write(X, v) Output(X) Czy to jest poprawne?? 8. Dzienniki i odtwarzanie
Odtwarzanie w przód z d. powtórzeń (1) Niech S = zbiór transakcji mający w dzienniku <Ti, commit> ale nie <Ti, end> (2) Dla każdego wpisu <Ti, X, v> W porzadku chronologiczny, rób: - jeśli Ti S,Write(X, v) Output(X) (3) Dla każdej Ti S, wpisz do dziennika <Ti, end> 8. Dzienniki i odtwarzanie
łączny <end> (punkt kontrolny) Łączenie wpisów <Ti, end> • Chcemy opóźnić zapisy gorących obiektów Akcje: write X output X write X output X write X output X write X output X Np. X to stan kasy: T1: ... update X... T2: ... update X... T3: ... update X... T4: ... update X... 8. Dzienniki i odtwarzanie
Punkt kontrolny • bez akcji <ti, end> • prosty punkt kontrolny Co pewien czas: (1) Przestań wpuszczać nowe transakcje (2) Czekaj na koniec wszystkich transakcji (3) Zrzuć (flush) dziennik na dysk (4) Zrzuć (flush) strony danych na dysk • Ale nie usuwaj ich z pamięci (5) Wpisz do dziennika „punkt kontrolny” (6) Wznów przetwarzanie transakcji 8. Dzienniki i odtwarzanie
<T1,A,16> <T2,B,17> <T1,commit> <T2,commit> Checkpoint <T3,C,21> Co przy odtwarzaniu? Dziennik powtórzeń (dysk) Bum! ... ... ... ... ... ... 8. Dzienniki i odtwarzanie
Poważne wady • Dziennik wycofań • Nie umożliwia odtwarzania z kopii zapasowej • Dziennik powtórzeń • Zmodyfikowane bloki muszą być trzymane w pamięci aż do zatwierdzenia 8. Dzienniki i odtwarzanie
Dziennik wycofań i powtórzeń Gdy zmiana X, to wpisz do dziennika <Ti, Xid, nowa wartość X, stara wartość X> 8. Dzienniki i odtwarzanie
Reguły dziennika wycofań i powtórzeń • Stronę X można zapisać przed lub po zatwierdzeniu Ti • Wpisy dziennika muszą być zrzucane (flush) przed zapisem odpowiedniej zmodyfikowanej strony (WAL) • Zrzuć (flush) ale tylko dziennik przy zatwierdzeniu 8. Dzienniki i odtwarzanie
Niespoczynkowy punkt kontrolny Start-ckpt aktywne: Ti,Tj,... end ckpt Dziennik żeby brudne wycofaćstrony zrzucone ... ... ... ... 8. Dzienniki i odtwarzanie
Co się dzieje przy odtwarzaniu? Dziennikbrak commit dla T1 ... T1,- a ... Ckpt T1 ... Ckpt end ... T1- b Wycofaj T1 (wycofaj a,b) 8. Dzienniki i odtwarzanie
Powtórzenie Dziennik ... T1 a ... ckpt-s T1 ... T1 b ... ckpt- end ... T1 c ... T1 cmt ... Powtórz T1: (powtórz b,c) 8. Dzienniki i odtwarzanie
Proces odtwarzania • Przebiegwstecz(koniec dz. ostatni początek pktu kontr.) • Wyznacz S = zbiór transakcji zatwierdzonych • Wycofaj akcje transakcje spoza S • Wycofaj niezakończone transakcje • Przemierz łańcuchy wycofań transakcji (lista transakcji aktywnych punktu kontr.) - S • Przebieg wprzód (ostatni początek pktu kontr. koniec dz.) • Powtórz akcje transakcji z S przebieg wstecz start check- point przebieg wprzód 8. Dzienniki i odtwarzanie
Akcje „materialne” („realne”) • Np. wypłata z bankomatu Ti = a1 a2 …... aj …... An • Wykonuj je po zatwierdzeniu • Zaplanuj ręczne procedury odtwarzania PLN 8. Dzienniki i odtwarzanie
Awaria nośnika A: 16 Rozwiązanie:Rób kopie zapasowe! 8. Dzienniki i odtwarzanie
1: potrójna nadmiarowość • Utrzymuj 3 kopie na niezależnych dyskach • Output(X) --> trzy zapisy • Input(X) --> trzy odczyty + głosowanie X3 X1 X2 8. Dzienniki i odtwarzanie
2: nadmiarowe zapisy, jeden odczyt • Utrzymuj N kopii na niezależnych dyskach • Output(X) --> trzy zapisy • Input(X) --> Odczyt z jednej kopii - jeśli OK, gotowe - wpp. użyj innej Przy zalożeniu że można wykryć błędy w danych 8. Dzienniki i odtwarzanie
3: Kopia zapasowa + dziennik kopia zapasowa baza danych dziennik • Jeśli stracono bazę danych • odtwórz bazę z kopii zapasowej • przywróć jej aktualny stan używając dziennika • Kopia zapasowa może być tworzona na gorąco • analogicznie jak punkt kontrolny • trzeba zaznaczyć początek i koniec w dzienniku 8. Dzienniki i odtwarzanie
Kiedy można obciąć dziennik? dziennik ostatnie potrz. wycofan. check- point kopia zapas. czas Nie jest potrzebne po awarii nośnika Nie jest potrzebne do wycofań po awarii systemu Nie jest potrzebne do powtórzeń po awarii systemu 8. Dzienniki i odtwarzanie
Podsumowanie • Integralność danych • Jedno ze źródeł problemów: awarie - Dziennik - Nadmiarowość • Drugie ze źródeł problemów: współdzielenie danych... później 8. Dzienniki i odtwarzanie