Az előadás letöltése folymat van. Kérjük, várjon

Az előadás letöltése folymat van. Kérjük, várjon

Adatbázisok 8. előadás Tikk Domonkos.

Hasonló előadás


Az előadások a következő témára: "Adatbázisok 8. előadás Tikk Domonkos."— Előadás másolata:

1 Adatbázisok 8. előadás Tikk Domonkos

2 Fájlszervezés

3 Rekordok fájlba szervezése
Lap és blokk alacsony szintű fogalmak, magasabb szinten a DBMS rekordokkal, és fájlokkal dolgozik. FÁJL: Olyan lapok gyűjteménye, amely rekordokat tartalmaznak. Támogatnia kell: DML műveletek rekordokon (insert/delete/update) egy rekord beolvasása (rid-vel azonosítva) összes rekord beolvasása (esetleg bizonyos feltételeket támasztva a rekordokra) 13

4 Rendezetlen (heap) fájlok
Legegyszerűbb fájlstruktúra, amely rendezetlenül tárolja a rekordokat Ahogy nő vagy csökken a fájl mérete, úgy allokálunk, illetve deallokálunk lapokat a lemezen Ahhoz, hogy rekord szintű műveletek végrehajtását is támogassuk: lapok nyilvántartása a fájlban szabad hely nyilvántartása a lapon rekordok nyilvántartása a lapon Számos alternatív megoldás van erre 14

5 Heap nyilvántartása láncolt listaként
Data Page Data Page Data Page Teli lapok Header Page Data Page Data Page Data Page Lapok szabad hellyel A fejléc lap azonosítóját és a heap fájl nevet tárolni kell valahol Minden lap tartalmaz két pointert az adaton kívül 15

6 Heap fájl directoryval
Data Page 1 Page 2 Page N Header Page DIRECTORY A lap bejegyzés tartalmazhatja a lapon lévő szabad hely méretét A directory is lapok gyűjteménye; a láncolt megoldás csak egy a lehetséges implementációk közül. Sokkal kisebb helyet foglal, mintha az összes lapot láncoltan tárolnánk a heap-ben 16

7 Index A heap fájl segítségével lehetőség van:
adott rid azonosítójú rekord keresésére a rekordok szekvenciális beolvasására Gyakran van, hogy bizonyos feltételeknek eleget tevő rekordokat akarunk megkapni, ahol egyes mező(k)re vonatkozó feltételeket adunk meg Az összes CLERK besorolású dolgozó Az 1982 után belépett dolgozók Az indexek olyan fájlstruktúrák, amelyek érték-alapú lekérdezéseket tesznek lehetővé 17

8 Rendszerkatalógusok A rendszerkatalógust is táblaként tárolja a DB
Minden indexre: célirányos adatszerkezetek (pl., B+ fák) és kereső kulcs mezők Minden táblára: név, fájlnév, fájlstruktúra (pl. heap) mezőnevek és típusok, minden mezőre index név, minden indexre integritási megszorítások Minden nézettáblára: nézettábla neve és definíciója Valamint statisztikák, hozzáférési jogok, pufferméret, stb. A rendszerkatalógust is táblaként tárolja a DB 18

9 Attr_Cat(attr_name, rel_name, type, position)
19

10 Hashing

11 Alapgondolat rekordok kulcsai (indexelt mező) között leképezés
𝐾 kulcs, 𝐴 cím: 𝐴=𝑓(𝐾) ideális eset: egy-egy értelmű (bijekció) minden címhez pont egy kulcs tartozik minden kulcshoz pont egy cím 𝐾 1 ≠ 𝐾 2 →𝑓 𝐾 1 ≠𝑓( 𝐾 2 )

12 Közvetlen leképezés Kulcs egyben cím is
pl. személyi számok szerint tároljuk a lakosság adatait Kihasználtság 10M lakos esetén: 10 −4

13 Hashing Indexek esetén 3 alternatíva van a 𝑘 kulcshoz tartozó indexek tárolására: Adatrekordok 𝑘 kulccsal < 𝑘, 𝑘 kulcsú rekordok rid-je> < 𝑘, 𝑘 kulcsú rekordok rid-jének listája> Független az indexelési technikától Hash indexek egyenlőségi reláció kezelésére jók. Nem támogatják az intervallum alapú kereséseket. Több féle hashing létezik, statikus/dinamikus 2

14 Hashing Indexek esetén 3 alternatíva van a 𝑘 kulcshoz tartozó indexek tárolására: Adatrekordok 𝑘 kulccsal < 𝑘, 𝑘 kulcsú rekordok rid-je> < 𝑘, 𝑘 kulcsú rekordok rid-jének listája> Független az indexelési technikától Hash indexek egyenlőségi reláció kezelésére jók. Nem támogatják az intervallum alapú kereséseket. Több féle hashing létezik, statikus/dinamikus 2

15 Milyen a jó hash függvény?
Olyan keresési kulcsot kell generálnia minden tárolóhelyhez, hogy a tényleges és a potenciális kulcsok eloszlása egyenletes legyen Egyenletes és véletlen eloszlású Egyenletes: minden lehetséges keresőkulcs értékhez azonos számú kulcsot rendeljen minden tárolóhelyhez (bucket – vödör/bugyor) Véletlen eloszlás: átlagosan minden vödör ugyanannyi értéket tartalmazzon 2

16 Statikus hashing elsődleges lapok száma rögzített, szekvenciálisan allokált, nincs törlés (deallokáció); túlcsordulási lapok. h(k) mod M = vödör, amibe a 𝑘 kulcsú adat kerül (M = # vödör) h(k) mod M 2 kulcs h M-1 Elsődleges lapok Túlcsordulási lapok 3

17 Statikus hashing (2) A vödrök adat bejegyzéseket tartalmaznak.
A hash függvény keresőkulcsként működi az 𝑟 rekordon, és 0..𝑀−1 között értéket rendel hozzá h(key) = (a * key + b) általában megfelelő 𝑎 és 𝑏 konstansok; jelentős irodalma van ℎ tuningolásának. Hosszú túlcsordulási láncok csökkentik a teljesítményt Bővített és lineáris hashing: dinamikus technikák, amelyek megoldják ezt a problémát 4

18 Kiterjeszthető hashing

19 Kiterjeszthető hashing
Tfh az elsődleges bugyor megtelik. Ötlet: szervezzük át a fájlt a bugyrok számának duplázásával! Ha minden lapot beolvasunk és kiírunk a fájl újraszervezésénél az drága Ötlet: használjunk mutatókat tartalmazó directoryt a bugyrokra, duplázzuk a bugyrok számát a directory duplázásával, úgy, hogy csak a túlcsordult bugyrot osszuk fel! A directory fájl sokkal kisebb, tehát azt duplázni sokkal olcsóbb. Csak egy lapon lévő adatok kell duplázni. Nincs szükség túlcsordulási lapokra! Hogyan kell a hashing függvényt ennek megfelelően módosítani? 5

20 Példa Directory mérete 4
Lokális mélység 2 Bucket A 4* 12* 32* 16* Globális mélység 2 2 Directory mérete 4 Az 𝑟-hez tartozó bugyor megtalálásához, vegyük az utolsó globális mélység számú bitjét ℎ 𝑟 -nek; jelöljük 𝑟-t ℎ(𝑟)-rel. Ha ℎ(𝑟) = 5 = binary 101, akkor a hozzá tartozó bugyor a 01-es pointer által mutatót. Bucket B 00 1* 5* 21* 13* 01 10 2 Bucket C 11 10* 2 DIRECTORY Bucket D 15* 7* 19* Lapok adattal Beszúrás: Ha a bugyor tele van, akkor osszuk fel új lap allokálása és adat felosztása Ha szükséges akkor a direcory-t duplázzuk. Mikor nem jár az adat lap felosztása directory duplázással? Ezt a globális és a lokális mélység értékei határozzák meg) 6

21 Példa: szúrjuk be a h(r)=20 értéket
Lokális mélység 2 Lokális mélység 3 Bucket A 32* 16* Globális mélység Globális mélység 32* 16* Bucket A 2 2 3 2 Bucket B 00 1* 5* 21* 13* 000 1* 5* 21* 13* Bucket B 01 001 10 2 2 010 Bucket C 11 10* 011 10* Bucket C 100 2 DIRECTORY 2 101 Bucket D 15* 7* 19* 15* 7* 19* 110 Bucket D 111 2 3 Bucket A2 4* 12* 20* DIRECTORY (Az A bugyor tartalmának része) 4* 12* 20* Bucket A2 Mi alapján tudjuk, hogy mi kerül az A és mi az A2 bugyorba? 7

22 Felosztás lépései 20 = bináris Utolsó 2 bit (00) megmondja, hogy A vagy A2 bugyorba tartozik. Az utolsó 3 bit megmondja, hogy melyikbe. A directory globális mélysége: Az a maximális bitszám, amelyik elegendő ahhoz, hogy egy adathoz tartozó bugyrot meghatározzunk (bármely adatra!). Egy bugyor lokális mélysége: Azon bitek száma, amely megmondja, hogy egy adat az adott bugyorba tartozik-e. Mikor jár a bugyor felosztása a directory duplázásával? Beszúrás előtt, a lokális és a globális mélység megegyezik. Ekkor a beszúrás után a lokális mélység nagyobb lesz a globálisnál. A directory duplázása: (1) az eredeti átmásolása, (2) az új adatlapra mutató pointer beállítása. Miért jó, hogy a kis helyi értékű biteket használjuk a kódolásra a directory duplázása szempontjából? 8

23 Directory duplázása 6* 6* 6* 6* 6* 6*
Miért a kis helyi értékű biteket használjuk Hatékony directory duplázás! 6 = 110 3 6 = 110 3 000 000 001 100 2 2 010 010 1 00 1 00 011 110 6* 01 100 10 001 6* 10 6* 01 1 101 1 6* 101 11 110 6* 11 6* 011 111 111 Legkisebb helyi értékű vs. Legnagyobb helyi értékű

24 Megjegyzések Ha a directory befér a memóriába, akkor az egyenlőségi kérdés egy lemezolvasási lépéssel megoldható. Ha nem, akkor kettő kell hozzá. Példa 100MB fájl és 100 bytes/rekordméret  1M rekord; 4K lapok 40 rekordot tartalmaznak; 25 ezer directory bejegyzés szükséges az 1M rekordhoz; ez általában befér a memóriába. A directory nem egyenletesen nő, és ha a hash értékek elosztása nem egyenletes, akkor a directory mérete nagy lehet Kombinálható túlcsordulási lapokkal a szinonimák kezelésére. Törlés: Ha egy adat törlése üríti a bugyrot, akkor az üres bugyor összevonható a párjával. Ha minden bugyorra két mutató mutat a directoryban, akkor felezhető a directory. 9

25 Szinonimakezelés

26 Hashing – ökölszabályok
Engedmény: néha különböző kulcsérték esetén is azonos legyen a cím (ezek ún. szinonimák), 80-85% tárkihasználtságnál, 20% szinonim elfogadható lehetőleg ez minél ritkábban forduljon elő Módszerek csonkítás: a kulcs egyes jegyeit elhagyjuk maradék módszer: modulo 𝑚 osztás, ahol 𝑚 prím egyenletes eloszlást megtartja 𝐴≡𝐾 (mod 𝑚)

27 Szinonimák kezelése Külső láncolás (statikus hashing) Belső láncolás
szinonimák tárolása külön területen, mutatóval nem tudni mekkora területre lehet szükség elsőt nem lehet törölni Belső láncolás elsődleges terület egy közeli területére, mutatóval másodlagos szinonimák (akik helyét elfoglalják) Peterson-módszer (nyílt módszer) Mint belső láncolás, de nincsenek mutatók Több lépés a láncolás hiánya miatt (szekvenciális)

28 Szinonimák kezelése (2)
Többszörös hashing ha szinonim, akkor újabb hashing algoritmus Bugyrok (buckets) – ld. kiterjesztett hashing Minden címhez több rekordnyi területet rendelünk Ezen belül lineáris keresés Hasznos, ha amúgy is egyszerre több rekord olvasása és írása valósítható meg

29 Összehasonlítás (1) Rekordok: 46, 24, 29, 36, 30, 17, 75, 74, 19, 14
Kulcs Számított cím Tényleges cím Mutató Belső Nyílt 46 2 3 1 24 4 29 7 36 5 30 8 10 17 6 75 9 74 14 19 Szum

30 Összehasonlítás (2) Töltés 2 menetben Kulcs Számított cím
Tényleges cím Mutató Belső Nyílt 46 2 4 1 24 3 29 7 36 5 30 8 10 17 6 75 9 74 14 19 Szum 15

31 Összehasonlítás (3) Modulo 11 és 7 Kulcs Cím 1 Cím 2 Tényleges
Lépésszám 46 2 1 24 3 29 7 36 30 8 17 6 75 9 74 4 14 19 5 3 v. 4 Szum 15 v. 16

32 Számít a tároló is RAM esetén Merevlemez (mozgófejes tároló)
Többszörös hashing: nagyobb algoritmusidő nyílt módszer: több lépés mint a belső belső módszer: másodlagos szinonimák miatt több lépés mint a külső láncolásnál külső láncolás: tárhelykihasználás rossz Merevlemez (mozgófejes tároló) Többszörös hashing, külső láncolás: sok fejmozgás nyílt módszer: több lépés mint a belső módszer esetén, de ehhez nem kell CPU, ezért ez lehet itt a nyerő


Letölteni ppt "Adatbázisok 8. előadás Tikk Domonkos."

Hasonló előadás


Google Hirdetések