581334 Tietokannan hallinta Erilliskoe 11.6.2002 1. Tiedostossa on 400 000 jaksoa, jotka on sijoitettu 20 levypintaa sisältävälle levykölle. Uralle mahtuu 20 jaksoa ja levyn pyörimisnopeus on 12 000 r/min. Kohdistusaika toiselle sylinterille siirryttäessä on 5 ms. Tiedostosta luetaan 1000 jaksoa. Kuinka paljon tähän kuluu aikaa a) vähintään, b) enintään? 12 p Ratkaisu: Sylinterillä 20 x 20 = 400 jaksoa eli tarvitaan 1000 sylinteriä. Pyörähdysviive on keskmäärin puolen kierroksen aika eli 1/2 x 60000/12000 ms = 2.5 ms. Jakson siirtoaika = 1/20 x kierrosaika = 0.25 ms. Kysytty 1000 jakson lukeminen on nopeinta, kun jakost ovat mahdollisimman vähillä sylintereillä (tässä 3) ja hitainta, kun jokainen luettava jakso on eri sylinterillä kuin edellinen (ja vielä edelliseen nähden mahdollisimman kaukana olevalla sylinterillä; tehtävässä tosin oletetaan kohdistusaika eli hakuvarren siirtoaika vakioksi). a) Minimilukuaika = (5 + 2.5 + 400 x 0.25) + (5 + 2.5 + 400 x 0.25) + (5 + 2.5 + 200 x 0.25) = 272.5 ms. b) Maksimilukuaika = 1000 x (5 + 2.5 + 0.25) = 7.75 s. (Oikeastaan pitäisi käyttää pyörähdysviipeelle maksimiarvoa n. 5 ms (melkein koko pyörähdys). Arvostelusta: Hyvin vaihtelevista vastauksista on yritetty hakea periaate, ei niinkään lukuarvoja. Sylinterin käsittelyn ymmärtäminen on tärkeää. 2. Taidemuseon kokoelmista säilytetään tietoja seuraavien kaavioiden mukaisissa relaatioissa: TAIDEMUSEO(museo, osoite) SIJOITUS(taiteilija, teos ,museo). Relaatio SIJOITUS sisältää seuraavat monikot: (Aatu, Kuva, M1) (Babi, Bild, M4) (Dali, Luna, M2) (Dali, Park, M2) (Dali, Sky, M3) (Ellu, Kana, M4) (Kake, Oma, M4) (Lisa, City, M2) (Miro, Mira, M3) (Pepe, Cola, M1) (Repe, Hups, M2) ja relaatio TAIDEMUSEO monikot (M1, Hki) (M2, London) (M3, Madrid) (M4, Paris). Relaatiolle SIJOITUS ylläpidetään ISAM-rakenteista perushakemistoa ja ISAM-rakenteista oheishakemistoa attribuuteille (museo, taiteilija). Perustiedoston monikkoja mahtuu jaksoon enintään 3, samoin hakemistotietueita hakemistojaksoon. Kuvaa yksityiskohtaisesti esimerkkirelaatioiden avulla hakemistojen ja perustiedoston sisältö. 12 p Ratkaisu: Perustiedostossa on 6 jaksoa (kun jätetään 'kasvuvaraa' esimerkiksi yksi paikka jaksoa kohti). Perushakemistosta tulee kaksitasoinen: avaimet ylimmällä tasolla (A, A) ja (Kake, Oma), seuraavalla (A, A), (Dali, Luna), (Dali, Sky) (jakso 1) (Kake, Oma), (Miro, Mira), (Repe, Hups) (jakso 2). Avain (A, A) sallii lisäykset hakemiston alkuun; (Aatu, Kuva) on muuten (lähes) oikein. Oheishakemistossa on alimmalla tasolla 10 tietuetta (5 jaksossa, kun tässäkin jätetään tilaa lisäyksille). Tietueosoitteet esitetään periaatteessa listana (tässä hakemistotietue (M2, Dali) sisältää kaksi osoitetta, kaikki muut yhden. Hakemistotasot (2) rakennetaan kuten perushakemistossa. Arvostelusta: Pieniä virheitä (1-2 p): kasvunvaran puuttuminen, (A, A)- tilanteen unohtaminen, oheishakemiston duplikaattien esitystavan ongelmat - tämä tulkittiin pieneksi virheeksi huolimatta siitä, että monessa tapauksessa hakemistolla ei olisi algoritmisesti löytynyt molempia (M2, Dali)-tietueita). Isompia virheitä (n. 3 p): oheishakemiston (joskus päähakemistonkin) esittäminen vain yhden attribuutin avulla - oheoshakemisto siis erikseen museolle ja taiteilijalle). ISAMin sijasta ei hyväksytty B+-puu-viritelmiä eikä muita, joissa perusajatuskaan ei ollut näkyvissä. 3. Selitä, kuinka tehtävän 2 tietokantaan liittyvä kysely select t.osoite from SIJOITUS s, TAIDEMUSEO t where s.taiteilija = 'Rembr%' and s.museo = t.museo; toteutetaan tehokkaasti tehtävässä 2 mainittuun toteutukseen perustuen. Esitä kyselylle myös yksi periaatteeltaan erilainen vaihtoehtoinen toteutustapa ja arvioi sen tehokkuutta. (Vaihtoehdon mahdollisesti tarvitsemat lisäoletukset on luonnollisesti mainittava.) 12 p Ratkaisu: Hakemistoliitos se. luetaan relaatio TAIDEMUSEO läpi ja haetaan oheishakemiston avulla nopeasti vastaavat (Mi, 'Rembr')-rivit. Kun liitoksen lisäksi oli sopiva valintaehto, voidaan menetellä toisinkin päin: haetaan SIJOITUS-perushakemiston avulla 'Rembr'-rivit ja niitä vastaavat museorivit. (Vaikka TAIDEMUSEO-taululle ei ollut hakemistoa, se voitaneen kokonsa puolesta lukea muistiin ja pitää siellä. Vaihtoehtoisena ratkaisuna käy periaatteessa mikä tahansa erilainen liitoksen toteutustapa, esim. sisäkkäiset silmukat. Arvostelu: Kummastakin toteutuksesta sai maksimissaan 6 p. 4. Selitä lyhyesti a) tarkistuspistetoiminnon (checkpoint), b) sitoutumispyynnön (commit) toteutuksen olennaiset osat. Käytä esimerkkinä kyselystä update tili set saldo = saldo + 100 where tilinumero = 1234; syntyvää transaktiota. 12 p Ratkaisu: Ks. luennot. Arvostelu: 6 + 6 p. Pääasiana oli, että vastauksesta selvisi kummankin toiminnon olennaiset periaatteet. Kun esimerkissä oli vain yksi transaktio, sitä ei ollut tarpeen käsitellä laajasti; kuitenkin olisi ollut syytä todeta checkpoint-toiminnon merkitys suhteessa transaktion operaatioihin (write, commit). Virheitä: Checkpoint esitettiin transaktion osana - sehän on transaktioista varsinaisesti riippumaton. Lokimerkinnöistä ei kerrottu mitään. Lokin / datan levylle kirjoittamisen periaatteet sekaisin. 5. Selitä lyhyesti a) mitä tarkoitetaan lukkotaululla (lock table), a) mitä tarkoitetaan lukkojen granulaarisuudella, b) lukituksen periaatteet ja merkitys hakemistojen kannalta. 12 p Ratkaisu: Ks. luennot. Arvostelu: 4 + 4 + 4 p. Lukkotaulun kohdalla yleinen pieni virhe oli unohtaa lukkoa odottavat transaktiot. Muuten lukkotaulu tunnettiin aika hyvin; sen organisointi (tai tehtäväkin) oli kuitenkin joskus epäselvä. Granulaarisuus joko tunnettiin (ainakin periaate - lyhyt maininta merkityksestä piti olla) tai sitten ei (ollenkaan). Hakemistojen ja lukituksen yhteys oli aika monella vastaamatta; lukituksen yleisten periaatteiden selittäminen ei tässä riittänyt (eikä ollut tarpeen).