IP-08abctAB2G   Adatbázisok-2 gyakorlat
ELTE, 2014/2015.tanév I.félév, dr. Hajas Csilla gyak.vez.
Hétfő 12:15-13:45 PC3, 14:00-15:30 PC3, Szerda 10:15-11:45 PC9
backAB2gyak (főmenü)     AB2ea    3.gyak     5.gyak    OracleDoc   

4.gyak. Indexstruktúrák-I.
   
E (elméleti témakör)
A mai órán elkezdjük az előadáshoz kapcsolódó "táblás/papíros"-feladatokat,
a gyakorlaton a Tankönyv szerinti sorrendben haladunk, ezen a 4.gyakorlaton
az aktuális 4.EA anyagát dolgozzuk fel (Tk.4.1-4.3. Indexek, B-fa), és majd
a köv.héten folytatjuk (Tk.4.4 Hasító indexek és Tk.5.4 Bitmap indexek).
> E1. Elsődleges indexek szekvenciális fájlokon (Tk.4.1. fejezete)
> E2. Másodlagos indexek (Tk.4.2. fejezete)
> E3. B-fák (Tk.4.3. fejezete)
    
G (gépes témakör)
> G6. Feladatok indexekre és bitmap indexekre
   

E1. Elsődleges indexek szekvenciális fájlokon (Tk.4.1. 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:
   - a.) Előző feladat adataival: Minden blokkba 3 rekord, vagy 10 indexrekord
     fér. Összesen 3000 rekordunk van. Egyik blokk telítettsége sem lehet több,
     mint 50%. Hány blokkos az adatfájl, a sűrű index és a ritka index? 
   - b.) 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? 
        

E2. Másodlagos indexek (Tk.4.2. fejezete)
      
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? 
   

E3. B-fák (Tk.4.3. fejezete)

Segédanyagok: B-fák, lásd 3.előadás: fizika.pp49-58 
Molina-Ullman-Widom: Adatbázisrendszerek megvalósítása, Panem, 2001.
Tk. 4.fej. Indexstruktúrák -> 4.3. B-fák  B_fa.pdf
OracleDoc: Concepts  >> 3 Overview of Indexes
      
Tk.B-fa felépítésére feladat, lásd előadás fizika.pp49-58 
   - Az alábbi feladatban a tankönyben szereplő algoritmussal építsünk fel egy B-fát!
     Tegyük fel, hogy egy B-fa blokkjaiba 3 kulcs fér el plusz 4 mutató. A kulcsok
     különbözőek. Szúrjuk be a B-fába az alábbi kulcsértékeket a megadott sorrendben:
     39,  15,  50,  70,  79,  83,  72,  43,  75,  45,  54, 76, 64, 68
     Adjuk meg a B-fa minden olyan állapotát, amikor egy csomópont kettéosztására
     volt szükség. Például, az első kettéosztás utáni állapot:
                                50
                   15 | 39         50 | 70

    - [Egy kis segítség:]
      -------------------
      Levél csúcs kettéosztásakor minden kulcsot megőrzünk a régi és az új (szomszédos)
      csúcsban. 1 új kulcs-mutató párt küldünk felfelé a szülő csúcsba, amit ott kell elhelyezni.
       
      Belső csúcs kettéosztásakor (N,M csúcsra) a mutatók első fele az N-be kerül,
      a második az M-be. A kulcsok első fele az N-be kerül a második fele az M-be,
     de középen kimarad egy kulcs, ami az M-en keresztül (első gyermekén keresztül)
     elérhető legkisebb kulcsot tartalmazza. Ez nem kerül sem N-be, sem M-be, hanem
     ez megy fölfelé N és M közös szülőjébe az M-re mutató mutatóval együtt.
 
Tk.4.3.1.feladat (kicsit más adatokkal)
   - Legyen a rekordok száma 6000, és az indexelt oszlopban minden érték
      különböző. Sűrű indexre készítünk B-fát. Egy blokkba 4 rekord vagy
      (99 kulcs és 100 mutató) fér. Legyen a telítettség 50%, azaz legalább
      Mekkora az adatfájl és az index együttes mérete?
      Mennyi a keresés blokkolvasási költsége?
   
Fel a lap tetejére (mai gyak témakörei)      Vissza az AB2gyak kezdőlapjára  
 

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