Helsingin yliopisto / TKTL
Tietokannan hallinta kevät 2003, harjoitus 2:  30.3.-3.4.

TKTL:n bodbacka-tietokantapalvelimella on käytössä 181GB levy-yksikkö, jonka keskimääräinen hajasaantiaika 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. Hahmottele algoritmi (tai kirjoita ohjelma),  joka hakee tehtävän 1 tietuerakenteesta viidennen kentän arvon.

  3. 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
    2. Mikä olisi kaikkien tietojenkäsittelytieteen opiskelijoiden hakuaika.
    3. Mikä olisi opiskelijanumeron perustella tapahtuvan binäärihaun aika, jos tiedosto olisi järjestetty opiskelijanumeron perusteella.

  4. 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ärjestyskombinaatioita järjestyksen määrääjänä. Mikä on eniten ja mikä vähiten ongelmallinen.

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