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