Helsingin yliopisto / TKTL
Tietokannan hallinta muunto kevät 2003, harjoitus 2:  27.-28.5.

TKTL:n bodbacka-tietokantapalvelimella on käytössä 181GB levy-yksikkö, jonka keskimääräinensatunnaisen sivun hakuaika on 7.4 ms. Levyn pyörimisnopeus on 7200 kierrosta minuutissa (1 kierros 8.3 ms). Levypintoja on 24.  Tietokannan tallennukseen käytetään 4KB lohkoja, uralle menee n. 90 lohkoa. Sylintereitä on luokkaa 24000. Käytä tällaista levyä pohjana seuraavissa laskelmissa.

  1. Opiskelija taulussa on sarakkeet henkilötunnus (11 c), opiskelijanumero (15 c), sukunimi, etunimet,entinen sukunimi, sähköpostiosoite, puhelinnumero(15 c), pääaine(3 c),  viimeinen_kirjausaika (7 c). Nimet ja sähköpostiosoite on määritelty varchar(80), mutta niiden keskipituudet ovat sukunimi (9), etunimet (12), entinen sukunimi (2 - suurin osa tyhjiä), sähköpostiosoite (20).

    Tietueet tallennetaan seuraavasti: Tietueotsake 32 tavua sisältää tietuenumeron, tietueen pituuden, sarakkeiden lukumäärän yms. tietoa. Kukin sarakearvo tallennetaan muodossa arvon pituus + pituuden mukainen määrä tavuja arvolle. Pituus ilmaistaan yhdellä tavulla, jos se on alle tai tasan 250, ja kolmella, jos se on yli 250 (ensimmäisen tavun arvo 255 ilmaisee, että kaksi seuraavaa tavua kertoo pituuden).

    1. Mikä pituinen olisi opiskelijatietue keskimäärin.
    2. Mieti opiskelijatietueiden käyttäytymistä päivityksissä. Tarkastellaan kasarakennetta. Paljonko lohkoon mielestäsi kannattaisi jattää kasvutilaa, jotta päivitykset eivät degeneroi rakenteen peräkkäiskäsittelyominaisuuksia.

  2. Olkoon kullakin tiedoston sivulla hallintatietoa 128 tavua. Tehtävän 1 opiskelijataulu toteutetaan kasarakenteena Opiskelijoita on 16000.
    1. Mikä olisi opiskelijan keskimääräinen hakuaika opiskelijanumeron perusteella haettaessa
    2. Mikä olisi kaikkien tietojenkäsittelytieteen opiskelijoiden hakuaika.
    3. Mikä olisi opiskelijanumeron perustella tapahtuvan binäärihaun aika, jos tiedosto olisikin toteutettu opiskelijanumeron perusteella järjestettynä peräkkäistiedostona.

  3. Taulussa Osallistuminen on avaimena yhdistelma: kurssikoodi, lukukausi, lukuvuosi, kurssin saman lukukauden toteutukset erittelevä kurssinumero, harjoitusryhmänumero ja opiskelijanumero. Taulu esittää opiskelijoiden osallistumisia kursseille ja siellä on tietoa useilta lukukausilta. Mieti millaisia ongelmia taulun ylläpitoon liittyy, jos se toteutetaan avaimen mukaan järjestettynä peräkkäisrakenteena. Pohdi erilaisia avaimen sarakejärjestyksiä järjestyksen määrääjänä. Mikä on eniten ja mikä vähiten ongelmallinen.

  4. Hajautusrakenteisessa tiedostossa on B = 10 solua ja hajautin h on määritelty kaavalla h(v) = v mod B. Jaksoon mahtuu kolme tietuetta.
    a) Anna tiedostorakenteen sisältö, kun tiedostoon lisätään ensin avainarvoin 60, 86, 40, 18, 92, 50, 30, 22, 36, 35, 46, 66, 11, 15, 65, 32, 76, 16, 21 ja 56 varustetut tietueet tässä järjestyksessä ja siitä poistetaan sitten avainarvoilla 18, 40, 46 ja 56 varustetut tietueet.
    b) Mikä on levyhakujen määrän keskiarvo lisäysten jälkeen, kun haku tehdään satunnaisella avainarvolla? Entä poistojen jälkeen?

  5. Tarkastellaan taulua osallistuminen(opiskelija_nro,kurssikoodi,kurssinro, ryhmä_nro,lukuvuosi,lukukausi, ilm_aika,yms). Oletetaan että taulu on tallennettu hajautusrakenteena opiskelija numeroon perustuen. Hajautusalueen koko B= 5000 solua. Näistä 500 on tyhjiä. Ylivuotosivuille on varattu tilaa 5000 sivulle, joista käytössä on 400. Taulussa on 40000 riviä useilta lukukausilta. Miten toteuttaisit kyselyn
    	select opiskelija_nro, count(kurssikoodi) from  opiskelu 
    	where lukuvuosi=2003 and lukukausi='K' 
    	group by opiskelija_nro;
    Montako levyhakua kyselyn käsittelyyn tarvitaan? Paljonko tarvitaan keskusmuistin puskuritilaa?

  6. Taululle ei kannata rakentaa hakemistoa jonkin sarakkeen tai sarakeyhdistelmän perusteella ellei hakemisto oleellisesti nopeuta jotain yleisesti käytettävää kyselyä. Tarkastele kasarakenteena toteutettua opiskelija taulua
    1. Minkä sarakkeiden perusteella taululle kannattaisi toteuttaa hakemisto
    2. Mieti millä perusrakenteella toteuttaisit hakemistot (kasa, peräkkäis-, hajatiedosto - myöhemmin käsitellään muitakin vaihtoehtoja).
    3. Paljonko lisätilaa tarvitaan? Oletetaan, että hakemistotietueessa on hallintatietoa vain 6 tavua ja osoitteen pituus on myös 6 tavua.