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}$ .
|
Olyan adat,amire struktúrális $\text{metaadat} \approx \text{adat}$ .
|
||||||
*** Nem struktúrált adat
|
*** Nem struktúrált adat
|
||||||
Olyan adat,amihez egyáltalán nem értelmezünk.
|
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, feladatai, felépítése, használói
|
||||||
** Adatbázis kezelő fogalma
|
** Adatbázis kezelő fogalma
|
||||||
Az adatbáziskezelő, olyan hardware- softwarerendszer, amelyet 3 fő tulajdonság
|
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.
|
teszi lehetővé a visszaállítást a mentés időpontjának állapotába.
|
||||||
**** DBMS tervező/programozó (DBMS designer/programmer)
|
**** 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.
|
Tudja, hogyan kell DBMS-t készíteni, ami különösen specializált tudást igényel.
|
||||||
|
\clearpage
|
||||||
* Heap szervezés
|
* Heap szervezés
|
||||||
** Általános jellemzői
|
** Általános jellemzői
|
||||||
Jelentése halmaz, kupac. Ez a legegyszerűbb tárolási megoldás. Legalább annyi
|
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
|
*** Módosítás
|
||||||
Először meg kell keresnünk a blokkot,amiben a keresett rekord található. Majd a
|
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.
|
rekord módosítása után a blokkot vissza kell írni a háttértárra.
|
||||||
|
\clearpage
|
||||||
* Hash-állományok
|
* 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
|
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 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
|
Ha kulcs mező is módosul akkor a törlés és a beszurás műveletet kell alkalmazni
|
||||||
egymás után.
|
egymás után.
|
||||||
|
\clearpage
|
||||||
* Indexelt állományok
|
* Indexelt állományok
|
||||||
|
|
||||||
Az indexelt szervezés alapgondolata: a keresés kulcsát egy ún. indexállományban
|
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)
|
1. indexrekordot rendelünk minden egyes adatrekordhoz (sűrű index)
|
||||||
2. indexrekordot rendelünk adatrekordok egy csoportjához, tipikusan az egy
|
2. indexrekordot rendelünk adatrekordok egy csoportjához, tipikusan az egy
|
||||||
blokkban levőkhöz. (ritka index)
|
blokkban levőkhöz. (ritka index)
|
||||||
|
\clearpage
|
||||||
* Ritka index, B*-fák
|
* Ritka index, B*-fák
|
||||||
** Ritka index
|
** Ritka index
|
||||||
Ebben az esetben indexrekordot redot az adatrekordok egy csoportjához
|
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ódosítására.
|
||||||
*** Módósítás
|
*** Módósítás
|
||||||
Megegyezik a ritka index beli módosítás elvével.
|
Megegyezik a ritka index beli módosítás elvével.
|
||||||
|
\clearpage
|
||||||
* Sűrű indexek, előnyök és hátrányok
|
* Sűrű indexek, előnyök és hátrányok
|
||||||
|
|
||||||
Minden adatrekordhoz tartozik egy index rekord. Ez általában még mindig a
|
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
|
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
|
háttértárra. Ha a módosítás kulcsmezőt is érintett, akkor az indexállományt
|
||||||
újrarendezzük.
|
újrarendezzük.
|
||||||
|
\clearpage
|
||||||
* Változó hosszúságú rekordok kezelése
|
* Változó hosszúságú rekordok kezelése
|
||||||
** Változó hosszú ságú rekordok oka
|
** Változó hosszú ságú rekordok oka
|
||||||
- Egy mező hossza változó
|
- 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:
|
Erre több megoldás is létezik:
|
||||||
- A maximális számú ismétlődésnek elegendő helyet foglalunk le minden rekordnak
|
- A maximális számú ismétlődésnek elegendő helyet foglalunk le minden rekordnak
|
||||||
- Mutatók használata
|
- Mutatók használata
|
||||||
|
\clearpage
|
||||||
* Részleges információ alapján történő keresés
|
* 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
|
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
|
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
|
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
|
ismert darabjait. Mindenazon vödröket kell megnézni amelyeknek a sorszáma
|
||||||
illeszkedik a kapott bitmintára.
|
illeszkedik a kapott bitmintára.
|
||||||
|
\clearpage
|
||||||
* Több kulcs szerinti keresés támogatása
|
* Több kulcs szerinti keresés támogatása
|
||||||
Fontos, hogy egy adatbáziskezelő ne csak elsődleges kulcs szerint tudjon
|
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
|
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
|
A [[masodik]]. lehetőségben az adatállomány rekordjai szabadok lehetnek, viszont nem
|
||||||
ismerjük a keresett rekord címét.
|
ismerjük a keresett rekord címét.
|
||||||
|
\clearpage
|
||||||
* Adatmodellek, modellezés
|
* Adatmodellek, modellezés
|
||||||
Amikor egy adatbázist létrehozunk a cél az, hogy egy kiválasztott valós dologról
|
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
|
ú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
|
- Hálós adatmodell
|
||||||
- Relációs adatmodell
|
- Relációs adatmodell
|
||||||
- Objektumorientált adatmodell
|
- Objektumorientált adatmodell
|
||||||
|
\clearpage
|
||||||
* Az E-R modell és elemei
|
* Az E-R modell és elemei
|
||||||
Az egyed kapcsolat (entity-relationship; ER) modell nem tekinthető
|
Az egyed kapcsolat (entity-relationship; ER) modell nem tekinthető
|
||||||
adatmodellnek, hiszen nem definiál műveleteket az adatokon.
|
adatmodellnek, hiszen nem definiál műveleteket az adatokon.
|
||||||
|
@ -409,6 +418,7 @@ tartozhat.
|
||||||
*** Kulcs
|
*** Kulcs
|
||||||
Az ER-modellezésben az attribútumok azt a halmazát, amely egyértelműen azonosít
|
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.
|
egy entitás példányait, kulcsnak nevezzük.
|
||||||
|
\clearpage
|
||||||
* Az E-R diagram, ISA kapcsolatok, gyenge egyedhalmazok
|
* Az E-R diagram, ISA kapcsolatok, gyenge egyedhalmazok
|
||||||
** ER-diagram
|
** ER-diagram
|
||||||
Az ER modell egy grafikus megjelenítése az 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
|
tulajdonos egyedhalmaz (owner entity set) biztosítja,amely a gyenge
|
||||||
egyedhalmazzal több-egy kapcsolatban áll. Az ilyen kapcsolat neve: determináló
|
egyedhalmazzal több-egy kapcsolatban áll. Az ilyen kapcsolat neve: determináló
|
||||||
kapcsolat.
|
kapcsolat.
|
||||||
|
\clearpage
|
||||||
* A relációs adatmodell: adatok strukturálása és műveletek
|
* A relációs adatmodell: adatok strukturálása és műveletek
|
||||||
|
|
||||||
** Struktúrája
|
** Struktúrája
|
||||||
|
@ -465,7 +475,7 @@ A relációban található sorok száma
|
||||||
** Műveletek
|
** Műveletek
|
||||||
A relációs adatmodell a relációkon megengedett műveletek meghatározásával válik
|
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).
|
teljessé. Ezen műveletekből épül fel az ún. relációs algebra (relational algebra).
|
||||||
|
\clearpage
|
||||||
* Relációalgebra
|
* Relációalgebra
|
||||||
** Egyesítés, Unió
|
** Egyesítés, Unió
|
||||||
Az attribútumok száma mindkét relációban ugyanannyinak kell lennie, de az egyes
|
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$
|
*Jelölése:* $r \underset{\Theta}{\Join} s$
|
||||||
** Hányados
|
** Hányados
|
||||||
Jelölje $r \div s$ azt a relációt, amelyre igaz az, hogy az $s\text{-sel}$ alkotott Descartes-szorzata
|
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, oszlopkalkulus
|
||||||
** Sorkalkulus
|
** Sorkalkulus
|
||||||
*** Fogalma
|
*** 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
|
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
|
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.
|
kifejezése,amely az előzővel azonos relációt határoz meg.
|
||||||
|
\clearpage
|
||||||
* Biztonságos sorkalkulus
|
* Biztonságos sorkalkulus
|
||||||
A biztonságos sorkalkulus célja az, hogy a sorkalkulus kifejezések
|
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ő
|
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}\}$
|
értékeik}\}\cup\{\Psi\text{-ben előforduló konstansok}\}$
|
||||||
** Biztonságos kifejezés
|
** Biztonságos kifejezés
|
||||||
$\{t|\Psi(t)\}$ biztonságos, ha
|
$\{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
|
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
|
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}$
|
értéke mellett, akkor $u$ minden komponense $\text{DOM}(\omega)\text{-beli}$
|
||||||
** Tétel
|
** Tétel
|
||||||
A relációs algebra és a biztonságos sorkalkulus kifejezőereje ekvivalens.
|
A relációs algebra és a biztonságos sorkalkulus kifejezőereje ekvivalens.
|
||||||
|
\clearpage
|
||||||
* Relációs lekérdezések heurisztikus optimalizálása
|
* 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
|
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
|
é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
|
** Ötödik lépés
|
||||||
Most a vetítéseket fogjuk a fában süllyeszteni, amennyire csak tudjuk. Ehhez új
|
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.
|
vetítéseket is létrehozhatunk, ha szükséges.
|
||||||
|
\clearpage
|
||||||
* Relációalgebraikifejezések transzformációi, ekvivalens kifejezések
|
* 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
|
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.
|
transzformációja. Ehhez különböző ekvivalencia szabályokat alkalmazunk.
|
||||||
|
@ -662,6 +677,7 @@ Valóban.
|
||||||
Itt is alkalmazhatóak.
|
Itt is alkalmazhatóak.
|
||||||
*** STB
|
*** STB
|
||||||
Ennél jóval több van. Csak egy pár fontosabbat soroltam itt fel.
|
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
|
* 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
|
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
|
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}
|
\begin{align}
|
||||||
E_{\text{alg.}}=\text{Az algoritmus becsült költsége (estimate)}
|
E_{\text{alg.}}=\text{Az algoritmus becsült költsége (estimate)}
|
||||||
\end{align}
|
\end{align}
|
||||||
|
\clearpage
|
||||||
* Katalógusban tárolt információk
|
* Katalógusban tárolt információk
|
||||||
A katalógus adatai fontos szerepet játszanak a lekérdezés optimalizációban. Ezek
|
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.
|
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.
|
- hash-állománynál HTi = 1.
|
||||||
- $LB_i$ : az $i$ index legalsó szintű blokkjainak a száma, azaz a levélszintű
|
- $LB_i$ : az $i$ index legalsó szintű blokkjainak a száma, azaz a levélszintű
|
||||||
indexblokkok száma (Lowest level index Block)
|
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.
|
* 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
|
** Szelekciós művelet költségbecslése
|
||||||
*** Algoritmusok alapján
|
*** 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
|
- Különbség(mindkét relációt rendezzük, fésülésnél csak az első relációbeli
|
||||||
rekordokat hagyjuk)
|
rekordokat hagyjuk)
|
||||||
- Aggregáció
|
- Aggregáció
|
||||||
|
\clearpage
|
||||||
* Materializáció és pipelining
|
* Materializáció és pipelining
|
||||||
** Materializáció
|
** Materializáció
|
||||||
Ebben a módszerben az összetett kifejezésnek egyszerre egy műveletét hajtjuk
|
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.
|
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.
|
Ez persze nem minden esetben működik, pl rendezés esetében.
|
||||||
|
\clearpage
|
||||||
* Kiértékelési terv kiválasztása
|
* Kiértékelési terv kiválasztása
|
||||||
Az egyes műveletekre többféle algoritmust, metódust is megvizsgáltunk és közel
|
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:
|
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
|
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ú
|
megvizsgálni. Ezért egy jobb megoldást biztosíthat a heurisztikus költségalapú
|
||||||
optimalizálás.
|
optimalizálás.
|
||||||
|
\clearpage
|
||||||
* Relációs adatbázis sémák tervezése E-R diagramból
|
* 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
|
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
|
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
|
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.
|
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)
|
* 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
|
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.
|
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
|
Erre egy megoldás lehet a relációk függőleges felbontása,de ez nem minden
|
||||||
esetben alkalmazható.
|
esetben alkalmazható.
|
||||||
|
\clearpage
|
||||||
* Adatbázis kényszerek, redundancia
|
* Adatbázis kényszerek, redundancia
|
||||||
** Adatbázis kényszerek
|
** Adatbázis kényszerek
|
||||||
Adatbázis kényszerek kényszerek alatt azokat a szabályokat értjük, amelyek
|
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
|
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
|
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.
|
szabály segítségével, akkor a relációt redundánsnak nevezzük.
|
||||||
|
\clearpage
|
||||||
* Funkcionális függőségek
|
* Funkcionális függőségek
|
||||||
** Definíció
|
** Definíció
|
||||||
Legyen adott az $R(A_1,A_2,\ldots,A_n)$ reláció séma, ahol $A_i\text{-k}$,
|
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
|
** Részleges függés
|
||||||
Ha $X,Y\subseteq R$ és $X \rightarrow Y$ mellett $\exists X'\subset X$, hogy
|
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}$.
|
$X'\rightarrow Y$, akkor azt mondjuk, hogy $Y$ részlegesen függ $X\text{-től}$.
|
||||||
|
\clearpage
|
||||||
* Relációs sémák kulcsai
|
* Relációs sémák kulcsai
|
||||||
** Kulcs
|
** Kulcs
|
||||||
$X\text{-et}$ pontosan akkor nevezzük kulcsnak az $R$ relációs sémán, ha
|
$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}$.
|
kiindulva megkaphatjuk $W\rightarrow Z\text{-t}$.
|
||||||
|
|
||||||
*Jelölése:* $F_R \vdash W\rightarrow Z$
|
*Jelölése:* $F_R \vdash W\rightarrow Z$
|
||||||
|
\clearpage
|
||||||
* Armstrong axiómái a funkcionális függőségekről
|
* Armstrong axiómái a funkcionális függőségekről
|
||||||
Adottak az $R$ sémán az $X$, $Y$, $Z$ attribútumhalmazok.
|
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).
|
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).
|
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).
|
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).
|
3) $X \rightarrow Y$ és $Z \subseteq Y \models X \rightarrow Z$
|
||||||
* Az első normálforma (1NF)
|
(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
|
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.
|
sémáinknak meg kell felelni egyes feltételeknek. Ezeket normálformáknak nevezik.
|
||||||
** Nulladik normálforma
|
** 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.
|
tekinthető egyetlen egységnek.
|
||||||
|
|
||||||
** Első normálforma
|
** Első normálforma
|
||||||
Egy relációs séma 1NF alakú, ha csak atomi attribútum-értékek szerepelnek benne.
|
Egy relációs séma =1NF= alakú, ha csak atomi attribútum-értékek szerepelnek
|
||||||
* A második normálforma (2NF)
|
benne.
|
||||||
|
\clearpage
|
||||||
|
* A második normálforma (=2NF=)
|
||||||
** Elsődleges és másodlagos attribútumok
|
** 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
|
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.
|
a séma valamely $K$ kulcsának. Egyébként $A$ másodlagos attribútum.
|
||||||
** Második normálforma(2NF)
|
** 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.
|
séma bármely kulcsától teljesen függ.
|
||||||
|
|
||||||
Más szavakkal: másodlagos attribútum nem függ egyetlen kulcs valódi
|
Más szavakkal: másodlagos attribútum nem függ egyetlen kulcs valódi
|
||||||
részhalmazától sem.
|
részhalmazától sem.
|
||||||
** Tétel
|
** 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.
|
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
|
** Triviális függés
|
||||||
Ha az $X,Y$ attribútumhalmazokra igaz, hogy $Y\subseteq X$, akkor $X\rightarrow
|
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.
|
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
|
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
|
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$
|
$X\rightarrow Y$, $Y\not\to X$, $Y\to A$ és $A\notin Y$
|
||||||
** Harmadik normálforma (3NF)
|
** Harmadik normálforma (=3NF=)
|
||||||
*** 1. definíció
|
*** 1. Definíció
|
||||||
Egy $1NF$ séma $3NF$, ha $\forall A\in R$ másodlagos attribútum és $\forall
|
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$
|
X\subseteq R$ kulcs esetén $\nexists Y$, hogy $X\to Y$, $Y\not\to X$, $Y\to A$
|
||||||
és $A\not\in Y$
|
és $A\not\in Y$
|
||||||
|
|
||||||
Más szavakkal: ha egyetlen másodlagos attribútuma sem függ tranzitívan egyetlen
|
Más szavakkal: ha egyetlen másodlagos attribútuma sem függ tranzitívan egyetlen
|
||||||
kulcstól sem.
|
kulcstól sem.
|
||||||
*** 2. Definíció
|
*** 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
|
függőség esetén
|
||||||
- X szuperkulcs vagy
|
- X szuperkulcs vagy
|
||||||
- A elsődleges attribútum
|
- A elsődleges attribútum
|
||||||
** Tétel
|
** Tétel
|
||||||
Az előző két definíció ekvivalens
|
Az előző két definíció ekvivalens
|
||||||
** Tétel
|
** 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.
|
funkcionális függőségek vizsgálata.
|
||||||
** Tétel
|
** 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ó.
|
az eredeti reláció információveszteség nélkül helyreállítható.
|
||||||
** Tétel
|
** 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 (BCNF)
|
||||||
** A Boyce–Codd normálforma
|
** A Boyce–Codd normálforma
|
||||||
*** 1. Definíció
|
*** 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$
|
X\subseteq R$ kulcs esetén $\nexists Y$, hogy $X\to Y$, $Y\not\to X$, $Y\to A$
|
||||||
és $A\not\in Y$
|
és $A\not\in Y$
|
||||||
|
|
||||||
Más szavakkal: ha egyetlen attribútuma sem függ tranzitívan egyetlen kulcstól sem.
|
Más szavakkal: ha egyetlen attribútuma sem függ tranzitívan egyetlen kulcstól sem.
|
||||||
*** 2. Definíció
|
*** 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.
|
függőség esetén $X$ szuperkulcs.
|
||||||
** Tétel
|
** Tétel
|
||||||
Az előző két definíció ekvivalens.
|
Az előző két definíció ekvivalens.
|
||||||
** Tétel
|
** 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.
|
$F\text{-beli}$ funkcionális függőségek vizsgálata.
|
||||||
** Tétel
|
** Tétel
|
||||||
Ha egy séma $BCNF$ alakú, akkor $3NF$ is.
|
Ha egy séma =BCNF= alakú, akkor =3NF= is.
|
||||||
*** Bizonyítás
|
*** Bizonyítás
|
||||||
Ez a definíció közvetlen következménye.
|
Ez a definíció közvetlen következménye.
|
||||||
** Tétel
|
** 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.
|
értékeinek ismeretében, ismert funkcionális függőség alapján.
|
||||||
|
|
||||||
** BCNF adatbázis
|
** BCNF adatbázis
|
||||||
Egy adatbázis $BCNF$ ($3NF$, $2NF$, $1NF$) alakú, ha a benne található összes relációs
|
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$).
|
séma rendre legalább =BCNF= (=3NF=, =2NF=, =1NF=).
|
||||||
|
\clearpage
|
||||||
* ACID tulajdonságok adatbázis-kezelő rendszerekben
|
* ACID tulajdonságok adatbázis-kezelő rendszerekben
|
||||||
** Tranzakció
|
** Tranzakció
|
||||||
Egy program egyszeri futása, amelyek vagy minden művelete hatásos, vagy belőle
|
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
|
egyedül futna csak le
|
||||||
- tartósság (durability): Ha egy tranzakció már sikeresen lefutott, akkor annak
|
- tartósság (durability): Ha egy tranzakció már sikeresen lefutott, akkor annak
|
||||||
hatása ``nem veszhet el''.
|
hatása ``nem veszhet el''.
|
||||||
|
\clearpage
|
||||||
* lost update, non-repetable read, phantom read, dirty data
|
* lost update, non-repetable read, phantom read, dirty data
|
||||||
** Lost update (elveszett frissítés)
|
** Lost update (elveszett frissítés)
|
||||||
Két tranzakció egyszerre ugyan azt az adategységet módosítani, úgy hogy az egyik
|
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
|
$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
|
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ó.
|
piszkos adat az adatbázisból mihamarabb eltávolítandó.
|
||||||
|
\clearpage
|
||||||
* Problémák a zárakkal: pattok és éhezés
|
* Problémák a zárakkal: pattok és éhezés
|
||||||
** Zár (lock)
|
** Zár (lock)
|
||||||
Hozzáférési privilégium egy adategységen, amely adható és visszaadható.
|
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,
|
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
|
és ha egy adategység felszabadul, akkor zárat csak a zárkérések sorrendjében
|
||||||
ítélünk oda (FIFO stratégia)
|
ítélünk oda (FIFO stratégia)
|
||||||
|
\clearpage
|
||||||
* Ütemezések fajtái
|
* Ütemezések fajtái
|
||||||
** Ütemezés
|
** Ütemezés
|
||||||
Tranzakciók elemi műveleteinek összessége, melyben a műveletek időbeli sorrendje
|
Tranzakciók elemi műveleteinek összessége, melyben a műveletek időbeli sorrendje
|
||||||
is egyértelműen meghatározott.
|
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
|
** Sorosíthatóság
|
||||||
Egy ütemezés pontosan akkor sorosítható, ha létezik olyan soros ütemezés,
|
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.
|
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
|
- Ha ennek feltételei nem állnak fent, akkor
|
||||||
- várakozásra kényszerítheti
|
- várakozásra kényszerítheti
|
||||||
- abortálhatja
|
- abortálhatja
|
||||||
|
\clearpage
|
||||||
* Tranzakció modellek
|
* Tranzakció modellek
|
||||||
** Egyszerű tranzakció modell
|
** Egyszerű tranzakció modell
|
||||||
Egyszerű tranzakció modellről beszélünk ha:
|
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.
|
felszabadítása után először a $T_j$ tranzakció helyez el zárat.
|
||||||
** Tétel
|
** Tétel
|
||||||
Egy $S$ ütemezés sorosítható $\Leftrightarrow$ a sorosítási gráf DAG.
|
Egy $S$ ütemezés sorosítható $\Leftrightarrow$ a sorosítási gráf DAG.
|
||||||
* Kétfázisú zárolás (2PL)
|
\clearpage
|
||||||
** Kétfázisú zárolás (2PL)
|
* 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ő
|
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.
|
zárfelszabadítást megelőzni mindegyik zárkérés.
|
||||||
** Tétel
|
** 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ó.
|
ütemezés sorosítható.
|
||||||
** Zárpont
|
** Zárpont
|
||||||
Az az időpont, amikor egy kétfázisú protokoll szerinti tranzakció az utolsó
|
Az az időpont, amikor egy kétfázisú protokoll szerinti tranzakció az utolsó
|
||||||
zárját is megkapja.
|
zárját is megkapja.
|
||||||
** RLOCK-WLOCK modell
|
** RLOCK-WLOCK modell
|
||||||
A modell két fajta zárt definiál:
|
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
|
$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.
|
fér hozzá $A\text{-hoz}$, sem írásra , sem olvasásra.
|
||||||
** Tétel
|
** 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.
|
szabályok szerint rajzolt sorosítási gráf DAG.
|
||||||
** Definíció
|
** Definíció
|
||||||
Egy $RLOCK-WLOCK$ modell szerinti tranzakció kétfázisú, ha minden $RLOCK$ és
|
Egy =RLOCK-WLOCK= modell szerinti tranzakció kétfázisú, ha minden =RLOCK= és
|
||||||
$WLOCK$ megelőzi az első $UNLOCK\text{-ot}$
|
=WLOCK= megelőzi az első =UNLOCK=-ot.
|
||||||
** Tétel
|
** 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ó.
|
vannak, akkor az ütemezés sorosítható.
|
||||||
|
\clearpage
|
||||||
* A fa protokoll
|
* A fa protokoll
|
||||||
Az egyszerű tranzakció modellt követjük és egy csomópont
|
Az egyszerű tranzakció modellt követjük és egy csomópont
|
||||||
zárolása nem jelenti a gyerekek zárolását is.
|
zárolása nem jelenti a gyerekek zárolását is.
|
||||||
** Szabályai
|
** Szabályai
|
||||||
1. Egy tranzakció az első $LOCK\text{-ot}$ akárhová teheti
|
1. Egy tranzakció az első =LOCK=-ot akárhová teheti
|
||||||
2. A további $LOCK\text{-ok}$ csak akkor helyezhetők el, ha az adategység
|
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
|
szülőjére az adott tranzakció már rakott zárat
|
||||||
3. Egyazon tranzakció kétszer ugyanazt az adategységet nem zárolhatja
|
3. Egyazon tranzakció kétszer ugyanazt az adategységet nem zárolhatja
|
||||||
** Tétel
|
** Tétel
|
||||||
A fa protokollnak eleget tevő legális ütemezések sorosíthatók.
|
A fa protokollnak eleget tevő legális ütemezések sorosíthatók.
|
||||||
|
\clearpage
|
||||||
* Figyelmeztető protokoll
|
* Figyelmeztető protokoll
|
||||||
Az egyszerű tranzakció modellt követjük, de egy csomópont zárolása a gyerek és
|
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).
|
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
|
Egy $T_2$ tranzakció, egy olyan adategységre tesz lockot, amely leszármazottját
|
||||||
már egy $T_1$ tranzakció lezárt magának.
|
már egy $T_1$ tranzakció lezárt magának.
|
||||||
** Figyelmeztető protokoll zárművei
|
** 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.
|
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
|
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}$
|
által elhelyezett figyelmeztetést $A\text{-ról}$
|
||||||
** További szabályok
|
** További szabályok
|
||||||
1. Egy tranzakció első művelete kötelezően $LOCK$ gyökér vagy $WARN$ gyökér
|
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
|
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}$.
|
tranzakció már helyezett el =WARN=-t.
|
||||||
3. $UNLOCK$ $A$ akkor lehetséges, ha gyerekein már ugyanaz a tranzakció nem tart
|
3. =UNLOCK A= akkor lehetséges, ha gyerekein már ugyanaz a tranzakció nem tart
|
||||||
fenn sem $LOCK\text{-ot}$ sem $WARN\text{-t}$
|
fenn sem =LOCK=-ot sem =WARN=-t
|
||||||
4. Kétfázisú: az első $UNLOCK$ után nem következhet $LOCK$ vagy $WARN$
|
4. Kétfázisú: az első =UNLOCK= után nem következhet =LOCK= vagy =WARN=
|
||||||
** Tétel
|
** 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
|
* Tranzakcióhibák kezelése, commit pont
|
||||||
Mindeddig nem foglalkoztunk azokkal a problémákkal, amelyek akkor lépnek fel,
|
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.
|
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
|
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
|
végeznek el műveleteket, lavinának nevezzük, hiszen ezek az eredmények nem
|
||||||
tekinthetők helyesnek.
|
tekinthetők helyesnek.
|
||||||
|
\clearpage
|
||||||
* Szigorú kétfázisú protokoll
|
* Szigorú kétfázisú protokoll
|
||||||
A tranzakcióhibák kezelésének igen gyakori módszere. Egy tranzakció ezt a
|
A tranzakcióhibák kezelésének igen gyakori módszere. Egy tranzakció ezt a
|
||||||
protokollt követi, ha kétfázisú, továbbá
|
protokollt követi, ha kétfázisú, továbbá
|
||||||
|
@ -1239,6 +1284,7 @@ sorosíthatóak és lavinamentesek.
|
||||||
*** Bizonyítás
|
*** Bizonyítás
|
||||||
Az ütemezés sorosítható, mert kétfázisú; továbbá lavinamentes,
|
Az ütemezés sorosítható, mert kétfázisú; továbbá lavinamentes,
|
||||||
mert nincs lehetőség piszkos adat olvasására.
|
mert nincs lehetőség piszkos adat olvasására.
|
||||||
|
\clearpage
|
||||||
* Agresszív és konzervatív protokollok
|
* Agresszív és konzervatív protokollok
|
||||||
Tranzakciós protokoll kiválasztásánál fontos, hogy az adott protokoll mennyire
|
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
|
``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
|
** Konzervatív protokoll, pesszimista konkurenciakezelés
|
||||||
Egy protokoll konzervatív, ha megkísérli elkerülni az olyan tranzakciók
|
Egy protokoll konzervatív, ha megkísérli elkerülni az olyan tranzakciók
|
||||||
futtatását, amelyek nem biztos, hogy eredményesek lesznek.
|
futtatását, amelyek nem biztos, hogy eredményesek lesznek.
|
||||||
|
\clearpage
|
||||||
* Védekezés rendszerhibák ellen
|
* 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 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.
|
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
|
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).
|
(kivétel: az abort művelet naplózása).
|
||||||
|
\clearpage
|
||||||
* Hatékonysági kérdések
|
* Hatékonysági kérdések
|
||||||
Fontos, hogy a napló stabil tárban legyen eltárolva,hiszen ez használható
|
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ó
|
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,
|
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 –
|
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).
|
végrehajtottá (az ACID-ból a tartósság így teljesül).
|
||||||
|
\clearpage
|
||||||
* A redo protokoll
|
* A redo protokoll
|
||||||
A protokoll onnan kapta a nevét, hogy rendszer- vagy tranzakcióhiba esetén nincs
|
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.
|
szükség undo műveletre, csak redo művelet kell.
|
||||||
|
|
||||||
** Redo naplózás
|
** 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
|
*** Lépései
|
||||||
1. $(T,\text{ begin})$ naplóba
|
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
|
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).
|
a 4. pontban végzett műveletek hatása az adatbázisra idempotens (idempotent).
|
||||||
|
\clearpage
|
||||||
* Ellenőrzési pontok
|
* Ellenőrzési pontok
|
||||||
A redo helyreállításnál előfordulhat, hogy túl régi időpontra kell visszamennie
|
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-
|
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 idő eltelte után
|
||||||
- adott számú tranzakció után
|
- adott számú tranzakció után
|
||||||
- az előző kettő kombinációja
|
- az előző kettő kombinációja
|
||||||
|
\clearpage
|
||||||
* Időbélyeges tranzakciókezelés R/W modellben
|
* Időbélyeges tranzakciókezelés R/W modellben
|
||||||
** Időbélyeg
|
** Időbélyeg
|
||||||
Olyan érték, amelyet minden tranzakcióhoz szigorú egyediséget biztosítva
|
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};
|
\node at (5.5,-0.8) {Időbélyegek azonosítója};
|
||||||
\end{tikzpicture}
|
\end{tikzpicture}
|
||||||
\end{center}
|
\end{center}
|
||||||
|
\clearpage
|
||||||
* Az időbélyeges R/W modell és a 2PL összehasonlítása
|
* Az időbélyeges R/W modell és a =2PL= összehasonlítása
|
||||||
|
|
||||||
Elképzelhető, hogy egy ütemezés sorosítható
|
Elképzelhető, hogy egy ütemezés sorosítható
|
||||||
– időbélyegesen, de kétfázisú zárakkal nem
|
– 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-
|
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.
|
telműen a másiknál.
|
||||||
|
\clearpage
|
||||||
* Tranzakcióhibák és az időbélyegek
|
* Tranzakcióhibák és az időbélyegek
|
||||||
Elképzelhető olyan helyzet, amelyben egy $T_1$ tranzakció előállít egy $A$
|
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
|
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};
|
\draw[black] (9.0,0.15) -- (9.0,-0.15) node[below] {írás az adatbázisba};
|
||||||
\end{tikzpicture}
|
\end{tikzpicture}
|
||||||
\end{center}
|
\end{center}
|
||||||
|
\clearpage
|
||||||
* Verziókezelés időbélyegek mellett ($MVCC$)
|
* Verziókezelés időbélyegek mellett ($MVCC$)
|
||||||
Feltételezés: minden adatelem írásakor a régi értéket is megőrizzük.
|
Feltételezés: minden adatelem írásakor a régi értéket is megőrizzük.
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue