Adatbázisok II. Vizsga 1
78. Fogalmazzuk meg a relációs algebrai optimalizálás 4 heurisztikus elvét! (4 pont)
1. Minél hamarabb szelektáljunk 2. Próbáljunk természetes összekapcsolásokat képezni 3. Vonjuk össze az egymás utáni unáris műveleteket 4. Keressünk közös részkifejezéseket
19. Kiterjeszthető hasítás esetén a h(K) érték alapján melyik kosárba kerül a rekord? (2 pont)
A h(K) k hosszú kódnak vegyük az i hosszú elejét, és azt kosarat, amelynek kódja a h(K) kezdő szelete. Ha van hely a kosárban, tegyük bele a rekordot, ha nincs, akkor nyissunk egy új kosarat, és a következő bit alapján osszuk ketté a telített kosár rekordjait. Ha ez a bit mindegyikre megegyezik, akkor a következő bitet vesszük a szétosztáshoz, és így tovább.
85. Mi a relációs algebrai optimalizálás algoritmusának 2. lépése (az alkalmazott szabályok felsorolása nélkül)? (2 pont)
A kiválasztásokat vigyük olyan mélyre a kifejezésfában, amilyen mélyre csak lehet.
6. Mit jelent az egyenletességi feltétel? (1 pont)
A legegyszerűbb kiválasztás: A=a (A egy keresési mező, a egy konstans) 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.)
52. Mi a lekérdezések optimalizálásának a célja és miket használunk fel ehhez? (5 pont)
A lekérdezéseket gyorsabbá akarjuk tenni a táblákra vonatkozó paraméterek, statisztikák, indexek ismeretében és általános érvényű tulajdonságok, heurisztikák segítségével.
80. Miért érdemes természetes összekapcsolásokat képezni szorzások helyett relációs algebrai optimalizálás esetén? (1 pont)
A szorzás utáni kiválasztásokból próbáljunk természetes összekapcsolásokat képezni, mert az összekapcsolás hatékonyabban kiszámolható, mint a szorzatból történő kiválasztás.
86. Mi a relációs algebrai optimalizálás algoritmusának 3. lépése (az alkalmazott szabályok felsorolása nélkül)? (2 pont)
A vetítéseket vigyük olyan mélyre a kifejezésfában, amilyen mélyre csak lehet. Hagyjuk el a triviális vetítéseket, azaz az olyanokat, amelyek az argumentum reláció összes attribútumára vetítenek.
11. Kupac szervezés esetén mennyi a keresés költsége legrosszabb esetben? (1 pont)
A=a keresési idő: * B (a legrosszabb esetben), * B/2 (átlagos esetben egyenletességi feltétel esetén).
1. Mit hívunk statikus, és mit dinamikus adatbázisnak? (1 pont)
Az adatbázis-alkalmazások alapján az adatbázis lehet: - statikus (ritkán módosul, a lekérdezések gyorsasága a fontosabb), - dinamikus (gyakran módosul, ritkán végzünk lekérdezést).
57. Miért mondjuk, hogy az eljárás heurisztikus relációs algebrai optimalizálás esetén? (2 pont)
Az eljárás heurisztikus, tehát nem az argumentum relációk valódi méretével számol.
89. Mi a relációs algebrai optimalizálás algoritmusának 6. lépése (az alkalmazott szabályok felsorolása nélkül)? (2 pont)
Az előző lépésben kapott részgráfok is fát képeznek. Az optimális kiértékeléshez ezt a fát értékeljük ki alulról felfelé haladva, tetszőleges sorrendben.
58. Miért nem egyértelmű az eredmény relációs algebrai optimalizálás esetén? (4 pont)
Az eredmény nem egyértelmű: Az átalakítások sorrendje nem determinisztikus, így más sorrendben végrehajtva az átalakításokat más végeredményt kaphatunk, de mindegyik általában jobb költségű, mint amiből kiindultunk.
29. Mit hívunk fedőértéknek? (1 pont)
Az indexfájlban nem szerepel minden érték, ezért csak fedő értéket kereshetünk, a legnagyobb olyan indexértéket, amely a keresett értéknél kisebb vagy egyenlő
7. Mekkora adategységet olvas az író-olvasó fej? (1 pont)
Az író-olvasó fej nagyobb adategységeket (blokkokat) olvas be.
9. Egyenletességi feltétel esetén hány blokkból áll a (sigma)A=a(R) lekérdezés eredménye? (1 pont)
B((sigma)A=a(R)) = B(R) / I(A)
5. Adjuk meg RxS méretét blokkokban kifejezve! (2 pont)
B(RxS) = = (T(R)*T(S)) * (l(R)+l(S)) / b = = (T(S)*T(R)*l(R)/b) + (T(R)*T(S)*l(S)/b) = =T(S)*B(R) + T(R)*B(S)
2. Fogalmazzunk meg 3 célt, amire az indexelés kiválasztásánál figyelni kell! (3 pont)
Célok: - gyors lekérdezés, - gyors adatmódosítás, - minél kisebb tárolási terület.
18. Mit jelent a dinamikus hasító indexelés és milyen két fajtáját ismerjük? (3 pont)
Dinamikus hasító indexek: * kiterjeszthető (expandable) * lineáris Előre nem rögzítjük a kosarak számát, a kosarak száma beszúráskor, törléskor változhat.
13. Mit mond meg a h(x) hasító függvény értéke? (1 pont)
Egy h(x)?{1,...,K} hasító függvény értéke mondja meg, hogy melyik kosárba tartozik a rekord, ha x volt az indexmező értéke a rekordban. (K a blokkláncok száma).
3. Mit tételezünk fel, mivel arányos a beolvasás, kiírás költsége? (1 pont)
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.
23. Rendezett állomány esetén adjuk meg a bináris (logaritmikus) keresés lépéseit! (4 pont)
Ha a rendező mező és kereső mező egybeesik, akkor bináris (logaritmikus) keresést lehet alkalmazni: * beolvassuk a középső blokkot, * ha nincs benne az A=a értékű rekord, akkor eldöntjük, hogy a blokklánc második felében, vagy az első felében szerepelhet-e egyáltalán, * beolvassuk a felezett blokklánc középső blokkját, * addig folytatjuk, amíg megtaláljuk a rekordot, vagy a vizsgálandó maradék blokklánc már csak 1 blokkból áll.
15. Mennyi asA=a(R) lekérdezés keresési költsége jó hasító index esetén? (1 pont)
Ha az indexmező és keresési mező megegyezik, akkor csak elég a h(a) sorszámú kosarat végignézni, amely B/K blokkból álló kupacnak felel meg, azaz B/K legrosszabb esetben. A keresés K-szorosára gyorsul.
87. Mi a relációs algebrai optimalizálás algoritmusának 4. lépése (az alkalmazott szabályok felsorolása nélkül)? (2 pont)
Ha egy relációs változóra vagy konstans relációra közvetlenül egymás után kiválasztásokat vagy vetítéseket alkalmazunk, akkor ezeket vonjuk össze egy kiválasztássá vagy egy vetítéssé, vagy egy kiválasztás utáni vetítéssé, ha lehet (azaz egy ?.(?.()) alakú kifejezéssé). Ezzel megkaptuk az optimalizált kifejezésfát.
17. Milyen keresésre nem jó a hasító indexelés? (1 pont)
Intervallumos (a < A < b) típusú keresésre nem jó.
82. Miért érdemes a közös részkifejezéseket megkeresni relációs algebrai optimalizálás esetén? (1 pont)
Keressünk közös részkifejezéseket, amiket így elég csak egyszer kiszámolni a kifejezés kiértékelése során.
24. Mennyi a keresési költség rendezett mező esetében? (1 pont)
Keresési idő: log2(B)
25. Mennyi a keresési költség rendezett mező esetében, ha gyűjtő blokkokat is használunk? (1 pont)
Keresést 2 helyen végezzük: log2(B-G) költséggel keresünk a rendezett részben, és ha nem találjuk, akkor a gyűjtőben is megnézzük (G blokkművelet, ahol G a gyűjtő mérete), azaz az összköltség: log2(B-G)+G.
33. Mit hívunk klaszterszervezésű táblának? (1 pont)
Klaszterszervezés egy tábla esetén egy A oszlopra: * az azonos A-értékű sorok fizikailag egymás után blokkokban helyezkednek el. * CÉL: az első találat után az összes találatot megkapjuk soros beolvasással.
35. Mikor mondjuk, hogy 2 tábla klaszterszervezésű? (1 pont)
Klaszterszervezés két tábla esetén az összes közös oszlopra: * a közös oszlopokon egyező 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.
34. Mit hívunk klaszterindexnek? (1 pont)
Klaszterszervezésű fájl esetén index az A oszlopra
61. A relációs algebrai kifejezésfában mik a levélcsúcsok? (2 pont)
Konstans relációk vagy relációs változók.
55. Milyen költségmodellt használunk relációs algebrai optimalizálás esetében? (2 pont)
Költségmodell: a kiszámítás költsége arányos a relációs algebrai kifejezés részkifejezéseinek megfelelő relációk tárolási méreteinek összegével.
79. Miért érdemes hamarabb szelektálni relációs algebrai optimalizálás esetén? (1 pont)
Minél hamarabb szelektáljunk, hogy a részkifejezések várhatóan kisebb relációk legyenek.
56. Mi a módszer lényege relációs algebrai optimalizálás esetében? (3 pont)
Módszer: a műveleti tulajdonságokon alapuló ekvivalens átalakításokat alkalmazunk, hogy várhatóan kisebb méretű relációk keletkezzenek.
16. Ha túl nagynak választjuk a K-t hasításkor, akkor ez milyen problémát okozhat? (1 pont)
Nagy K esetén sok olyan blokklánc lehet, amely egy blokkból fog állni, és a blokkban is csak 1 rekord lesz. Ekkor a keresési idő: 1 blokkbeolvasás, de B helyett T számú blokkban tároljuk az adatokat.
20. Milyen probléma keletkezhet kiterjeszthető hasító index esetén és mi rá a megoldás? (2 pont)
Probléma: Ha az új sorok hasító értékének eleje sok bitben megegyezik, akkor hosszú ágak keletkezhetnek. (Nincs kiegyensúlyozva a fa.) Megoldás: A bináris gráfot teljessé is tehetjük. A gráfot egy tömbbel ábrázolhatjuk. Ekkor minden kosár azonos szinten lesz, de közös blokkjai is lehetnek a kosaraknak. Túlcsordulás esetén a kosarak száma duplázódik.
100. Külső összefésülő rendezésnél mire jó a rendező lépés? (1 pont)
Rendező lépés: rendezett futamok létrehozása
91. Mennyi az SC(A,R) szelektivitás értéke, ha A kulcs? (1 pont)
SC(A,R): az A mező kiválasztási számossága R-ben - A kulcs: S(A,R)=1
92. Mennyi az SC(A,R) szelektivitás értéke, ha A nem kulcs (a jelölések magyarázatát is adjuk meg)? (1 pont)
SC(A,R): az A mező kiválasztási számossága R-ben - A nem kulcs: S(A,R)= NR / V(A,R) Jelölésmagyarázat: - NR = R rekordjainak száma - V(A,R) = az A mező különböző értékeinek száma R-ben
81. Miért érdemes az unáris műveleteket összevonni relációs algebrai optimalizálás esetén? (1 pont)
Vonjuk össze az egymás utáni unáris műveleteket (kiválasztásokat és vetítéseket), és ezekből lehetőleg egy kiválasztást, vagy vetítést, vagy kiválasztás utáni vetítést képezzünk. Így csökken a műveletek száma, és általában a kiválasztás kisebb relációt eredményez, mint a vetítés.
41. Ha t szintű indexet használunk, és a legfelső szint 1 blokkból áll, abból milyen egyenlet következik és mi a megoldása t-re? (2 pont)
t-ik szinten 1 blokk: 1=B/bf(I)t: - azaz t=logbf(I)B < log2(B) azaz jobb a rendezett fájlszervezésnél.
21. Lineáris hasító index esetén mikor nyitunk meg új kosarat? (1 pont)
Új kosarat akkor nyitunk meg, ha egy előre megadott értéket elér a kosarakra jutó átlagos rekordszám. (rekordok száma/kosarak száma > küszöb)
95. Mennyi B+-fa típusú másodlagos index esetén az átlagos keresési költség, ha minden találatot be kell olvasni (a jelölések magyarázatát is adjuk meg)? (2 pont)
átlagos költség: * kulcs mező HTi + 1 * nem kulcs mező o legrosszabb eset HTi + SC(A,R) o a lineáris keresés kedvezőbb, ha sok a megfelelő rekord - SC(A,R) = az A mező kiválasztási számossága R-ben - HTi = az i index szintjeinek száma
27. Milyen mindig az indexrekord szerkezete? (1 pont)
(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. Az index mindig rendezett az indexértékek szerint
63. Hány szabálycsoportot adunk meg relációs algebrai optimalizáláskor és mi jellemző ezekre? (4 pont)
* 11 szabályt adunk meg. A szabályok olyan állítások, amelyek kifejezések ekvivalenciáját fogalmazzák meg. Bizonyításuk könnyen végiggondolható. * Az állítások egy részében a kifejezések szintaktikus helyessége egyben elégséges feltétele is az ekvivalenciának.
8. Mitől függhet a blokkméret? (1 pont)
* 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
14. Mikor jó egy hasító függvény és ilyenkor milyen hosszúak a blokkláncok? (2 pont)
* Akkor jó egy hasító függvény, ha nagyjából egyforma hosszú blokkláncok keletkeznek, azaz egyenletesen sorolja be a rekordokat. * Jó hasító függvény esetén a blokklánc B/K blokkból áll. (K a blokkláncok száma).
42. Mi a két legfontosabb jellemzője a B+-faindexnek? (2 pont)
* B+-fa: Minden blokk legalább 50%-ban telített. * B+-fa: a szerkezeten kívül a telítettséget biztosító karbantartó algoritmusokat is beleértjük
22. Lineáris hasító index esetén a h(K) érték alapján melyik kosárba kerül a rekord? (2 pont)
* Ha n kosarunk van, akkor a hasító függvény értékének utolsó log(n) bitjével megegyező sorszámú kosárba tesszük, ha van benn hely. Ha nincs, akkor hozzáláncolunk egy új blokkot és abba tesszük. * Ha nincs megfelelő sorszámú kosár, akkor abba a sorszámú kosárba tesszük, amely csak az első bitjében különbözik a keresett sorszámtól.
83. A relációs algebrai optimalizálás algoritmusának mi az inputja és mi az outputja? (2 pont)
* INPUT: relációs algebrai kifejezés kifejezésfája * OUTPUT: optimalizált kifejezésfa optimalizált kiértékelése
97. A (Szigma)_(theta 1)(vagy)(theta 2)...(vagy)(theta n) lekérdezésnek adjuk meg kétféle kiszámítási módját! (3 pont)
* Több index o RID-k uniója * Lineáris keresés
26. Mennyi a keresési költség rendezett mező esetében, ha minden blokkot félig üresen hagyunk? (1 pont)
* a keresés után 1 blokkművelettel visszaírjuk a blokkot, amibe beírtuk az új rekordot, * tárméret 2*B lesz * keresési idő: log2(2*B) = 1+log2(B)
37. Ha t szintű indexet használunk, a legfelső szinten milyen keresést használunk? (1 pont)
* a t-ik szinten (I(t)) bináris kereséssel keressük meg a fedő indexrekordot
32. Hogyan keresünk a másodlagos indexben és mennyi a keresés költsége? (5 pont)
* az indexben keresés az index rendezettsége miatt bináris kereséssel történik: log2(B(I)) * a talált indexrekordban szereplő blokkmutatónak megfelelő blokkot még be kell olvasni * 1+log2(B(I)) << log2(B) (rendezett eset) * az elsődleges indexnél rosszabb a keresési idő, mert több az indexrekord
99. Milyen két fajtája van a rendezésnek? (2 pont)
* belső rendezés (ha a rekordok beférnek a memóriába) * külső rendezés
30. Mennyi a keresési költség elsődleges index esetén? (1 pont)
* fedő érték keresése az index rendezettsége miatt bináris kereséssel történik: log2(B(I)) * a fedő indexrekordban szereplő blokkmutatónak megfelelő blokkot még be kell olvasni * 1+log2(B(I)) << log2(B) (rendezett eset)
28. Adjuk meg az elsődleges index 5 jellemzőjét! (5 pont)
* főfájl is rendezett * csak 1 elsődleges indexet lehet megadni (mert csak egyik mező szerint lehet rendezett a főfájl. * elég a főfájl minden blokkjának legkisebb rekordjához készíteni indexrekordot * indexrekordok száma: T(I)=B (ritka index) * indexrekordból sokkal több fér egy blokkba, mint a főfájl rekordjaiból: bf(I)>>bf, azaz az indexfájl sokkal kisebb rendezett fájl, mint a főfájl: B(I) = B / bf(I) << B=T / bf
31. Adjuk meg a másodlagos index 5 jellemzőjét! (5 pont)
* főfájl rendezetlen (az indexfájl mindig rendezett) * több másodlagos indexet is meg lehet adni * a főfájl minden rekordjához kell készíteni indexrekordot * indexrekordok száma: T(I)=T (sűrű index) * indexrekordból sokkal több fér egy blokkba, mint a főfájl rekordjaiból: bf(I)>>bf, azaz az indexfájl sokkal kisebb rendezett fájl, mint a főfájl: B(I) = T/bf(I) << B=T/bf
38. Ha t szintű indexet használunk és a legfelső szint 1 blokkból áll, akkor mennyi a keresési költség? (1 pont)
* ha a legfelső szint 1 blokkból áll, akkor t+1 blokkolvasást jelent.
10. Soroljunk fel legalább 7 különböző fájlszervezési módszert? (7 pont)
* kupac (heap) * hasító index (hash) * rendezett állomány * elsődleges index (ritka index) * másodlagos index (sűrű index) * többszintű index * B+-fa, B*-fa
36. Ha t szintű indexet használunk, mennyi a keresési költség blokkműveletek számában mérve? (1 pont)
* követjük a mutatót, minden szinten, és végül a főfájlban: log2(B(I(t)))+t blokkolvasás
4. Adjuk meg az alábbi paraméterek jelentését! l, b, B, T, bf, M, I(A) (7 pont)
* l - (length) rekordméret (bájtokban) * b - blokkméret (bájtokban) * T - (tuple) rekordok száma * B - a fájl mérete blokkokban * bf - blokkolási faktor (mennyi rekord fér el egy blokkban: bf =(b/l) - alsó egészrész * B= (T/bf) - felso egeszresz * M - memória mérete blokkokban * I(A) - Az A oszlopban szereplő különböző értékek számát képméretnek hívjuk és I(A)-val jelöljük.
39. Ha t szintű indexet használunk, mennyi az indexszintek blokkolási faktora és miért? (2 pont)
* minden szint blokkolási faktora megegyezik, mert egyforma hosszúak az indexrekordok.
12. Kupac szervezés esetén mennyi a beszúrás költsége? (1 pont)
* utolsó blokkba tesszük a rekordot, 1 olvasás + 1 írás * módosítás: 1 keresés + 1 írás * törlés: 1 keresés + 1 írás (üres hely marad, vagy a törlési bitet állítják át)