Oryginał: Hector Garcia-Molina8. Dzienniki i odtwarzanie1 Systemy zarządzania bazami danych 8. Dzienniki i odtwarzanie
Oryginał: Hector Garcia-Molina8. Dzienniki i odtwarzanie2 Integralność/poprawność danych Chcemy by dane zawsze były dokładne lub inaczej poprawne EMP Nazwisko Miller Tusk Jaro Wiek
Oryginał: Hector Garcia-Molina8. Dzienniki i odtwarzanie3 Więzy integralności Predykaty, które muszą być spełnione przez dane Przykłady - x jest kluczem relacji R - zależność funkcyjna x y zachodzi w R - dom(x) = { Czerwony, Żółty, Zielony } jest poprawnym indeksem atrybutu x relacji R - żaden pracownik nie powinien zarabiać powyżej dwóch średnich pensji (socjalizm?)
Oryginał: Hector Garcia-Molina8. Dzienniki i odtwarzanie4 Integralność Stan integralny =stan, w którym są spełnione wszystkie więzy integralności Integralna baza danych =baza danych w stanie integralnym
Oryginał: Hector Garcia-Molina8. Dzienniki i odtwarzanie5 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
Oryginał: Hector Garcia-Molina8. Dzienniki i odtwarzanie6 Możliwa emulacja Wiezy transakcyjne można emulować zwykłymi (przy pewnych zmianach schematu): Konto Więzy: usunięte? saldo = 0 Nr….saldousunięte?
Oryginał: Hector Garcia-Molina8. Dzienniki i odtwarzanie7 Przykład 2: Baza danych ma odzwierciedlać stan świata rzeczywistego Baza danych Rzeczywistość Wiezy integralności nie dają spójności
Oryginał: Hector Garcia-Molina8. Dzienniki i odtwarzanie8 Tylko integralność jest jednak dostępna... Obserwacja: Baza danych musi mieć możliwość bycia nieintegralną Przykład więzów : a 1 + a 2 +…. a n = S Zaksięguj 100zł na a 2 : a 2 a S S –Suma aktywów = Sum pasywów Ale nie tuż po pierwszej operacji podwójnego księgowania
Oryginał: Hector Garcia-Molina8. Dzienniki i odtwarzanie9 a 2 S Przykład więzów : a 1 + a 2 +…. a n = S Zaksięguj 100zł na a 2 : a 2 a S S + 100
Oryginał: Hector Garcia-Molina8. Dzienniki i odtwarzanie10 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
Oryginał: Hector Garcia-Molina8. Dzienniki i odtwarzanie11 Poprawność Jeśli zakonczą się wszystkie transakcje, to baza danych będzie integralna Każda transakcja widzi integralny stan bazy danych
Oryginał: Hector Garcia-Molina8. Dzienniki i odtwarzanie12 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
Oryginał: Hector Garcia-Molina8. Dzienniki i odtwarzanie13 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
Oryginał: Hector Garcia-Molina8. Dzienniki i odtwarzanie14 Model awarii Zdarzenia Pożądane Niepożądane Spodziewane Niespodziewane procesor pamięćdysk CPU M D
Oryginał: Hector Garcia-Molina8. Dzienniki i odtwarzanie15 Zdarzenie pożądane: czytaj podręcznik produktu…. Zdarzenia niepożądane spodziewane: Awaria systemu: - utrata zawartości pamięci - zawieszenie procesora Zdarzenia niepożądane niespodziewane: wszystko inne! I to by było na tyle!!
Oryginał: Hector Garcia-Molina8. Dzienniki i odtwarzanie16 Utrata danych na dysku Utrata pamięci bez zawieszenia procesora Supernowa akurat gdzieś blisko procesora Niepożądane niespodziewane
Oryginał: Hector Garcia-Molina8. Dzienniki i odtwarzanie17 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
Oryginał: Hector Garcia-Molina8. Dzienniki i odtwarzanie18 Hierarchia pamięci Pamięć Dysk x x
Oryginał: Hector Garcia-Molina8. Dzienniki i odtwarzanie19 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 trzeba wartość x w bloku t t zmienna lokalna, x obiekt bazy danych
Oryginał: Hector Garcia-Molina8. Dzienniki i odtwarzanie20 Niedokończona transakcja PrzykładWięzy: A=B T 1 : A A 2 B B 2
Oryginał: Hector Garcia-Molina8. Dzienniki i odtwarzanie21 T 1 :Read (A,t); t t 2 Write (A,t); Read (B,t); t t 2 Write (B,t); Output (A); Output (B); A: 8 B: 8 A: 8 B: 8 pamięć dysk 16 awaria!
Oryginał: Hector Garcia-Molina8. Dzienniki i odtwarzanie22 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
Oryginał: Hector Garcia-Molina8. Dzienniki i odtwarzanie23 T 1 :Read (A,t); t t 2 A=B Write (A,t); Read (B,t); t t 2 Write (B,t); Output (A); Output (B); A:8 B:8 A:8 B:8 pamięć dysk dziennik Dziennik wycofań, zapis natychmiastowy
Oryginał: Hector Garcia-Molina8. Dzienniki i odtwarzanie24 Pewna komplikacja Dziennik najpierw powstaje w pamięci Nie idzie na dysk przy każdej akcji pamięć BD Dziennik A: 8 16 B: 8 16 Log: A: 8 B: 8 16 Zły stan # 1
Oryginał: Hector Garcia-Molina8. Dzienniki i odtwarzanie25 Pewna komplikacja Dziennik najpierw powstaje w pamięci Nie idzie na dysk przy każdej akcji pamięć BD Dziennik A: 8 16 B: 8 16 Log: A: 8 B: 8 16 Zły stan # 2...
Oryginał: Hector Garcia-Molina8. Dzienniki i odtwarzanie26 Reguły dziennika wycofań (1)Dla każdej akcji wygeneruj wpis dziennika (zawierający starą wartość) (2) Zanim zmieniony x znajdzie się na dysku, dotyczący go wpis dziennika musi trafić na dysk. (zapis wyprzedzający – WAL write ahead logging ) (3) Zanim do dziennika na dysku trafi wpis commit, wszystkie zmiany w danych muszą być zapisane na dysku
Oryginał: Hector Garcia-Molina8. Dzienniki i odtwarzanie27 Odtwarzanie z dziennika wycofań Dla każdej Ti mającej w dzienniku: - Jeśli lub są w dzienniku, nic nie rób - W p.p. dla każdego w dzienniku: write (X, v) output (X ) zapisz do dziennika Czy to poprawne??
Oryginał: Hector Garcia-Molina8. Dzienniki i odtwarzanie28 Odtwarzanie w tył dziennika wycofań (1) Niech S = zbiór transakcji mających w dzienniku wpis ale nie mających wpisu ani (2) Dla każdego wpisu dziennika, 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
Oryginał: Hector Garcia-Molina8. Dzienniki i odtwarzanie29 Awaria w czasie odtwarzania? Nie ma problemu Tu: wycofanie jest idempotentne f(f(x)) = f(x) Nie zawsze tak musi być
Oryginał: Hector Garcia-Molina8. Dzienniki i odtwarzanie30 Dziennik powtorzeń, zapis opóźniony T 1: Read(A,t); t t 2; write (A,t); Read(B,t); t t 2; write (B,t); Output(A); Output(B) A: 8 B: 8 A: 8 B: 8 pamięć Baza danych Dziennik 16 output 16
Oryginał: Hector Garcia-Molina8. Dzienniki i odtwarzanie31 Reguły dziennika powtórzeń (1)Dla każdej akcji wygeneruj wpis dziennika (zawierający nową wartość) (2) Zanim zmieniony x znajdzie 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
Oryginał: Hector Garcia-Molina8. Dzienniki i odtwarzanie32 Dla każdej Ti mającej w dzienniku –Dla każdego wpisu dziennika Write(X, v) Output(X) Odtwarzanie z dziennika powtórzeń Czy to jest poprawne??
Oryginał: Hector Garcia-Molina8. Dzienniki i odtwarzanie33 (1) Niech S = zbiór transakcji mający w dzienniku ale nie (2) Dla każdego wpisu W porzadku chronologiczny, rób: - jeśli Ti S, Write(X, v) Output(X) (3) Dla każdej Ti S, wpisz do dziennika Odtwarzanie w przód z d. powtórzeń
Oryginał: Hector Garcia-Molina8. Dzienniki i odtwarzanie34 Łączenie wpisów Chcemy opóźnić zapisy gorących obiektów Np. X to stan kasy: T1:... update X... T2:... update X... T3:... update X... T4:... update X... Akcje: write X output X write X output X write X output X write X output X łączny (punkt kontrolny)
Oryginał: Hector Garcia-Molina8. Dzienniki i odtwarzanie35 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 bez akcji prosty punkt kontrolny
Oryginał: Hector Garcia-Molina8. Dzienniki i odtwarzanie36 Co przy odtwarzaniu? Dziennik powtórzeń (dysk) Checkpoint Bum!...
Oryginał: Hector Garcia-Molina8. Dzienniki i odtwarzanie37 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
Oryginał: Hector Garcia-Molina8. Dzienniki i odtwarzanie38 Dziennik wycofań i powtórzeń Gdy zmiana X, to wpisz do dziennika
Oryginał: Hector Garcia-Molina8. Dzienniki i odtwarzanie39 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
Oryginał: Hector Garcia-Molina8. Dzienniki i odtwarzanie40 Niespoczynkowy punkt kontrolny Dziennik żebybrudne wycofaćstrony zrzucone Start-ckpt aktywne: Ti,Tj,... end ckpt...
Oryginał: Hector Garcia-Molina8. Dzienniki i odtwarzanie41 Co się dzieje przy odtwarzaniu? Dziennik brak commit dla T1 T 1,- a... Ckpt T 1... Ckpt end... T1-bT1-b Wycofaj T 1 (wycofaj a,b)
Oryginał: Hector Garcia-Molina8. Dzienniki i odtwarzanie42 Powtórzenie Dziennik... T1aT1a T1bT1b T1cT1c T 1 cmt... ckpt- end ckpt-s T 1 Powtórz T1: (powtórz b,c)
Oryginał: Hector Garcia-Molina8. Dzienniki i odtwarzanie43 Proces odtwarzania Przebieg wstecz (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 przebieg wprzód start check- point
Oryginał: Hector Garcia-Molina8. Dzienniki i odtwarzanie44 Akcje materialne (realne) Np. wypłata z bankomatu Ti = a 1 a 2 …... a j …... A n Wykonuj je po zatwierdzeniu Zaplanuj ręczne procedury odtwarzania PLN
Oryginał: Hector Garcia-Molina8. Dzienniki i odtwarzanie45 Awaria nośnika A: 16 Rozwiązanie: Rób kopie zapasowe!
Oryginał: Hector Garcia-Molina8. Dzienniki i odtwarzanie46 1: potrójna nadmiarowość Utrzymuj 3 kopie na niezależnych dyskach Output(X) --> trzy zapisy Input(X) --> trzy odczyty + głosowanie X1X2 X3
Oryginał: Hector Garcia-Molina8. Dzienniki i odtwarzanie47 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
Oryginał: Hector Garcia-Molina8. Dzienniki i odtwarzanie48 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
Oryginał: Hector Garcia-Molina8. Dzienniki i odtwarzanie49 Kiedy można obciąć dziennik? check- point kopia zapas. ostatnie potrz. wycofan. Nie jest potrzebne po awarii nośnika Nie jest potrzebne do wycofań po awarii systemu Nie jest potrzebne do powtórzeń po awarii systemu dziennik czas
Oryginał: Hector Garcia-Molina8. Dzienniki i odtwarzanie50 Podsumowanie Integralność danych Jedno ze źródeł problemów: awarie - Dziennik - Nadmiarowość Drugie ze źródeł problemów: współdzielenie danych... później