Kezdőlap     AB2gyak kezdőlap     3.gyak      5.gyak     OracleDoc   

4.gyak. Indexstruktúrák
   
G (gépes témakör)
> G6. Feladatok indexekre és bitmap indexekre
E (elméleti témakör)
> E3. Indexstruktúrák (Tk.4.1.- 4.2. fejezete)
> E4. B-fák (Tk.4.3. fejezete)
> E5. Bitmap indexek (Tk.5.4. fejezete)
   

A gyakorlati foglalkozások az előadások anyagára épülnek
4.EA: A fizikai fájlszervezés folytatása (B-fák), fizika.ppt (49-59 o.)
Bittérkép index, 9ituning.ppt (83-84 o.)
Bittérképek tömörítése szakaszhossz kódolással Szakaszhossz_kodolas.doc
Algebrai optimalizáció, átalakítási szabályok algebrai_opt.ppt (106-126 o.)
   
-- előadáshoz kapcsolódó további olvasmány:
Molina-Ullman-Widom: Adatbázisrendszerek megvalósítása, Panem, 2001. 
4.3. B-fák
5.4. Bittérképindexek
7.2. Algebrai szabálsok lekérdezéstervek javítására
   
G6. Feladatok indexekre és bitmap indexekre
 
Segédanyagok: Lásd Indexek.txt CREATE INDEX példáit
         (valamint az SQL Reference CREATE INDEX példáit)

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ú .
6.06. Adjuk meg az egyikükre, pl. 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  

E3. Elsődleges és másodlagos indexek (Tk.4.1-4.2. fejezete)
 
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? 

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?

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? 
   
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.

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 10-szer 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  

E4. 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.
4.fej. Indexstruktúrák -> 4.3. B-fák  B_fa.pdf
   
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
     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.
 
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  

E5. Bittérképindexek  (Tk.5.4. fejezete)
   
Segédanyagok:
lásd előadáson 9ituning 83-84.o: Bitmap index  + Oracle Concepts doksi
Molina-Ullman-Widom: Adatbázisrendszerek megvalósítása, Panem, 2001.
5.4. Bittérképindexek  szakaszhossz_kodolas.pdf
   
1.feladat: Tegyük fel, hogy a dolgozó tábla 14 sorból áll

DKOD DNEV   FIZETES  FOGLALKOZAS  BELEPES  OAZON
---------------------------------------------------
1    SMITH     800   CLERK        1980     20  
2    ALLEN    1600   SALESMAN     1981     30      
3    WARD     1250   SALESMAN     1981     30      
4    JONES    2975   MANAGER      1981     20      
5    MARTIN   1250   SALESMAN     1981     30      
6    BLAKE    2850   MANAGER      1981     30      
7    CLARK    2450   MANAGER      1981     10      
8    SCOTT    3000   ANALYST      1982     20      
9    KING     5000   PRESIDENT    1981     10      
10   TURNER   1500   SALESMAN     1981     30      
11   ADAMS    1100   CLERK        1983     20      
12   JAMES     950   CLERK        1981     30      
13   FORD     3000   ANALYST      1981     20      
14   MILLER   1300   CLERK        1982     10     

   - Tegyük fel, hogy fenti táblához a FOGLALKOZAS, a BELEPES és az OAZON
     oszlopokra létezik bitmap index (3 index). Készítsük el az alábbi lekérdezésekhez
     szükséges bitvektorokat, majd végezzük el rajtuk a szükséges műveleteket, és
     adjuk meg azt az előállt bitvektort, ami alapján a végeredmény sorok megkaphatók.
     Ellenőrzésképpen adjuk meg a lekérdezést SQL-ben is!
 
a. ) Adjuk meg azoknak a dolgozóknak a nevét, akik 1981-ben léptek be és a foglalkozásuk
      hivatalnok (CLERK), vagy a 20-as osztályon dolgoznak és a foglalkozásuk MANAGER.

b.) Adjuk meg azoknak a dolgozóknak a nevét, akik nem 1981-ben léptek be és a 10-es
     vagy a 30-as osztályon dolgoznak.

2.feladat, lásd Tankönyv 5.4.Bittérképindexek: Szakaszhossz_kodolas
   
   - Tömörítse az előző feladatban kapott bitvektorokat a szakaszhossz kódolással.

   - Fejtsük vissza a következő, szakaszhossz kódolással tömörített bitvektort:
     11101101001011
      
Fel a lap tetejére (mai gyak témakörei)      Vissza az AB2gyak kezdőlapjára