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

Slides:



Advertisements
Hasonló előadás
Szimmetriák szerepe a szilárdtestfizikában
Advertisements

Kauzális modellek Randall Munroe.
A TUDOMÁNYOS KUTATÁS MÓDSZERTANA
2.1Jelátalakítás - kódolás
Az úttervezési előírások változásai
Fizika II..
Számítógépes Hálózatok
Profitmaximalizálás  = TR – TC
A járműfenntartás valószínűségi alapjai
Szenzorok Bevezetés és alapfogalmak
Végeselemes modellezés matematikai alapjai
A magas baleseti kockázatú útszakaszok rangsorolása
Szerkezetek Dinamikája
MÉZHAMISÍTÁS.
Hőtan BMegeenatmh 5. Többfázisú rendszerek
BMEGEENATMH Hőátadás.
AUTOMATIKAI ÉPÍTŐELEMEK Széchenyi István Egyetem
Skandináv dizájn Hisnyay – Heinzelmann Luca FG58PY.
VÁLLALATI Pénzügyek 2 – MM
Hőtan BMEGEENATMH 4. Gázkörfolyamatok.
Szerkezetek Dinamikája
Összeállította: Polák József
A TUDOMÁNYOS KUTATÁS MÓDSZERTANA
Csáfordi, Zsolt – Kiss, Károly Miklós – Lengyel, Balázs
Tisztelt Hallgatók! Az alábbi példamegoldások segítségével felkészülhetnek a 15 pontos zárthelyi dolgozatra, ahol azt kell majd bizonyítaniuk, hogy a vállalati.
J. Caesar hatalomra jutása atl. 16d
Anyagforgalom a vizekben
Kováts András MTA TK KI Menedék Egyesület
Az eljárás megindítása; eljárási döntések az eljárás megindítása után
Melanóma Hakkel Tamás PPKE-ITK
Az új közbeszerzési szabályozás – jó és rossz gyakorlatok
Képzőművészet Zene Tánc
Penicillin származékok szabadgyökös reakciói
Boros Sándor, Batta Gyula
Bevezetés az alvás-és álomkutatásba
Kalandozások az álomkutatás területén
TANKERÜLETI (JÁRÁSI) SZAKÉRTŐI BIZOTTSÁG
Nemzetközi tapasztalatok kihűléssel kapcsolatban
Gajdácsi József Főigazgató-helyettes
Követelmények Szorgalmi időszakban:
Brachmann Krisztina Országos Epidemiológiai Központ
A nyelvtechnológia eszközei és nyersanyagai 2016/ félév
Járványügyi teendők meningococcus betegség esetén
Kezdetek októberében a könyvtár TÁMOP (3.2.4/08/01) pályázatának keretében vette kezdetét a Mentori szolgálat.
Poszt transzlációs módosulások
Vitaminok.
A sebész fő ellensége: a vérzés
Pharmanex ® Bone Formula
Data Mining Machine Learning a gyakorlatban - eszközök és technikák
VÁLLALATI PÉNZÜGYEK I. Dr. Tóth Tamás.
Pontos, precíz és hatékony elméleti módszerek az anion-pi kölcsönhatási energiák számítására modell szerkezetekben előadó: Mezei Pál Dániel Ph. D. hallgató.
Bevezetés a pszichológiába
MOSZKVA ZENE: KALINKA –HELMUT LOTTI AUTOMATA.
Bőrimpedancia A bőr fajlagos ellenállásának és kapacitásának meghatározása Impedancia (Z): Ohmos ellenállást, frekvenciafüggő elemeket (kondenzátort, tekercset)
Poimenika SRTA –
Végeselemes modellezés matematikai alapjai
Összefoglalás.
Az energiarendszerek jellemzői, hatékonysága
Varga Júlia MTA KRTK KTI Szirák,
Konzerváló fogászat Dr. Szabó Balázs
Outlier detektálás nagyméretű adathalmazokon
További MapReduce szemelvények: gráfproblémák
Ráhagyások, Mérés, adatgyűjtés
Járműcsarnokok technológiai méretezése
Grafikai művészet Victor Vasarely Maurits Cornelis Escher.
VÁLLALATI PÉNZÜGYEK I. Dr. Tóth Tamás.
RÉSZEKRE BONTOTT SOKASÁG VIZSGÁLATA
Az anyagok fejlesztésével a méretek csökkennek [Feynman, 1959].
Bevezetés a színek elméletébe és a fényképezéssel kapcsolatos fogalmak
Minőségmenedzsment alapjai
Előadás másolata:

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

Fájlszervezés

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

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

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

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

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

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

Attr_Cat(attr_name, rel_name, type, position) 19

Hashing

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 )

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

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

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

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

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

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

Kiterjeszthető hashing

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

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

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

Felosztás lépései 20 = bináris10100. 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

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ű

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

Szinonimakezelés

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 𝑚)

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)

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

Ö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

Ö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

Ö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

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ő