Compare commits

...

2 commits

Author SHA1 Message Date
9c8173c166
Some small changes 2021-01-08 07:47:44 +01:00
6ee628f3d0
Added README.org 2021-01-07 13:05:15 +01:00
2 changed files with 109 additions and 55 deletions

3
README.org Normal file
View file

@ -0,0 +1,3 @@
* Adatbázisok tételek 2020/2021
Az Adatbázisok (VITMAB04) című tárgy tételeinek kidolgozása, Gajdos Sándor
"Adatbázisok" című könyvének 2019-es kiadására *NAGYBAN* alapozva.

161
db.org
View file

@ -31,6 +31,8 @@ pl. mikor lett módosítva.
Olyan adat,amire struktúrális $\text{metaadat} \approx \text{adat}$ .
*** Nem struktúrált adat
Olyan adat,amihez egyáltalán nem értelmezünk.
\clearpage
* Adatbázis-kezelő fogalma, feladatai, felépítése, használói
** Adatbázis kezelő fogalma
Az adatbáziskezelő, olyan hardware- softwarerendszer, amelyet 3 fő tulajdonság
@ -120,6 +122,7 @@ másolatot készíteni az adatbázisról. Ha az adatbázis megsérül, ez a más
teszi lehetővé a visszaállítást a mentés időpontjának állapotába.
**** DBMS tervező/programozó (DBMS designer/programmer)
Tudja, hogyan kell DBMS-t készíteni, ami különösen specializált tudást igényel.
\clearpage
* Heap szervezés
** Általános jellemzői
Jelentése halmaz, kupac. Ez a legegyszerűbb tárolási megoldás. Legalább annyi
@ -147,6 +150,7 @@ feladata).
*** Módosítás
Először meg kell keresnünk a blokkot,amiben a keresett rekord található. Majd a
rekord módosítása után a blokkot vissza kell írni a háttértárra.
\clearpage
* Hash-állományok
A hash-címzés során a kesesés kulcsának bitmintájából csonkolás segítségével is
@ -176,7 +180,7 @@ megváltoztatott blokkot vissza kell írni.
Ha nem a kulcs mezőt módosítjuk,akkor az a módosítás a szokott módon történik.
Ha kulcs mező is módosul akkor a törlés és a beszurás műveletet kell alkalmazni
egymás után.
\clearpage
* Indexelt állományok
Az indexelt szervezés alapgondolata: a keresés kulcsát egy ún. indexállományban
@ -195,7 +199,7 @@ Két alapvetően különböző megvalósítás lehetséges:
1. indexrekordot rendelünk minden egyes adatrekordhoz (sűrű index)
2. indexrekordot rendelünk adatrekordok egy csoportjához, tipikusan az egy
blokkban levőkhöz. (ritka index)
\clearpage
* Ritka index, B*-fák
** Ritka index
Ebben az esetben indexrekordot redot az adatrekordok egy csoportjához
@ -257,7 +261,7 @@ részfájából. Ehhez adott esetben a fa minden szintjén szükség lehet néh
módosítására.
*** Módósítás
Megegyezik a ritka index beli módosítás elvével.
\clearpage
* Sűrű indexek, előnyök és hátrányok
Minden adatrekordhoz tartozik egy index rekord. Ez általában még mindig a
@ -292,6 +296,7 @@ Sűrű indexelés esetén a módosítás viszonylag egyszerű: megkeressük a m
rekordot tartalmazó adatblokkot, majd a módosított tartalommal visszaírjuk a
háttértárra. Ha a módosítás kulcsmezőt is érintett, akkor az indexállományt
újrarendezzük.
\clearpage
* Változó hosszúságú rekordok kezelése
** Változó hosszú ságú rekordok oka
- Egy mező hossza változó
@ -307,6 +312,7 @@ a mező tényleges tartalma van. Így egy állomány csak egy féle rekordot tar
Erre több megoldás is létezik:
- A maximális számú ismétlődésnek elegendő helyet foglalunk le minden rekordnak
- Mutatók használata
\clearpage
* Részleges információ alapján történő keresés
Gyakran megesik, hogy egy rekord több mezéjét is ismerjük és meg akarjuk keresni
azokat a rekordokat, amelyek ugyanezen értékeket tárolják. A továbbiakban úgy
@ -331,6 +337,7 @@ a $*$ pedig a konkatonáció (összefűzés) jele.
Az ismert mezők értékei alapján meghatározhatjuk az $N$ hosszúságú bitmintának az
ismert darabjait. Mindenazon vödröket kell megnézni amelyeknek a sorszáma
illeszkedik a kapott bitmintára.
\clearpage
* Több kulcs szerinti keresés támogatása
Fontos, hogy egy adatbáziskezelő ne csak elsődleges kulcs szerint tudjon
keresni, hanem egyéb mezők alapján is. Ezeket a mezőket keresési kulcsoknak
@ -357,6 +364,7 @@ mezőkhöz) tartozó invertált állományt kell frissíteni.
A [[masodik]]. lehetőségben az adatállomány rekordjai szabadok lehetnek, viszont nem
ismerjük a keresett rekord címét.
\clearpage
* Adatmodellek, modellezés
Amikor egy adatbázist létrehozunk a cél az, hogy egy kiválasztott valós dologról
úgy tároljunk adatokat, hogy utána később ugyanarról a dologról információt
@ -380,6 +388,7 @@ felhasználó szempontjából miként valósul meg az adatok közötti kapcsolat
- Hálós adatmodell
- Relációs adatmodell
- Objektumorientált adatmodell
\clearpage
* Az E-R modell és elemei
Az egyed kapcsolat (entity-relationship; ER) modell nem tekinthető
adatmodellnek, hiszen nem definiál műveleteket az adatokon.
@ -409,6 +418,7 @@ tartozhat.
*** Kulcs
Az ER-modellezésben az attribútumok azt a halmazát, amely egyértelműen azonosít
egy entitás példányait, kulcsnak nevezzük.
\clearpage
* Az E-R diagram, ISA kapcsolatok, gyenge egyedhalmazok
** ER-diagram
Az ER modell egy grafikus megjelenítése az ER diagram.
@ -434,7 +444,7 @@ van. Ebben az esetben gyenge egyedhalmazokról beszélünk. Az identitását egy
tulajdonos egyedhalmaz (owner entity set) biztosítja,amely a gyenge
egyedhalmazzal több-egy kapcsolatban áll. Az ilyen kapcsolat neve: determináló
kapcsolat.
\clearpage
* A relációs adatmodell: adatok strukturálása és műveletek
** Struktúrája
@ -465,7 +475,7 @@ A relációban található sorok száma
** Műveletek
A relációs adatmodell a relációkon megengedett műveletek meghatározásával válik
teljessé. Ezen műveletekből épül fel az ún. relációs algebra (relational algebra).
\clearpage
* Relációalgebra
** Egyesítés, Unió
Az attribútumok száma mindkét relációban ugyanannyinak kell lennie, de az egyes
@ -523,7 +533,9 @@ a rekordpáron értelmezett $\Theta$ feltétel szerint választunk ki sorokat: $
*Jelölése:* $r \underset{\Theta}{\Join} s$
** Hányados
Jelölje $r \div s$ azt a relációt, amelyre igaz az, hogy az $s\text{-sel}$ alkotott Descartes-szorzata
a lehető legbővebb részhalmaza $r\text{-nek}$ : $(r \div s) \setminus s \subseteq r$
a lehető legbővebb részhalmaza $r\text{-nek}$ : $(r \div s) \setminus s
\subseteq r$
\clearpage
* Sorkalkulus, oszlopkalkulus
** Sorkalkulus
*** Fogalma
@ -588,6 +600,7 @@ ahol $\Psi$ olyan formula, amelyek szabad változói csak $x_1,x_2,\ldots,x_m$
Rögzített $A$ interpretációs halmaz és $R_k^{(n_k)}\subseteq A^{n_k}$ relációk
esetén a sorkalkulus bármely kifejezéséhez létezik az oszlopkalkulusnak olyan
kifejezése,amely az előzővel azonos relációt határoz meg.
\clearpage
* Biztonságos sorkalkulus
A biztonságos sorkalkulus célja az, hogy a sorkalkulus kifejezések
kiértékelhetőek legyenek számítógépen kezelhető méretű relációk/véges idő
@ -597,12 +610,13 @@ $\text{DOM}\Psi\equiv\{\Psi\text{-beli alaprelációk összes attribútumának
értékeik}\}\cup\{\Psi\text{-ben előforduló konstansok}\}$
** Biztonságos kifejezés
$\{t|\Psi(t)\}$ biztonságos, ha
1) minden $\Psi(t)$-t kielégítő $t$ minden komponense
1) minden $\Psi(t)\text{-t}$ kielégítő $t$ minden komponense
2) $\Psi\text{-nek}$ miden $(\exists u)\omega(u)$ alakú részformulájára
teljesül, hogy ha $u$ kielégíti $\omega\text{-t}$ szabad változók valamely
értéke mellett, akkor $u$ minden komponense $\text{DOM}(\omega)\text{-beli}$
** Tétel
A relációs algebra és a biztonságos sorkalkulus kifejezőereje ekvivalens.
\clearpage
* Relációs lekérdezések heurisztikus optimalizálása
A heurisztikus optimalizálás során, relációs algebrai műveletekből egy fát
építünk. Ezt felhasználva próbáljuk a műveletek sorrendjét és felépítését
@ -627,6 +641,7 @@ kevesebb rekordot kell generálni.
** Ötödik lépés
Most a vetítéseket fogjuk a fában süllyeszteni, amennyire csak tudjuk. Ehhez új
vetítéseket is létrehozhatunk, ha szükséges.
\clearpage
* Relációalgebraikifejezések transzformációi, ekvivalens kifejezések
A lekérdezés optimalizáció egy fontos eleme a relációs kifejezések
transzformációja. Ehhez különböző ekvivalencia szabályokat alkalmazunk.
@ -662,6 +677,7 @@ Valóban.
Itt is alkalmazhatóak.
*** STB
Ennél jóval több van. Csak egy pár fontosabbat soroltam itt fel.
\clearpage
* Relációs lekérdezések költségbecslés alapú optimalizálása
Ez egy jóval kifinomultabb metódus. Egy költség függvényt definiálunk, és ezek
után azt a végrehajtási tervet alkalmazzuk, amelyre ez a függvény a legkisebb
@ -684,6 +700,7 @@ szempontot is érdemes figyelembe venni.
\begin{align}
E_{\text{alg.}}=\text{Az algoritmus becsült költsége (estimate)}
\end{align}
\clearpage
* Katalógusban tárolt információk
A katalógus adatai fontos szerepet játszanak a lekérdezés optimalizációban. Ezek
segítségével lehet megbecsülni az egyes lekérdezések költségét.
@ -714,6 +731,7 @@ B* fáknál, azaz a csomópontokból induló ágak átlagos száma.
- hash-állománynál HTi = 1.
- $LB_i$ : az $i$ index legalsó szintű blokkjainak a száma, azaz a levélszintű
indexblokkok száma (Lowest level index Block)
\clearpage
* A lekérdezés költsége: szelekció, indexelt szelekció, join műveletek és algoritmusok, egyéb műveletek.
** Szelekciós művelet költségbecslése
*** Algoritmusok alapján
@ -804,6 +822,7 @@ Költsége: $b_r+n_r\cdot c$, ahol $c$ a szelekció költsége.
- Különbség(mindkét relációt rendezzük, fésülésnél csak az első relációbeli
rekordokat hagyjuk)
- Aggregáció
\clearpage
* Materializáció és pipelining
** Materializáció
Ebben a módszerben az összetett kifejezésnek egyszerre egy műveletét hajtjuk
@ -815,6 +834,7 @@ Itt egyszerre több elemi műveletet szimultán kiértékelése folyik, egy oper
eredményét azonnal megkapja a sorban következő operáció operandusaként.
Ez persze nem minden esetben működik, pl rendezés esetében.
\clearpage
* Kiértékelési terv kiválasztása
Az egyes műveletekre többféle algoritmust, metódust is megvizsgáltunk és közel
sem triviális ezek kiválasztása. Tudnunk kell, hogy:
@ -828,7 +848,7 @@ Nem jó ötlet az összes ekvivalens kifejezést felsorolni, kiértékelni, majd
legjobbat kiválasztani. Ennek az az oka,hogy ezzel túl sok lehetőséget kell
megvizsgálni. Ezért egy jobb megoldást biztosíthat a heurisztikus költségalapú
optimalizálás.
\clearpage
* Relációs adatbázis sémák tervezése E-R diagramból
Egy ER-diagram megtervezése után fontos lehet, hogy a megtervezett modellt
relációs adatmodellbe transzformáljuk, ezzel működőképessé téve. Ehhez
@ -844,6 +864,7 @@ transzformációt végzünk.
Ezen kívül számos más lehetőség van a kapcsolatok létrehozására, amelyek adott
esetben jobbak is lehetnek. Ilyen pl. az idegen kulcsos megoldás.
\clearpage
* Anomáliák (módosítási, törlési, beszúrási)
A redundáns relációknak megfelelő adattárolással kapcsolatban egy sor
kellemetlen jelenség fordulhat elő. Ezeket hagyományosan anomáliáknak nevezik.
@ -866,6 +887,7 @@ lehet.
Erre egy megoldás lehet a relációk függőleges felbontása,de ez nem minden
esetben alkalmazható.
\clearpage
* Adatbázis kényszerek, redundancia
** Adatbázis kényszerek
Adatbázis kényszerek kényszerek alatt azokat a szabályokat értjük, amelyek
@ -884,6 +906,7 @@ halmaza a neki megfeleltethető kulcsértékek halmazának)
Ha egy relációban valamely attribútum értéké a relációban található más
attribútum(ok) értékéből ki tudjuk következtetni valamely ismert következtetési
szabály segítségével, akkor a relációt redundánsnak nevezzük.
\clearpage
* Funkcionális függőségek
** Definíció
Legyen adott az $R(A_1,A_2,\ldots,A_n)$ reláció séma, ahol $A_i\text{-k}$,
@ -903,6 +926,7 @@ $X'\rightarrow Y$, akkor azt mondjuk, hogy $Y$ teljesen függ $X\text{-től}$.
** Részleges függés
Ha $X,Y\subseteq R$ és $X \rightarrow Y$ mellett $\exists X'\subset X$, hogy
$X'\rightarrow Y$, akkor azt mondjuk, hogy $Y$ részlegesen függ $X\text{-től}$.
\clearpage
* Relációs sémák kulcsai
** Kulcs
$X\text{-et}$ pontosan akkor nevezzük kulcsnak az $R$ relációs sémán, ha
@ -940,6 +964,7 @@ $F_R$ függőségből, ha az axiomák ismételt alkalmazásával $F_R\text{-ből
kiindulva megkaphatjuk $W\rightarrow Z\text{-t}$.
*Jelölése:* $F_R \vdash W\rightarrow Z$
\clearpage
* Armstrong axiómái a funkcionális függőségekről
Adottak az $R$ sémán az $X$, $Y$, $Z$ attribútumhalmazok.
1) Ha $X\subseteq Y$, akkor $Y\rightarrow X$ (reflexivitás vagy triviális függőség).
@ -956,8 +981,10 @@ $F_R \models X \rightarrow Y \implies FR \vdash X \rightarrow Y$
1) $X \rightarrow Y$ és $X\rightarrow Z \models X \rightarrow YZ$(egyesítési szabály).
2) $X \rightarrow Y$ és $WY \rightarrow Z \models XW \rightarrow Z$ (pszeudotranzitivitás).
3) $X \rightarrow Y$ és $Z \subseteq Y \models X \rightarrow Z$ (dekompozíciós/felbontási szabály).
* Az első normálforma (1NF)
3) $X \rightarrow Y$ és $Z \subseteq Y \models X \rightarrow Z$
(dekompozíciós/felbontási szabály).
\clearpage
* Az első normálforma (=1NF=)
Annak érdekében, hogy a fentebb említett anomáliák ne forduljanak elő, a relációs
sémáinknak meg kell felelni egyes feltételeknek. Ezeket normálformáknak nevezik.
** Nulladik normálforma
@ -966,21 +993,24 @@ attribútum nem atomi abban az értelemben, hogy az attribútum értéke nem
tekinthető egyetlen egységnek.
** Első normálforma
Egy relációs séma 1NF alakú, ha csak atomi attribútum-értékek szerepelnek benne.
* A második normálforma (2NF)
Egy relációs séma =1NF= alakú, ha csak atomi attribútum-értékek szerepelnek
benne.
\clearpage
* A második normálforma (=2NF=)
** Elsődleges és másodlagos attribútumok
Egy $R$ relációs séma $A\in R$ attribútuma elsődleges attribútum, ha $A$ eleme
a séma valamely $K$ kulcsának. Egyébként $A$ másodlagos attribútum.
** Második normálforma(2NF)
Egy $1NF$ relációs séma $2NF$ alakú, ha benne minden másodlagos attribútum a
Egy =1NF= relációs séma =2NF= alakú, ha benne minden másodlagos attribútum a
séma bármely kulcsától teljesen függ.
Más szavakkal: másodlagos attribútum nem függ egyetlen kulcs valódi
részhalmazától sem.
** Tétel
Minden $1NF$ séma felbontható $2NF$ sémákba úgy, hogy azok használatával az $1NF$
Minden =1NF= séma felbontható =2NF= sémákba úgy, hogy azok használatával az =1NF=
sémára illesztett, "eredeti" relációk helyreállíthatók.
* Harmadik normálforma (3NF)
\clearpage
* Harmadik normálforma (=3NF=)
** Triviális függés
Ha az $X,Y$ attribútumhalmazokra igaz, hogy $Y\subseteq X$, akkor $X\rightarrow
Y$ függőséget triviális függőségnek nevezzük, egyébként a függőség nemtriviális.
@ -988,47 +1018,48 @@ Y$ függőséget triviális függőségnek nevezzük, egyébként a függőség
Adott egy $R$ séma, a sémán értelmezett függőségek $F$ halmaza, $X\subseteq
R,A\in R$. $A$ tranzitívan függ $X\text{-től}$, ha $\exists Y\subset R$, hogy
$X\rightarrow Y$, $Y\not\to X$, $Y\to A$ és $A\notin Y$
** Harmadik normálforma (3NF)
*** 1. definíció
Egy $1NF$ séma $3NF$, ha $\forall A\in R$ másodlagos attribútum és $\forall
** Harmadik normálforma (=3NF=)
*** 1. Definíció
Egy =1NF= séma =3NF=, ha $\forall A\in R$ másodlagos attribútum és $\forall
X\subseteq R$ kulcs esetén $\nexists Y$, hogy $X\to Y$, $Y\not\to X$, $Y\to A$
és $A\not\in Y$
Más szavakkal: ha egyetlen másodlagos attribútuma sem függ tranzitívan egyetlen
kulcstól sem.
*** 2. Definíció
Egy $1NF$ $R$ séma $3NF$, ha $\forall X\to A, X\subseteq R, A\in R$ nemtriviális
Egy =1NF= $R$ séma =3NF=, ha $\forall X\to A, X\subseteq R, A\in R$ nemtriviális
függőség esetén
- X szuperkulcs vagy
- A elsődleges attribútum
** Tétel
Az előző két definíció ekvivalens
** Tétel
Ahhoz,hogy egy $(R,F)$ sémáról eldöntsük, hogy $3NF\text{-e}$, elég az $F$
Ahhoz,hogy egy $(R,F)$ sémáról eldöntsük, hogy =3NF=-e, elég az $F$
funkcionális függőségek vizsgálata.
** Tétel
Minden legalább $1NF$ relációs séma felbontható $3NF$ sémába úgy, hogy azokból
Minden legalább =1NF= relációs séma felbontható =3NF= sémába úgy, hogy azokból
az eredeti reláció információveszteség nélkül helyreállítható.
** Tétel
Ha egy séma $3NF$ alakú, akkor $2NF$ is egyben.
Ha egy séma =3NF= alakú, akkor =2NF= is egyben.
\clearpage
* A Boyce-Codd normálforma (BCNF)
** A BoyceCodd normálforma
*** 1. Definíció
Egy $1NF$ séma $3NF$, ha $\forall A\in R$ attribútum és $\forall
Egy =1NF= séma =3NF=, ha $\forall A\in R$ attribútum és $\forall
X\subseteq R$ kulcs esetén $\nexists Y$, hogy $X\to Y$, $Y\not\to X$, $Y\to A$
és $A\not\in Y$
Más szavakkal: ha egyetlen attribútuma sem függ tranzitívan egyetlen kulcstól sem.
*** 2. Definíció
Egy $1NF$ $R$ séma $BCNF$, ha $\forall X\to A,X\subseteq R,A\in R$ nemriviális
Egy =1NF= $R$ séma =BCNF=, ha $\forall X\to A,X\subseteq R,A\in R$ nemriviális
függőség esetén $X$ szuperkulcs.
** Tétel
Az előző két definíció ekvivalens.
** Tétel
Ahhoz, hogy egy (R,F) sémáról eldöntsük, hogy $BCNF\text{-e}$, elég az
Ahhoz, hogy egy (R,F) sémáról eldöntsük, hogy =BCNF=-e, elég az
$F\text{-beli}$ funkcionális függőségek vizsgálata.
** Tétel
Ha egy séma $BCNF$ alakú, akkor $3NF$ is.
Ha egy séma =BCNF= alakú, akkor =3NF= is.
*** Bizonyítás
Ez a definíció közvetlen következménye.
** Tétel
@ -1039,8 +1070,9 @@ Emiatt egyetlen attribútum értékét sem lehet kikövetkeztetni más attribút
értékeinek ismeretében, ismert funkcionális függőség alapján.
** BCNF adatbázis
Egy adatbázis $BCNF$ ($3NF$, $2NF$, $1NF$) alakú, ha a benne található összes relációs
séma rendre legalább $BCNF$ ($3NF$, $2NF$, $1NF$).
Egy adatbázis =BCNF= (=3NF=, =2NF=, =1NF=) alakú, ha a benne található összes relációs
séma rendre legalább =BCNF= (=3NF=, =2NF=, =1NF=).
\clearpage
* ACID tulajdonságok adatbázis-kezelő rendszerekben
** Tranzakció
Egy program egyszeri futása, amelyek vagy minden művelete hatásos, vagy belőle
@ -1054,6 +1086,7 @@ semmi sem.
egyedül futna csak le
- tartósság (durability): Ha egy tranzakció már sikeresen lefutott, akkor annak
hatása ``nem veszhet el''.
\clearpage
* lost update, non-repetable read, phantom read, dirty data
** Lost update (elveszett frissítés)
Két tranzakció egyszerre ugyan azt az adategységet módosítani, úgy hogy az egyik
@ -1071,7 +1104,7 @@ Egy $T_2$ tranzakció olyan ún. piszkos - adatot olvas, melyet egy másik,
$T_1$ tranzakció azelőtt írt az adatbázisba, hogy sikeresen befejeződött
volna. Ha a $T_1$ tranzakció végül valóban sikertelennek bizonyul, akkor a
piszkos adat az adatbázisból mihamarabb eltávolítandó.
\clearpage
* Problémák a zárakkal: pattok és éhezés
** Zár (lock)
Hozzáférési privilégium egy adategységen, amely adható és visszaadható.
@ -1109,10 +1142,15 @@ mindig lockolják előtte a kédéses adategységet, akkor éhezésről beszél
Egy lehetőség az éhezés elkerülésére, ha feljegyezzük a sikertelen zárkéréseket,
és ha egy adategység felszabadul, akkor zárat csak a zárkérések sorrendjében
ítélünk oda (FIFO stratégia)
\clearpage
* Ütemezések fajtái
** Ütemezés
Tranzakciók elemi műveleteinek összessége, melyben a műveletek időbeli sorrendje
is egyértelműen meghatározott.
** Soros ütemezés
Ha a tranzakciók egy rendszerben szigorúan egymás után futnak le úgy, hogy
egyidejűleg mindig csak egyetlen tranzakció fut, tehát időben nem lapolódnak át,
akkor ez egy soros ütemezés.
** Sorosíthatóság
Egy ütemezés pontosan akkor sorosítható, ha létezik olyan soros ütemezés,
amelyek minden hatása a módosított adatokra azonos az adott ütemezéssel.
@ -1128,6 +1166,7 @@ sorosíthatóság biztosítása). Ennek során
- Ha ennek feltételei nem állnak fent, akkor
- várakozásra kényszerítheti
- abortálhatja
\clearpage
* Tranzakció modellek
** Egyszerű tranzakció modell
Egyszerű tranzakció modellről beszélünk ha:
@ -1140,41 +1179,44 @@ adott $S$ ütemezésben a $T_i$ tranzakció zárat helyezett el, majd a zár
felszabadítása után először a $T_j$ tranzakció helyez el zárat.
** Tétel
Egy $S$ ütemezés sorosítható $\Leftrightarrow$ a sorosítási gráf DAG.
* Kétfázisú zárolás (2PL)
** Kétfázisú zárolás (2PL)
\clearpage
* Kétfázisú zárolás (=2PL=)
** Kétfázisú zárolás (=2PL=)
Egy tranzakció a kétfázisú zárolás protokollt követi, ha az első
zárfelszabadítást megelőzni mindegyik zárkérés.
** Tétel
Ha egy legális ütemezés minden tranzakciója a $2PL\text{-t}$ követi, akkor az
Ha egy legális ütemezés minden tranzakciója a =2PL=-t követi, akkor az
ütemezés sorosítható.
** Zárpont
Az az időpont, amikor egy kétfázisú protokoll szerinti tranzakció az utolsó
zárját is megkapja.
** RLOCK-WLOCK modell
A modell két fajta zárt definiál:
- RLOCK: ha $T:RLOCK$ $A$ érvényes, akkor más tranzakció is olvashatja
- RLOCK: ha $T$: =RLOCK A= érvényes, akkor más tranzakció is olvashatja
$A\text{-t}$, de írni egy sem írhatja
- WLOCK: ha $T:WLOCK$ $A$ érvényes, akkor $T\text{-n}$ kívül más tranzakció nem
- WLOCK: ha $T$: =WLOCK A= érvényes, akkor $T\text{-n}$ kívül más tranzakció nem
fér hozzá $A\text{-hoz}$, sem írásra , sem olvasásra.
** Tétel
Egy $RLOCK-WLOCK$ modellbeli $S$ ütemezés sorosítható $\Leftrightarrow$ a fenti
Egy =RLOCK-WLOCK= modellbeli $S$ ütemezés sorosítható $\Leftrightarrow$ a fenti
szabályok szerint rajzolt sorosítási gráf DAG.
** Definíció
Egy $RLOCK-WLOCK$ modell szerinti tranzakció kétfázisú, ha minden $RLOCK$ és
$WLOCK$ megelőzi az első $UNLOCK\text{-ot}$
Egy =RLOCK-WLOCK= modell szerinti tranzakció kétfázisú, ha minden =RLOCK= és
=WLOCK= megelőzi az első =UNLOCK=-ot.
** Tétel
Ha egy ütemezésben csak kétfázisú, $RLOCK-WLOCK$ modell szerinti tranzakciók
Ha egy ütemezésben csak kétfázisú, =RLOCK-WLOCK= modell szerinti tranzakciók
vannak, akkor az ütemezés sorosítható.
\clearpage
* A fa protokoll
Az egyszerű tranzakció modellt követjük és egy csomópont
zárolása nem jelenti a gyerekek zárolását is.
** Szabályai
1. Egy tranzakció az első $LOCK\text{-ot}$ akárhová teheti
2. A további $LOCK\text{-ok}$ csak akkor helyezhetők el, ha az adategység
1. Egy tranzakció az első =LOCK=-ot akárhová teheti
2. A további =LOCK=-ok csak akkor helyezhetők el, ha az adategység
szülőjére az adott tranzakció már rakott zárat
3. Egyazon tranzakció kétszer ugyanazt az adategységet nem zárolhatja
** Tétel
A fa protokollnak eleget tevő legális ütemezések sorosíthatók.
\clearpage
* Figyelmeztető protokoll
Az egyszerű tranzakció modellt követjük, de egy csomópont zárolása a gyerek és
az összes leszármazott csomópontok zárolását is jelenti(implicit zár).
@ -1182,21 +1224,23 @@ az összes leszármazott csomópontok zárolását is jelenti(implicit zár).
Egy $T_2$ tranzakció, egy olyan adategységre tesz lockot, amely leszármazottját
már egy $T_1$ tranzakció lezárt magának.
** Figyelmeztető protokoll zárművei
- $LOCK$ $A$: zárolja $A\text{-t}$ és az összes leszármazott csomópontot is. Két
- =LOCK A=: zárolja $A\text{-t}$ és az összes leszármazott csomópontot is. Két
különböző tranzakció nem tarthat fent zárat ugyanazon adategységen.
- $WARN$ $A$: $A\text{-ra}$ figyelmeztetést rak. Ekkor $A\text{-t}$ más
- =WARN A=: $A\text{-ra}$ figyelmeztetést rak. Ekkor $A\text{-t}$ más
tranzakció nem zárolhatja
- $UNLOCK$ $A$: eltávolítja a zárat vagy az $UNLOCK\text{-ot}$ kiadó tranzakció
- =UNLOCK A=: eltávolítja a zárat vagy az =UNLOCK=-ot kiadó tranzakció
által elhelyezett figyelmeztetést $A\text{-ról}$
** További szabályok
1. Egy tranzakció első művelete kötelezően $LOCK$ gyökér vagy $WARN$ gyökér
2. $LOCK$ $A$ vagy $WARN$ $A$ akkor helyezhető el, ha $A$ szülőjén ugyanaz a
tranzakció már helyezett el $WARN\text{-t}$.
3. $UNLOCK$ $A$ akkor lehetséges, ha gyerekein már ugyanaz a tranzakció nem tart
fenn sem $LOCK\text{-ot}$ sem $WARN\text{-t}$
4. Kétfázisú: az első $UNLOCK$ után nem következhet $LOCK$ vagy $WARN$
1. Egy tranzakció első művelete kötelezően =LOCK= gyökér vagy =WARN= gyökér
2. =LOCK A= vagy =WARN A= akkor helyezhető el, ha $A$ szülőjén ugyanaz a
tranzakció már helyezett el =WARN=-t.
3. =UNLOCK A= akkor lehetséges, ha gyerekein már ugyanaz a tranzakció nem tart
fenn sem =LOCK=-ot sem =WARN=-t
4. Kétfázisú: az első =UNLOCK= után nem következhet =LOCK= vagy =WARN=
** Tétel
A figyelmeztető protokollt követő legális ütemezés zárkonfliktusmentesek és sorosíthatóak.
A figyelmeztető protokollt követő legális ütemezés zárkonfliktusmentesek és
sorosíthatóak.
\clearpage
* Tranzakcióhibák kezelése, commit pont
Mindeddig nem foglalkoztunk azokkal a problémákkal, amelyek akkor lépnek fel,
ha egy tranzakció nem fut le teljesen, valamely ok miatt idő előtt befejeződik.
@ -1219,6 +1263,7 @@ commitált volna.
Azt a jelenséget, amikor egy tranzakciók piszkos adatot olvasnak be és ezzel
végeznek el műveleteket, lavinának nevezzük, hiszen ezek az eredmények nem
tekinthetők helyesnek.
\clearpage
* Szigorú kétfázisú protokoll
A tranzakcióhibák kezelésének igen gyakori módszere. Egy tranzakció ezt a
protokollt követi, ha kétfázisú, továbbá
@ -1239,6 +1284,7 @@ sorosíthatóak és lavinamentesek.
*** Bizonyítás
Az ütemezés sorosítható, mert kétfázisú; továbbá lavinamentes,
mert nincs lehetőség piszkos adat olvasására.
\clearpage
* Agresszív és konzervatív protokollok
Tranzakciós protokoll kiválasztásánál fontos, hogy az adott protokoll mennyire
``hatékony''. A hatékonyságot nézhetjük úgy, hogy
@ -1254,6 +1300,7 @@ lehetséges, nem törődve azzal, hogy ez esetleg aborthoz is vezethet.
** Konzervatív protokoll, pesszimista konkurenciakezelés
Egy protokoll konzervatív, ha megkísérli elkerülni az olyan tranzakciók
futtatását, amelyek nem biztos, hogy eredményesek lesznek.
\clearpage
* Védekezés rendszerhibák ellen
A rendszerhibák elleni védekezés általános módszere a (tranzakciós) naplózás. 6
A naplózásnak számos módja lehet, itt csak a leggyakoribbakra térünk ki.
@ -1267,6 +1314,7 @@ az kerülhet a naplóba, hogy hogyan kell az adategység új értékét előáll
Alapszabály, hogy a naplót azelőtt írjuk, mielőtt a naplózott műveletre sor kerülne
(kivétel: az abort művelet naplózása).
\clearpage
* Hatékonysági kérdések
Fontos, hogy a napló stabil tárban legyen eltárolva,hiszen ez használható
helyreállításra. Ez viszont azzal jár, hogy az adatbázis blokkjai mellett a napló
@ -1284,13 +1332,13 @@ blokkműveletet végzünk. Ugyanakkor szabály, hogy egy tranzakció vége után
is kiírandó a háttértárra, ha a lapozási stratégia ezt még nem követelné meg,
hiszen ezáltal válik a tranzakció tartósan akár megismételhetően
végrehajtottá (az ACID-ból a tartósság így teljesül).
\clearpage
* A redo protokoll
A protokoll onnan kapta a nevét, hogy rendszer- vagy tranzakcióhiba esetén nincs
szükség undo műveletre, csak redo művelet kell.
** Redo naplózás
A redo naplózás a szigorú $2PL$ finomítása.
A redo naplózás a szigorú =2PL= finomítása.
*** Lépései
1. $(T,\text{ begin})$ naplóba
@ -1321,6 +1369,7 @@ kerül.
Ha a redo helyreállítás elszáll, akkor egyszerűen megismételendő, hiszen
a 4. pontban végzett műveletek hatása az adatbázisra idempotens (idempotent).
\clearpage
* Ellenőrzési pontok
A redo helyreállításnál előfordulhat, hogy túl régi időpontra kell visszamennie
ahhoz, hogy a helyreállításhoz megfelelő időpontot találjunk. Ezen a problémán segítenek az ellenőrzési pontok, amikor kikény-
@ -1344,6 +1393,7 @@ szerítik az adatbázisnak egy konzisztens állapotát:
- adott idő eltelte után
- adott számú tranzakció után
- az előző kettő kombinációja
\clearpage
* Időbélyeges tranzakciókezelés R/W modellben
** Időbélyeg
Olyan érték, amelyet minden tranzakcióhoz szigorú egyediséget biztosítva
@ -1444,8 +1494,8 @@ illetve $A$ adategység, $R(A)$ olvasási- és $W(A)$ írási-időbélyege
\node at (5.5,-0.8) {Időbélyegek azonosítója};
\end{tikzpicture}
\end{center}
* Az időbélyeges R/W modell és a 2PL összehasonlítása
\clearpage
* Az időbélyeges R/W modell és a =2PL= összehasonlítása
Elképzelhető, hogy egy ütemezés sorosítható
időbélyegesen, de kétfázisú zárakkal nem
@ -1456,7 +1506,7 @@ Elképzelhető, hogy egy ütemezés sorosítható
Tanulság: sem a zárakkal, sem az időbélyegekkel való sorosítás nem jobb egyér-
telműen a másiknál.
\clearpage
* Tranzakcióhibák és az időbélyegek
Elképzelhető olyan helyzet, amelyben egy $T_1$ tranzakció előállít egy $A$
adategységben értékeket, majd egy $T_2$ tranzakció ezt beolvassa, de később
@ -1484,6 +1534,7 @@ amikor tehát lavinaveszéllyel kell számolni.
\draw[black] (9.0,0.15) -- (9.0,-0.15) node[below] {írás az adatbázisba};
\end{tikzpicture}
\end{center}
\clearpage
* Verziókezelés időbélyegek mellett ($MVCC$)
Feltételezés: minden adatelem írásakor a régi értéket is megőrizzük.