Adatbázis rendszerek megvalósítása 1. Irodalom: Molina-Ullman-Widom: Adatbázisrendszerek megvalósítása

Hasonló dokumentumok
UNDO naplózás. Naplóbejegyzések. Visszaállítási esetek

Sapientia - Erdélyi Magyar TudományEgyetem (EMTE) Marosvásárhely. ABR 2( Adatbázisrendszerek 2) 4. Előadás: Indexek A rendszeribák kezelése

Adatbázisrendszerek megvalósítása 1

Adatbázisrendszerek megvalósítása 1

Tematika. Helyreállíthatóság (Failure Recovery) (8. fejezet) Konkurenciavezérlés (Concurrency control) (9. fejezet)

Ellenőrző kérdések. 5. Kis dolgozat kérdései. (9-10. előadás)

Tranzakció, mint a helyreállítás egysége

Adatbázisok elmélete 24. előadás

ADATBÁZIS-KEZELÉS. Adatbázis-kezelő rendszerek

Adatbázisok elmélete 24. előadás

Az adatbázisrendszerek világa

9.előadás: Adatbázisok-I. dr. Hajas Csilla (ELTE IK)

Tranzakció-kezelés, alapfogalmak. Vassányi István, 2012.

Adatbázisok elmélete 18. előadás

Adatbázisok elmélete

Csima Judit szeptember 6.

Adatbázisrendszerek 9. előadás: Tranzakciók és konkurencia

Adatbázisok elmélete 1. előadás

Adatbázisok elmélete 18. előadás

Adatbázisok elmélete 1. előadás

Ellenőrző kérdések. 1. Kis dolgozat kérdései

12. előadás. Tranzakció kezelés és konkurencia kontroll. Adatbázisrendszerek előadás december 12.

FORD Edifact IHS Import

B I T M A N B I v: T M A N

Optimista konkurenciavezérlés

Adatbázis rendszerek Gy: Az adattárolás fejlődése

Fájlrendszerek. A Windows operációs rendszerek fájlrendszere

Windows rendszeradminisztráció és Microsoft szerveralkalmazások támogatása. 8. óra. Kocsis Gergely, Supák Zoltán

Adatbázisrendszerek (ABR)

Biztonsági mentés és visszaállítás Felhasználói útmutató

J-N-SZ Megyei Hámori András SZKI és SZI szóbeli

É Í Á Á É Ü Ó É É É É Í Ó Ó Ő Á Á É Á É É É É Á É É Á Á É É Á É Í

ö ő ő ü ü Ó ü ö ű Á ő ő ö ő Á Ó ű ö ü ő ő ű

Adatbázisok II Jánosi-Rancz Katalin Tünde 327A 1-1

Ü

Í Ó ü ü í ü ü ü í Í í É í í Í Í ü ü ü í Í ü

ú Ü Í ú ú ú ú ú ú

ü É ö É É ö ö ö ü ö ö Á ű ö ű ű ű Á Í ö ö Ó ö

ó É ó í ó ó í í ö í ó í ö ö ö ü ö ó ó ó ü ú ö ü ó ó ö ö ü ü ü ö ö ó ö í ó ű Ü ó í ú í ö í ö í Í ó ó í í ö ü ö ö í ö í ö ö ö ü ó í ö ö ó í ú ü ó ö

ű ú Í Ó Á ú Ű ű Ő Ö Á ú Ű Ü ú ú Á ú ű

í í É í ó ó É ö í ó í ó í ó ó í ó í í ó ó ó í ö ö ö ö í í í ó ó ö ó

Ö Ö Ö Ö Ö Á Ű É Ö Ö Ö

Í Í Í Ü Ó Ó Ö Á Ü Ü Ó Ü Ü Ó Ö Í É Ö

É ö Ű ő ű ő ő ű ű

ő ö ő ű ó ö ó ű Í Ö Ö Á Í Ó Ö Ü É Ö Ö Ö Á Á Ö É Á Ö

Ö Ö Ú Ó Ö ű Ő Ő ű ű Ü Ő Ó Ő

Tranzakciók, nézettáblák, indexek. Párhuzamos folyamatok irányítása Virtuális és materializált nézettáblák Az adathozzáférés felgyorsítása

í Ó ó ó í ó ó ó ő í ó ó ó ó

í ó ő í é ö ő é í ó é é ó é í é é í é í íí é é é í é ö é ő é ó ő ő é ö é Ö ü é ó ö ü ö ö é é é ő í ő í ő ö é ő ú é ö é é é í é é í é é ü é é ö é ó í é

é ö é Ö é é ő í ó í é ő ö ú é ó é ő ü ü é ó ö é é ó é é ö é ő í é é ő é é ö é ű ö é í ó é é í ö í ó í ó é é ö ó í ó ó í ó é é ö ő í ó ó í ó ü é í ü

ú ű ú ú ű ú ű ű ú ű ú ű Á ű ű Á ű ű ú ú ú ú ú ú ű ú ú ú ú ú ú ú ú

í í í í ó í ó ö ö í ű ü ó ó ü ú Á Á ó ó ó ó ó ó í ó ö ö ü Ó ö ü í ö ó ö í í ö í ó ó í ö í ú ó ú í ö ú ö ö ö í ó ó ó ú ó ü ó ö í ó ó í í í Á í ó ó ó

ö ö ó ú ö ö ú ü ó ö ö Í ö ö ö ü ó ö ö ú ú ö ü ó ü ó ü ö ú ü ó ü ö ó Á Á ö ü ú ó ö ü ü ö ó ü ü Á ü ö ü ö ü ö ö ö ü ö ú ö ö ö ü ú ö ú ö ű ú ú ü ö ó ö ö

é ú é é é é é é é é é é é é ú é ö é é é ö Ő é é é ú é é é é é é é é ö é é é ö é Ö é é ö é ö é é é ű é ö ö é ö é é ö ö é é ö ö é ö é Ö é ú é é é é é é

Í Ú É ő ő ú ö Ö ú ú ú ö ö ú ö ö ű ö ő ö ö ú ö ő ő ö ö ö ő ő ú ő ú ö ö ö ú ö ö ú ő ö ú ö ű ö ő Ó ő Á ö ő ö ö

ö ü ü ú ó í ó ü ú ö ó ű ö ó ö í ó ö í ö ű ö ó Ú ú ö ü É ó í ö Ó Á í ó í í Ú ö ú ö ű ü ó

ö ö Ö ó ó ö ó ó ó ü ö í ü ú ó ó í ö ö ö ó ö ü ú ó ü ö ü ö ö Ö ü ö ö Ö ó

ű ú ú Ö ó Ö ó ó ó Ö ű ó ű ű ü Á ó ó ó ó ü ó ü Ö ó ó ó Ö ű ű ü Ö ű Á ú ú ú ó ű í í Ő ú Á É Ö í ó ü ű í ó ű ó Ö ú Ő ú ó í ú ó

ö ö ö ö ö ö ö ü ö ü ö ű ö ú ü ű ö ü Í ö ú ü ü ű ö ú ü Á ü

ö Ó ű ö ó í ó ü ö Ó ó í ö ö ó Ö ó ö í ó í ó Á í ó Á Á Ő ú ü ó Í ü ú ü

Ü ü Ü Ö Ó ö ü ö Ó Ú Ó ü Ó ö ö Á ö ö ö ö ü

ű í ú ü ü ü ü ü Ó í ü í í í É Á

ü ö ö ő ü ó ó ú ó

É Í ü ú É ü ő ő ő ő ú ő ú ü ü ő ü ú ü ű ú ú ü ü Í ü ű ő ő É ő

ú ü ü ú Ö ú ü ü ü ü ü ú ü ú ü ű Í ü ü ű ü ű Ó ü Ü ű ú ú Á ü ű ű ü ü Ö ü ű ü Í ü ü

Í Í Ó ű Ü Ó Ó Ü ü Ö Í Ü Í Í ú Ö Ó Í ú ú Ö Ó É Í ű ú

ő ö ő ú ő ö ö ő ó ő ö ü ú ö ö ó ő ö ü ó ó ó ó ő ő ő ó ó ú ő ü ő ö ö ó ü ö ö ő ű ö ö ő ú ú ó ö ő ű ö ó

í ó í ó ó ó í í ü ú í ú ó ó ü ü í ó ü ú ó ü í í ü ü ü ó í ü í ü ü í ü ü í ó ó ó í ó í ü ó í Á

Ö ő ü Ö Ö Ő ü ő Ö Ö ü ű Á Í Ö ű ü ő ő ő Ö ü ü ő ő ő Ü ü ő ő ő ü ő ő ü ü


ó ú ú ü ú ő ó ő ő ó ó ó ö ó ü ő ó ő ö ü ü ó ö ő É ó ö ö ö ó ó ö ü ü ö ü ó ó ő ó ü ó ü ü ö ö É ú ó ó ö ú ö ü ü ó ó ó ü Á ö ö ü ó ö ó ö ö ö ö ó ó ö ó ó

Ö Ö ú

ú ú ü ü Á ú ú ü ű ű ú ü ü ü ü

ő ő ő ő ő ő ú ő ü Á ü ü ő ő ő ő ő ő ő ő ő ő Ö Ó ő ő ő Ö ő ő ő

OE-NIK 2010/11 ősz OE-NIK ősz

ő ő ő ő ú É ü ú ú ű ú ű ő ő ő ő Á Á ü ő É É É É É É Á Ú Á Á ő ő ő ő ő É Á Á Á ő ő ő Á ü ő ő ü

Í ö ö ű ú ö ö Í ö ü ö ü

ü ö ú ö ú ü ö ü Á Ó ö ö ö ö ú ü ú ü ü ú ú ö ö ü ü ú ü ü ö ö ű ö ü ü ü ü ö ö

A TANTÁRGY ADATLAPJA

ú ú ö ö ü ü ü ü ű ü ü

É ő ő ű ú Á ő Á ő ű ő ő ő ő ő ő ő ő ű ú ű ű ő ő ő ű

ű ú ó ó ü í Á Á ú ó ó ó ó ó ó ó ó ó ó ó ó ó ó í ó ü É ű ü ó í ü í í í í í ó í ü í í ó ó Á

Ü ű ö Á Ü ü ö ö

ű ö ú ö ö ö ö í ű ö ö ö ű ö ö ö í ü ú í ű í ö í ú ű í ü ö ö ú ö í ö ű ú ü ö ö í ö ü ö ú ű ö ö ö í Á í ü í ö ü ö í ü ö Ő ü ö í ű ü ö í í í í í

ó ö í í ü Ű Ö ó ó ű ö ü Í í í ö Ö Ó ö Ű Ö ú ó ó í í ű ö ö ö ö í ó ö ö í ö ű ö ű ö ö ö ö ö í ó Ö Ö ü ú ö ó ü ö Ö ű ö Ö ü ó ö ö ó ö ö Ó í ű ö ű ö ö ű í

Ö Ö ű ű ű Ú Ú ű ű ű Ú ű

Ö Ö ö Ó Ó Ó Ó Ü ú ü Ű Ö Ö Ö ö Ü ö Í ü ű

ú ű ű É ü ű ü ű ű í ü í ő í Ü ő ő ü ú Í ő ő í ú ü ü ő ü

É Ö Á Í Á Ó Ö ü

í ü í ü ő ő ü Í ő ő ő ú í ő ő ö ö ö ű ü í ő ő í ú ö ö ú ő ő ú í ő í ő ö ö í ő ü ü í ő ö ü ü ú í í ü ő í ü Í í í í ö ő ö ü ő í ő ő ü ű ő ő í ő í í ő ő

ű Á ü ő ö í ö ö ő ő ő ő ö

í í ü í í í í í Ó ő ő í í í Ú ü Ú í í Ú ő ü Ú ü ő

ö ö ö Ö ö ú Ö í Ö ű ö í Ö í ö ü ö í ú Ö Ö ö í ű ö ö í ö ö Ő ö í ü ö ö í Ö ö ö í ö í Ő í ű ű í Ö Ó í ö ö ö ö Ö Ö ö í ü ö ö Ö í ü Ö ö í ö ö ö ö ö Ö ö í

2023 ban visszakeresné 2002 es leveleit? l Barracuda Message Archiver. Tóth Imre Kereskedelmi Igazgató Avisys Kft Barracuda Certified Diamond Partner

ő ő Ű ü ú ú Ú ü ű ő ő ő ő Á Á Í ü É ő ő ő ő ő É ő ú ú ú ő Á Ö ő

É ú É ö ö ű ö ö ö ú ú ú ű ű ú ö ű ö ű ű ü ö ö ü ű ö ü ö ö ö ö ú ü ö ö ö ú ö ö ú ö ö ú ü ú ú ú ű ü ö ö ű ú ű ű ü ö ű ö ö ö ű ú ö ö ü ú ü ö ö ö ü ú ö ű

ű ú ü ü ü Í ü ö ü ö ü ö ü Ó ü ö ü ö ö ü ű ű ú ü ö ö ü Ó ö ű ü ö ú ö ö ü ü ű ü ü ö ö ü ü ú ö ö ü ü ú ü

ü ő ő ü ü ő ő ű í í ű ő ő ő ü ő ő í í ő ő ő ő ő ő ü ü í ő Ö ő ü í ő ü í í ő ü ő í ő ő í í ő ü ü í ő ü í ő í ő í ő ü í ő í ü í í ő

Vodafone ODI ETL eszközzel töltött adattárház Disaster Recovery megoldása. Rákosi Péter és Lányi Árpád

5.6.3 Laborgyakorlat: Windows rendszerleíró adatbázis biztonsági mentése és visszaállítása

Átírás:

Adatbázis rendszerek megvalósítása 1. Irodalom: Molina-Ullman-Widom: Adatbázisrendszerek megvalósítása

Az adatbázis-kezelő rendszer alkotórészei (1) Az ábrán egy teljes adatbázis-kezelő rendszer vázát láthatjuk. Az egyvonalas dobozok a rendszer alkotórészeit jelentik, míg a dupla dobozok memóriabeli adatszerkezeteket reprezentálnak.

F e l h a s z n á l ó / a l k a l m a z á s l e k é r d e z é s e k, m ó d o s í t á s o k l e k é r d e z é s te r v L e k é r d e z é s - f o r d í t ó t r a n z a k c i ó s p a r a n c s o k T r a n z a k c i ó - k e z e l ő A d a t b á z i s - a d m i n i s z t r á t o r D D L - f o r d í t ó D D L - p a r a n c s o k i n d e x -, f á j l - é s r e k o r d i g é n y e k V é g r e h a j t ó - m o t o r I n d e x - / f á j l - / r e k o r d k e z e l ő N a p l ó z ó é s h e l y r e á l l í t ó K o n k u r e n c i a - k e z e l ő Z á r t á b l a l a p p a r a n c s o k P u f f e r - k e z e l ő P u f f e r e k l a p I / O T á r - k e z e l ő T á r

Parancsok forrásai Szokásos felhasználók és alkalmazói programok, melyek adatokat kérnek vagy módosítanak. Adatbázis-adminisztrátor (DBA): egy vagy több olyan személy, akik az adatbázissémáért illetve az adatbázis-struktúráért felelősek.

Az adatdefiníciós nyelv parancsai DDL parancs kiadása (create, ) DDL processor Végrehajtó motor index/fájl/rekord kezelő

A lekérdezések feldolgozása A lekérdezés megválaszolása elemzés, optimalizálás lekérdezésterv végrehajtó motor erőforráskezelő (lapokra bontás) pufferkezelő (lapok, vagy blokkok) A tranzakció feldolgozása a. Konkurencia vezérlés b. Naplózás-helyreállítás kezelő

A központi memória pufferei és a pufferkezelő Feladata: adatok mozgatása a másodlagos tároló és a memória között A pufferek azok a lap méretű területek, ahová a lemezblokkokat lehet betölteni.

Információk 1. Adatok: az adatbázis tartalma 2. Metaadatok: adatbázisséma, az adatbázis struktúrája és megszorításai 3. Statisztikák: az adatbázis-kezelő által az adatok tulajdonságairól összegyűjtött és tárolt információ (pl: méretek) 4. Indexek: olyan adatszerkezetek, melyek támogatják az adatok hatékony elérését.

A tranzakció A tranzakció (transaction) az adatbázisműveletek végrehajtási egysége, amely DML-beli utasításokból áll, és a következő tulajdonságokkal rendelkezik: Ezek a tranzakció ACID-tulajdonságai

Tulajdonságok Atomosság (atomicity): a tranzakció mindent vagy semmit jellegű végrehajtása (vagy teljesen végrehajtjuk, vagy egyáltalán nem hajtjuk végre).

Tulajdonságok Konzisztencia (consistency): az a feltétel, hogy a tranzakció megőrizze az adatbázis konzisztenciáját, azaz a tranzakció végrehajtása után is teljesüljenek az adatbázisban előírt konzisztenciamegszorítások (integritási megszorítások), azaz az adatelemekre és a közöttük lévő kapcsolatokra vonatkozó

Tulajdonságok Elkülönítés (isolation): az a tény, hogy minden tranzakciónak látszólag úgy kell lefutnia, mintha ez alatt az idő alatt semmilyen másik tranzakciót sem hajtanánk végre.

Tulajdonságok Tartósság (durability): az a feltétel, hogy ha egyszer egy tranzakció befejeződött, akkor már soha többé nem veszhet el a tranzakciónak az adatbázison kifejtett hatása.

Tranzakció feldolgozása A tranzakciófeldolgozó biztosítja az adatok konkurens elérését és a helyreállíthatóságot (resiliency) a tranzakciók korrekt végrehajtásával, fogadja az alkalmazás tranzakciós parancsait.

Feladatok Naplózás Annak érdekében, hogy a tartósságot biztosítani lehessen, az adatbázis minden változását külön feljegyezzük (naplózzuk) lemezen.

Konkurencia vezérlés A tranzakcióknak úgy kell látszódniuk, mintha egymástól függetlenül, elkülönítve végeznénk el őket. Zárak alkalmazása

Holtpont feloldása A tranzakciók az ütemező által engedélyezett zárak alapján versenyeznek az erőforrásokért. Így előfordulhat, hogy olyan helyzetbe kerülnek, amelyben egyiküket sem lehet folytatni, mert mindegyiknek szüksége lenne valamire, amit egy másik tranzakció birtokol. A tranzakciókezelő feladata, hogy ilyenkor közbeavatkozzon, és töröljön (abortáljon) egy vagy több tranzakciót úgy, hogy a többit már folytatni lehessen.

A rendszerhibák kezelése (2) A hibák fajtái A naplókezelő és a tranzakció kezelő A tranzakciók korrekt végrehajtása A tranzakciók alaptevékenységei

Milyen technikát alkalmazunk? A helyreállíthatóság biztosítására az elsődleges technika a naplózás (logging) semmisségi (undo) helyrehozó (redo) semmisségi/helyrehozó (undo/redo)

Foglalkozunk még: a helyreállítással (recovery) archiválással (dump, backup)

A hibák fajtái Hibás adatbevitel Készülékhibák Katasztrofális hibák Rendszerhibák

Hibás adatbevitel gyakran nem észrevehetők tartalmilag hibás adat formailag hibás adat Hibafelismerés: Megszorítások alkalmazása (check) Triggerek

Készülékhibák Lemezegység hibákat értjük ez alatt Védekezés: RAID-módszerek (0..10) http://hu.wikipedia.org/wiki/raid Archiválás elosztott, on-line másolatokat

Katasztrofális hibák Az eszköz megsemmisül: Tűz, robbanás, vandalizmus, vírus RAID nem segít, a másik két módszer igen. Archíválási szabályok!

Rendszerhibák Tranzakció állapota (változók értéke) Állapot elveszik rendszerhiba következtében Javítani csak a naplózás segítségével tudjuk Újrafuttatás nem megoldás, mert nem ismerjük a tr állapotát a hibakor

A tranzakció kezelő Jelzéseket ad át a naplókezelőnek Biztosítja a tr-k ütemezését Naplókezelő Pufferkezelő Lekérdezésfeldolgozó Tranzakciókezelő Helyreállításkezelő Adat Napló

A tr korrekt végrehajtása Adatbáziselem: a fizikai adatbázisban tártolt adatok egyfajta funkcionális egysége értékét tranzakciókkal lehet elérni (kiolvasni) vagy módosítani (kiírni) Elem lehet: reláció, reláció sor, blokk, lap Adatbázis állapot: Az adatbázis összes elemének pillanatnyi értékét

adatbázis-állapotokat konzisztensnek : kielégítik az adatbázissémára vonatkozó összes explicit megszorítást és implicit megszorítást Adatbázis kezelő kényszeríti az explicit megszorításokat Implicit megszorításokat nem.

a korrektség alapelve: elkülönítés + atomosság > konzisztencia A korrektség alapelvéhez kapcsolódik a naplózás technikája és a konkurenciavezérlési mechanizmus.

Inkonzisztens állapot előidézésére: Nem teljesül a tranzakció atomosság tulajdonsága: A párhuzamosan végrehajtott tranzakciók jó eséllyel inkonzisztens állapothoz vezetnek, hacsak meg nem teszünk bizonyos megelőző lépéseket.

A tr alaptevékenységei Kölcsönhatás helyszínek: Lemezblokk területe Pufferkezelő ált. használt memóriaterület Tr memóriaterülete

Memória pufferbe Adat beolvasása Tr saját memória területére A kiírás fordított sorrendben történik Eg tr sosem férhet hozzá közvetlenül a lemezhez!!!

Műveletek INPUT(X): Az X adatbáziselemet tartalmazó lemezblokk másolása a memóriapufferbe. READ(X,t): Az X adatbáziselem bemásolása a tranzakció t lokális változójába. Ha nem előzte meg INPUT, akkor az is lefut. WRITE(X,t): A t lokális változó tartalma az X adatbáziselem memóriapufferbeli tartalmába másolódik.

Műveletek WRITE(X,t) előtt lehet INPUT(X)! OUTPUT(X): Az X adatbáziselemet tartalmazó puffer kimásolása lemezre. A READ és a WRITE műveleteket a tranzakciók használják, az INPUT és OUTPUT műveleteket a pufferkezelő alkalmazza.

Tevékenység t M-A M-B D-A D-B READ(A,t) 8 8 8 8 t := t*2 16 8 8 8 WRITE(A,t) 16 16 8 8 READ(B,t) 8 16 8 8 8 t := t*2 16 16 8 8 8 WRITE(B,t) 16 16 16 8 8 OUTPUT(A) 16 16 16 16 8 OUTPUT(B) 16 16 16 16 16

Semmisségi (undo) naplózás (3) A naplóbejegyzések mindegyike arról tartalmaz valami információt, hogy mit tett egy tranzakció. Használjuk: rendszerhiba eszközhiba, ha nem a naplót tartalmazó köteten történt

Naplóbejegyzések Tr esetén minden fontos eseményt a naplóban rögzítünk. Naplóblokkok a memóriában, pufferkezelő írja ki. Amint lehet háttértárra kell kerülnie a bejegyzéseknek.

Bejegyzések <START T>: Ez a bejegyzés jelzi a T tranzakció (végrehajtásának) elkezdődését. <COMMIT T>: A T tranzakció rendben befejeződött, az adatbázis elemein már semmi további módosítást nem kíván végrehajtani. <ABORT T>: A T tranzakció nem tudott sikeresen befejeződni.

Abort A tranzakciókezelő feladata annak biztosítása, hogy az ilyen változtatások ne jelenjenek meg a lemezen, vagy ha volt valami hatásuk a lemezen, akkor az törlődjön. OK: hiba a tranzakció kódjában az adatbázis-kezelő rendszer is abortálhat egy tranzakciót például holtponti helyzetben

Bejegyzés <T,X,v>: Ez a módosítási bejegyzés. A T tranzakció módosította az X adatbáziselemet, melynek módosítás előtti értéke v volt. A naplóbejegyzés a WRITE tevékenységre vonatkozik, nem pedig az OUTPUT-ra! A semmisségi naplózás nem rögzíti az adatbáziselem új értékét.

Feladat A semmisségi naplózást alkalmazó rendszerekben a helyreállítás-kezelő feladata a tranzakció lehetséges hatásainak semmissé tétele, amelyhez elegendő csak a régi érték tárolása.

A semmisségi naplózás szabályai Ha a T tranzakció módosítja az X adatbáziselemet, akkor a <T,X,v> típusú naplóbejegyzést azt megelőzően kell lemezre írni, hogy X új értékét lemezre írná a rendszer. Ha a tranzakció hibamentesen teljesen befejeződött, akkor a COMMIT naplóbejegyzést csak azt követően szabad lemezre írni, hogy a tranzakció által módosított összes adatbáziselem már lemezre íródott, ezután viszont a lehető leggyorsabban.

Egy tranzakcióhoz tartozó lemezre írások 1.az adatbáziselemek módosítására vonatkozó naplóbejegyzések 2.maguk a módosított adatbáziselemek 3.a COMMIT naplóbejegyzés Az első két lépés minden módosított adatbáziselemre vonatkozóan önmagában, külön-külön végrehajtandó! 4.FLUSH LOG parancs!

Példa Lépés Tevékenység t M-A M-B D-A D-B Napló 1) <START T> 2) READ(A,t) 8 8 8 8 3) t := t*2 4) WRITE(A,t) 5) READ(B, t) 6) t := t*2 7) WRITE(B,t) 16 8 8 8 16 16 8 8 <T,A,8> 8 16 8 8 8 16 16 8 8 8 16 16 16 8 8 <T,B,8>

Példa 8) FLUSH LOG 9) OUTPUT(A 16 16 16 16 8 ) 10) OUTPUT(B ) 16 16 16 16 16 11) <COMMIT T> 12) FLUSH LOG

Helyreállítás Rendszerhiba tr nem atomos db inkonzisztens állapotba került Feladat a napló segítségével a konzisztens db állapot visszaállítása Tegyük fel, hogy látjuk az egész naplót, mérettől függetlenül.

Helyreállítás Tr felosztása sikeres és sikertelen csoportra Ha van <COMMIT T>, akkor a T tr sikeres volt Ha találunk <START T> de nem találunk <COMMIT T>, akkor T nem teljes tr, semmissé kell tenni Ha T módosította X-et, akkor van a naplóban <T, X, v>, X értéke visszaállítható.

Helyreállítás Mivel több tr módosíthatta X-et, fontos a sorrend a visszaállításnál a helyreállítás-kezelő a naplót a végéről kezdi átvizsgálni elér egy <T,X,v> bejegyzésig, akkor a következő lehetőségek vannak:

Helyreállítás ha ugyanerre a T tranzakcióra vonatkozó COMMIT bejegyzéssel már találkozott, akkor nincs teendője, hiszen T rendesen és teljesen befejeződött, hatásait tehát nem kell semmissé tenni minden más esetben T nem komplett tranzakció, ekkor a helyreállítás-kezelő X értékét v-re cseréli

Helyreállítás Minden korábban abortált, nem teljes T tranzakcióra vonatkozóan <ABORT T> bejegyzést ír a naplóba, és kiváltja annak naplófájlba való kiírását is (FLUSH LOG) Folytatódhat a normál használat. A korábbi érték változtatás előtti tárolása következtében a helyreállító lépések idempotensek

Ellenőrzőpont-képzés Kétféle ellenőrzőpont-képzés létezik: egyszerű és a rendszer működése közbeni

Az egyszerű ellenőrzőpont-képzés 1.Új tranzakcióindítási kérések kiszolgálásának letiltása. 2.A még aktív tranzakciók helyes és teljes befejezésének vagy abortálásának és a COMMIT vagy ABORT bejegyzés naplóba írásának kivárása. 3.A napló lemezre való kiírása (FLUSH LOG) 4.<CKPT> naplóbejegyzés képzése és kiírása a naplóba, majd újra FLUSH LOG. 5.Tranzakcióindítási kérések kiszolgálása.

Rendszer működése közben 1.<START CKPT(T 1,,T k )> naplóbejegyzés készítése és lemezre írása (FLUSH LOG). T 1,,T k az éppen aktív tranzakciók nevei. 2.Meg kell várni a T 1,,T k tranzakciók mindegyikének normális vagy abnormális befejeződését, nem tiltva közben újabb tranzakciók indítását. 3.Ha a T 1,,T k tranzakciók mindegyike befejeződött, akkor <END CKPT> naplóbejegyzés elkészítése és lemezre írása (FLUSH LOG).

Használata Ha előbb az <END CKPT> naplóbejegyzéssel találkozunk, akkor tudjuk, hogy az összes még be nem fejezett tranzakcióra vonatkozó naplóbejegyzést a legközelebbi korábbi <START CKPT(T 1,,T k )> naplóbejegyzésig megtaláljuk. A <START CKPT(T 1,,T k )> naplóbejegyzéssel találkozunk előbb, visszafelé keresünk meglévő párig. Általános szabályként elmondható, hogy ha egy <END CKPT> naplóbejegyzést kiírunk lemezre, akkor az azt megelőző START CKPT bejegyzésnél korábbi naplóbejegyzéseket törölhetjük.

Helyrehozó naplózás (redo) (4) Lemezműveletek csökkentése megengedjük a memóriában való műveletvégzést helyrehozó naplózás

Különbségek UNDO be nem fejezett tranzakciók hatásait semmissé teszi REDO figyelmen kívül hagyja a be nem fejezett tranzakciókat a befejezett tranzakciók hatásait pedig nem módosítja megismétli a normálisan befejezettek által végrehajtott változtatásokat

Különbségek UNDO megkívánja az adatbáziselemek lemezen való módosítását a COMMIT naplóbejegyzés lemezre írása előtt REDO COMMIT naplóbejegyzés lemezre írását várja el, mielőtt bármit is változtatna a lemezen lévő adatbázisban

Különbségek UNDO REDO csak a módosított adatbáziselemek régi tartalmát kell megőriznünk a módosított elemek új értékére van szükség

Szabályok 1.Mielőtt az adatbázis bármely X elemét a lemezen módosítanánk, szükséges, hogy az X ezen módosítására vonatkozó összes naplóbejegyzés, azaz <T,X,v> és <COMMIT T>, lemezre kerüljön.

Egy tranzakcióra vonatkozó lemezre írásoknak a következő sorrendben kell megtörténniük: 1.az adatbáziselemek módosítását leíró naplóbejegyzések lemezre írása; 2.a COMMIT naplóbejegyzés lemezre írása; 3.az adatbáziselemek értékének tényleges cseréje a lemezen.

Lépé Tevékeny t M-A M-B D-A D-B Napló s ség 1) <START T> 2) READ(A, 8 8 8 8 t) 3) t := 16 8 8 8 t*2 4) WRITE(A,t) 16 16 8 8 <T,A,16 > 5) READ(B, 8 16 8 8 8 t) 6) t := t*2 16 16 8 8 8

7) WRITE(B,t) 16 16 16 8 8 <T,B,16 > 8) <COMMIT T> 9) FLUSH LOG 10) OUTPUT( A) 11) OUTPUT( B) 16 16 16 16 8 16 16 16 16 16

Helyreállítás 1.Meghatározzuk a befejezett tranzakciókat (COMMIT). 2.Elemezzük a naplót az elejétől kezdve. Minden <T,X,v> naplóbejegyzés esetén: (a)ha T nem befejezett tranzakció, akkor nem kell tenni semmit.

Helyreállítás (b) Ha T befejezett tranzakció, akkor v értéket kell írni az X adatbáziselembe. 3. Minden T be nem fejezett tranzakcióra vonatkozóan <ABORT T> naplóbejegyzést kell a naplóba írni, és a naplót ki kell írni lemezre (FLUSH LOG).

Ellenőrző pont használata 1.<START CKPT(T 1,,T k )> naplóbejegyzés elkészítése és lemezre írása, ahol T 1,,T k az összes éppen aktív tranzakció. 2. Az összes olyan adatbáziselem kiírása lemezre, melyeket olyan tranzakciók írtak pufferekbe, melyek a START CKPT naplóba írásakor már befejeződtek, de puffereik lemezre még nem kerültek. 3.<END CKPT> bejegyzés naplóba írása, és a napló lemezre írása.

Visszaállítás utolsó ellenőrzőpont-bejegyzés <END CKPT> Az olyan értékek, melyeket olyan tr írtak, melyek a <START CKPT(T 1,,T k )> naplóbejegyzés megtétele előtt befejeződtek, már biztosan lemezre kerültek. A naplóban való keresés során a legkorábbi <START T i > naplóbejegyzésig kell visszamennünk.

Visszaállítás utolsó ellenőrzőpont-bejegyzés a <START CKPT(T 1,,T k )> az előző <END CKPT> bejegyzéshez tartozó <START CKPT(S 1,,S m )> bejegyzésig vissza kell keresnünk, és helyre kell állítanunk az olyan befejeződött tranzakciók tevékenységének eredményeit, melyek ez utóbbi <START CKPT(S 1,,S m )> bejegyzés után indultak, vagy az S i -k közül valók.

Semmisségi/helyrehozó napló (5) A tevékenységek elvégzési sorrendjének rugalmasságát növeli azáltal, hogy bővíti a naplózott információk körét.

Előző módszerek hátrányai A semmisségi naplózás alkalmazása megnöveli a lemezműveletek számát. A helyrehozó naplózás jelentősen megnöveli a pufferterület méretét. Mindkét naplózási módszer az ellenőrzőpont képzése közben ellentétes igényeket támaszt a pufferek lemezre írása szempontjából.

Például ha a puffer tartalmaz egy A adatbáziselemet, melyet egy rendesen és teljesen befejezett tranzakció módosított, és tartalmaz egy B adatbáziselemet is, melyet olyan tranzakció módosított, melyre vonatkozóan a COMMIT bejegyzés még nem került lemezre, akkor az R 1 szabálynak megfelelően a puffer lemezre másolását igényeljük A miatt, viszont tiltjuk ennek megtételét B miatt.

Szabályok az adatbáziselem értékének módosítását leíró naplóbejegyzés négykomponensű: a <T,X,v,w> Mielőtt az adatbázis bármely X elemének értékét a lemezen módosítanánk, ezt megelőzően a <T,X,v,w> módosítást leíró naplóbejegyzésnek lemezre kell kerülnie. PÉLDA!

Helyreállítás 1.A legkorábbitól kezdve állítsuk helyre minden befejezett tranzakció hatását. 2.A legutolsótól kezdve tegyük semmissé minden be nem fejezett tranzakció tevékenységeit.

Lehetséges plussz szabály A <COMMIT T> naplóbejegyzést nyomban lemezre kell írni, amint megjelenik a naplóban. Egy FLUSH LOG lépést kell beiktatnunk

Ellenőrző pont beiktatása 1.Írjunk a naplóba <START CKPT(T 1,,T k )> naplóbejegyzést, ahol T 1,,T k az éppen aktív tranzakciók, majd írjuk a naplót lemezre. 2.Írjuk lemezre az összes piszkos puffert 3.Írjunk <END CKPT> naplóbejegyzést a naplóba, majd írjuk a naplót lemezre.

Az eszközök meghibásodása (6) Az adatbázist a naplóból elméletileg akkor tudjuk rekonstruálni, ha: a naplót tároló lemez különbözik az adatbázist tartalmazó lemez(ek)től; a naplót sosem dobjuk el az ellenőrzőpont-képzést követően; a napló helyrehozó vagy semmisségi/helyrehozó típusú, így az új értékeket (is) tárolja.

Az archívmentés Adatbázist lezárjuk! Az adatbázis másolatának elkészítése egy vagy több, az adatbázisétól különböző adathordozón. A napló használatával sokkal frissebb állapotot tudunk rekonstruálni. A naplóról, amilyen gyorsan csak lehet, távoli másolatot készítünk.

A mentésnek két szintje teljes mentés (full dump), amikor az egész adatbázisról másolat készül növekményes mentés (incremental dump), amikor az adatbázisnak csak azon elemeiről készítünk másolatot, melyek az utolsó teljes vagy növekményes mentés óta megváltoztak.

Visszaállítás Az adatbázist a teljes mentésből és a megfelelő növekményes mentésekből tudjuk rekonstruálni. 1.Visszamásoljuk a teljes mentést 2. Ezt követő legkorábbi növekményes mentéstől kezdve végrehajtjuk a növekményes mentésekben tárolt változtatásokat.

Miért nem csak a naplót mentjük? Ha soha nem archiválunk, akkor a napló soha nem csonkolható, és a napló tárolási/kezelési költsége hamar túllépheti az adatbázis másolatának tárolási költségét.

Archíválás működés közben Sok adatbázist nem lehet lezárni egy időre sem. Mentés közben sok adatbázis elem módosulhat. Ha az adatbázis mentésből való visszaállítása szükéges, akkor a mentés alatt keletkezett naplóbejegyzések felhasználásával az adatbázis konzisztens állapota állítható elő.

Inkonzisztens? archiválás az adatbázis elemeit valamely fix sorrendben másolja Amíg a mentés alatt keletkezett naplót megőrizzük, addig az eltérések a napló felhasználásával korrigálhatók.

Példa Tegyük fel, hogy adatbázisunk 4 elemből áll: A, B, C és D. Ezek értéke az archiválás kezdetekor rendre 1, 2, 3, 4. A mentés közben A értéke 5-re, C értéke 6-ra, B értéke 7-re módosul.

Példa Lemez A := 5 C := 6 B := 7 Mentés A B C D

Adatok változása adatbázis tartalma a mentés kezdetekor 1, 2, 3, 4 a mentés végére pedig 5, 7, 6, 4 lett a mentett archívumba 1, 2, 6, 4 került

Napló az archíváláshoz Feltételezzük, hogy az alkalmazott naplózási módszer a helyrehozó vagy a semmisségi/helyrehozó módszerek valamelyike; a semmisségi naplózás nem alkalmas a működés közbeni archiválással való használatra

Archív lépések 1.A <START DUMP> bejegyzés naplóba írása. 2.Az alkalmazott naplózási módnak megfelelő ellenőrzőpont kialakítása. 3.A menteni kívánt adatlemez(ek) teljes vagy növekményes mentésének végrehajtása, ügyelve arra, hogy az adatok másolata (a mentés) biztonságos, távoli helyre kerüljön.

Lépések 4.Gondoskodjunk arról is, hogy a napló szükséges részéről is másolat készüljön, és az is biztonságos, távoli helyre kerüljön. 5.<END DUMP> bejegyzés naplóba írása.

Helyreállítás Az adatbázis visszaállítása a biztonsági mentésből: Meg kell keresni a legutolsó teljes mentést, belőle rekonstruálni az adatbázist. Ha van(nak) későbbi növekményes mentés(ek), akkor ezeket időrendi sorrendben használva módosítjuk az adatbázist.

És a napló Módosítjuk az adatbázist a napló katasztrófát túlélt részével, a naplózási módszernek megfelelő helyreállítási eljárást használva.