Systemy zarządzania bazami danych
description
Transcript of Systemy zarządzania bazami danych
Oryginał: Hector Garcia-Molina
8. Dzienniki i odtwarzanie 1
Systemy zarządzania bazami danych
8. Dzienniki i odtwarzanie
Oryginał: Hector Garcia-Molina
8. Dzienniki i odtwarzanie 2
Integralność/poprawność danych
• Chcemy by dane zawsze były „dokładne” lub inaczej „poprawne”
EMP Nazwisko
MillerTuskJaro
Wiek
523421
1
Oryginał: Hector Garcia-Molina
8. Dzienniki i odtwarzanie 3
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-Molina
8. Dzienniki i odtwarzanie 4
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-Molina
8. Dzienniki i odtwarzanie 5
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-Molina
8. Dzienniki i odtwarzanie 6
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?
Oryginał: Hector Garcia-Molina
8. Dzienniki i odtwarzanie 7
• Przykład 2: Baza danych ma odzwierciedlać stan świata rzeczywistego
Bazadanych
Rzeczywistość
Wiezy integralności nie dają spójności
Oryginał: Hector Garcia-Molina
8. Dzienniki i odtwarzanie 8
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ł na a2: a2 a2 + 100 S S + 100
– Suma aktywów = Sum pasywów• Ale nie tuż po pierwszej operacji podwójnego
księgowania
Oryginał: Hector Garcia-Molina
8. Dzienniki i odtwarzanie 9
a2
S
.
.50
.
.1000
.
.150
.
.1000
.
.150
.
.1100
• Przykład więzów : a1 + a2 +…. an = S
Zaksięguj 100zł na a2: a2 a2 + 100 S S + 100
Oryginał: Hector Garcia-Molina
8. Dzienniki i odtwarzanie 10
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
Integralnabaza danych
Integralnabaza danych’Transakcja
Oryginał: Hector Garcia-Molina
8. Dzienniki i odtwarzanie 11
Poprawność
• Jeśli zakonczą się wszystkie transakcje, to baza danych będzie integralna
• Każda transakcja widzi integralny stan bazy danych
Oryginał: Hector Garcia-Molina
8. Dzienniki i odtwarzanie 12
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-Molina
8. Dzienniki i odtwarzanie 13
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-Molina
8. Dzienniki i odtwarzanie 14
Model awarii
Zdarzenia Pożądane Niepożądane
Spodziewane Niespodziewane
procesor
pamięć dysk
CPU
M D
Oryginał: Hector Garcia-Molina
8. Dzienniki i odtwarzanie 15
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-Molina
8. Dzienniki i odtwarzanie 16
• Utrata danych na dysku• Utrata pamięci bez zawieszenia
procesora• Supernowa akurat gdzieś blisko
procesora
Niepożądane niespodziewane
Oryginał: Hector Garcia-Molina
8. Dzienniki i odtwarzanie 17
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-Molina
8. Dzienniki i odtwarzanie 18
Hierarchia pamięci
Pamięć Dysk
x x
Oryginał: Hector Garcia-Molina
8. Dzienniki i odtwarzanie 19
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
tt zmienna lokalna, x obiekt bazy danych
Oryginał: Hector Garcia-Molina
8. Dzienniki i odtwarzanie 20
Niedokończona transakcja
Przykład Więzy: A=B T1: A A 2 B B 2
Oryginał: Hector Garcia-Molina
8. Dzienniki i odtwarzanie 21
T1: Read (A,t); t t2Write (A,t);Read (B,t); t t2Write (B,t);Output (A);Output (B);
A: 8B: 8
A: 8B: 8
pamięć dysk
1616
16
awaria!
Oryginał: Hector Garcia-Molina
8. Dzienniki i odtwarzanie 22
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-Molina
8. Dzienniki i odtwarzanie 23
T1: Read (A,t); t t2 A=B
Write (A,t);Read (B,t); t t2Write (B,t);Output (A);Output (B);
A:8B:8
A:8B:8
pamięć dysk dziennik
Dziennik wycofań, zapis natychmiastowy
1616
<T1, start><T1, A, 8>
<T1, commit>16 <T1, B, 8>
16
Oryginał: Hector Garcia-Molina
8. Dzienniki i odtwarzanie 24
Pewna komplikacja• Dziennik najpierw powstaje w
pamięci• Nie idzie na dysk przy każdej akcji
pamięć
BD
Dziennik
A: 8 16B: 8 16Log:<T1,start><T1, A, 8><T1, B, 8>
A: 8B: 8
16Zły stan
# 1
Oryginał: Hector Garcia-Molina
8. Dzienniki i odtwarzanie 25
Pewna komplikacja• Dziennik najpierw powstaje w
pamięci• Nie idzie na dysk przy każdej akcji
pamięć
BD
Dziennik
A: 8 16B: 8 16Log:<T1,start><T1, A, 8><T1, B, 8><T1, commit>
A: 8B: 8
16Zły stan
# 2
<T1, B, 8><T1, commit>
...
Oryginał: Hector Garcia-Molina
8. Dzienniki i odtwarzanie 26
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-Molina
8. Dzienniki i odtwarzanie 27
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??
Oryginał: Hector Garcia-Molina
8. Dzienniki i odtwarzanie 28
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>
Oryginał: Hector Garcia-Molina
8. Dzienniki i odtwarzanie 29
Awaria w czasie odtwarzania?
• Nie ma problemu• Tu: wycofanie jest idempotentne
f(f(x)) = f(x)• Nie zawsze tak musi być
Oryginał: Hector Garcia-Molina
8. Dzienniki i odtwarzanie 30
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: 8B: 8
A: 8B: 8
pamięć Baza danychDzienni
k
1616
<T1, start><T1, A, 16><T1, B, 16>
<T1, commit><T1, end>
output1616
Oryginał: Hector Garcia-Molina
8. Dzienniki i odtwarzanie 31
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-Molina
8. Dzienniki i odtwarzanie 32
• Dla każdej Ti mającej w dzienniku <Ti, commit> – Dla każdego wpisu dziennika <Ti, X, v>
Write(X, v)Output(X)
Odtwarzanie z dziennika powtórzeń
Czy to jest poprawne??
Oryginał: Hector Garcia-Molina
8. Dzienniki i odtwarzanie 33
(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>
Odtwarzanie w przód z d. powtórzeń
Oryginał: Hector Garcia-Molina
8. Dzienniki i odtwarzanie 34
Łączenie wpisów <Ti, end>• 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 Xoutput Xwrite Xoutput Xwrite Xoutput Xwrite Xoutput X
łączny <end> (punkt kontrolny)
Oryginał: Hector Garcia-Molina
8. Dzienniki i odtwarzanie 35
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 <ti, end>• prosty punkt kontrolny
Oryginał: Hector Garcia-Molina
8. Dzienniki i odtwarzanie 36
Co przy odtwarzaniu?
Dziennik powtórzeń (dysk)
<T1
,A,1
6>
<T1
,com
mit
>
Ch
eck
poin
t
<T2
,B,1
7>
<T2
,com
mit
>
<T3
,C,2
1>
Bum!... ... ... ...
...
...
Oryginał: Hector Garcia-Molina
8. Dzienniki i odtwarzanie 37
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-Molina
8. Dzienniki i odtwarzanie 38
Dziennik wycofań i powtórzeń
Gdy zmiana X, to wpisz do dziennika<Ti, Xid, nowa wartość X, stara wartość
X>
Oryginał: Hector Garcia-Molina
8. Dzienniki i odtwarzanie 39
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-Molina
8. Dzienniki i odtwarzanie 40
Niespoczynkowy punkt kontrolny
Dziennik
żeby brudne wycofać strony
zrzucone
Start-ckptaktywne:Ti,Tj,...
endckpt
.........
...
Oryginał: Hector Garcia-Molina
8. Dzienniki i odtwarzanie 41
Co się dzieje przy odtwarzaniu?
Dziennik brak commit dla T1
T1,-a
...CkptT1
...Ckptend
...T1-b
...
Wycofaj T1 (wycofaj a,b)
Oryginał: Hector Garcia-Molina
8. Dzienniki i odtwarzanie 42
Powtórzenie
Dziennik
...T1
a... ...
T1
b... ...
T1
c...
T1
cmt...
ckpt-end
ckpt-sT1
Powtórz T1: (powtórz b,c)
Oryginał: Hector Garcia-Molina
8. Dzienniki i odtwarzanie 43
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ódstart
check-point
Oryginał: Hector Garcia-Molina
8. Dzienniki i odtwarzanie 44
Akcje „materialne” („realne”)
• Np. wypłata z bankomatuTi = a1 a2 …... aj …... An
• Wykonuj je po zatwierdzeniu• Zaplanuj ręczne procedury
odtwarzania
PLN
Oryginał: Hector Garcia-Molina
8. Dzienniki i odtwarzanie 45
Awaria nośnika
A: 16
Rozwiązanie: Rób kopie zapasowe!
Oryginał: Hector Garcia-Molina
8. Dzienniki i odtwarzanie 46
1: potrójna nadmiarowość
• Utrzymuj 3 kopie na niezależnych dyskach
• Output(X) --> trzy zapisy• Input(X) --> trzy odczyty +
głosowanie
X1 X2 X3
Oryginał: Hector Garcia-Molina
8. Dzienniki i odtwarzanie 47
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-Molina
8. Dzienniki i odtwarzanie 48
3: Kopia zapasowa + dziennik
kopiazapasowa
bazadanych
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-Molina
8. Dzienniki i odtwarzanie 49
Kiedy można obciąć dziennik?
check-point
kopiazapas.
ostatniepotrz.
wycofan.
Nie jest potrzebnepo awarii nośnika
Nie jest potrzebne dowycofań po awarii systemu
Nie jest potrzebne dopowtórzeń po awarii systemu
dziennik
czas
Oryginał: Hector Garcia-Molina
8. Dzienniki i odtwarzanie 50
Podsumowanie• Integralność danych• Jedno ze źródeł problemów: awarie
- Dziennik- Nadmiarowość
• Drugie ze źródeł problemów: współdzielenie danych... później