Adatbáziok elmélete 17. előadá Katona Gyula Y. Budapeti Műzaki é Gazdaágtudományi Egyetem Számítátudományi Tz. I. B. 137/b kikat@c.bme.hu http://www.c.bme.hu/ kikat 2005 ADATBÁZISOK ELMÉLETE 17. ELŐADÁS 2/17 Ami többzö előfodul, nem bizto, hogy édeme mindig kizámolni: Pl. ) \ ) \ \ Azociativitá kihaználható: = ADATBÁZISOK ELMÉLETE 17. ELŐADÁS 1/17 ADATBÁZISOK ELMÉLETE 17. ELŐADÁS 3/17 Tiviáli egyzeűítéek főleg geneált lekédezéek eetén hazno): = ; = ; = ; σ C ) = ) = ) ) σ A=B B=C A=C ) = σ A=B B=C ) Milyen oendben édeme kizámolni A, B) B, C) C, D)-t? Szélőége eetben lehet, hogy bá,, mindegyikének 1000 oa van, de -nek cak 1 oa, é -nak 1000000 oa. = Sokkal gyoabb A, B) B, C)) C, D) kizámoláa. Ezt peze előe nem lehet tudni biztoan. = Statiztikákat vezetünk a elációk attibútumaiban előfoduló étékekől Ebből lehet becülni a költégeket + dinamiku pogamozá vagy mohó algoitmu. Igazi optimumot nehéz megtalálni: Tétel. Annak eldöntée NP-telje, hogy néhány eláció temézete illeztéének van-e legalább egy oa. Tétel. Az optimum megtaláláa NP-nehéz pobléma.
ADATBÁZISOK ELMÉLETE 17. ELŐADÁS 4/17 Bizonyítá ADATBÁZISOK ELMÉLETE 17. ELŐADÁS 6/17 Kiválaztá tologatáa Tétel. Annak eldöntée NP-nehéz, hogy néhány eláció temézete illeztéének van-e legalább egy oa. Bizonyítá: Vizavezetjük á a 3-SZÍN poblémát. Adott egy gáf, kédé zínezhető-e 3 zínnel. A gáf minden e = {x, y} éléhez vegyünk fel egy-egy elációt: Özetett C zétzedhető: σ C1 C 2 R) = σ C1 σ C2 R)), σ C1 C 2 R) = σ C1 R) H σ C2 R), ha R nem multihalmaz. σ K= A123 D= 01-15 e X Y pio kék pio ága kék pio kék ága ága pio ága kék e X Z pio kék pio ága kék pio kék ága ága pio ága kék σ K= A123 D= 01-15 Lehet, hogy édeme előbb feltolni, aztán le. σ K= A123 Ha a temézete illeztének van oa = egy o minden cúchoz endel egy zínt. Mivel az illezté megfelel az egye elációknak, egy él két végpontján nem lez ugyanolyan zín. Ha van zínezé = a zínezében minden éle vegyük ki a megfelelő zínpát. Ezek a ook özeillenek. ADATBÁZISOK ELMÉLETE 17. ELŐADÁS 5/17 Kiválaztá tologatáa ADATBÁZISOK ELMÉLETE 17. ELŐADÁS 7/17 Má múveleteke vonatkozó zabályok KÓD, NÉV, EGYSÉGÁR) DÁTUM, KÓD, DB) Hány daabot adtak el 2002. jan. 15-én az A123 kódú áuból, mi a neve é az áa? DB, NÉV, EGYSÉGÁR σkód= A123 DÁTUM= 2002-01-15 )) = DB, NÉV, EGYSÉGÁR σkód= A123 DÁTUM= 2002-01-15 ) ) σ σ Haonló zabályok, δ, γ-a i vannak, de ezek nem annyia cökkentik a műveletigényt. De cak olyan attibútumot lehet eltüntetni, amie nem hivatkozunk feljebb. L R S) = L M R) N R)), ahol M az R olyan attibútumai, hogy vagy özekapcolái attibútum, vagy L-beli, N pedig... δr S) = δr) δs) δσ C R)) = σ C δr)) δγ L R)) = γ L R) De pl. δ nem tolható át M, -n. Még egy fonto kédé az alkédéek kezelée, de eől mot nem zólunk. Felhaznált azonoág: σ C R S) = σ C R) S, ha minden C-beli attibútum zeepel R-ben. Haonló azonoágok: σ C R S) = σ C R) σ C S), σ C R S) = σ C R) S, ha minden C-beli attibútum zeepel R-ben. σ C R S) = σ C R) σ C S), ha minden C-beli attibútum zeepel R-ben é S-ben i.
ADATBÁZISOK ELMÉLETE 17. ELŐADÁS 8/17 Özefoglalá ADATBÁZISOK ELMÉLETE 17. ELŐADÁS 10/17 Az állomány felépítée Sok ilyen zabály alkalmazáával több féle logikai tev előállítható. Az adatállomány a külő táon van, blokkok lapok) elééfolytono oozatán. Ezeknek megbecüljük a költégét é válaztunk egyet. Ehhez kézítünk fizikai tevet. Jobb endzeekben ez automatiku. Ilyenekben kédée, hogy a lekédezé beíáako mie kell figyelni. blokk... Inkább olyan egyzeűítéeket édeme cak elvégezni, ami a függéek következménye, met ezeket nehezebben lehet automatizálni. Pl. Oacle-ban van á mód, hogy megnézzük mi a logikai é fizikai tev é meg lehet adni, hogy pontoan mit cináljon. egyzee egy blokk íható ki/olvaható be blokk méet fix ált. 2 10, 2 12 byte) az opeáció endze tatja nyilván, hogy melyik eláció ekodjai hol vannak é ő biztoítja az elééfolytonoágot i ADATBÁZISOK ELMÉLETE 17. ELŐADÁS 9/17 Fizikai zevezé, tákezelé ADATBÁZISOK ELMÉLETE 17. ELŐADÁS 11/17 Blokkokól általában Célja: a ekodokból egy ekod = a eláció egy oa) álló állomány kezelée úgy, hogy az adatokhoz való hozzáféé gyo legyen. Fonto jellemzők: Tipiku blokk... külő táa adatkezelé, met ok az adat = ha valamivel dolgozni akaunk, akko be kell hozni a belő memóiába = a költéget a beolvaá/kiíá jelenti = az I/O műveletek zámáa akaunk optimalizálni a műveletek, amiket gyoan meg kell tudni cinálni: ekodok beilleztée, tölée, módoítáa, keeée fejléc 1. ekod 3. ekod 2. ekod 4. ekod üe hely A fejléc tatalmazza a blokka vonatkozó infókat, pl: melyik elációhoz tatozik, mennyi a zabad hely benne, hol kezdődik); ezután jönnek a ekodok egymá után, a végén általában maad üe hely. Fonto feltevé: ekodok blokkhatát nem lépnek át, ezét általában van üe, fel nem haználható hely a blokkok végén. Ha nagyok a ekodok, pl. képfile-ok, é mégi át kell lépni laphatát, akko exta technikák kellenek, de ezzel mot nem foglalkozunk.)
ADATBÁZISOK ELMÉLETE 17. ELŐADÁS 12/17 Rekodok típuai ADATBÁZISOK ELMÉLETE 17. ELŐADÁS 14/17 Fonto fogalmak Kötött fomátum Ekko a mezők záma, méete, típua é oendje fix Fejléc: fejléc 1. mezõ 3. mezõ 2. mezõ 4. mezõ... a ekod kezeléével kapcolato infók: töölt-e, melyik elációhoz tatozik a mezők típua időbélyeg miko módoult utoljáa) 1. mutató: blokk vagy ekod címét tatalmazó bejegyzé 2. kötött blokk/ekod: mutathat á mutató, ezét nem mozgatható el zabadon. Ez típuzinten adott, azaz ha egy eláció ekodjaia/blokkjaia mutathat mutató, akko még akko i kötöttnek zámít, ha éppen nem mutat egye e emmi. 3. zabad blokk/ekod: nem mutathat á mutató 4. Kulc, keeéi kulc néha cak kulcnak hívjuk): a ekodok mezőinek egy kitüntetett halmaza a eláció attibútumainak egy ézhalmaza) ez alapján megy a keeé ezeknek az étékét adjuk meg é azokat a ekodokat ookat a elációban) keeük, amiknél pont ezek az étékek zeepelnek) a keeéi kulc nem egyezik meg feltétlenül a eláció egyik kulcával em pl. név a telefonkönyvnél) de az azét elváá, hogy ne legyen nagyon ok egy-egy étéke illezkedő ekod ADATBÁZISOK ELMÉLETE 17. ELŐADÁS 13/17 Rekodok típuai ADATBÁZISOK ELMÉLETE 17. ELŐADÁS 15/17 Alapvető állományzevezéi technikák Változó fomátum Mezők hoza eetleg nem fix zöveget tatalmazó adatbáziok) Imétlődő mezők lehetnek, é az imétléek záma nem fix vagy pedig többétékű mezők zeeplők felooláa filmnél) Ilyenko bonyolultabb a fejléc, kevébé lehet gazdaágoan/előe tevezhetően táolni a ekodokat, ezét éjük el inkább, hogy ne legyen ez az eet: Vezeük viza ezt az eetet a kötötte, pl. mutatók alkalmazáával a poblémá helyeken = Motantól feltezük, hogy a ekodok kötött fomátumúak é hogy az egéz állományon belül ugyanaz a fomátum van. Milyen tuktúát hozzunk léte az adatok táolááa? Lehetőégek: 1. Szekvenciáli táolá 2. Hah 3. Indexek
ADATBÁZISOK ELMÉLETE 17. ELŐADÁS 16/17 Szekvenciáli táolá ADATBÁZISOK ELMÉLETE 17. ELŐADÁS 18/17 Hah Ninc emmi tuktúa, lineáian töltjük fel az állományt, az új ekod az elő alkalma zabad helye keül. keeé: egyeével beolvauk a lapokat a belő memóiába, lineái keeé, ha N lap van, akko átlagoan N I/O művelet 2 tölé: keeé, aztán tölébittel ha ok tölé volt, eetleg gabage collection időnként) bezúá: keeünk zabad helyet é oda akjuk. Ehhez egyeével beolvauk a blokkokat, ha van üe hely oda akjuk, ha ninc ehol, akko az állomány végée. Ha az utoló lapa e fé: új lapot kéünk módoítá: keeé, majd ha befé az eedeti helyée, akko oda tezem viza a módoítá után, különben meg tölé é bezúá Akko jó így táolni, ha kevé az adat. Előnye, hogy nem kell adatzekezettel veződni. 0 1 2 B 2 B 1 a 0 hk) jú ekodok elõ blokkja vödökatalógu a 0 hk) jú ekodok máodik blokkja a 0 hk) kjú ekodok utoló blokkja Vödökatalógu: tipikuan a belő memóiában táoljuk, ebben cak B daab mutató van, ez alapján tudjuk, hogy adott hk) eetén hol van az elő blokkja a hk) hahétékű ekodoknak. Egy vödö: azono hk)-jú ekodok halmaza, ezek néhány jó eetben egy, de eetleg ok) blokkban vannak. Az egy vödöbeli blokkok között mutatókon tudunk mozogni. A vödön belül endezettég emmi ninc, a ekodok az ékezéi oendjükben vannak. ADATBÁZISOK ELMÉLETE 17. ELŐADÁS 17/17 Hah tödelé) ADATBÁZISOK ELMÉLETE 17. ELŐADÁS 19/17 Műveletek Külő táa táolá miatt vödö hah nyílt címzé nem menne) Alapvető zekezet: B vödö, ezekbe akjuk majd a ekodokat. A keeéi kulc K) étékétől függően. Adott egy hah függvény, ami leképezi a táolandó ekodokat a keeéi kulcokat) a [0, B 1] intevallum egéz étékeie, azaz h : K hk) [0, B 1] Ez adja meg, hogy egy ekod melyik vödöbe keüljön. A lehetége K-k, a keeéi kulcok étékei, egy nagy univezumból keülnek ki, de az öze előfoduláuk záma ennél jóval kiebb. B-t úgy válaztjuk meg, hogy a váható blokkzámmal legyen nagyjából egyenlő) Elvááok a hah-függvénnyel zemben: gyoan zámolható legyen, kevé ütközét okozzon. Jó pl. a zozó vagy az oztómódze lád algel) keeé: K alapján meghatáozzuk hk)-t, a vödökatalóguban a hk)-hoz tatozó vödöt végigkeeük zekvenciálian bezúá: K alapján meghatáozzuk hk)-t, a vödökatalóguban a hk)-hoz tatozó vödöbe akjuk be a ekodot az elő zabad helye tölé: keeé, majd tölébittel Költég: ha jól van megválaztva B nem nő túlágoan az állomány), akko átlagoan kontan I/O művelettel megvan minden legozabb eetben azonban nagyon oz i lehet, annyia, mint a zekvenciáli zevezé). Akko jó, ha övid blokkláncokból állnak a vödök, ezét kellett B-t annyinak válaztani, mint a váható blokkzám. Baj: ha elontjuk B válaztáát, túl dinamikuan nő az állomány = hozú blokkláncok, laú műveletek