Adatbázisok tervezése, megvalósítása és menedzselése

Slides:



Advertisements
Hasonló előadás
Fájlszervezés Adatbázisok tervezése, megvalósítása és menedzselése.
Advertisements

FOL függvényjelekkel Zsebibaba anyja A 2 harmadik hatványa a oszlopában az első blokk Ezek is nevek, de nem in- konstansok Azért, mert összetettek Predikátum:
TÖMÖRÍTÉS. Fogalma A tömörítés egy olyan eljárás, amelynek segítségével egy fájlból egy kisebb fájl állítható elő. A tömörítési arány függ a fájl típusától,
Beruházási és finanszírozási döntések kölcsönhatásai 1.
1 Az önértékelés mint projekt 6. előadás 1 2 Az előadás tartalmi elemei  A projekt fogalma  A projektek elemei  A projekt szervezete  Projektfázisok.
Internet tudományos használata
Fájlkezelés.
Valószínűségi kísérletek
A kérdőívek, a kérdőívszerkesztés szabályai
Adatbázis normalizálás
WE PROVIDE SOLUTIONS.
Alhálózat számítás Osztályok Kezdő Kezdete Vége Alapértelmezett CIDR bitek alhálózati maszk megfelelője A /8 B
Becslés gyakorlat november 3.
Idegen kulcsok Lokális és globális megszorítások Triggerek

videós team Team vezetője: Tariné Péter Judit Tagok:
Adatok importálása, rendezése és szűrése
Kockázat és megbízhatóság
Háttértárak karbantartása
Adatbázisok tervezése, megvalósítása és menedzselése
Mesterséges intelligencia
T.R. Adatbázis-kezelés - Alapfogalmak Adatbázis:
Programozás I. Gyakorlás egydimenziós tömbökkel Többdimenziós tömbök
Vörös-Gubicza Zsanett képzési referens MKIK
Algoritmusok és Adatszerkezetek I.
Kovács Gergely Péter Egyszerű lekérdezések
Triggerek Kalmár György.
Lexikális elemző: lex (flex)
Logikai programozás 2..
Tartalékolás 1.
Adatbázis-kezelés (PL/SQL)
A PDCA elv alkalmazása az információvédelmi irányítási rendszerekben 1
2. Bevezetés A programozásba
Közigazgatási alapvizsga a Probono rendszerben
Business Mathematics
Adatbázis alapfogalmak
Körmendi Dániel MAS Meeting Scheduler.
Algoritmusok és Adatszerkezetek I.
Kovács Gergely Péter Bevezetés
Teljes visszalépéses elemzés
Az Endnote bibliográfia adatbázis-kezelő szoftver alapvető használata november Skultéti Attila
Kóbor Ervin, 10. hét Programozási alapismeretek
Tilk Bence Konzulens: Dr. Horváth Gábor
Logisztikai Rendszerek Tervezése és Üzemeltetése. Tápler Csaba
AVL fák.
Munkagazdaságtani feladatok
Környezeti Kontrolling
Új pályainformációs eszközök - filmek
A Microsoft SharePoint testreszabása Online webhely
Szerzője Konzulens neve
Bináris kereső fák Definíció: A bináris kereső fa egy bináris fa,
Adatbázisok használata
A turizmus tendenciáinak vizsgálata Magyarországon
További rendező és kereső algoritmusok
A szállítási probléma.
Idegen kulcsok Lokális és globális megszorítások Triggerek
Online pénztárgépadatok felhasználása a kiskereskedelmi statisztikában
SQL jogosultság-kezelés
Mintaillesztés Knuth-Morris-Pratt (KMP) algoritmus
Munkagazdaságtani feladatok
Indexelés Célok: gyors lekérdezés, gyors adatmódosítás,
Informatika Oktató: Katona Péter.
Edényrendezés - RADIX „vissza” - bináris számokra
Access alapok Táblák, kapcsolatok, űrlapok.
Mesterséges intelligencia
Háttértárak Merevlemezek.
Algoritmusok.
Hagyományos megjelenítés
A T-spline felületreprezentáció
Háttértárak Merevlemezek.
Előadás másolata:

Adatbázisok tervezése, megvalósítása és menedzselése Fájlszervezés Adatbázisok tervezése, megvalósítása és menedzselése

Kezdetek Célok: gyors lekérdezés, gyors adatmódosítás, minél kisebb tárolási terület. Nincs általánosan legjobb optimalizáció. Az egyik cél a másik rovására javítható (például indexek használatával csökken a keresési idő, nő a tárméret, és nő a módosítási idő).

Költségek Hogyan mérjük a költségeket? Memória műveletek nagyságrenddel gyorsabbak, mint a háttértárolóról beolvasás, kiírás. Az író-olvasó fej nagyobb adategységeket (blokkokat) olvas be. A blokkméret függhet az operációs rendszertől, hardvertől, adatbázis-kezelőtől. A blokkméretet fixnek tekintjük. Oracle esetén 8K az alapértelmezés. Feltételezzük, hogy a beolvasás, kiírás költsége arányos a háttértároló és memória között mozgatott blokkok számával.

Blokkok A blokkok tartalmaznak: Feltesszük, hogy B darab blokkunk van. leíró fejlécet (rekordok száma, struktúrája, fájlok leírása, belső/külső mutatók (hol kezdődik a rekord, hol vannak üres helyek, melyik a következő blokk, melyik az előző blokk, statisztikák (melyik fájlból hány rekord szerepel a blokkban)), rekordokat (egy vagy több fájlból), üres helyeket. Feltesszük, hogy B darab blokkunk van.

Rekordok A fájl rekordokból áll. A rekordok szerkezete eltérő is lehet. A rekord tartalmaz: leíró fejlécet (rekordstruktúra leírása, belső/külső mutatók, (hol kezdődik egy mező, melyek a kitöltetlen mezők, melyik a következő rekord, melyik az előző rekord), törlési bit, statisztikák), mezőket, melyek üresek, vagy adatot tartalmaznak. A rekordhossz lehet: állandó, változó (változó hosszú mezők, ismétlődő mezők miatt). Az egyszerűség kedvéért feltesszük, hogy állandó hosszú rekordokból áll a fájl, melyek hossza az átlagos rekordméretnek felel.

Milyen lekérdezések? Milyen lekérdezéseket vizsgáljunk? A relációs algebrai kiválasztás felbontható atomi kiválasztásokra, így elég ezek költségét vizsgálni. A legegyszerűbb kiválasztás: A=a (A egy keresési mező, a egy konstans) Az esetek vizsgálatánál az is számít, hogy az A=a feltételnek megfelelő rekordokból lehet-e több, vagy biztos, hogy csak egy lehet. Fel szoktuk tenni, hogy az A=a feltételnek eleget tevő rekordokból nagyjából egyforma számú rekord szerepel. (Ez az egyenletességi feltétel.)

Mivel foglalkozunk majd? A következő fájlszervezési módszereket fogjuk megvizsgálni: B+-fa, B*-fa bitmap index. Módosítási műveletek: beszúrás (insert) frissítés (update) törlés (delete) Itt nem foglalkozunk azzal, hogy a beolvasott rekordokat bent lehet tartani a memóriában, későbbi keresések céljára.

Indexek Indexek használata: Az indexrekordok szerkezete: keresést gyorsító segédstruktúra, több mezőre is lehet indexet készíteni, az index tárolása növeli a tárméretet, nem csak a főfájlt, hanem az indexet is karban kell tartani, ami plusz költséget jelent. Az indexrekordok szerkezete: (a,p), ahol a egy érték az indexelt oszlopban, p egy blokkmutató, arra a blokkra mutat, amelyben az A=a értékű rekordot tároljuk (vagy többszintű index esetén esetleg egy másik indexblokkra). az index mindig rendezett az indexértékek szerint.

B-fák A többszintű indexek közül a B+-fák, B*-fák a legelterjedtebbek. B+-fa: Minden blokk legalább 50%-ban telített. A többszintű indexek közül a B+-fák, B*-fák a legelterjedtebbek. 100 B*-fa: Minden blokk legalább 66%-ban telített. 120 150 180 30 3 5 11 120 130 30 35 100 101 110 180 200 150 156 179

Köztes (nem-levél) csúcs szerkezete k < 57 57 k<81 81k<95 95  k 57 81 95 n+1 mutató n indexérték Ahol k a mutató által meghatározott részgráfban szereplő tetszőleges indexérték.

Levél csúcs szerkezete köztes csúcs 57 81 95 a sorrendben következő levél n+1 mutató n indexérték 57 indexértékű rekord 81 indexértékű rekord 95 indexértékű rekord

Felépítésre vonatkozó szabályok Szabályok (feltesszük, hogy egy csúcs n értéket és n+1 mutatót tartalmazhat): a gyökérben legalább két mutatónak kell lennie (kivéve, ha a B-fa (B+-fa) egyetlen bejegyzést tartalmaz), a levelekben az utolsó mutató a következő (jobboldali) levélre mutat, legalább (n+1)/2 mutatónak használatban kell lennie, köztes pontokban minden mutató a B-fa következő szintjére mutat, közülük legalább (n+1)/2 darabnak használatban kell lennie, ha egy mutató nincs használatban úgy vesszük, mintha NILL mutató lenne.

Beszúrás I. Ha van szabad hely az új kulcs számára a megfelelő levélben, beszúrjuk. Ha nincs, kettévágjuk a levelet, és szétosztjuk a kulcsokat a két új levél között, így mindkettő félig lesz telítve, vagy éppen csak egy kicsit jobban. Az eggyel feljebb lévő szint megfelelő csúcsát ennek megfelelően kell kiigazítani.

Beszúrás II. Egy csúcs szétvágása tehát hatással lehet a fölötte lévő szintre is. Itt az előbbi két pontban megadott stratégiát alkalmazzuk rekurzívan. Itt viszont: ha N olyan belső csúcs, aminek kapacitása n kulcs, n+1 mutató és most az (n+2). mutatót illesztenénk be, akkor szintén létrehozunk egy új M pontot. N-ben most marad n/2 kulcs, M-ben lesz n/2 kulcs, a "középen lévő" kulcs pedig az eggyel fentebbi szintre kerül, hogy elválassza N-t és M-t egymástól. Ha a gyökérbe nem tudunk beszúrni, mert nincs hely, akkor szétvágjuk a gyökeret két új csúcsra, és „fölöttük” létrehozunk egy új gyökeret, aminek két bejegyzése lesz.

Példa beszúrásra I. n=3 Szúrjuk be a 32-es indexértékű rekordot! 100 30 3 5 11 30 31 32

Példa beszúrásra II. n=3 Szúrjuk be a 7-es indexértékű rekordot! 100 30 7 3 5 11 30 31 3 5 7

Példa beszúrásra III. n=3 Szúrjuk be a 160-as indexértékű rekordot! 100 160 n=3 120 150 180 180 150 156 179 180 200 160 179

Példa beszúrásra IV. n=3 Szúrjuk be a 45-ös indexértékű rekordot! 30 új gyökér n=3 10 20 30 40 1 2 3 10 12 20 25 30 32 40 40 45

Törlés Ha a törlés megtörtént az N pontban, és N még mindig megfelelően telített, akkor készen vagyunk. Ha N már nem tartalmazza a szükséges minimum számú kulcsot és mutatót, akkor: ha N valamelyik testvérével összevonható, akkor vonjuk össze. A szülőcsúcsban törlődik ekkor egy elem, s ez további változtatásokat eredményezhet. Ha nem vonható össze, akkor N szomszédos testvérei több kulcsot és mutatót tartalmaznak, mint amennyi a minimumhoz szükséges, akkor egy kulcs-mutató párt áttehetünk N-be. (Baloldali testvér esetén a legutolsó, jobboldali testvér esetén a legelső kulcs-mutató párt.) A változást a szülő csúcson is „regisztrálni kell”.

Példa törlésre I. n=4 Töröljük az 50-es indexértékű rekordot! 10 40 100 40 10 20 30 40 50

Példák törlésre II. n=4 Töröljük az 50-es indexértékű rekordot! 10 40 100 35 10 20 30 35 40 50

Törlés III. n=4 Töröljük a 37-es indexértékű rekordot! 25 25 új gyökér 10 20 30 40 40 30 A gyökér tartalmazhat négy elemet is. 25 26 1 3 10 14 20 22 30 37 40 45

Feladat Legyen a rekordok száma 1 000 000, és az indexelt oszlopban minden érték különböző. Minden rekordhoz tartozik kulcs a B-fában. Egy blokkba 10 rekord vagy (99 kulcs és 100 mutató) fér. Legyen a telítettség 70%, azaz legalább 69 kulcs és 70 mutató szerepel az indexblokkban. Mekkora az adatfájl és az index együttes mérete legrosszabb esetben? Mennyi a keresés blokkolvasási költsége legrosszabb esetben –adott keresési kulcs-értékkel rendelkező rekord megtalálásához szükséges átlagos lemez I/O műveletek száma? 4.3.8; 4.3.1 feladat 14.2.1 B-trees allow lookup, insertion, and deletion of records using very few disk I/O ’s per file operation. First, we should observe that if n, the number of keys per block, is reasonably large, then splitting and merging of blocks will be rare events. Further, when such an operation is needed, it almost always is limited to the leaves, so only two leaves and their parent are affected. Thus, we can essentially neglect the disk-I/O cost of B-tree reorganizations. However, every search for the record(s) with a given search key requires us to go from the root down to a leaf, to find a pointer to the record. Since we are only reading B-tree blocks, the number of disk I/O ’s will be the number of levels the B-tree has, plus the one (for lookup) or two (for insert or delete) disk I/O ’s needed for manipulation of the record itself. We must thus ask: how many levels does a B-tree have? For the typical sizes of keys, pointers, and blocks, three levels are sufficient for all but the largest databases. Thus, we shall generally take 3 as the number of levels of a B-tree.

Bitmap indexek (Bittérkép indexek) Személy név nem kor kereset Péter férfi 57 350000 Dóra nő 25 30000 Salamon 36 Konrád 21 Erzsébet 20 Zsófia 35 160000 Zsuzsanna érték vektor férfi 1011000 nő 0100111 érték vektor 30000 0101100 160000 0000011 350000 1010000

Bitmap indexek haszna SELECT COUNT(*) FROM személy WHERE nem=‘nő’ and kereset = 160000; 0100111 AND 0000011 = 0000011, az eredmény: 2. SELECT név WHERE kereset > 100000; 0000011 (160000) OR 1010000 (350000) = 1010011, azaz az 1., 3., 6. és 7. rekordokat tartalmazó blokko(ka)t kell beolvasni.

Tömörítés I. Ha a táblában n rekord van, a vizsgált attribútum pedig m különböző értéket vehet fel, ekkor, ha m nagy, a bitmap index túl naggyá is nőhet (n*m méret). Ebben az esetben viszont a bitmap indexben az egyes értékekhez tartozó rekordokban kevés az 1-es. A tömörítési technikák általában csak ezeknek az 1-eseknek a helyét határozzák meg. Tegyük fel, hogy i db 0-t követ egy 1-es. Legegyszerűbb megoldásnak tűnik, ha i-t binárisan kódoljuk. Ám ez a megoldás még nem jó: (a 000101 és 010001 vektorok kódolása is 111 lenne). Tegyük fel, hogy i binárisan ábrázolva j bitből áll. Ekkor először írjunk le j-1 db 1-est, majd egy 0-t, és csak ez után i bináris kódolását. Példa: a 000101 kódolása: 101101, a 010001 kódolása: 011011. 14.7.2 fejezet 2.ed. 5.4.2

Tömörítés II. Állítás: a kód így egyértelművé válik. Tegyük fel, hogy m=n, azaz minden rekordérték különböző a vizsgált attribútumban. Ekkor, mivel a bitmap indexekben n hosszú rekordokról van szó, egy rekord kódolása legfeljebb 2log2n. Az indexet alkotó teljes bitek száma pedig 2nlog2n, n2 helyett. (j ~ log2i; length i2= log2i) 14.3/5.23 If we concatenate a sequence of integer codes, we can always recover the sequence of run lengths and therefore recover the original bit-vector. Suppose we have scanned some of the encoded bits, and we are now at the beginning of a sequence of bits that encodes some integer i. We scan forward to the first 0, to determine the value of j . T hat is, j equals the number of bits we must scan until we get to the first 0 (including that 0 in the count of bits). Once we know j, we look at the next j bits; i is the integer represented there in binary. Moreover, once we have scanned the bits representing i, we know where the next code for an integer begins, so we can repeat the process.

Klaszter Klaszterszervezés esetén a két tábla közös oszlopain megegyező sorok egy blokkban, vagy fizikailag egymás utáni blokkokban helyezkednek el. CÉL: összekapcsolás esetén az összetartozó sorokat soros beolvasással megkaphatjuk.

Példa klaszterre Film (cím, év, hossz, stúdiónév) Stúdió (név, cím, elnök) 1. stúdió 2. stúdió 3. stúdió 1. stúdióban készült filmek. 2. stúdióban készült filmek. 3. stúdióban készült filmek. Pl. gyakori a: SELECT cím, év FROM film, stúdió WHERE cím LIKE ‘%Moszkva%’ AND stúdiónév = név; jellegű lekérdezés.