1. Mitä erilaisia vaihtoehtoja on tietueen (monikon) sisäiselle esitysmuodolle? Tarkastele esimerkkinä relaation henkilo(nimi, osoite, henkilotunnus, ammatti, puolison_hetu) monikkoja. 8 p Ratk.: Ks. luennot, luku 2, s. 11-12. Esimerkkitietueessa on vaihtuvanmittaisia tietoja (nimi, osoite, mahdollisesti ammatti), joiden takia vaihtoehto 1 (= kiinteänmittaiset kentät) ei ole käytännössä hyvä. Muita vaihtoehtoja: 2. vaihtuvanmittaiset kentät esitetään erottimin (alla "*"): |190171-1234|150270-4321|Mattila Matti K*Nimikatu 3, 00100 Hki*myyja| --------------------------------------------------------------------- 3. vaihtuvanmittaiset kentät esitetään pareina (pituus, sisältö): |190171-1234|150270-4321|15|Mattila Matti K|21|Nimikatu 3, 00100 ... ---------------------------------------------------------------- ... Hki|5|myyja| ------------ 4. Oraclen tapa: kaikki kentät esitetään kolmikolla (attribuutin tunniste, pituus, sisältö): |1|11|190171-1234|2|11|150270-4321|3|15|Mattila Matti K|4|21| ... ------------------------------------------------------------- ... Nimikatu 3, 00100|5|5|myyja| ---------------------------- NULL-arvoa ei esitetä ollenkaan (tunnisteet mahdollistavat tämän). - Lisäksi tulee kaikissa vaihtoehdoissa hallintatietoa: tietueen numero, poistomerkintä, tietueen pituus yms. Arvostelu: Vaihtoehdot 1-4: puuttuminen -2 p, vastauksen selkeys vaikuttaa. 2. Oletetaan, että henkilo-relaation (vrt. tehtävä 1) monikoita säilytetään henkilötunnuksen mukaan järjestettynä peräkkäistiedostona. Esitä a) harvan ja b) tiheän ISAM-hakemiston idea henkilo-relaatiota esimerkkinä käyttäen. Jakson koko on 4 KB, tietueen pituus 100 merkkiä ja tietueita 800 000 kpl. (Muut oletukset voit tehdä itse.) Anna kummassakin tapauksessa esimerkki kyselystä, jonka toteutukseen hakemistoratkaisu sopii hyvin. 12 p Ratk.: Ks. luennot, luku 3. a) Harva hakemisto muodostetaan henkilötunnuksen mukaan. Sen rakenne esimerkkiluvut huomioon ottaen seuraava: Kun perustiedoston jaksot täytetään vain puoliksi, 800 000 tietuetta vaatii 40 000 jaksoa. Hakemistotietue olkoon 20 merkkiä (hetu 11 merkkiä, loppu jakso-osoitteelle ym.). Alimmalle hakemistotasolle tulee siten 40 000 hakemistotietuetta eli 800 000 merkkiä, mikä vaatii 200 jaksoa. Toisella hakemistotasolla ovat näiden 200 jakson osoitteet, jotka mahtuvat juuri yhteen jaksoon. Esim. select * from henkilo where henkilotunnus= '221222-2345'; select * from henkilo where henkilotunnus like '2212%'; b) Tiheä hakemisto muodostetaan esim. nimen mukaan. Se on siis luonteeltaan oheishakemisto. Alimmaksi tasoksi tulee pareista (nimi, osoitin) muodostuva tiedosto, jossa osoitin osoittaa perustiedostoon ja jokaiselle henkilölle on oma hakemistotietue. Ylemmät tasot rakennetaan kuten harvan hakemiston tapauksessa. Rakenne on siis seuraava: Tiheän hakemiston perustasolla on hakemistotietue jokaiselle perustiedoston tietueelle. Olkoon nimeen perustuvassa hakemistossa hakemistotietue 40 merkkiä (30 merkkiä nimelle, loppu jakso-osoitteelle, tietueen osoitteelle ym.). Näillä oletuksilla perustasolla on 800 000 * 40 = 32 000 000 merkkiä eli 8000 jaksoa (kun jaksot pakataan täyteen). Ensimmäisellä varsinaisella hakemistotasolla on siis 8000 * 20 = 160 000 merkkiä eli 40 jaksoa. Toisella tasolla on yhdessä jaksossa osoitteet mainittuihin 40 jaksoon. select nimi, osoite from henkilo order ny nimi; select nimi, osoite from henkilo where nimi = 'Laine'; Arvostelu: periaatteet yhdessä 5 p, esimerkkiin liittyvät tarkennukset 5 p, kyselyesimerkit 2 p 3. Selitä lyhyesti, mitä vaihtoehtoja on yleisesti liitosoperaation toteuttamisessa ja arvioi niiden tehokkuutta kyselyn select h.nimi, p.nimi from henkilo h, henkilo p where h.puolison_hetu = p.henkilotunnus; (tehtäväpaperissa hetu!) kannalta. (Esitä vaihtoehtojen pääperiaatteet ja edellytykset; henkilo-relaatio on tässäkin tehtävän 1 mukainen.) Ratk.: Ks. luennot, luku 3, s. 16-23. 1) sisäkkäiset silmukat sopii periaatteessa, mutta on tässä yhtä tehoton kuin aina (eli mitään hyötyä ei ole esim. siitä, että liitetään saman relaation instansseja 2) hakemistoliitos sopii, jos on henkilotunnus-hakemisto; siitä, että perustiedosto on henkilotunnus-järjestyksessä ei ole hyötyä 3) lomitusliitos ei sovi ollenkaan, koska on kysymyksessä saman relaation kaksi instanssia (vaikka samat avainten arvot): toinen relaatio on monikkojen yhteenliittämisen kannalta väärässä järjestyksessä 4) hajautusliitos sopii: puolison monikko saadaan hajauttamalla samalla hetu-hajauttimella sekä henkilön hetun että saman monikon puolison_hetu-attribuutin perusteella. Arvostelu: 3 p/vaihtoehto, riittävä periaatteen selitys: 2 p, arvio 1 p 4. Esitä kaaviona transaktion suoritusta koskeva tilasiirtymämalli ja selitä sen osat. 6 p Ratk.: Ks. luennot: luku 5, s. 8-9. Arvostelu: tilojen / selitysten puutokset tai virheet: n. -1 p/kpl 5. Oletetaan, että järjestelmän romahdettua lokitiedoston sisältö on seuraava: 100: [start, T1] 101: [start, T2] 102: [write, T1, A, 10, 20] 103: [write, T2, B, 11, 22] 104: [commit, T1] 105: [start, T3] 106: [write, T3, A, 20, 30] 107: [abort, T2] 108: [checkpoint] 109: [start, T4] 110: [write, T3, B, 11, 33] 111: [write, T3, A, 30, 40] 112: [write, T4, C, 15, 25] 113: [commit, T3] 114: [write, T4, C, 25, 35] a) Mitä operaatioita sisältyy tästä tilanteesta alkavaan elvytykseen? Oletetaan, että tietoalkion A sisältävän sivun PageLSN = 106, tietoalkion B sisältävän sivun PageLSN = 110 ja tietoalkion C sisältävän sivun PageLSN = 112. b) Oletetaan, että tarkistuspistettä (checkpoint) ei olisi otettu ollenkaan. Mikä on tällöin se toiminnan vaihe, jossa elvytys saattaa vaatia eniten toimenpiteitä? Ratk.: (harj.tehtävä 5.3; algoritmi, ks. luennot, luku 5, s. 23-25): Sitoutumattomat transaktiot: T4 Sitoutuneet transaktiot: T3 a) 1) Peruutetaan T4:n operaatiot 114, 112. Koska PageLSN(c) = 112, viimeistä operaatiota ei tarvitse peruuttaa koska se ei ole vielä levyllä. Siis lokitietueen 112 perusteella asetetaan C <- 15. 2) Uusitaan T3:n operaatiot 106, 110, 111 tässä järjestyksessä. - 106: ei tarvitse toteuttaa, koska tehty ennen tarkistuspistettä - 110: ei tarvitse, koska PageLSN(b)=110 - 111: pitää toteuttaa: asetetaan A <- 40. b) Undo- ja redo-ketjuista voi tulla hyvinkin pitkiä. Tämän tehtävän osalta vaihe 114 tuottaa eniten operaatioita. Arvostelu: a) 8 p, b) 4 p PageLSN-merkitys tuntematon: - 2p (muuten tämä tehtävä joko osattiin hyvin tai ei ollenkaan) 6. Selitä lyhyesti käsitteet: a) lukon granulaarisuus, b) kaksivaiheinen lukituskäytäntö (2PL), c) toistokelvoton luku (esimerkki mukaan). 10 p Ratk.: a) Ks. luennot, luku 5, s. 44. (lukituksen kohteen koko: tietoalkio, rivi, sivu, ...) b) Ks. luennot, luku 5, s. 45. (lukkojen varaus kasvuvaiheessa, vapautus kutistumisvaiheessa; erilaisia muotoja) c) Ks. luennot, luku 5, s. 31 (määritelmä), s. 29 tai 48 (esimerkkejä). Arvostelu: a: 3p b: 3p c: 4p