AB2gyak (főmenü)    Gyak.köv.    AB2ea    3.gyak     5.gyak    OracleDoc   

4.gyak. Indexstruktúrák-I.
   
G (gépes témakör)
> G6. Feladatok indexekre és bitmap indexekre
 
E (elméleti témakör) 
> E1. Hasítóindex szervezés (Tk.4.4. fejezete)
> E2. Indexstruktúrák (Tk.4.1.- 4.2. fejezete)
   
G6. Feladatok indexekre és bitmap indexekre
   
Segédanyagok: Lásd Indexek.txt CREATE INDEX példáit
>> OracleDoc: SQL Language Reference >> innen CREATE INDEX példák
>> OracleDoc: Concepts  >> 3 Overview of Indexes
   
6.01. Hozzunk létre egy vagy több táblához több különböző indexet!
         Legyen köztük több oszlopos, csökkenő sorrendű, függvény alapú,
         fordított kulcsú (reverse), bitmap index, stb.
 
Állapítsuk meg ezeknek az indexeknek a különböző tulajdonságait a katalógusokból. 
DBA_INDEXES, DBA_IND_COLUMNS, DBA_IND_EXPRESSIONS
 
6.02. Adjuk meg azoknak a tábláknak a nevét, amelyeknek van csökkenő
         sorrendben indexelt oszlopa.

6.03. Adjuk meg azoknak az indexeknek a nevét, amelyek legalább 9 oszloposak
         (vagyis a táblának legalább 9 oszlopát vagy egyéb kifejezését indexelik).

6.04. Adjuk meg az SH.SALES táblára létrehozott bitmap indexek nevét.

6.05. Adjuk meg azon kétoszlopos indexek nevét és tulajdonosát, amelyeknek
         legalább az egyik kifejezése függvény alapú. Adjuk meg az egyikükre,
         például az OE tulajdonában lévőre, hogy milyen kifejezések szerint vannak
         indexelve a soraik (vagyis mi a függvény, ami alapján a bejegyzések készülnek).
   
Fel a lap tetejére (mai gyak témakörei)      Vissza az AB2gyak kezdőlapjára  

E1. Hasítóindex szervezés (Tk.4.4. fejezete)
     
Segédanyagok:
Hasító index, lásd 2.előadás:  fizika.p9fizika.pp11-16 és fizika.pp17-20
Molina-Ullman-Widom: Adatbázisrendszerek megvalósítása, Panem, 2001.
4.fej. Indexstruktúrák -> 4.4. Tördelőtáblázatok dinamikus_tordeles.pdf
 
Feladatok:
E1.1 Kiterjeszthető hasító index (vagy másképp kiterjeszthető tördelőtáblázat)
        A kosártömb mérete mindig pontosan 2**i.
        Tegyük fel, hogy egy blokkba 2 rekord fér el, j értéke (a blokkok jobb oldalán)
        azt jelzi, hogy hány bit használatos a blokkhoz tartozás eldöntésére.

 i=1 ---- 0001
0 | -|---> ----1
| |
1 | -|---> 1001
---- 1100
----1
       kosártömb        blokkok
       
       Szúrjuk be az alábbi hasító értékkel rendelkező sorokat egymás után,
       és minden újabb blokk létrehozása után rajzoljuk újra a kosártömböt
       és a blokkokat.
 0001, 0110, 1011, 0111, 1100, 1111, 0100
-- Egy kis segítség a kiterjeszthető hasító indexhez:
A K kulcsú rekordot h(K) első i bitje alapján helyezzük el úgy, hogy
követjük a kosártömb ezen bejegyzéséhez tartozó mutatót.
Ha nincs hely a megtalált blokkban akkor a következőt tesszük:
1. Ha j < i akkor újabb blokkot hozunk létre és a j+1-edik bit alapján
kettéosztjuk a rekordokat a két blokk között (mindkét blokkra j+1 lesz
az új érték), majd a kosártömb szükséges mutatóit az új blokkra irányítjuk.
2. Ha j = i akkor először i-t növeljük 1-gyel, megduplázzuk a kosártömböt,
új mutatókat teszünk bele, majd alkalmazzuk 1.-et.
     
 E1.2. Lineáris hasító index
         Az előre megadott küszöbszám (rekordok száma/kosarak száma)
         legyen 2,4. (H.F.: Nézzük meg akkor is, ha a küszöbszám 1,7!)
         Készítsünk lineáris hasító indexet, tegyük fel, hogy egy blokkba
         2 rekord fér el és a kosarak az alábbi rekordokat tartalmazzák:
 0000 0101
1110
---- ----
0 1
       Szúrjuk be az alábbi hasító értékkel rendelkező sorokat egymás után,
       és minden újabb blokk megnyitás után rajzoljuk újra a kosarakat.
 0001, 0110, 1011, 0111, 1100, 1111, 0100
-- Egy kis segítség a lineáris hasító indexhez:
Ha n kosarunk van, akkor a K kulcsú rekordot h(K) utolsó i bitje alapján
tesszük a megfelelő kosárba (i=log2n).
Ha nincs benne hely, akkor újabb blokkot láncolunk ehhez a kosárhoz.
Ha nincs ilyen kosár, akkor az első bitben különböző kosárba tesszük.
Ha az előre megadott küszöböt átléptük, akkor új kosarat nyitunk.
Szükség esetén növeljük i-t
     
Fel a lap tetejére (mai gyak témakörei)      Vissza az AB2gyak kezdőlapjára  

E2. Elsődleges és másodlagos indexek (Tk.4.1-4.2. fejezete)
 
Tk.4.1.1.feladat, lásd előadás fizika.p26 és fizika.p34
   - Minden blokkba 3 rekord, vagy 10 indexrekord (érték-mutató pár) fér.
     Összesen 3000 rekordunk van. Hány blokkos az adatfájl, a sűrű index és
     a ritka index? 

Tk.4.1.2.feladat:
   - Minden blokkba 30 rekord, vagy 200 indexrekord (érték-mutató pár) fér.
     Összesen n rekordunk van. Egyik blokk telítettsége sem lehet több, mint 80%.
     Hány blokkos az adatfájl, a sűrű index és a ritka index?

Tk.4.1.3.feladat:
   - Minden blokkba 3 rekord, vagy 10 indexrekord (érték-mutató pár) fér.
     Összesen n rekordunk van. Többszintű indexünk legfelső szintje csak
     1 blokkból áll. Hány blokkos az indexfájl, ha az első szinten sűrű az index,
     és ha az első szinten ritka az index? 
   
Tk.4.2.1.feladat:
   - Az adatfájlba történő beszúrás és törlés esetén a másodlagos indexfájlnak
      változnia kell. Javasoljunk néhány módszert arra, hogy lehet naprakészen
      tartani a másodlagos indexet az adatfájlok változásaival szinkronban.

Tk.4.2.4.feladat, lásd előadás fizika.p43 
   - Minden blokkba 3 rekord, vagy 10 indexrekord (kulcs-mutató pár), vagy
     50 mutató fér. Tegyük fel, hogy átlagosan 20-szor szerepel minden indexérték.
     Összesen 3000 rekordunk van. Másodlagos indexet készítünk, úgy, hogy az
     egy indexértékhez tartozó mutatókat kosarak blokkjaiban tároljuk. Mekkora
     az állomány mérete összesen, beleértve az adatokat, indexeket és mutatókat
     tartalmazó blokkokat? 
   
Fel a lap tetejére (mai gyak témakörei)      Vissza az AB2gyak kezdőlapjára