Előadáshoz
kapcsolódó
elméleti feladatok a
"zöldkönyvből" Feladatok
undo, redo és undo/redo naplózásra és
helyreállításra
Feladatok - Molina-Ullman-Widom:
Adatbázisrendszerek
megvalósítása
a "zöld könyv" 8.fej. A rendszerhibák
kezelése, naplózás
alapján. Segédanyagok:Kiss
Attila - Adatbázisok 2 előadások
>> naplo.ppt
Molina-Ullman 8. fejezete: A
rendszerhibák kezelése
8.1.1.
Feladat
- A tranzakciók korrekt
végrehajtása, lásd naplo.ppt
(3-11.oldal)
Tegyük fel, hogy az adatbázisra
vonatkozó konzisztenciamegszorítás: 0
<= A <= B.
Állapítsuk meg, hogy a következő
tranzakciók megőrzik-e az adatbázis
konzisztenciáját.
T1: A := A + B; B := A + B;
T2: B := A + B; A := A + B;
T3: A := B + 1; B := A + 1;
8.1.2. Feladat
- A tranzakciók alaptevékenységei,
hasonló
példa: naplo.ppt
(43.oldal)
(Adjuk meg néhány, konkrét művelettel
megadott tranzakció esetén az
adatbáziselemek
memóriabeli és lemezen levő
értékét az
egyes műveletek után.)
A 8.1.1 feladat mindegyik tranzakciójához a
számításokon kívül
tegyük hozzá a
beolvasó-kiíró
tevékenységeket is, és mutassuk be a
tranzakciók lépésenkénti
hatását
a memóriában
és a lemezen tárolt adatokra. Tegyük
fel, hogy kezdetben A = 5
és B = 10.
Molina-Ullman 8.2. fejezete:
Undo naplózás és
helyreállítás
8.2.1.
Feladat
- UNDO naplóbejegyzések, hasonló
példa: naplo.ppt
(50-52.oldal)
Adjuk meg a 8.1.1 feladatban szereplő tranzakciók UNDO
naplóbejegyzéseit.
Tegyük fel, hogy kezdetben A = 5 és B = 10.
8.2.4.
Feladat
- Helyreállítás UNDO
naplóból, hasonló
példa: naplo.ppt
(58-62.oldal)
A következő naplóbejegyzés-sorozat a T
és U két tranzakcióra vonatkozik:
<START T>
<T, A, 10>
<START U>
<U, B, 20>
<T, C, 30>
<U, D, 40>
<COMMIT U>
<T, E, 50>
<COMMIT T>
Adjuk meg a helyreállítás-kezelő
tevékenységeit, ha az utolsó lemezre
került naplóbejegyzés:
a) <START U>
b) <COMMIT U>
c) <T, E, 50>
d) <COMMIT T>
8.2.7. Feladat
- UNDO naplózás
ellenőrzőponttal, hasonló
példa: naplo.ppt
(63-72.oldal)
Tegyük fel, hogy a napló a következő
bejegyzéssorozatot tartalmazza:
<START S>
<S,A,60>
<COMMIT S>
<START T>
<T,A,10>
<START U>
<U,B,20>
<T,C,30>
<START V>
<U,D,40>
<V,F,70>
<COMMIT U>
<T,E,50>
<COMMIT T>
<V,B,80>
<COMMIT V>.
Tegyük fel továbbá, hogy a
működés
közbeni ellenőrzőpont-képzést
kezdjük
alkalmazni,
közvetlenül az alábbi
naplóbejegyzések
(memóriában való)
megjelenésétől
kezdve:
a) <S,A,60>.
b) <T,A,10>.
c) <U,B,20>.
d) <U,D,40>.
e) <T,E,50>.
Mindegyik fenti esetre adjuk meg, hogy:
i) Mikor íródik fel az <END
CKPT>
naplóbejegyzés, és
ii) Bármelyik lehetséges pillanatban, ha hiba
lép
fel, meddig kell a naplóban
visszafelé tekinteni
ahhoz, hogy minden befejezetlen
tranzakciókra
vonatkozó bejegyzést megtaláljunk.
Molina-Ullman
8.3. fejezete: Redo naplózás és
helyreállítás
8.3.1
Feladat
- REDO
naplóbejegyzések, hasonló
példa: naplo.ppt
(76.oldal)
Adjuk meg a 8.1.1. feladatban szereplő tranzakciók
helyreállítási (REDO)
típusú
naplóbejegyzéseit. Tegyük fel, hogy
kezdetben A = 5 és B = 10.
8.3.3. Feladat
- Helyreállítás REDO
naplóból, hasonló
példa: naplo.ppt
(80-82.oldal)
Ismételjük meg a 8.2.4. feladatot REDO
naplózást
használva.
8.3.5. Feladat
- REDO naplózás
ellenőrzőponttal, hasonló
példa: naplo.ppt
(84-91.oldal)
A 8.2.7. feladat adatait használva az a)–e)
helyzetek
mindegyikére válaszoljuk meg
az alábbi kérdéseket:
i) Mely pontokban fordulhat elő az <END CKPT>
felírása, és
ii) Minden lehetséges hibabekövetkezési
ponthoz
adjuk meg, hogy a naplóban meddig kell
visszatekintenünk ahhoz, hogy
megtaláljuk az
összes befejezetlen tranzakciót.
Vegyük figyelembe mindkét
lehetőséget,
azt is, hogy a hibát megelőzően az
<END
CKPT> felíródott a
naplóba és azt is, ha nem.
Molina-Ullman 8.4. fejezete:
Undo/redo naplózás és
helyreállítás
8.4.1. Feladat
- UNDO/REDO
naplóbejegyzések, hasonló
példa: naplo.ppt
(92-95.oldal)
Adjuk meg a 8.1.1 feladatban szereplő tranzakciók undo/redo
típusú naplóbejegyzéseit.
Tegyük fel, hogy kezdetben A = 5 és B = 10.
8.4.3.
Feladat
- Helyreállítás UNDO/REDO
naplóból, hasonló
példa: naplo.ppt
(96-101.oldal)
A következő UNDO/REDO
naplóbejegyzés-sorozat a T és U
két tranzakcióra vonatkozik:
<START T>
<T, A, 10, 11>
<START U>
<U, B, 20, 21>
<T, C, 30, 31>
<U, D, 40, 41>
<COMMIT U>
<T, E, 50, 51>
<COMMIT T>
Adjuk meg a helyreállítás-kezelő
tevékenységeit, ha az utolsó lemezre
került naplóbejegyzés:
a) <START U>
b) <COMMIT U>
c) <T, E, 50, 51>
d) <COMMIT T>
8.4.5. Feladat
- UNDO/REDO naplózás
ellenőrzőponttal, hasonló példa: naplo.ppt
(102-107.oldal)
Tegyük fel, hogy a napló a következő
bejegyzéssorozatot tartalmazza:
<START S>
<S,A,60,61>
<COMMIT S>
<START T>
<T,A,61,62>
<START U>
<U,B,20,21>
<T,C,30,31>
<START V>
<U,D,40,41>
<V,F,70,71>
<COMMIT U>
<T,E,50,51>
<COMMIT T>
<V,B,21,22>
<COMMIT V>.
Tegyük fel továbbá, hogy a
működés
közbeni ellenőrzőpont-képzést
kezdjük
alkalmazni,
közvetlenül az alábbi
bejegyzések
(memóriában való)
megjelenésétől
kezdve:
a) <S,A,60,61>.
b) <T,A,61,62>.
c) <U,B,20,21>.
d) <U,D,40,41>.
e) <T,E,50,51>.
Mindegyik fenti esetre adjuk meg, hogy:
i) Mikor írható fel az <END
CKPT>
naplóbejegyzés, és
ii) Bármelyik lehetséges pillanatban, ha hiba
lép
fel, meddig kell a naplóban visszafelé tekinteni
ahhoz, hogy minden, be nem fejezett tranzakciókra
vonatkozó bejegyzést megtaláljunk.
Fontoljuk meg mindkét lehetőséget is, hogy a hiba
az
<END CKPT> naplóbejegyzés
felírása
előtt vagy az után jelentkezik.