Tietokannan hallinta, kevät 2001, Harjoitus 5 (7.-10.5.)

Läsnäolo: 3 tehtävää        (**)-merkitty tehtävä lasketaan kahdeksi

Nämä ovat kurssin viimeiset harjoitustehtävät. Viimeisen viikon luennoilla käsitellään vielä joitakin harjoitustehtäviä.
Kurssin ainoa välikoe on aikaisemmin ilmoitetun mukaisesti perjantaina 18.5. klo 16-20 HY:n päärakennuksen salissa I. Koealue: koko kurssin luennoilla ja harjoituksissa käsitellyt asiat.

1. a) Millaisesta operaatiosarjasta (tietokantaoperaatiot, muut) koostuu tyypillinen pankkiautomaattitransaktio (käteisrahan nosto)? Oletetaan, että tunnusluku tarkistetaan paikallisesti (ei tietokannasta), mutta tilitiedot ovat tietokannassa. Kuinka aliluvun 5.1. alussa mainitut häiriöt voivat vaikuttaa tässä tilanteessa?

b) Onko moniosaisen lentomatkan varauksessa tai lomamatkan (lento, hotelli, vuokra-auto) varauksissa joitakin erityisiä ongelmia tapahtumanhallinnan kannalta?

2. Oletetaan, että järjestelmän romahdettua lokitiedoston sisältö on seuraava:

 99: [checkpoint]
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]
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 = 103 ja tietoalkion C sisältävän sivun PageLSN = 112.

3. a) Millaista sitoutumiskäytäntöä pitäisi noudattaa, jos halutaan, ettei elvytyksessä tarvitsisi koskaan uusia (redo) transaktioiden operaatioita? Mitä huonoja puolia tällaisella käytännöllä olisi?

b) Miksi elvytyksessä undo-operaatiot suoritetaan selaamalla lokia lopusta alkuun päin ja redo-operaatiot selaamalla alusta loppuun päin? Anna konkreettiset esimerkit tilanteista, jotka osoittavat näiden järjestysten merkityksen.

4. Tietokannan eheysrajoitteen mukaan tietoalkioilla X ja Y pitää olla sama arvo. Tarkastellaan transaktiojoukon {T1, T2, T3} ajoitusta

T1: read-item(X,v);		Ovatko transaktiot oikeellisia? 
T1: v:=v+1; 			
T1: write-item(X,v);  		Mikä on kunkin transaktion eristyvyystaso?
T2: read-item(X,w);
T2: write-item(Y,w);  		Mitä lokitietueita syntyy, kun tietokannassa
T2: commit;  			on aluksi X = Y = Z = 0?
T3: read-item(Y,p);  
T1: abort;			Säilyykö tietokannan eheys?
T3: write-item(Z,p);  
T3: commit.

5. Oletetaan, että transaktiot T1 ja T2 noudattavat seuraavaa ajoitusta:

        1       T1: read_item(X);
        2               T2: read_item(X);
        3       T1: write_item(X);
        4       T1: read_item(Y);
        5               T2: read_item(X);
        6               T2: write_item(X);
        7       T1: write-item(Y);
        8       T1: commit;
        9               T2: commit;
a) Mitkä operaatioparit tässä ajoituksessa konfliktoivat? Anna edelleen kolme esimerkkiä ei-konfliktoivasta operaatioparista ja perustele, miksi kukin niistä ei konfliktoi. Esimerkkien tulee olla erilaisia (kussakin eri peruste).
b) Mitä eristyvyysanomalioita konflikteihin liittyy?

6. Tarkastele seuraavaan ajoitukseen liittyviä lukituksia, kun käytetään a ) lyhytaikaisia ja b) pitkäaikaisia lukkoja. Liittyykö tapauksiin a ja b joitakin ongelmia?

      T1: read-item(X);
      T2: read-item(X);
      T1: write-item(X);
      T2: write-item(X);
      T1: commit;
      T2: commit;
7. Vastaa kurssikyselyyn (linkki).