Compare commits
2 commits
b56820b67d
...
9c8173c166
Author | SHA1 | Date | |
---|---|---|---|
9c8173c166 | |||
6ee628f3d0 |
2 changed files with 109 additions and 55 deletions
3
README.org
Normal file
3
README.org
Normal 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
161
db.org
|
@ -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 Boyce–Codd 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.
|
||||
|
||||
|
|
Loading…
Reference in a new issue