Tietokantarakenteet ja -algoritmit Harjoitukset 1-12

Koko: px
Aloita esitys sivulta:

Download "Tietokantarakenteet ja -algoritmit Harjoitukset 1-12"

Transkriptio

1 Tietokantarakenteet ja -algoritmit Harjoitukset 1-12 Malliratkaisut 1 Harjoitus 1 1. Kukin DEPARTMENT-monikko d sijoitetaan omalle sivulleen. Sen seuraksi samalle sivulle sijoitetaan tähän liittyviä EMPLOYEE-monikoita niin monta kuin mahtuu. Loput d:hen liittyvät EMPLOYEE-monikot sijoitetaan sivuille, jotka ketjutetaan d:stä alkavaan ketjuun. Kustakin EMPLOYEE-monikosta e tallennetaan omaan tietueeseen kaikki muut attribuutit paitsi DeptNr, jonka arvo on tarpeen tallentaa vain kerran sivua kohti. Vrt. Oraclen cluster- rakenne. Uuden EMPLOYEE-monikon e lisäys: Kontataan lukusalpoja varaten osastonumeron n = e.deptnr hakupolku relaation DEPART- MENT hakemistossa sille sivulle q, joka sisältää DeptNr-attribuutin arvolla n varustettuun DEPARTMENT-monikkoon d osoittavan hakemistotietueen (n,r). Eristetään monikkotunnisteesta r sivunumero p ja tietuepaikan indeksi i. Naulitaan ja kirjoitussalvataan sivu p. Vapautetaan hakemistosivun q salpaus ja naulinta. Jos sivulla p on tilaa monikolle e, lisätään e sivulle p. Muutoin kontataan sivulta p lähtevä ketju kirjoitussalpoja varaten, kunnes päästään sivulle, jossa on tilaa monikolle e. Mikäli millään ketjun sivulla ei ole tilaa e:lle, varataan uusi sivu, joka linkitetään edellisten jatkoksi. Sivua varattaessa täytyy kirjoitussalvata myös varauskuvaajasivu. Viimeisetkin salvat ja naulinnat vapautetaan lisäysoperaation päätteeksi. 2. Lasketaan monikon (x,v) sisäisen esityksen pituus. Naulitaan ja lukusalvataan varauskuvaajasivu s. Valitaan sivu p, jossa on tilaa monikolle (x,v). Jos sellaista ei ole, valitaan sivu p, jossa mahdollisesti on tilaa monikolle (x,v). Naulitaan ja kirjoitussalvataan p. Sivu p valitaan monikon sijoituspaikaksi, jos siellä on tilaa sille. Muutoin vapautetaan p:n salpaus ja naulinta ja kokeillaan toista mahdollista sivua. Mikäli monikko (x,v) mahtuu sivulle p, toimitaan seuraavastio. Mikäli sivun p tilanvarausluokka (0,1,2) muuttuu monikon (x,v) lisäyksestä korkeammaksi eli täydemmäksi (1,2,3), vapautetaan s:n salpaus ja naulinta, ja naulitaan ja kirjoitussalvataan s, muutetaan s:ssä p:n varausluokka ja (tehokkuussyistä) vapautetaan s:n salpaus ja naulinta jo tässä vaiheessa. Lisätään monikko (x,v) sivulle p ja vapautetaan p:n salpaus ja naulinta. Mikäli halutaan varmistaa, että varausluokkamerkinnät ovat s:ssä aina oikein, täytyy s pitää salvattuna lisäysoperaation loppuun asti. Tarkemmassa vapaan tilan kirjauksessa varauskuvaajan alkio vie vähintään 10 bittiä, jolla voidaan osoittaa 1024 sanaa eli 4KB:n sivun vapaa tila sanoissa. Etuna on tarkka tieto. Haittana on varauskuvaajan suurempi koko ja (mikä 1

2 vielä pahempaa) ainainen tarve päivittää varauskuvaajaa, ja siis kirjoitusalvata asianomainen varauskuvaajasivu s, mikä estää muita samanaikaisia prosesseja tutkimasta s:ää. Tästä syystä tarkan varaustiedon kirjaus ei ole käytännöllistä. 3. Transaktio on oikeellinen, sillä transaktion sitoutumispisteessä viite-eheysrajoitteetkin ovat voimassa. Avainrajoitteet pysyvät voimassa transaktion sisälläkin. Avainrajoitteiden valvontaa varten täytyy monikon lisäyksen edelle tuottaa lukuoperaatio, jolla yritetään lukea relaatiosta lisättävän monikon avaimella varustettu tietue. Viite-eheysrajoitteiden valvontaa varten täytyy transaktion loppuun (juuri ennen commit-operaatiota) sijoittaa lukuoperaatiot, joilla luetaan viitatusta relaatiosta lisätyn monikon viiteavaimen arvolla varustettu monikko. Tietääkseni kaikissa järjestelmissä ei ole mahdollista toteuttaa viite-eheysrajoitteiden tällaista viivästettyä valvontaa. Silloin on sovellusohjelmoijan huolehdittava siitä, että viite-eheysrajoite pudotetaan transaktion aluksi tilapäisesti pois ja asetetaan takaisin transaktion lopuksi (mikä laukaisee valvontaoperaation). 4. a) R[x 1, >, v 1 ] R[x 2, > x 1, v 2 ]...R[x n, > x n 1, v n ]C. b) R[x 1, > y, v 1 ] D[x 1, v 1 ]I[x 1, v 1 +1] R[x 2, > x 1, v 2 ] D[x 2, v 2 ]I[x 2, v 2 +1]...R[x n, > x n 1, v n ] D[x n, v n ]I[x n, v n + 1]C. c) R[x 1, > y, v 1 ]D[x 1, v 1 ]I[x 1, v 1 +1] R[x 2, > x 1, v 2 ]D[x 2, v 2 ]I[x 2, v 2 +1]...R[x n, > x n 1, v n ] D[x n, v n ]I[x n, v n +1] AD[x n, v n +1]I[x n, v n ]...D[x 2, v 2 +1]I[x 2, v 2 ]D[x 2, v 2 + 1]I[x 2, v 2 ]C. 5. Transaktiomallin laajennos: Uusia operaatioita, jotka voivat esiintyä transaktion etenemisvaiheessa: S[P]: asettaa peruutuspisteen P. G[P]: aloittaa peruutuksen peruutuspisteeseen P. C[P]: kirjaa osittaisperuutuksen P:hen päättyneeksi. Etenemisvaihe voi koostua yhdestä tai useammasta peräkkäisestä, muotoa ops 1 S[P] ops 2 G[P] undo(ops 2 ) C[P] ops 3 olevasta osajonosta, missä ops 1, ops 2 ja ops 3 ovat operaatiojonoja (näiden tarkan syntaksin jätän tässä sanomatta). Jono undo(ops 2 ) on (kuten luennoilla) jonon ops 2 peruutusjono, so. jonon W-operaatioiden käänteisoperaatioiden jono käänteisessä järjestyksessä. Em. jono on siis ekvivalentti jonon ops 1 ops 3 kanssa. Esimerkiksi transaktio BW [x 1, u 1, v 1 ] S[P 1 ] W [x 2, u 2, v 2 ] S[P 2 ] W [x 3, u 3, v 3 ] S[P 3 ] W [x 4, u 4, v 4 ] G[P 2 ] W [x 4, v 4, u 4 ] W [x 3, v 3, u 3 ] C[P 2 ] W [x 5, u 5, v 5 ] G[P 1 ] W [x 5, v 5, u 5 ] W [x 2, v 2, u 2 ] C[P 1 ] W [x 6, u 6, v 6 ] C on sitoutunut ja ekvivalentti transaktion BW [x 1, u 1, v 1 ]W [x 6, u 6, v 6 ]C kanssa. Transaktio 2

3 BW [x 1, u 1, v 1 ]S[P 1 ]W [x 2, u 2, v 2 ]G[P 1 ] W [x 2, v 2, u 2 ] C[P 1 ] W [x 3, u 3, v 3 ] AW [x 3, v 3, u 3 ] W [x 1, v 1, u 1 ]C. on peruuntunut ja luonnollisesti ekvivalentti transaktion BC kanssa. 2 Harjoitus 2 1. P i = puskurin i:s käytettävissä oleva sivu, R i = R:n i:s sivu, S i S:n i:s sivu LRU: P1 P2 P3 levyhakuja R1 S1 S2 3 S3 S4 2 S S2 S1 R2 3 S4 S3 2 S R3 S1 S2 3 S3 S4 2 S S2 S1 R4 3 S4 S3 2 S R5 S1 S2 3 S3 S4 2 S MRU: P1 P2 P3 levyhakuja R1 S1 S2 3 S3 1 S4 1 S5 1 3

4 R2 S2 2 S3 1 S R3 S1 2 S2 1 S3 1 S R4 S1 2 S2 1 S4 1 S R5 S1 2 S3 1 S4 1 S (algoritmin for jokainen S:n sivu toteutettu niin, että sivut käydään vuorotellen läpi alusta loppuun ja lopusta alkuun) MRU2: P1 P2 P3 levyhakuja R1 S1 S2 3 S3 1 S4 1 S R2 S4 2 S3 1 S R3 S3 2 S4 1 S R4 S2 2 S3 1 4

5 S R5 S3 2 S2 1 S Etu: loki on hyvin tiivis; isostakin operaatiosta vain yksi pieni lokitietue. Haitat, jotka tekevät tälläisen lokin käytön mahdottomaksi: operaation fysiologinen toisto mahdotonta; peruutusvaiheessa järjestelmä ei pysty määrittelemään edes operaation loogista käänteisoperaatiota. Huomaa, että sama SQL-operaatio voi käynnistää eri suorituskerroilla aivan erilaisen operaatiosarjan esim. tietokantaan tallennettujen herättimien vaikutuksesta. Tietokantasovelluksen suunnittelijan pitäisi itse määritellä tarkasti transaktion jokaiselle SQL-operaatiolle sitä vastaava toisto- ja peruutusoperaatio. 3. Peruutuspisteen P asetus transaktiossa T kirjataan < T, S, P, n >, missä n = LastLSN(T). Osittaisperuutuksen aloitus G[P] kirjataan < T, G, P >. Osittaisperuutuksessa peruutettava päivitysoperaatio kirjataan redo-only-kirjauksella < T, undo(w ), p, i,w, x, u, n >, kun W:n kirjaus on T, W, p, i, W, x, u, v, n. Siis täsmälleen kuten keskeytyneen transaktion peruutusvaiheen käänteisoperaatio. Osittaisperuutuksen päättyminen C[P] kirjataan < T, C, P >, siis keskeytyneen transaktion peruutuksen päättämistä vastaavasti, mutta kuitenkaan pakottamatta lokia levylle. Välittömästi osittaisperuutuksen päättymisen jälkeen suoritettu T:n etenemisvaiheen päivitys W[x,u,v] kirjataan normaalilla redo-undo-kirjauksella < T, W, p, i, x, u, v, n >, missä LastLSN n on peruutuspisteen aloituskirjauksen LSN. Esimerkkitransaktion tuottamat lokikirjaukset: 101: < T, B > 102: <T, W, p 1, i 1, x 1, u 1, v 1, LastLSN=101> 103: <T, S, P, LastLSN=102> 104: <T, W, p 2, i 2, W, x 2, u 2, v 2, LastLSN=103> 105: <T, G, P> 106: <T, undo(w), p 2, i 2, x 2, u 2, UndoNextLSN=103> 107: <T, C, P> 108: <T, W, p 3, i 3, u 3, v 3, LastLSN=103> 109: <T, A> 5

6 110: <T, undo(w), p 3, i 3, x 3, u 3, UndoNextLSN=103> 111: <T, undo(w), p 1, i 1, x 1, u 1, UndoNextLSN=101> 112: <T, C> Tehtävän tarkoituksena oli osoittaa, että osittaisperuutuksien toteuttamiselle oikeastaan oli jo koneisto valmiina. 4. Idempotenttisuudesta on se etu, ettei elvytyksessä ole tarpeen tarkistaa sivun tilaa, ts. onko toistettava tai peruutettava päivitys jo sivulla vai ei. Arvoperustaiseen eli fyysiseen lokiin perustuvat toistot ja peruutukset ovat idempotentteja. Looginen toisto ja peruutus eivät ole lainkaan idempotentteja. Fysiologinen toisto tai peruutus saadaan idempotentiksi, jos operaatioon liitetään ehdoksi PageLSN:n tutkiminen, ts. toisto suoritetaan vain jos lokikirjauksen LSN > PageLSN, ja peruutus vain jos lokikirjauksen LSN <= PageLSN. 5. Lokitietueen ykkösbitit ilmaisevat, mitkä bitit muuttuivat korvattaessa alkukuva jälkikuvalla. Tietueeseen kohdistuvan operaation toisto toteutetaan suorittamalla tietueen ja lokitietueen välinen xor. Peruutus toteutetaan samoin suorittamalla tietueen ja lokitietueen välinen xor. Operaatiot eivät ole idempotentteja. Toisto toimii vain, jos operaation tulos ei vielä ole tietueessa. Peruutus toimii vain, jos operaation tulos on tietueessa. Huomaa, että kaksi peräkkäistä xor-operaatiota kumoavat toisensa. Menettely vaatii siis rinnalleen PageLSN:n. 6. Älä varasta -käytännössä levylle asti ei koskaan pääse likaista tietoa, joten häiriöstä elvyttäessä ei transaktioiden peruuntusvaiheen käänteisoperaatioita (periaatteessa) tarvitse lainkaan suorittaa. Tämä tosin pätee vain, jos elvytyksen toistovaiheessa jätetään vastaavasti toistamatta aktiivisten transaktioiden päivitykset. Lokikirjauksiin ei silloin tarvitse tallentaa alkukuvaa. Mutta miten hoidetaan transaktion peruuntuminen normaalin transaktionkäsittelyn kuluessa? Puskurisivuille on joka tapauksessa toteutettava käänteisoperaatiot. Päivitysten alkukuvat on siis säilytettävä jossain. Ajatus ei ole hyvä. Pakota-käytäntöä sovellettaessa ei häiriöstä elvyttäessä tarvitse suorittaa lainkaan toisto-operaatioita sitoutuneille tai peruuntuneille transaktioille. Lokikirjauksiin ei siis äkkipäätä ajatellen tarvittaisi jälkikuvaa. Mutta tämä ei pidä paikkaansa, sillä lokikirjaukset menevät WAL-käytännön mukaisesti levylle ennen tietokantasivuja, ja kesken sivujen levylle pakotuksen voi sattua häiriö niin, että levyllä onkin lokikirjaus, jota vastaavaa päivitystä ei ole levyllä. Tkhj ei voi samanaikaisesti noudattaa kumpaakin käytäntöä. Älä varasta ja pakota ovat näet toisensa poissulkevia: jos sivu pakotetaan levylle ennen kuin transaktio sitoutuu, sivu siis varastetaan. 3 Harjoitus 3 1. Analyysivaiheen alussa alustetaan aktiivisten transaktioiden taulu (tyhjä) ja päivitettyjen sivujen taulu (samoin tyhjä) tarkistuspisteestä. Lokin eteenpäin selauksessa saadaan transaktiotaulun sisällöksi 6

7 {(T 1, forward-rolling, LastLSN = 109), (T 2, backward-rolling, UndoNextLSN = 108)} ja päivitettyjen sivujen taulun sisällöksi {(p,reclsn = 107)}, mistä saadaan RedoLSN = 107. Merkitään: wl(p) = fix(p) & write-latch(p); ul(p) = unlatch(p) & unfix(p). Toistovaiheessa selataan lokia kirjauksesta RedoLSN = 107 eteenpäin. Päivityskirjausten kohdalla tehdään seuraavaa: 107: Koska 107 RecLSN(p), wl(p) ja tutkitaan PageLSN(p):tä. Koska PageLSN(p) = , operaation I[x,u] tulos on sivulla. ul(p). RecLSN(p) = = : Koska 108 < RecLSN(p), sivua p ei naulita eikä salvata. 109: Koska 109 RecLSN(p), wl(p) ja tutkitaan PageLSN(p):tä. Koska PageLSN(p) = 108 < 109, operaation I[y,v] tulosta ei ole sivulla. Lisätään monikko (y,v) sivulle p paikkaan j. PageLSN(p):ä 109. ul(p). 110: Koska 110 RecLSN(p), wl(p) ja tutkitaan PageLSN(p):tä. Koska PageLSN(p) == 109 < 110, operaation W[z,w,w ] tulosta ei ole sivulla. Muutetaan sivulla p paikassa k oleva monikko (z,w) monikoksi (z,w ). PageLSN(p) = 110. ul(p). 112: Koska 112 RecLSN(p), wl(p) ja tutkitaan PageLSN(p):tä. Koska PageLSN(p) = 110 < 112, operaation W 1 [z, w, w ] tulosta ei ole sivulla. Palautetaan sivulla p paikassa k oleva monikko (z,w ) monikoksi (z,w). PageLSN(p) = 112. ul(p). Peruutusvaiheessa asetetaan transaktiotaulussa T1:n tilaksi backward-rolling ja Undo- NextLSN:ä LastLSN = 109 ja kirjataan lokiin 113: < T 1, A > Transaktiotaulun UndoNextLSN:ien maksimi on max{109, 108} = 109. Ensimmäiseksi peruutetaan siis LSN:llä 109 kirjattu operaatio. wl(p). Poistetaan paikassa (p,j) oleva monikko (y,v). Kirjataan lokiin 114: < T 1, I 1, p, j, 107 > PageLSN(p) = 114. UndoNextLSN(T1) = 107. ul(p). Transaktiotaulun UndoNextLSN:ien maksimi on max{107, 108} = 108. Peruutetaan siis LSN:llä 108 kirjattu operaatio. wl(p). Poistetaan paikassa (p,k) oleva monikko (z,w). Kirjataan lokiin 115: < T 2, I 1, p, k, 106 > PageLSN(p) = 115. UndoNextLSN(T2) = 106. ul(p). Transaktiotaulun UndoNextLSN:ien maksimi on max{107, 106} = 107. wl(p). Poistetaan paikassa (p,i) oleva monikko (x,u). Kirjataan lokiin 116: < T 1, I 1, p, i, 105 > PageLSN(p) = 116. UndoNextLSN(T1) = 105. ul(p). Transaktiotaulun UndoNextLSN:ien maksimi on max{105, 106} = 106. LSN:llä 106 varustettu kirjaus on T2:n aloituskirjaus. Poistetaan T2 transaktiotaulusta, kirjataan lokiin 117: < T 2, C > 7

8 ja viedään loki levylle. Transaktiotaulun ainoa UndoNextLSN on 105. LSN:llä 105 varustettu kirjaus on T1:n aloituskirjaus. Poistetaan T1 transaktiotaulusta, kirjataan lokiin 118: < T 1, C > ja viedään loki levylle. Koska transaktiotaulu on tyhjä, peruutusvaihe on päättynyt. Lopuksi otetaan tarkistuspiste: 119: <begin-checkpoint> 120: <transaction-table, {}> 121: <page-table, {(p,reclsn = 109)}> 122: <end-checkpoint> 2. a) Sivu p on voitu viedä levylle (ja siis poistaa päivitettyjen sivujen taulusta) viimeisen tarkistuspisteen ottamisen jälkeen, ennen häiriötä. Rekonstruoidussa taulussa voi olla sivuja, jotka eivät taulussa enää olleet häiriötilanteessa, ja jonkin sivun RecLSN voi olla rekonstruoidussa taulussa häiriötilanteessa vallinnutta arvoa pienempi. b) Edellä tehtävässä 1 esiintyy juuri sellainen tilanne. 3. Toistovaihe saattaa tietokannan siihen tilaan, jossa se oli häiriöhetkellä. Näin ollen erikoisesti ne sivut, joilla oli (puskurissa) aktiivisten transaktioiden päivityksiä häiriötilanteessa, ovat toistovaiheen tuloksena puskurissa ja nämä puskurisivut täsmälleen ajan tasalla, so. sisältävät kaikki niille häiriötilanteeseen mennessä tehdyt ja lokin levyllä olevaan osaan ehtineet päivitykset. Siis peruutettavien päivitysten olemassaoloa ei tarvitse tutkia. 4. Fyysinen toisto onnistuu, koska toistovaiheessa operaatiot toistetaan yhdellä lokin eteenpäinselauksella täsmälleen samassa järjestyksessä kuin ne on alkujaan suoritettu. Lopputuloksena ovat fyysisestikin täsmälleen samansisältöiset sivut puskurissa (joskaan eivät välttämättä juuri entisissä puskurikehyksissä). Jos peruutusvaihe edeltää toistovaihetta, ei fyysinen toisto enää aina ole mahdollista. Oletetaan, että häiriön sattuessa lokin sisältönä on: 100: < T 1, B > 101: < T 1, D, p, i, x, u, 100 > 102: < T 2, B > 103: < T 2, I, p, j, y, v, 102 > 104: < T 2, C > Oletetaan, että tässä sivu p on täynnä T2:n lisäysoperaation jälkeen. T2 on siis kuluttanut T1:n poisto-operaation vapauttaman tilan sivulla p. Oletetaan vielä, että T1:n operaation tulos on ehtinyt levylle asti, mutta T2:n ei, ts. PageLSN(p) = 101 sivun p levyversiossa. Häiriöstä elvytyksessä peruutetaan ensin T1. Tämä onnistuu tällä kertaa fyysisesti: 105: < T 1, A > 106: < T 1, D 1, p, i, x, u, 100 > 107: < T 1, C > 8

9 Sitten yritetään toistaa T2. Tämä ei onnistu enää sivulle p, joka on nyt täynnä tietueita. Täytyy varata uusi tyhjä sivu q ja suorittaa toisto sinne. Nyt täytyy lokiin tehdä kirjaus myös toisto-operaatiosta: 108: < T 2, I, q, k, y, v, 102 > ja täytyy toistaa myös sitoutumiskirjaus: 109: < T 2, C > Tämä näyttää jo epäilyttävältä ei varmaan saada toimimaan kunnolla! 5. Kaikissa tapauksissa elvytys aloitetaan uudelleen alusta. a) Analyysivaiheessa ainoastaan luetaan lokia ja alustetaan keskusmuistitietorakenteita (aktiivisten transaktioiden taulu ja päivitettyjen sivujen taulu). Uuden häiriön sattuessa nämä analyysitiedot menetetään, joten pitää aloittaa alusta. b) Toistovaiheessa saatetaan tietokanta (puskurissa) siihen tilaan, jossa se oli häiriöhetkellä. Sivuja tuodaan levyltä ja edistetään niiden tilaa niillä päivityksillä, jotka eivät olleet ehtineet levylle asti. Vaiheen aikana puskurinhallitsin voi viedä näitä sivuja levyllekin. Uuden häiriön sattuessa samat sivut haetaan uudestaan puskuriin. Erona edelliskertaan voi olla, ettei jotain toistettavaa päivitystä tarvitsekaan toistaa puskurissa, koska sivun p levyversion PageLSN oli edistynyt. c) Peruutusvaiheessa kirjataan operaatioiden peruutuksista lokitietueita. Kun uuden häiriön satuttua on suoritettu analyysi- ja toistovaihe, on peruuntuvien transaktioiden peruutuskirjauksia vastaavat käänteisoperaatiotkin toistettu, joten peruutusvaiheessa jatketaan vanhojen peruuntuvien transaktioiden peruutusta siitä, mihin viime kerralla jäätiin ja keskeytetään ja peruutetaan uuden häiriön sattuessa etenemisvaiheessaan olleet transaktiot. Peruutus ei siis koskaan peruunnu, vaan edistyy (mikä seikka sisältyy jo transaktiomalliimmekin). 6. Olkoon TT viimeisessä valmiiksi ehtineessä tarkistuspisteessä CP vedostettu aktiivisten transaktioiden taulu ja PT päivitettyjen sivujen taulu. Määrätään seuraavat LSNt: n 1 = min{t:n aloituskirjauksen LSN T on TT:n transaktio}. n 2 = min{reclsn(p) p on PT:n sivu}. n 3 = tarkistuspisteen CP begin-checkpoint-tietueen LSN. Lokista voidaan silloin hävittää kaikki tietueet, joiden LSN on pienempi kuin n = min{n 1, n 2, n 3 }. Itse asiassa n:ää voidaan tarkentaa analyysivaiheessa. 4 Harjoitus 4 1. Ajoitus voidaan ajaa esim. eheässä tietokannassa {(x, u), (y, 1)}, jolloin tuloksena on epäeheä tietokanta {(x, v), (y, 0)}. Ajoituksen ainoa eristyneisyysanomalia on T 2 :n likainen kirjoitus I 2 [x, v]. 9

10 2. Ajoitus voidaan ajaa esim. eheässä tietokannassa {(0, 3), (1, 1), (2, 2), (3, 3)}, jolloin tuloksena on epäeheä tietokanta {(0, 4), (1, 1), (2, 2), (3, 3)}. Ajoituksen ainoa eristyneisyysanomalia on T 1 :n likainen luku R 1 [3, > 1, 3]. 3. Ajoituksen ainoa eristyneisyysanomalia on T 2 :n likainen luku R 2 [2, 0, v]. T 1 :n täydennysjono on G 1 = A 1 D1 1 [1, u]c 1 ja T 2 :n täydennysjono on G 2 = A 2 W2 1 [2, v, v + 1]C 2. Olkoon G jokin G 1 :n ja G 2 :n limite. Silloin HG:ssä esiintyy samat anomaliat kuin H:ssakin. Lisäksi esiintyy toistokelvoton luku, jos limitetään täydennysjonot seuraavasti: B 1 D 1 [1, u]b 2 R 2 [2, 0, v]w 2 [2, v, v + 1] A 1 D1 1 [1, u]c 1 A 2 W2 1 [2, v, v + 1]C 2. Tässä käänteisoperaatio D1 1 [1, u] tekee lukuoperaatiosta R 2 [2, 0, v] toistokelvottoman. Mutta tämä esiintyy vain, koska vastaava etenevän vaiheen operaatio D 1 [1, u] puolestaan tekee lukuoperaatiosta likaisen. Muita anomalioita ei voi esiintyä. Likaisia kirjoituksia ei voi olla, koskei niitä ollut H:ssakaan. Likaisia lukuja ei voi olla, koskei peruutusvaiheessa ole lukuoperaatioita. 4. Transaktion toteutuksessa relaatio r varmaankin käydään läpi kolme kertaa: kerran avg(v)- koosteen laskentaa varten, kerran sum(v)-koosteen laskentaa varten ja kerran count(*)- koosteen laskentaa varten. a) L = read committed, ts. likaiset luvut estetty. Koska toistokelvottomia lukuja voi esiintyä, saman r-monikon luku toistamiseen voi tuottaa eri V-arvon kuin edellisellä lukukerralla. Koska haamuja voi esiintyä, eri lukukerroilla voi tulla luetuksi eri joukko r-monikoita. Tulos voi olla a 1 = s 1 /c 1, a 2 = s 2 /c 2, missä a 1 a 2, s 1 s 2 tai c 1 c 2. b) L = repeatable read, ts. toistokelvottomat luvut, haamuja lukuunottamatta, on estetty. Haamujen takia tulos voi olla yhtä epäjohdonmukainen kuin a-kohdassa. L = serializable, ts. haamutkin on estetty. Silloin tulos on aina s/c, s/c. 5. Olkoot T 1 ja T 2 eteneviä tai sitoutuneita transaktioita. T 2 :n likainen kirjoitus: (1) T 1 lisää monikkojoukon s 1, minkä jälkeen, T 1 :n ollessa vielä aktiivinen, T 2 poistaa ehdon P 2 täyttävien monikoiden joukon s 2, missä jokin s 1 :n monikko täyttää ehdon P 2 tai monikkojoukkojen s 1 ja s 2 monikoiden avainten joukot leikkaavat....i 1 [s 1 ]...D 2 [P 2, s 2 ]... T 1 poistaa ehdon P 1 täyttävien monikoiden joukon s 1, minkä jälkeen, T 1 :n ollessa vielä aktiivinen, T 2 lisää monikkojoukon s 2, missä jokin s 2 :n monikko täyttää ehdon P 1 tai monikkojoukkojen s 1 ja s 2 monikoiden avainten joukot leikkaavat....d 1 [P 1, s 1 ]...I 2 [s 2 ]... 10

11 T 2 :n likainen luku: (1) T 1 lisää monikkojoukon s 1, minkä jälkeen, T 1 :n ollessa vielä aktiivinen, T 2 lukee ehdon P 2 täyttävien monikoiden joukon s 2, missä jokin s 1 :n monikko täyttää ehdon P 2 (eli kuuluu s 2 :een)....i 1 [s 1 ]...R 2 [P 2, s 2 ]... (2) T 1 poistaa ehdon P 1 täyttävien monikoiden joukon s 1, minkä jälkeen, T 1 :n ollessa vielä aktiivinen, T 2 lukee ehdon P 2 täyttävien monikoiden joukon s 2, missä jokin s 1 :n monikko täyttää ehdon P 2 (ts. olisi tullut luetuksi, ellei T 1 olisi sitä poistanut)....d 1 [P 1, s 1 ]...R 2 [P 2, s 2 ]... T 1 :n toistokelvoton luku: (1) T 1 lukee ehdon P 1 täyttävät monikot, minkä jälkeen, T 1 :n ollessa vielä aktiivinen, T 2 lisää monikkojoukon s 2, jonka jokin monikko täyttää ehdon P 1....R 1 [P 1, s 1 ]...I 2 [s 2 ]... (2) T 1 lukee ehdon P 1 täyttävät monikot, minkä jälkeen, T 1 :n ollessa vielä aktiivinen, T 2 poistaa ehdon P 2 täyttävien monikoiden joukon s 2, jonka jokin monikko täyttää ehdon P 1 (ts. s 1 ja s 2 leikkaavat)....r 1 [P 1, s 1 ]...D 2 [P 2, s 2 ]... Yleisessä tapauksessa, so. kun T 1 tai T 2 voi olla myös peruuntuva tai peruutuksensa päättänyt, anomaliat määritellään muokaten luentojen sivujen määritelmät tähän transaktiomalliin. 5 Harjoitus 5 1. B 1 : T 1 alkaa. I 1 [1]: T 1 :lle pitkäkestoinen X-lukko avaimeen 1 ja lyhytkestoinen X-lukko avaimen 1 seuraajaan. B 2 : T 2 alkaa. I 2 [2]: T 2 :lle pitkäkestoinen X-lukko avaimeen 2 ja lyhytkestoinen X-lukko avaimen 2 seuraajaan. B 3 : T 3 alkaa. I 3 [3]: T 3 :lle pitkäkestoinen X-lukko avaimeen 3 ja lyhytkestoinen X-lukko avaimen 3 seuraajaan. A 2 : T 2 keskeytyy. I2 1 [2]: T 2 poistaa avaimen 2 tietokannasta siihen omistamansa X-lukon turvin. C 2 : T 2 päättää peruutuksensa ja vapauttaa lukkonsa. C 3 : T 3 sitoutuu ja vapauttaa lukkonsa. I 1 [2]: T 1 :lle pitkäkestoinen X-lukko avaimeen 2 ja lyhytkestoinen X-lukko avaimen 2 seuraajaan 3. 11

12 Ajoitus on mahdollinen. Tietokannassa lopuksi avaimet 1, 2 ja 3. Transaktioiden sarjallistuvuusjärjestyksiä on kolme: T 2 T 1 T 3, T 2 T 3 T 1, T 3 T 2 T 1 (ts. T 2 ennen T 1 :tä). Huomaa, että ajoitus johtaisi lukkiumaan, jos käänteisoperaatiolle I2 1 [2] pitäisi varata lukkoja kuten etenevän vaiheen D 2 [2]:lle. 2. B 1 : T 1 alkaa. D 1 [0]: T 1 :lle lyhytkestoinen X-lukko avaimeen 0 ja pitkäkestoinen X-lukko avaimen 0 seuraajaan. A 1 : T 1 keskeytyy. D1 1 [0]: T 1 palauttaa avaimen 0 tietokantaan seuraajan X-lukon turvin. B 2 : T 2 alkaa. R 2 [0]: T 2 :lle pitkäkestoinen S-lukko avaimeen 0. Onnistuu! C 2 : T 2 sitoutuu. T 2 vapauttaa avaimen 0 lukkonsa. C 1 : T 1 päättää peruutuksensa. T 1 vapauttaa avaimen lukkonsa. R 2 [0] ei ole likainen luku, sillä avaimelle 0 on jo palautettu sen alkuperäinen arvo. 3. B 1 : T 1 alkaa. D 1 [0]: T 1 :lle lyhytkestoinen X-lukko avaimeen 0 ja pitkäkestoinen X-lukko avaimen 0 seuraajaan. I 1 [0]: T 1 :lle pitkäkestoinen X-lukko avaimeen 0. D 1 [0]: T 1 pitää kummankin X-lukkonsa. A 1 : T 1 keskeytyy. D1 1 [0]: T 1 palauttaa avaimen 0 tietokantaan seuraajan X-lukon turvin. B 2 : T 2 alkaa. R 2 [0]: T 2 yrittää varata pitkäkestoista S-lukkoa avaimeen 0. Tämä ei onnistu, vaan T 2 joutuu odottamaan. Ajoitus ei siis ole mahdollinen. Huomaa, ettei avain 0 vielä ole sitoutunut siinä vaiheessa, kun D1 1 [0] on suoritettu. Vielä on avaimen 0 päivityksiä T 1 :ssä peruuttamatta. R 2 [0] on likainen luku. 4. Ajoituksessa B 1 D 1 [1]B 2 I 2 [2] ei ole yhtään eristyneisyysanomaliaa, mutta se ei kuitenkaan ole mahdollinen avainvälilukituskäytännöss Tietokannassa {(1, 1), (3, 3)} ajettuna T 2 ei voi saada lyhytkestoista X-lukkoa avaimen 2 seuraajaan 3, koska T 1 :llä on siihen pitkäkestoinen X-lukko (otettu operaatiota D 1 [1] varten). 5. Olkoot T 1 ja T 2 eteneviä tai sitoutuneita transaktioita. T 2 :n likainen kirjoitus: T 1 päivittää avaimella x varustettua monikkoa, minkä jälkeen, T 1 :n ollessa vielä aktiivinen, T 2 päivittää avaimella x varustettua monikkoa....w 1 [x]...w 2 [x]... T 2 :n likainen luku: (1) T 1 päivittää monikkoa (x,a,v), minkä jälkeen, T 1 :n ollessa vielä aktiivinen, T 2 lukee operaatiolla R[x, a, v ] monikon (x, a, v ). 12

13 ...W 1 [x]...r 2 [x]... (2) T 1 päivittää monikkoa (x,a,v), minkä jälkeen, T 1 :n ollessa vielä aktiivinen, T 2 lukee operaatiolla R[a,s] monikkojoukon s....w 1 [x, a, v, a, v ]...R 2 [a, s]... (3) T 1 päivittää monikon (x,a,v) monikoksi (x, a, v ), minkä jälkeen, T 1 :n ollessa vielä aktiivinen, T 2 lukee operaatiolla R[a, s] monikkojoukon s....w 1 [x, a, v, a, v ]...R 2 [a, s]... T 1 :n toistokelvoton luku: (1) T 1 lukee operaatiolla R[x,a,v] monikon (x,a,v), minkä jälkeen, T 1 :n ollessa vielä aktiivinen, T 2 päivittää avaimella x varustettua monikkoa....r 1 [x]...w [x]... (2) T 1 lukee operaatiolla R[a,s] monikkojoukon s, minkä jälkeen, T 1 :n ollessa vielä aktiivinen, T 2 päivittää monikkoa (x,a,v)....r 1 [a, s]...w [x, a, v, a, v ]... (3) T 1 lukee operaatiolla R[a, s] monikkojoukon s, minkä jälkeen, T 1 :n ollessa vielä aktiivinen, T 2 päivittää monikon (x,a,v) monikoksi (x, a, v )....R 1 [a, s]...w 2 [x, a, v, a, v ]... Yleisessä tapauksessa, so. kun T 1 tai T 2 voi olla myös peruuntuva tai peruutuksensa päättänyt, anomaliat määritellään muokaten luentojen sivujen määritelmät tähän transaktiomalliin. Tarkastellaan ensin lukituskäytäntöä, jossa W- ja R-operaatioita varten varataan lukkoja seuraavasti: W[x]: pitkäkestoinen X-lukko avaimeen x. R[x,a,v]: pitkäkestoinen S-lukko avaimeen x. R[a,s]: pitkäkestoinen S-lukko s:n jokaisen monikon (x,a,v) avaimeen x. Tämä lukituskäytäntö estää likaiset kirjoitukset, muotoa (1) tai (3) olevat likaiset luvut sekä muotoa (1) tai (2) olevat toistokelvottomat luvut, muttei muotoa (2) olevia likaisia lukuja eikä muotoa (3) olevia toistokelvottomia lukuja. Muotoa (2) olevat likaiset luvut estyvät, jos operaatiota W [x, a, v, a, v ] varten varataan pitkäkestoinen X-lukko attribuuttiarvoon a ja operaatiota R[a,s] varten vähintään lyhytkestoinen S-lukko a:han. Muotoa (3) olevat toistokelvottomat luvut estyvät, jos operaatiota R[a,s] varten varataan pitkäkestoinen S-lukko attribuuttiarvoon a ja operaatiota W [x, a, v, a, v ] varten vähintään lyhytkestoinen X-lukko arvoon a. 6 Harjoitus a) T1 = B I[b, r 2, 0, 0] IX-lukitaan järjestelmä s, tietokanta b ja relaatio (b, r 2 ) (tässä järjestyksessä), 13

14 X-lukitaan (b, r 2, 0) ja (b, r 2, 1), lisätään monikko (0,0) relaatioon (b, r 2 ) ja vapautetaan avaimen (b, r 2, 1) X-lukko. I[b, r 1, XV ] IX-lukot s:ään ja b:hen T 1 :llä jo on; X-lukitaan (b, r 1 ) ja (b, r 2 ), luodaan relaatio r 1 (XV ) tietokantaan b ja pudotetaan relaation (b, r 2 ) lukko takaisin IX-lukoksi. I[b, r 1, 1, 1] IX-lukko s:ään T 1 :llä jo on, ja relaatioon (b, r 1 ) T 1 :llä on IX-lukkoa korkeampi X-lukko, joten monikkokohtaisia X-lukkoja ei ole tarpeen varata lainkaan. Lisätään monikko (1,1) relaatioon (b, r 1 ). C Vapautetaan T 1 :n hallussa olevat lukot avaimiin (b, r 2, 0), (b, r 2 ), (b, r 1 ), b ja s. b) T2 = B R[b, r 2, x, 1, v] IS-lukitaan s, b ja (b, r 2 ) (tässä järjestyksessä), S-lukitaan (b, r 2, x), luetaan tietue (b, r 2, x, v). W [b, r 2, 2, u, v] IX-lukitaan s, b ja (b, r 2 ) (tässä järjestyksessä, IS-lukot korotetaan IX-lukoiksi), X-lukitaan (b, r 2, 2) ja päivitetään monikko (2,u) monikoksi (2,v). C Vapautetaan T 2 :n hallussa olevat lukot avaimiin (b, r 2, 1), (b, r 2, 2), (b, r 2 ), b ja s. c) Kyllä ajoitus on mahdollinen. 2. a) Pitkäkestoinen X-lukko relaatioon r ja lyhytkestoinen X-lukko r:n seuraajaan. b) Pitkäkestoinen IS-lukko r:ään ja pitkäkestoinen S-lukko avaimeen (r,x). c) Count-kyselyä varten pitkäkestoinen S-lukko r:ään (tai pitkäkestoinen IS-lukko r:ään ja pitkäkestoiset S-lukot kaikkiin r:n monikoihin, mikä on työlästä). Insertoperaatiota varten r:n S-lukko (vast. IS-lukko) korotetaan SIX-lukoksi (tai vast. IS-lukko IX-lukoksi) ja varataan pitkäkestoinen X-lukko avaimeen (r,122) ja lyhytkestoinen X-lukko avaimen (r,x) seuraajaan. Haittoja siitä, ettei lukituksessa oteta huomioon relaatiotason yläpuolella olevia rakeisuustasoja: Tietokannoissa voi esiintyä haamurelaatioita ja järjestelmässä haamutietokantoja. Toinen haitta on lukituksen tehottomuus: paljon lukkoja alemmilla tasoilla. 3. Kohdistimen vakaudella ajettava transaktio T: B: T alkaa. R[x 1 ]: T:lle S-lukko avaimeen x 1. T:n S-lukko avaimeen x 1 vapautetaan, koskei x 1 :tä päivitetä. R[x 2 ]: T:lle S-lukko avaimeen x 2. W [x 2 ]: T:n S-lukko avaimeen x 2 korotetaan pitkäkestoiseksi X-lukoksi. R[x 3 ]: T:lle S-lukko avaimeen x 3. T:n S-lukko avaimeen x 3 vapautetaan, koskei x 3 :a päivitetä. C: T sitoutuu. T:n X-lukko avaimeen x 2 vapautetaan. 4. a) Täysin eristyneesti: B: T alkaa. R[x 1 ]: T:lle U-lukko avaimeen x 1. T:n U-lukko avaimeen x 1 lasketaan S-lukoksi, koskei x 1 :tä päivitetä. 14

15 R[x 2 ]: T:lle U-lukko avaimeen x 2. W [x 2 ]: T:n U-lukko avaimeen x 2 korotetaan X-lukoksi. R[x 3 ]: T:lle U-lukko avaimeen x 3. T:n U-lukko avaimeen x 3 lasketaan S-lukoksi, koskei x 3 :a päivitetä. C: T sitoutuu. Vapautetaan T:n lukot: x 1 :n S-lukko, x 2 :n X-lukko ja x 3 :n S-lukko. b) Kohdistimen vakaudella: B: T alkaa. R[x 1 ]: T:lle U-lukko avaimeen x 1. T:n U-lukko avaimeen x 1 vapautetaan, koskei x 1 :tä päivitetä. R[x 2 ]: T:lle U-lukko avaimeen x 2. W [x 2 ]: T:n U-lukko avaimeen x 2 korotetaan X-lukoksi. R[x 3 ]: T:lle U-lukko avaimeen x 3. T:n U-lukko avaimeen x 3 vapautetaan, koskei x 3 :a päivitetä. C: T sitoutuu. T:n X-lukko avaimeen x 2 vapautetaan. 5. Luku-kirjoitusmallissa kaikki täyteen eristyneisyyteen tarvittavat X-lukot saadaan hankituksi lokikirjauksista. Avainvälimallissa tämä on mahdollista vain, jos poisto-operaation D[x,v] lokikirjaukseen laitetaan myös avaimen x seuraaja-avain y. Operaation D[x,v] käänteisoperaation näet pitää suorittaa x:n seuraajaan y hankitun X-lukon turvin. Ks. luentojen sivu 155. Peruuntuvalle transaktiolle ei kuitenkaan voida hankkia S-lukkoja niiden etenemisvaiheessa mahdollisesti tekemien lukuoperaatioidensa suojaksi. Tämä voi aiheuttaa sen, että järjestelmään tuleva uusi transaktio tekee päivitysoperaation avaimeen x ennen kuin sitä lukenut peruuntuva transaktio ehtii päättää peruutuksensa. Tekeekö tämä päivitys siis lukuoperaatiosta toistokelvottoman. Vastaus on: ei. Olemme näet sulkeneet tämän tilanteen pois toistokelvottoman luvun määritelmästä (luentojen sivu 102). Perusteluna on, ettei tämä tilanne missään tapauksessa voi aiheuttaa mitään eheyden rikkoumaa. Siis peruuntuvienkin transaktioiden suoritus on täysin eristynyttä. 6. ts(t1) = 1, ts(t2) = 2, ts(t3) = 3. a) B1 W 1 [1] : wts(1) := 1 R 1 [2]rts(2) := 1 B 2 W 2 [2] Havaitaan, että avaimen 2 tuorein lukija T 1 on eri kuin T 2 ja aktiivinen, joten T 2 keskeytetään. Näin estyy toistokelvoton luku. b) B1 R 1 [1] : rts(1) := 1. B 2 R 2 [1] : rts(1) := 2. C 2 B 3 W 3 [1] Havaitaan, että avaimen 1 tuorein lukija T 2 on T 3 :a aikaisempi ja sitoutunut, joten operaatio W 3 [1] hyväksytään, vaikka se tekeekin T 1 :n operaatiosta R 1 [1] toistokelvottoman. wts(1):=3. C 3 W 1 [4] : wts(4) := 1. Tämä päivitys voi perustua operaation R 1 [1] lukemaan 15

16 epäajankohtaiseen arvoon. C 1 Miten estettäisiin toistokelvottomat luvut? Vai onko lainkaan tarpeen, ts. voiko niistä olla haittaa? c) B 1 B 2 W 2 [1] : wts(1) := 2. C 2 R 1 [1] Havaitaan, että T 1 :tä myöhäisempi transaktio T 2 on jo kirjoittanut avaimen 1, joten T 1 peruutetaan. Ajoituksessa ei ole eristyneisuusanomalioita. Lukituskäytännössä ajoitus onkin mahdollinen. 7 Harjoitus 7 1. Siivotaan p pois puskurista viemättä p:tä levylle ja naulitaan ja kirjoitussalvataan p (tämän pitää olla puskurinhallitsimen tuntema operaatio). Siis tuodaan p:n levyllä oleva versio puskuriin. Toistetaan lokin perusteella kaikki p:lle tulleet päivitykset, joiden LSN on suurempi kuin PageLSN(p). Siis ARIES-algoritmin toistovaihe yksinomaan sivulle p suoritettuna. Näin sivulle p saadaan ne päivitykset, jotka sillä oli ennen virheeseen keskeytyneen päivityksen alkamista. Sitten keskeytetään ja peruutetaan T normaaliin tapaan. Toinen, mutta turhan raaka tapa olisi kaataa koko järjestelmä ja suorittaa ARIES-algoritmi normaaliin tapaan kuten häiriöstä elvyttäessä. 2. Tarkastellaan ensin tapausta, jossa rakennemuutos esiintyy transaktion T etenemisvaiheessa. Rakennemuutoksen alkaessa pannaan muistiin m=lastlsn(t). Rakennemuutoksen viimeisen lokikirjauksen jälkeen asetetaan transaktiotaulussa LastLSN(T):= m. Esim. T lisää kasaan kaksi tietuetta, joista jälkimmäisen lisäys aiheuttaa uuden sivun varauksen kasaan: 100: : < T, I, p, i, x, v, 100 > 102: < T, allocate-page-for-heap, f, p, q, LastLSN = 101 > 103: < T, I, q, j, y, w, 101 > 104:... Tarkastellaan sitten tapausta, jossa rakennemuutos esiintyy keskeytyneen transaktion T peruutusvaiheessa, kun etenemisvaiheessa tehty ja lokiin tietueella < T, D, p, i, x, v, n > kirjattu operaatio D[x,v] joudutaan perumaan loogisesti, koska sivulla p ei enää ole tilaa monikon (x,v) palautukselle. 16

17 110: : < T, allocate-page-for-heap, f, p, q, LastLSN = 110 > 112: < T, undo(d), q, 1, x, v, n > 113:... Siis peruutusvaiheen aikana suoritetut rakennemuutokset kirjataan kuten etenemisvaiheessa. 3. a) Haetaan avaimen (10,20) peittävä ISAM-rakenteen lehtisivu p ja lisätään tietue (10,20,30, xyz ) soluun p kuten luennoilla on esitetty. Olkoon i tietueen monikkotunniste. Lisätään tietue (30,i) hajautushakemistoon luennoilla esitetyllä algoritmilla, paitsi ettei mitään lukkoja varata. Kysely saadaan yhdisteenä kahdesta kyselystä: select * from R where A = 25 and 300 B and B 400 union all select * from R where C = 50 and not (A = 25 and 300 B and B 400) Edellinen select-kysely lasketaan ISAM-hakemistoa käyttäen ja jälkimmäinen kysely hajautushakemistoa käyttäen. Kyselyssä ei voi hyödyntää hakemistoja, vaan relaation r ISAM-rakenteen lehtisivut (solut) selataan vasemmalta oikealle. Kysely voidaan ratkaista tehokkaimmin käymällä läpi ainoastaan tiheä oheishakemisto (hajautushakemisto). Relaatio r S-lukitaan. r:n monikoita ei ole tarpeen hakea esille. 4. Hyvänä puolena on, että r:n monikon monikkotunnisteen muuttuminen (esim. sivulta toiselle siirron vuoksi) ei vaadi mitään muutosta r:n oheishakemistoihin. Lisäksi useammat kyselyt voidaan ratkaista pelkästään hakemistoa käyttäen. Huonona puolena on, että tietueen hakupolku oheishakemiston kautta on yhtä pitempi kuin muutoin: oheishakemiston lehtisivulta saadaan vasta haettavan tietueen yksilöivä avain, jota käyttäen on vielä kuljettava harvan hakemiston polku juuresta itse tietueen sisältävälle sivulle. 5. Merkitään: rl(p) = fix(p) + read-latch(p). wl(p) = fix(p) + write-latch(p). ul(p) = unlatch(p) + unfix(p). B 1 : Kirjataan lokiin: 100: < T 1, B > R 1 [x, 12, v]: rl(p 1 ); rl(p 3 ); ul(p 1 ); rl(p 6 ); ul(p 3 ); S-lock(12); ul(p 6 ). I 1 [14, v 2 ]: X-lock(14); rl(p 1 ); rl(p 3 ); ul(p 1 ); wl(p 6 ); ul(p 3 ); rl(p 7 ); X-lock(15); wl(0). Kirjataan lokiin: 101: < allocate-page-for-bucket, p 6, p 6, q >; ul(0). Kirjataan lokiin: 17

18 102: < T 1, I, q, 1, 14, v 2, 100 >; ul(p 6 ); ul(q); ul(p 7 ); unlock(15). I1[13, v 3 ]: X-lock(13); rl(p 1 ); rl(p 3 ); ul(p 1 ); wl(p 6 ); ul(p 3 ); wl(q). Kirjataan lokiin: 103: < T 1, I, q, 2, 13, v 3, 102 >; ul(p 6 ); ul(q). B 2 : Kirjataan lokiin: 104: < T 2, B > I2[8, u ]: X-lock(8); rl(p 1 ); rl(p 3 ); ul(p 1 ); wl(p 6 ); ul(p 3 ); wl(q); X-lock(9). Kirjataan lokiin: 105: < T 2, I, q, 3, 8, u, 104 >; ul(p 6 ); ul(q); unlock(9). A 1 : Kirjataan lokiin: 106: < T 1, A > undo(i 1 )[13, v 3 ] : wl(q); kirjataan lokiin: 107: < T 1, undo(i), q, 2, 102 >; ul(q). undo(i 1 )[14, v 2 ] : wl(q); kirjataan lokiin: 108: < T 1, undo(i), q, 1, 100 >; ul(q). C 1 : Kirjataan lokiin: 109: < T 1, C >; pakotetaan loki levylle; unlock(14); unlock(13); unlock(12). D 2 [12, v]: X-lock(12); rl(p 1 ); rl(p 3 ); ul(p 1 ); wl(p 6 ); ul(p 3 ); wl(q); rl(p 7 ); X-lock(15); kirjataan lokiin: 110: < T 2, D, p 6, 4, 12, v, 105 >; ul(p 6 ); ul(q); ul(p 7 ); unlock(12). C 2 : Kirjataan lokiin: 111: < T 2, C >; pakotetaan loki levylle; unlock(8); unlock(15). 6. Kun transaktio T kulkee hakupolun jotain operaatiotaan (R, I, D, W) varten, se laittaa muistiin vastaisen varalle hakupolun viimeisen sivun p tunnisteen, avainten alarajan low-key(p) ja ylärajan high-key(p) sekä (päivityksen jälkeisen) PageLSN:n. Mikäli seuraavaksi suoritettavan T:n operaation hakuavain z sijoittuu välille low-key(p) z < high-key(p), yritetään naulita ja lukusalvata (R) tai kirjoitussalvata (I, D, W) sivu 18

19 p. Mikäli tämä onnistui ja sivun PageLSN on entisensä, ollaan oikealla sivulla. Muutoin jos naulinta ja salpaus onnistuivat, mutta PageLSN on muuttunut, tutkitaan (sivun sisällöstä), onko sivu vielä kyseisen rakenteen lehtisivu ja sijoittuuko avain z sivun pienimmän avaimen ja suurimman avaimen väliin. Jos näin on, ollaan oikealla sivulla. Muutoin on avainta z haettava puun juuresta lähtien. Vielä paremmin: Talletetaan koko hakupolku p 1, p 2,..., p n juuresta p 1 lehteen p n, kunkin sivun p i low-key ja high-key ja PageLSN. Uudelleen salpausta yritetään alimmalle sivulle p i, jonka peittämä väli kattaa avaimen z. Mikäli ei onnistu, yritetään lähinnä ylemmältä sivulta, jne. Pahimmassa tapauksessa joudutaan lähtemään juuresta. 8 Harjoitus 8 1. Ei voi esiintyä, sillä T 3 :a generoiva prosessi pitää kirjoitussalvat rakennemuutoksen kohteina oleviin sivuihin, siis mm. juureen p 1, rakennemuutoksen loppuun asti. Loogista operaatiota undo(w )[x, u, v] suorittava T 1 joutuu odottamaan T 3 :n salvan vapautumista. 2. Merkitään: rl(p) = fix(p) + read-latch(p). wl(p) = fix(p) + write-latch(p). ul(p) = unlatch(p) + unfix(p). Varataan avaimeen 13 pitkäkestoinen X-lukko. wl(p 1 ); wl(p 3 ); wl(p 6 ); havaitaan, että hakupolun kaikki sivut pitää halkaista ja puuta korottaa; wl(0); varataan uudet sivut p 1 ja p 1; wl(p 1); wl(p 1); korotetaan puuta; kirjataan lokiin 101: < inc-height, p 1, p 1, 30, p 1, {(, p 2 ), (8, p 3 )}, {(30,...), (60,...)} >; Page-LSN(0)=101; Page-LSN(p 1 )=101; Page-LSN(p 1)=101; Page-LSN(p 1)=101; ul(0); ul(p 1 ); ul(p 1); wl(0); varataan uusi sivu p 3; wl(p 3); halkaistaan p 3 ; kirjataan lokiin 102: < split, p 1, p 3, 20, p 3, {(20, p 8 ), (25, p 9 )} >; Page-LSN(0)=102; Page-LSN(p 1)=102; Page-LSN(p 3 )=102; Page-LSN(p 3)=102; ul(0); ul(p 1); ul(p 3); wl(0); varataan uusi sivu p 6; wl(p 6); halkaistaan p 6 ; kirjataan lokiin 103: < split, p 3, p 6, 11, p 6, {(11, u), (12, v), p 7 } >; ul(0); ul(p 3 ); ul(p 6 ); rl(p 7 ); varataan avaimen 13 seuraajaan 15 lyhytkestoinen X-lukko. Lisätään monikko (13, v ) sivulle p 6 tietuepaikkaan 3; kirjataan lokiin 104: < T, I, p 6, 3, 13, v, 100 >; Page-LSN(p 6)=104; Last-LSN(T)=104; ul(p 6); ul(p 7 ); vapautetaan avaimen 15 lyhytkestoinen lukko. 3. Lapsilinkin lisäykseen on varauduttu varmistamalla, että isässä on tilaa, tarvittaessa halkaisemalla isä. Lapsilinkin poistoon on varauduttu järjestämällä, ettei isä alivuoda linkin poistosta, tarvittaessa yhdistämällä isä sisaruksensa kanssa tai tasaamalla tietueet sisarusten kesken. Jokainen rakennemuutos säilyttää B-puun eheyden. Koska jokainen 19

20 rakennemuutos on kirjattu yhteen ainoaan, yhdelle sivulle kokonaan mahtuvaan lokitietueeseen, tulee ARIES-algoritmin toistovaiheessa jokainen rakennemuutos joko kokonaan toistetuksi (jos lokikirjaus oli ehtinyt levylle) tai rakennemuutoksesta ei ole mitään jälkiä lokissa. 4. Suoritetaan tarvittavat rakennemuutokset avaimen hakupolun läpikäynnin yhteydessä ennakoivasti: Lisättävän avaimen peittävää sivua haettaessa kohdattu täysi sivu halkaistaan (täysi juuri aiheuttaa puun korotuksen). Poistettavan avaimen sisältävää sivua haettaessa kohdattu sivu, jossa on vain minimimäärä tietueita, yhdistetään tai tasataan sisaruksensa kanssa (juuren vajaus aiheuttaa puun madalluksen). Seuraavaan on merkitty ainoastaan salpojen varaukset ja vapautukset sekä tuotetut lokikirjaukset (muutoin samoin kuin tehtävässä 2). wl(p 1 ); wl(0); wl(p 1); wl(p 1); 101: < inc-height, p 1, p 1, 30, p 1, {(, p 2 ), (8, p3)}, {(30,...), (60,...)} > ul(0); ul(p 1 ); ul(p 1); wl(p 3 ); wl(0); wl(p 3); 102: < split, p 1, p 3, 20, p 3, {(20, p 8 ), (25, p 9 )} > ul(0); ul(p 1); ul(p 3); wl(p 6 ); wl(0); wl(p 6); 103: < split, p 3, p 6, 11, p 6, {(11, u), (12, v)} > ul(0); ul(p 3 ); ul(p 6 ); rl(p 7 ); X-lock(15); 104: < T, I, p 6, 3, 13, v, 100 > ul(p 6); ul(p 7 ). Huonona puolena ovat turhat rakennemuutokset. Esimerkiksi juuri halkaistaan, vaikka avaimen hakupolun jokin alempi sivu olisi vajaa. 5. Ratkaisu, kun epätasapainoisuuksia ei korjailla: Kirjataan lokiin 100: < T, B >. Varataan pitkäkestoinen X-lukko avaimeen 18. rl(p 1 ); rl(p 3 ); ul(p 1 ); wl(p 6 ); ul(p 3 ); wl(p 7 ); ul(p 6 ). Havaitaan, että p 7 pitää halkaista; wl(0); varataan uusi sivu p 7; wl(p 7); halkaistaan p 7 ; kirjataan lokiin 101: < split, p 7, 17, p 7, {(17,...), (20, p 8 )} >; Page-LSN(0)=101; Page-LSN(p 7 )=101; Page-LSN(p 7)=101; ul(0); ul(p 7 ); rl(p 8 ). Varataan lyhytkestoinen X-lukko avaimen 18 seuraajaan 20. Lisätään monikko (18, u) sivulle p 7 tietuepaikkaan 3; kirjataan lokiin 102: < T, I, p 7, 3, 18, u, 100 >; Page-LSN(p 7)=102; ul(p 7); ul(p 8 ); vapautetaan avaimen 20 lyhytkestoinen lukko. Varataan pitkäkestoinen X-lukko avaimeen 22. rl(p 1 ); rl(p 3 ); ul(p 1 ); wl(p 8 ); ul(p 3 ). Havaitaan, että sivu p 8 pitää halkaista; wl(0); varataan uusi sivu p 8; wl(p 8); halkaistaan p 8 ; kirjataan lokiin 20

21 103: < split, p 8, 24, p 8, {(24,...), (25, p 9 )} >; Page-LSN(0)=103; Page-LSN(p 8 )=103; Page-LSN(p 8)=103; ul(0); ul(p 8); rl(p 8). Varataan lyhytkestoinen X-lukko avaimen 22 seuraajaan 24. Lisätään monikko (22, v) sivulle p 8 tietuepaikkaan 3; kirjataan lokiin 104: < T, I, p 8, 3, 22, v, 102 >; Page-LSN(p 8 )=104; ul(p 8 ); ul(p 8); vapautetaan avaimen 24 lyhytkestoinen lukko. Kirjataan lokiin 105: < T, C > ja pakotetaan loki levylle. Vapautetaan avainten 18 ja 22 pitkäkestoiset lukot. Ratkaisu, kun tasapainoisuuksia korjaillaan (näkyviin merkitty ainoastaan ainoastaan salpojen varaukset ja vapautukset sekä tuotetut lokikirjaukset): 100: < T, B > rl(p 1 ); rl(p 3 ); ul(p 1 ); wl(p 6 ); havaitaan, ettei p 3 :ssa ole p 7 :ään osoittavaa lapsilinkkiä; koska p 3 on täynnä, on se ensin halkaistava; ul(p 3 ); wl(p 3 ); wl(0); wl(p 3); 101: < split, p 3, 25, p 3, {(25, p 9 ), (, 0)} > ul(0); ul(p 3); 102: < add-link, p 3, 15, p 7 > ul(p 3 ); wl(p 7 ); ul(p 6 ); wl(0); wl(p 7); 103: < split, p 7, 17, p 7, {(17,...), (20, p 8 )} > ul(0); ul(p 7 ); rl(p 8 ); 104: < T, I, p 7, 3, 18, u, 100 > ul(p 7); ul(p 8 ); rl(p 1 ); rl(p 3 ); ul(p 1 ); wl(p 8 ); ul(p 3 ); wl(0); wl(p 8); 105: < split, p 8, 24, p 8, {(24,...), (25, p 9 )} > ul(0); ul(p 8); rl(p 8); X-lock(24); 106: < T, I, p 8, 3, 22, v, 102 > ul(p 8 ); ul(p 8); 107: < T, C > 9 Harjoitus 9 1. LINEITEM-relaation OrderNr-hakemisto on kasautuva, muut hakemistot ovat hajautuvia. 21

22 a) 1 levyhaku. b) 10000/1000 = 10 levyhakua. c) = 5500 levyhakua (tiedostoselaus). Nr-hakemiston selaukseen perustuva ratkaisu veisi levyhakua. d) 1 levyhaku. e) /200 = 500 levyhakua. f) 10000/1000 = x (5000/10000) = = 20 levyhakua. 2. Relaatiossa SALES on T = 500 x 10 x 300 x 5 = monikkoa, jotka vievät vähintään B = T/150 = ja enintään B = T/75 = harvan B-puun lehtisivua. Kyselyt a, b ja c voidaan laskea tiheää hakemistoa käyttäen ja kyselyt d, e ja f harvaa hakemistoa käyttäen. Kustannukset (levyhakua): a) T/(500 x 5) = b) T/(500 x 5 x 12) = 250. c) T/(500 x 5 x 300) = 10. d) B/(10 x 5)... B /(10 x 5) = e) B/(10 x 5 x 12)... B /(10 x 5 x 12) = f) B/(10 x 5 x 300)... B /(10 x 5 x 300) = Ehto (A = a 1 B b) (A a 2 C = c) hajotetaan kahdeksi ehdoksi: A = a 1 B b. A a 2 C = c (A = a 1 B b). Edellinen on jo konjunktiomuodossa. Jälkimmäinen sievennetään: A a 2 C = c (A a 1 B = b). Tämä on ekvivalentti seuraavan kanssa: A a 2 C = c A a 1 A a 2 C = c B = b. Tämä hajotetaan kahdeksi ehdoksi: A a 2 C = c A a 1. A a 2 C = c B = b (A a 2 C = c A a 1 ). Edellinen on konjuntiomuotoa. Jälkimmäinen on ekvivalentti seuraavan kanssa: C = c B = b A = a 1. Lopputulos: select * from R where A = a 1 and B! = b union all select * from R where A! = a 2 and C = c and A! = a 1 union all select * from R where C = c and B = b and A = a a) Tauluselaus, projektio A:lle ja järjestäminen. Mikäli A:n arvojoukko on pieni, pidetään yllä frekvenssilaskureita keskusmuisissa. 22

23 b) Harvan hakemiston lehtitason selaus. c) Tiheän hakemiston lehtitason selaus. Ei ole tarpeen kurkistaa itse relaatioon. 5. M = 50, C = 8, S = 10ms, r = 5ms, t = 0, 4ms. Lukuun ja kirjoitukseen tarvitaan 2 kertaa. Eriä on 200 kpl. Eli tehdään 48 ryväslukua ja 2 normaalia lukua. Eli ryvästetyt luvut vievät: (6 x ( x 0,4))ms. Loput vievät: ( x 0,4) ms. Eli Vaiheessa 1 tuotetaan 200 kpl 50 sivun eriä. Kustannus: 2 x 200 x (6 x ( x 0,4) x 0,4) = 2 x 200 x (6 x 18,2 + 15,8) = 2 x 200 x (109,2 + 15,8) = 2 x 200 x 125 = 2 x ms = 50 s. Vaiheessa 2 lomitetaan kerrallaan aina F = 5 kpl 50-sivuisia eriä 250 sivun eriksi. Yhden lomituksen kustannus: 5 x (31 x 18,2 + 15,8) = = 1205 ms. Tässä 31 = 248/8. Lomituksia tehdään kaikkiaan 40 kpl. Vaiheen 2 kokonaiskustannus on siis 40 x 1205 = ms = 48,2 s. Vaiheessa 3 lomitetaan kerrallaan aina F = 5 kpl 250-sivuisia eriä 1250 sivun eräksi. Yhden lomituksen kustannus: 5 x (156 x 18,2 + 15,8) = = 5755 ms. Tässä 156 = 1248/8. Lomituksia tehdään kaikkiaan 8 kpl. Vaiheen 3 kokonaiskustannus on siis 8 x 5755 = ms = 46,0 s. Vaiheessa 4 lomitetaan 4 kpl 1250-sivuisia eriä 5000 sivun eräksi ja toiset 4 kpl 1250-sivuisia eriä 5000 sivun eräksi. Vaiheen 4 kustannus on 2 x (4 x (625 x 18,2)) = 2 x ( ) = ms = 45,6 s. Tässä 625 = 5000/8. Vaiheessa 5 lomitetaan 2 kpl 5000 sivun eriä yhdeksi sivun eräksi. Vaiheen 5 kustannus on: 2 x x 18,2 = = ms = 45,5 s. Tässä 1250 = 10000/8. Yhteensä: , ,6 + 45,5 = 235,3 s = noin 4 min. Vielä vähän parempi aika saataisiin, jos käytettäisiin puskurin kokoa 48, joka jakaantuu tasan 8:lla (toisin kuin 50). Vrt. että ryvästämätön lomitus vei 15,4 min. 10 Harjoitus r(a, B), s(b, C), r s, r.b s.b, I r.b I s.b. Valitaan T r = T S = 6, I r.b = 2 ja I s.b = 3. Tällöin T r Ts I s.b = Tr Ts I s.b = 6 6 = a) r(ab) = {11, 21, 31, 12, 22, 32}. s(bc) = {11, 12, 21, 22, 31, 32}. Jolloin r s = {111, 112, 211, 212, 311, 312, 121, 122, 221, 222, 331, 322}. Eli 12 monikkoa. b) r(ab) = {11, 21, 31, 41, 51, 12}. s(bc) = {11, 12, 13, 14, 21, 31}. Jolloin r s = {111, 112, 113, 114, 211, 212, 213, 214, 311, 312, 313, 314, 411, 412, 413, 414, 511, 512, 513, 514, 121}. Eli 21 monikkoa. Tai: r(ab) mikä tahansa, mutta s(bc):n B-sarakkeessa on 1, 2, 3, 3, 3, 3. 23

24 2. Merkitään: E = EMPLOYEE, W = WORKS-ON, P = PROJECT. T E = T W = 2 x T E = T P = T W / 20 = 100. B E = 1000 / (4000/400) = 1000 / 10 = 100. W-monikko on korkeintaan = 20 tavua. B W = 2000 / (4000/20) = 2000 / 200 = 10. B P = 100 / (4000/200) = 100 / 20 = 5. I ESSN = I SSN = T E. I P rnr = I Nr = T P. Merkitään Q = E SSN=ESSN W P rnr=nr P. Tehtävänä on arvioida B Q. Ratkaisu 1: Q-monikko on = 620 tavua. Liitoksessa on T Q = T W = 2000 monikkoa ja B Q = T W / (4000/620) = 2000 / 6 = 334 sivua. Ratkaisu 2: Merkitään R = E SSN=ESSN W, jolloin Q = R P rnr=nr P. T R = T E x T W /I SSN = 1000 x 2000 / 1000 = B R = (B E x T W + T E x B W ) / I SSN = (100 x x 10) / 1000 = 210. B Q = (B R x T P + T R x B P ) / I Nr = (210 x x 5) / 100 = 310 sivua. 3. T r = 10000, B r = 500, T r /B r = 20, I r.b = 100. T s = 1000, I s.b = 100. Hakemistoliitoksen syötekustannus: B r + T r x T s / I s.b = x 10 = Järjestäen r ensin (kun M = 10): 2 B r log M B r + B r + I r.b x T s / I s.b = 2 x 500 x x 10 = = a) Välitulosten materialisaatioihin perustuva laskenta: 1. R1:= Π Givenname,SSN (σ Surname= Smith (EMP lasketaan EMPLOYEE-relaation harvan B-puurakenteen avulla. 2. R2:= Π Givenname,P rnr (R1 SSN WORKS-ON) lasketaan hakemistoliitoksena. 3. R3:= Π Givenname,Name (R2 P rnr=nr σ StartDate> (P ROJECT )) lasketaan hakemistoliitoksena. Putkitusta voidaan käyttää eliminoimaan välitulosten R1 ja R2 materialisaatiot. Operaatio 1 putkittaa tulosmonikoitaan operaatiolle 2, joka voi tuottaa heti liitosmonikoita ja putkittaa niitä operaatiolle 3. Operaatio 3 puolestaan voi tuottaa tulosmonikoita sitä mukaa kuin se saa syötettä operaatiolta Tässä ei pidä kaikkia valintoja suorittaa ensin. Pyritään välttämään isojen olioiden, tässä tapauksessa kuvien, hakua levyltä sekä kalliiden funktioiden laskentaa. Relaatio WEEK on mitättömän pieni. Valitaan siitä tauluselauksella helmikuun viikot, jolloin saadaan 4 viikkonumeroa (Nr). Näillä suoritetaan haku relaatioon MAP sen WeekNro-hakemiston avulla. Valitaan mukaan ne MAP-monikot m, joille m.channel = 4. Näille haetaan esiin m.picture ja lasketaan snowcoverage(m.picture). Edullinen olisi tiedostorakenne, jossa MAP-monikoiden Picture-attribuuttien arvot on sijoitettu eri tiedostoon. MAP-monikon attribuutissa Picture olisi vain Picture-olion tunniste, jolloin vältytään tarpeettomilta isojen olioiden hauilta. 6. Muunnos on mahdollinen, kun B on relaation s yksilöivä avain. Jos näin ei ole, jälkimmäinen kysely voi antaa enemmän monikoiden kaksoiskappaleita kuin edellinen. Jos sitä vastoin ulompi kysely olisi select distinct -muotoa, olisivat kyselyt aina ekvivalentit. Muunnos on hyödyllinen siksi, että se mahdollistaa useampia erilaisia laskentastrategioita. Esim. hakemistoliitos, jossa r on ulompi ja s sisempi relaatio, tai päinvastoin. 24

R 2 [0] ei ole likainen luku, sillä avaimelle 0 on jo palautettu sen alkuperäinen arvo.

R 2 [0] ei ole likainen luku, sillä avaimelle 0 on jo palautettu sen alkuperäinen arvo. Tietokantarakenteet ja -algoritmit 5. harjoitus Malliratkaisut 1. B 1 : T 1 alkaa. I 1 [1]: T 1 :lle pitkäkestoinen X-lukko avaimeen 1 ja lyhytkestoinen X-lukko avaimen 1 seuraajaan. B 2 : T 2 alkaa. I

Lisätiedot

T-106.5220 Transaktionhallinta tietokantajärjestelmissä

T-106.5220 Transaktionhallinta tietokantajärjestelmissä Opetusmoniste T-106.5220 Transaktionhallinta tietokantajärjestelmissä Kevät 2009 (periodi III) Osa 1: Looginen tietokanta ja transaktiot Osa 2: Fyysinen tietokanta Osa 3: Lokin ylläpito ja puskurinhallinta

Lisätiedot

Helsingin yliopisto/ tktl DO Tietokantojen perusteet, s 2000 Relaatioalgebra 14.9.2000. Harri Laine 1. Relaatioalgebra

Helsingin yliopisto/ tktl DO Tietokantojen perusteet, s 2000 Relaatioalgebra 14.9.2000. Harri Laine 1. Relaatioalgebra DO NOT PRINT THIS DOCUMENT operaatiot, joilla relaatioista voidaan muodostaa uusia relaatioita joukko opin perusoperaatiot yhdiste, erotus, ristitulo, leikkaus erityisiä relaatioalgebran operaatioita projektio,

Lisätiedot

SQL-perusteet, SELECT-, INSERT-, CREATE-lauseet

SQL-perusteet, SELECT-, INSERT-, CREATE-lauseet SQL-perusteet, SELECT-, INSERT-, CREATE-lauseet A271117, Tietokannat Teemu Saarelainen teemu.saarelainen@kyamk.fi Lähteet: Leon Atkinson: core MySQL Ari Hovi: SQL-opas TTY:n tietokantojen perusteet-kurssin

Lisätiedot

D B. Transaktionhallinta - samanaikaisuus. Transaktionhallinta - samanaikaisuus. Transaktionhallinta - samanaikaisuus

D B. Transaktionhallinta - samanaikaisuus. Transaktionhallinta - samanaikaisuus. Transaktionhallinta - samanaikaisuus Tietokannalla on tyypillisesti useita samanaikaisia käyttäjiä (prosesseja). On toivottavaa, että yhdenkään käyttäjän toiminta ei hidastuisi kohtuuttomasti, vaikka muita käyttäjiä olisi runsaastikin yhdenkään

Lisätiedot

25.4.05. Helsingin yliopisto/tktl Tietokannan hallinta, kevät 2005. Harri Laine 1 D B. Transaktionhallinta - samanaikaisuus

25.4.05. Helsingin yliopisto/tktl Tietokannan hallinta, kevät 2005. Harri Laine 1 D B. Transaktionhallinta - samanaikaisuus Tietokannalla on tyypillisesti useita samanaikaisia käyttäjiä (= käyttäviä prosesseja). On toivottavaa, että yhdenkään käyttäjän toiminta ei hidastuisi kohtuuttomasti, vaikka muita käyttäjiä olisi runsaastikin

Lisätiedot

D B. Kyselyjen käsittely ja optimointi. Kyselyn käsittelyn vaiheet:

D B. Kyselyjen käsittely ja optimointi. Kyselyn käsittelyn vaiheet: Kyselyjen käsittely ja optimointi Kyselyn käsittelyn vaiheet: TKHJ ottaa vastaan kyselyn asiakasohjelmalta Kysely selataan ja jäsennetään tarkistetaan kyselyn rakenteellinen oikeellisuus Jäsennetty kysely

Lisätiedot

Transaktiot - kertausta

Transaktiot - kertausta Hajautettujen järjestelmien perusteet Transaktiot - kertausta Distributed Systems, Concepts and Design, George Coulouris, Jean Dollimore, Tim Kindberg Addison-Wesley 1988,1994. Pearson Education 2001 ISBN:

Lisätiedot

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin peruskurssi Y1 Ohjelmoinnin peruskurssi Y1 CSE-A1111 30.9.2015 CSE-A1111 Ohjelmoinnin peruskurssi Y1 30.9.2015 1 / 27 Mahdollisuus antaa luentopalautetta Goblinissa vasemmassa reunassa olevassa valikossa on valinta Luentopalaute.

Lisätiedot

Algoritmit 1. Luento 13 Ti 23.2.2016. Timo Männikkö

Algoritmit 1. Luento 13 Ti 23.2.2016. Timo Männikkö Algoritmit 1 Luento 13 Ti 23.2.2016 Timo Männikkö Luento 13 Suunnittelumenetelmät Taulukointi Kapsäkkiongelma Ahne menetelmä Verkon lyhimmät polut Dijkstran menetelmä Verkon lyhin virittävä puu Kruskalin

Lisätiedot

5. Tapahtumien hallinta. Esim. pankkitilisovelluksen proseduuri tilisiirto(t1, t2, x), joka siirtää x mk tililtä t1 tilille t2:

5. Tapahtumien hallinta. Esim. pankkitilisovelluksen proseduuri tilisiirto(t1, t2, x), joka siirtää x mk tililtä t1 tilille t2: Tietokannan hallinta 1 5. Tapahtumien hallinta Tietokannan hallinta 2 5. Tapahtumien hallinta 5. Tapahtumien hallinta = transaction management (yleistä: E&N, Ch. 19) kaikkien tietokantajärjestelmien keskeinen

Lisätiedot

Matematiikan tukikurssi

Matematiikan tukikurssi Matematiikan tukikurssi Kurssikerta 1 1 Matemaattisesta päättelystä Matemaattisen analyysin kurssin (kuten minkä tahansa matematiikan kurssin) seuraamista helpottaa huomattavasti, jos opiskelija ymmärtää

Lisätiedot

D B. Levykön rakenne. pyöriviä levyjä ura. lohko. Hakuvarsi. sektori. luku-/kirjoituspää

D B. Levykön rakenne. pyöriviä levyjä ura. lohko. Hakuvarsi. sektori. luku-/kirjoituspää Levyn rakenne Levykössä (disk drive) on useita samankeskisiä levyjä (disk) Levyissä on magneettinen pinta (disk surface) kummallakin puolella levyä Levyllä on osoitettavissa olevia uria (track), muutamasta

Lisätiedot

LOAD R1, =2 Sijoitetaan rekisteriin R1 arvo 2. LOAD R1, 100

LOAD R1, =2 Sijoitetaan rekisteriin R1 arvo 2. LOAD R1, 100 Tiedonsiirtokäskyt LOAD LOAD-käsky toimii jälkimmäisestä operandista ensimmäiseen. Ensimmäisen operandin pitää olla rekisteri, toinen voi olla rekisteri, vakio tai muistiosoite (myös muuttujat ovat muistiosoitteita).

Lisätiedot

Esimerkkiprojekti. Mallivastauksen löydät Wroxin www-sivuilta. Kenttä Tyyppi Max.pituus Rajoitukset/Kommentit

Esimerkkiprojekti. Mallivastauksen löydät Wroxin www-sivuilta. Kenttä Tyyppi Max.pituus Rajoitukset/Kommentit Liite E - Esimerkkiprojekti E Esimerkkiprojekti Olet lukenut koko kirjan. Olet sulattanut kaiken tekstin, Nyt on aika soveltaa oppimiasi uusia asioita pienen, mutta täydellisesti muotoiltuun, projektiin.

Lisätiedot

Harjoitustyö. CSE-A1200 Tietokannat! Jasse Lahdenperä! 345396! killedwhale@kapsi.fi! Henri Nurmi! 345545! henri.nurmi@kapsi.fi!

Harjoitustyö. CSE-A1200 Tietokannat! Jasse Lahdenperä! 345396! killedwhale@kapsi.fi! Henri Nurmi! 345545! henri.nurmi@kapsi.fi! Harjoitustyö CSE-A1200 Tietokannat Jasse Lahdenperä 345396 killedwhale@kapsi.fi Henri Nurmi 345545 henri.nurmi@kapsi.fi 1 Ensimmäisen vaiheen ratkaisu ER-Kaavio 2 Relaatiomalli: Loanable(Id, MaximumLoanTime)

Lisätiedot

Cabas liitännän käyttö AutoFutur ohjelmassa 4.1.2012

Cabas liitännän käyttö AutoFutur ohjelmassa 4.1.2012 Cabas liitännän käyttö AutoFutur ohjelmassa 4.1.2012 Liitännän aktivointi Liitäntä on ohjelma lisämoduuli. Ensin asetetaan käyttöön FuturSoftilta saatu Liitäntä WinCabas rekisteröintikoodi. Mennään kohtaan

Lisätiedot

Samanaikaisuuden hallinta. Optiot transaktionaalisissa työnkuluissa

Samanaikaisuuden hallinta. Optiot transaktionaalisissa työnkuluissa Samanaikaisuuden hallinta Optiot transaktionaalisissa työnkuluissa Sisältö Transaktionaaliset työnkulut Samanaikaisuuden ongelmat Optiot idea käyttökohteet WorkMan Optioiden toteutus Arviointi Transaktionaaliset

Lisätiedot

Luento 2: Tiedostot ja tiedon varastointi

Luento 2: Tiedostot ja tiedon varastointi HELIA 1 (19) Luento 2: Tiedostot ja tiedon varastointi Muistit... 2 Päämuisti (Primary storage)... 2 Apumuisti (Secondary storage)... 2 Tiedon tallennuksen yksiköitä... 3 Looginen taso... 3 Fyysinen taso...

Lisätiedot

2. Tietokannan tallennusrakenteet

2. Tietokannan tallennusrakenteet Tietokannan hallinta 1 2. Tietokannan tallennusrakenteet 2. Tietokannan tallennusrakenteet 2.1 Levymuisti ja sen käyttö Muistilaitteiden hierarkia: ainakin keskusmuisti levymuisti (+ muita tukimuisteja,

Lisätiedot

Insert lauseella on kaksi muotoa: insert into taulu [(sarakenimet)] values (arvot)

Insert lauseella on kaksi muotoa: insert into taulu [(sarakenimet)] values (arvot) SQL sisältää operaatiot tietokannan sisällön muodostamiseen ja ylläpitoon: insert - uusien rivien vienti tauluun delete - rivien poisto update - rivien muutos 1 Insert lauseella on kaksi muotoa: insert

Lisätiedot

Peliteoria luento 1. May 25, 2015. Peliteoria luento 1

Peliteoria luento 1. May 25, 2015. Peliteoria luento 1 May 25, 2015 Tavoitteet Valmius muotoilla strategisesti ja yhteiskunnallisesti kiinnostavia tilanteita peleinä. Kyky ratkaista yksinkertaisia pelejä. Luentojen rakenne 1 Joitain pelejä ajanvietematematiikasta.

Lisätiedot

Solmu 3/2001 Solmu 3/2001. Kevään 2001 ylioppilaskirjoitusten pitkän matematiikan kokeessa oli seuraava tehtävä:

Solmu 3/2001 Solmu 3/2001. Kevään 2001 ylioppilaskirjoitusten pitkän matematiikan kokeessa oli seuraava tehtävä: Frégier n lause Simo K. Kivelä Kevään 2001 ylioppilaskirjoitusten pitkän matematiikan kokeessa oli seuraava tehtävä: Suorakulmaisen kolmion kaikki kärjet sijaitsevat paraabelilla y = x 2 ; suoran kulman

Lisätiedot

Sähköisen äänestyksen pilotti

Sähköisen äänestyksen pilotti 08.02.2008 1 (26) Käyttötapausmalli Oikeusministeriö Vaalitietojärjestelmät 08.02.2008 2 (26) 1 Käyttötapaukset...3 1.1 Käyttötapaus: Vaalin perustaminen...4 1.1.1 Käyttötapauksen sanallinen kuvaus...4

Lisätiedot

NORMALISOINTI TIETOJEN MALLINNUS JOUNI HUOTARI & ARI HOVI

NORMALISOINTI TIETOJEN MALLINNUS JOUNI HUOTARI & ARI HOVI TIETOJEN MALLINNUS NORMALISOINTI HOVI, HUOTARI, LAHDENMÄKI: TIETOKANTOJEN SUUNNITTELU & INDEKSOINTI DOCENDO (2003, 2005) LUKU 5 JOUNI HUOTARI & ARI HOVI SUUNNITTELUPUTKI Käyttäjien näkemykset Näytöt, ikkunat

Lisätiedot

Kirjoita jokaiseen erilliseen vastauspaperiin kurssin nimi, tenttipäivä, oma nimesi (selkeästi), opiskelijanumerosi ja nimikirjoituksesi

Kirjoita jokaiseen erilliseen vastauspaperiin kurssin nimi, tenttipäivä, oma nimesi (selkeästi), opiskelijanumerosi ja nimikirjoituksesi Helsingin yliopisto, Tietojenkäsittelytieteen laitos Tietokantojen perusteet, kurssikoe 29.2.2012 (vastauksia) Liitteenä on tiivistelmä SQL-syntaksista Kirjoita jokaiseen erilliseen vastauspaperiin kurssin

Lisätiedot

Relaatiotietokantojen perusteista. Harri Laine Helsingin yliopisto

Relaatiotietokantojen perusteista. Harri Laine Helsingin yliopisto Harri Laine Helsingin yliopisto Suosion syy? Yksinkertaisuus vähän käsitteitä helppo hahmottaa Selkeä matemaattinen perusta ei tulkintaongelmia kuten esim. UML:ssä teoria käytäntö kaavio: R(A 1 :D 1, A

Lisätiedot

Tiedonhallinnan perusteet. Viikko 1 Jukka Lähetkangas

Tiedonhallinnan perusteet. Viikko 1 Jukka Lähetkangas Tiedonhallinnan perusteet Viikko 1 Jukka Lähetkangas Kurssilla käytävät asiat Tietokantojen toimintafilosofian ja -tekniikan perusteet Tiedonsäilönnän vaihtoehdot Tietokantojen suunnitteleminen internetiä

Lisätiedot

Kuvaus eli funktio f joukolta X joukkoon Y tarkoittaa havainnollisesti vastaavuutta, joka liittää joukon X jokaiseen alkioon joukon Y tietyn alkion.

Kuvaus eli funktio f joukolta X joukkoon Y tarkoittaa havainnollisesti vastaavuutta, joka liittää joukon X jokaiseen alkioon joukon Y tietyn alkion. Kuvaus eli funktio f joukolta X joukkoon Y tarkoittaa havainnollisesti vastaavuutta, joka liittää joukon X jokaiseen alkioon joukon Y tietyn alkion. Vastaavuus puolestaan on erikoistapaus relaatiosta.

Lisätiedot

5. Luento: Rinnakkaisuus ja reaaliaika. Tommi Mikkonen, tommi.mikkonen@tut.fi

5. Luento: Rinnakkaisuus ja reaaliaika. Tommi Mikkonen, tommi.mikkonen@tut.fi 5. Luento: Rinnakkaisuus ja reaaliaika Tommi Mikkonen, tommi.mikkonen@tut.fi Agenda Perusongelmat Jako prosesseihin Reaaliaika Rinnakkaisuus Rinnakkaisuus tarkoittaa tässä yhteydessä useamman kuin yhden

Lisätiedot

1. HARJOITUS harjoitus3_korjaus.doc

1. HARJOITUS harjoitus3_korjaus.doc Word - harjoitus 1 1. HARJOITUS harjoitus3_korjaus.doc Kopioi itsellesi harjoitus3_korjaus.doc niminen tiedosto Avaa näyttöön kopioimasi harjoitus. Harjoitus on kirjoitettu WordPerfet 5.1 (DOS) versiolla

Lisätiedot

f(x, y) = x 2 y 2 f(0, t) = t 2 < 0 < t 2 = f(t, 0) kaikilla t 0.

f(x, y) = x 2 y 2 f(0, t) = t 2 < 0 < t 2 = f(t, 0) kaikilla t 0. Ääriarvon laatu Jatkuvasti derivoituvan funktion f lokaali ääriarvokohta (x 0, y 0 ) on aina kriittinen piste (ts. f x (x, y) = f y (x, y) = 0, kun x = x 0 ja y = y 0 ), mutta kriittinen piste ei ole aina

Lisätiedot

Graafit ja verkot. Joukko solmuja ja joukko järjestämättömiä solmupareja. eli haaroja. Joukko solmuja ja joukko järjestettyjä solmupareja eli kaaria

Graafit ja verkot. Joukko solmuja ja joukko järjestämättömiä solmupareja. eli haaroja. Joukko solmuja ja joukko järjestettyjä solmupareja eli kaaria Graafit ja verkot Suuntamaton graafi: eli haaroja Joukko solmuja ja joukko järjestämättömiä solmupareja Suunnattu graafi: Joukko solmuja ja joukko järjestettyjä solmupareja eli kaaria Haaran päätesolmut:

Lisätiedot

Esimerkki. pankkien talletus- ja lainatietokanta: Yhdiste, leikkaus, erotus ym. Leikkaus (intersect) Yhdiste (Union) Erotus (except/minus) Leikkaus

Esimerkki. pankkien talletus- ja lainatietokanta: Yhdiste, leikkaus, erotus ym. Leikkaus (intersect) Yhdiste (Union) Erotus (except/minus) Leikkaus Yhdiste, leikkaus, erotus ym. SQL tarjoaa myös relaatioalgebran operaatiot yhdiste, leikkaus, erotus Näissä operaatioissa taulujen on oltava samarakenteisia, ts. niissä on oltava samantyyppiset vastinsarakkeet.

Lisätiedot

Ehto- ja toistolauseet

Ehto- ja toistolauseet Ehto- ja toistolauseet 1 Ehto- ja toistolauseet Uutena asiana opetellaan ohjelmointilauseet / rakenteet, jotka mahdollistavat: Päätösten tekemisen ohjelman suorituksen aikana (esim. kyllä/ei) Samoja lauseiden

Lisätiedot

811312A Tietorakenteet ja algoritmit, 2014-2015, Harjoitus 7, ratkaisu

811312A Tietorakenteet ja algoritmit, 2014-2015, Harjoitus 7, ratkaisu 832A Tietorakenteet ja algoritmit, 204-205, Harjoitus 7, ratkaisu Hajota ja hallitse-menetelmä: Tehtävä 7.. Muodosta hajota ja hallitse-menetelmää käyttäen algoritmi TULOSTA_PUU_LASKEVA, joka tulostaa

Lisätiedot

Yhdiste, leikkaus, erotus ym.

Yhdiste, leikkaus, erotus ym. Yhdiste, leikkaus, erotus ym. SQL tarjoaa myös relaatioalgebran operaatiot yhdiste, leikkaus, erotus Näissä operaatioissa taulujen on oltava samarakenteisia, ts. niissä on oltava samantyyppiset vastinsarakkeet.

Lisätiedot

HELIA 1 (12) Outi Virkki Tiedonhallinta 4.11.2000

HELIA 1 (12) Outi Virkki Tiedonhallinta 4.11.2000 HELIA 1 (12) Luento 4.3 Eheyssäännöt (Integrity Constraints)... 2 Eheyden valvonta... 3 Yksilön eheyssääntö... 4 Viite-eheyssäännöt... 5 Arvojoukkoeheyssäännöt... 8 Null-arvoista... 10 Sovelluskohtaiset

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 1.4.2009 T-106.1208 Ohjelmoinnin perusteet Y 1.4.2009 1 / 56 Tentti Ensimmäinen tenttimahdollisuus on pe 8.5. klo 13:00 17:00 päärakennuksessa. Tämän jälkeen

Lisätiedot

HELIA TIKO-05 SQL-TRANSAKTIOT 1 ( 12) ICT03D Tieto ja tiedon varastointi

HELIA TIKO-05 SQL-TRANSAKTIOT 1 ( 12) ICT03D Tieto ja tiedon varastointi HELIA TIKO-05 SQL-TRANSAKTIOT 1 ( 12) SQL-transaktiot Lähes kaikissa tietojärjestelmissä tietojen talletus on toteutettu tietokannoissa, joita käytetään tietokannanhallintajärjestelmien (DBMS) palvelujen

Lisätiedot

Sisällys. 3. Pseudokoodi. Johdanto. Johdanto. Johdanto ja esimerkki. Pseudokoodi lauseina. Kommentointi ja sisentäminen.

Sisällys. 3. Pseudokoodi. Johdanto. Johdanto. Johdanto ja esimerkki. Pseudokoodi lauseina. Kommentointi ja sisentäminen. Sisällys 3. Pseudokoodi Johdanto ja esimerkki. Pseudokoodi lauseina. Kommentointi ja sisentäminen. Ohjausrakenteet: Valinta if- ja if--rakenteilla. oisto while-, do-while- ja for-rakenteilla. 3.1 3.2 Johdanto

Lisätiedot

finnish BOI 2015, päivä 1. Muistiraja: 256 MB. 30.04.2015

finnish BOI 2015, päivä 1. Muistiraja: 256 MB. 30.04.2015 Tehtävä: BOW Keilaus finnish BOI 0, päivä. Muistiraja: 6 MB. 30.04.0 Jarkka pitää sekä keilauksesta että tilastotieteestä. Hän on merkinnyt muistiin muutaman viimeisimmän keilapelin tulokset. Valitettavasti

Lisätiedot

Luku 6. Dynaaminen ohjelmointi. 6.1 Funktion muisti

Luku 6. Dynaaminen ohjelmointi. 6.1 Funktion muisti Luku 6 Dynaaminen ohjelmointi Dynaamisessa ohjelmoinnissa on ideana jakaa ongelman ratkaisu pienempiin osaongelmiin, jotka voidaan ratkaista toisistaan riippumattomasti. Jokaisen osaongelman ratkaisu tallennetaan

Lisätiedot

TIETOKANTOJEN PERUSTEET MARKKU SUNI

TIETOKANTOJEN PERUSTEET MARKKU SUNI TIETOKANTOJEN PERUSTEET MARKKU SUNI OSIO 01 Peruskäsitteitä Kurssin tavoite: antaa osallistujille valmiudet ymmärtää tietokantojen periaatteet ymmärtää tietokantojen suunnittelunäkökohtia osallistua tietokantojen

Lisätiedot

Excel-taulukkoon X- ja Y-sarakkeisiin tallennettujen koordinaattien muuntaminen paikkatietokohteiksi

Excel-taulukkoon X- ja Y-sarakkeisiin tallennettujen koordinaattien muuntaminen paikkatietokohteiksi Excel-taulukkoon X- ja Y-sarakkeisiin tallennettujen koordinaattien muuntaminen paikkatietokohteiksi Esimerkkinä Excel-taulukkona ladattavat Helsingin pysäköintilippuautomaatit Viimeksi muokattu 27. huhtikuuta

Lisätiedot

Tietokantojen suunnittelu, relaatiokantojen perusteita

Tietokantojen suunnittelu, relaatiokantojen perusteita Tietokantojen suunnittelu, relaatiokantojen perusteita A277, Tietokannat Teemu Saarelainen teemu.saarelainen@kyamk.fi Lähteet: Leon Atkinson: core MySQL Ari Hovi: SQL-opas TTY:n tietokantojen perusteet-kurssin

Lisätiedot

A274101 TIETORAKENTEET JA ALGORITMIT

A274101 TIETORAKENTEET JA ALGORITMIT A274101 TIETORAKENTEET JA ALGORITMIT PUURAKENTEET, BINÄÄRIPUU, TASAPAINOTETUT PUUT MIKÄ ON PUUTIETORAKENNE? Esim. Viereinen kuva esittää erästä puuta. Tietojenkäsittelytieteessä puut kasvavat alaspäin.

Lisätiedot

Topologia Syksy 2010 Harjoitus 9

Topologia Syksy 2010 Harjoitus 9 Topologia Syksy 2010 Harjoitus 9 (1) Avaruuden X osajoukko A on G δ -joukko, jos se on numeroituva leikkaus avoimista joukoista ja F σ -joukko, jos se on numeroituva yhdiste suljetuista joukoista. Osoita,

Lisätiedot

4. Kyselyjen käsittely ja optimointi

4. Kyselyjen käsittely ja optimointi Tietokannan hallinta 1 4. Kyselyjen käsittely ja optimointi Tietokannan hallinta 2 4. Kyselyjen käsittely ja optimointi 4. Kyselyjen käsittely ja optimointi (E&N, Ch. 18) - taustana mm. relaatioalgebra

Lisätiedot

KServer Etäohjaus Spesifikaatio asiakaspuolen toteutuksille

KServer Etäohjaus Spesifikaatio asiakaspuolen toteutuksille KServer Etäohjaus 1 (5) KServer Etäohjaus Spesifikaatio asiakaspuolen toteutuksille Palvelimen toteutuksen ollessa versio 1.0, spesifikaation versio 1.0.0. 2009, Riku Eskelinen/ KServer Software Development

Lisätiedot

HELIA 1 (17) Outi Virkki Tiedonhallinta 4.11.2000

HELIA 1 (17) Outi Virkki Tiedonhallinta 4.11.2000 HELIA 1 (17) Luento 4.5 Normalisointi... 2 Tavoitteet... 2 Attribuuttien väliset riippuvuudet... 4 Funktionaalinen / moniarvoinen riippuvuus... 4 Transitiivinen / suora riippuvuus... 6 Täydellinen / osittainen

Lisätiedot

Kirjoita kuhunkin erilliseen vastauspaperiin kurssin nimi, tentin päiväys, oma nimesi, syntymäaikasi ja nimikirjoituksesi.

Kirjoita kuhunkin erilliseen vastauspaperiin kurssin nimi, tentin päiväys, oma nimesi, syntymäaikasi ja nimikirjoituksesi. Helsingin yliopisto, Tietojenkäsittelytieteen laitos Tietokantojen perusteet, kurssikoe 4.3.2015, H. Laine Tehtävien mukana jaetaan sql-syntaksin tiivistelmä. Kirjoita kuhunkin erilliseen vastauspaperiin

Lisätiedot

Asko Ikävalko, k0201291 22.2.2004 TP02S-D. Ohjelmointi (C-kieli) Projektityö. Työn valvoja: Olli Hämäläinen

Asko Ikävalko, k0201291 22.2.2004 TP02S-D. Ohjelmointi (C-kieli) Projektityö. Työn valvoja: Olli Hämäläinen Asko Ikävalko, k0201291 22.2.2004 TP02S-D Ohjelmointi (C-kieli) Projektityö Työn valvoja: Olli Hämäläinen Asko Ikävalko LOPPURAPORTTI 1(11) Ratkaisun kuvaus Käytetyt tiedostot Tietuerakenteet Onnistuin

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 15.3.2010 T-106.1208 Ohjelmoinnin perusteet Y 15.3.2010 1 / 56 Tiedostoista: tietojen tallentaminen ohjelman suorituskertojen välillä Monissa sovelluksissa ohjelman

Lisätiedot

1 Logiikkaa. 1.1 Logiikan symbolit

1 Logiikkaa. 1.1 Logiikan symbolit 1 Logiikkaa Tieteessä ja jokapäiväisessä elämässä joudutaan tekemään päätelmiä. Logiikassa tutkimuskohteena on juuri päättelyt. Sen sijaan päätelmien sisältöön ei niinkäään kiinnitetä huomiota. Päätelmät

Lisätiedot

Palmikkoryhmät kryptografiassa

Palmikkoryhmät kryptografiassa Palmikkoryhmät kryptografiassa Jarkko Peltomäki 27. marraskuuta 2010 Palmikkoryhmät ovat epäkommutatiivisia äärettömiä ryhmiä. Niillä on monimutkainen rakenne, mutta toisaalta niillä on geometrinen tulkinta

Lisätiedot

KÄSITEANALYYSI PROSESSINA JA TARVEANALYYSI

KÄSITEANALYYSI PROSESSINA JA TARVEANALYYSI TIETOJEN MALLINNUS KÄSITEANALYYSI PROSESSINA JA TARVEANALYYSI HOVI, HUOTARI, LAHDENMÄKI: TIETOKANTOJEN SUUNNITTELU & INDEKSOINTI DOCENDO (2003, 2005) LUKU 3 S. 68 73 JA LUKU 4 (S. 79 84) JOUNI HUOTARI

Lisätiedot

Käsiteanalyysi prosessina ja tarveanalyysi

Käsiteanalyysi prosessina ja tarveanalyysi Informaatioteknologian instituutti IIO30100 Tietokantojen suunnittelu Käsiteanalyysi prosessina ja tarveanalyysi kirjan Hovi, Huotari, Lahdenmäki: Tietokantojen suunnittelu & indeksointi, Docendo (2003,

Lisätiedot

Taloustieteen perusteet 31A00110 18.04.2016. Opiskelijanumero Nimi (painokirjaimin) Allekirjoitus

Taloustieteen perusteet 31A00110 18.04.2016. Opiskelijanumero Nimi (painokirjaimin) Allekirjoitus Taloustieteen perusteet 31A00110 18.04.2016 Opiskelijanumero Nimi (painokirjaimin) Allekirjoitus Pisteytys: 1 2 3 4 5 6 Yht Vastaukseen käytetään vain tätä vastauspaperia. Vastaa niin lyhyesti, että vastauksesi

Lisätiedot

FUNKTIONAALIANALYYSIN PERUSKURSSI 1. 0. Johdanto

FUNKTIONAALIANALYYSIN PERUSKURSSI 1. 0. Johdanto FUNKTIONAALIANALYYSIN PERUSKURSSI 1. Johdanto Funktionaalianalyysissa tutkitaan muun muassa ääretönulotteisten vektoriavaruuksien, ja erityisesti täydellisten normiavaruuksien eli Banach avaruuksien ominaisuuksia.

Lisätiedot

iloq Privus - Ohjelmointiopas

iloq Privus - Ohjelmointiopas iloq Privus - Ohjelmointiopas Hyvä Asiakkaamme, 1 Aloitusopas 4-5 1.1 Tässä oppaassa käytettävät symbolit 4 Kiitos, että olette valinneet tämän iloq tuotteen. Tutustu huolellisesti tähän ohjelmointioppaaseen

Lisätiedot

Pythonin Kertaus. Cse-a1130. Tietotekniikka Sovelluksissa. Versio 0.01b

Pythonin Kertaus. Cse-a1130. Tietotekniikka Sovelluksissa. Versio 0.01b Pythonin Kertaus Cse-a1130 Tietotekniikka Sovelluksissa Versio 0.01b Listat 1/2 esimerkkejä listan peruskäytöstä. > lista=['kala','kukko','kissa','koira'] ['kala','kukko','kissa','koira'] >lista.append('kana')

Lisätiedot

Esimerkkejä polynomisista ja ei-polynomisista ongelmista

Esimerkkejä polynomisista ja ei-polynomisista ongelmista Esimerkkejä polynomisista ja ei-polynomisista ongelmista Ennen yleisempiä teoriatarkasteluja katsotaan joitain tyypillisiä esimerkkejä ongelmista ja niiden vaativuudesta kaikki nämä ongelmat ratkeavia

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 16.2.2010 T-106.1208 Ohjelmoinnin perusteet Y 16.2.2010 1 / 41 Kännykkäpalautetteen antajia kaivataan edelleen! Ilmoittaudu mukaan lähettämällä ilmainen tekstiviesti

Lisätiedot

SQL-KYSELYJEN OPTIMOINNISTA. Niko Jalkanen 17.4.2007. Joensuun yliopisto Tietojenkäsittelytiede Pro gradu tutkielma

SQL-KYSELYJEN OPTIMOINNISTA. Niko Jalkanen 17.4.2007. Joensuun yliopisto Tietojenkäsittelytiede Pro gradu tutkielma SQL-KYSELYJEN OPTIMOINNISTA Niko Jalkanen 17.4.2007 Joensuun yliopisto Tietojenkäsittelytiede Pro gradu tutkielma TIIVISTELMÄ SQL tarjoaa korkean tason deklaratiivisen rajapinnan relaatiotietokannan tietoihin.

Lisätiedot

Ajotaitomerkkisäännöt matkailuautolle voimaan 1.1.2012

Ajotaitomerkkisäännöt matkailuautolle voimaan 1.1.2012 Ajotaitomerkkisäännöt matkailuautolle voimaan..202 Tarkoitus on saada jokainen karavaanari kiinnostumaan ajotaitonsa kehittämisestä oman ajoneuvonsa käsittelyssä. On tärkeää, että mahdollisimman moni kokee

Lisätiedot

Mikä on tietomalli? Relaatiomallin käsitteitä 1/2 (kuva 5.1) Relaatiomallin taustaa

Mikä on tietomalli? Relaatiomallin käsitteitä 1/2 (kuva 5.1) Relaatiomallin taustaa Relaatiomalli 5. Relaatiomalli Käsitteet Säännöt Käyttö 6. Relaatioalgebra (EI TENTTIIN!) Select, Project, Union, Difference, Join 7. (E)ER-mallin muuntaminen relaatioiksi Kaava Mikä on tietomalli? Malli,

Lisätiedot

Tietorakenteet ja algoritmit - syksy 2015 1

Tietorakenteet ja algoritmit - syksy 2015 1 Tietorakenteet ja algoritmit - syksy 2015 1 Tietorakenteet ja algoritmit - syksy 2015 2 Tietorakenteet ja algoritmit Johdanto Ari Korhonen Tietorakenteet ja algoritmit - syksy 2015 1. JOHDANTO 1.1 Määritelmiä

Lisätiedot

Sisällys. Kaavioiden rakenne. Kaavioiden piirto symboleita yhdistelemällä. Kaavion osan toistaminen silmukalla. Esimerkkejä. 2.2

Sisällys. Kaavioiden rakenne. Kaavioiden piirto symboleita yhdistelemällä. Kaavion osan toistaminen silmukalla. Esimerkkejä. 2.2 2. Vuokaaviot 2.1 Sisällys aavioiden rakenne. aavioiden piirto symboleita yhdistelemällä. aavion osan toistaminen silmukalla. simerkkejä. 2.2 Vuokaaviot Graafinen kieli algoritmien kuvaamiseen. Muodostetaan

Lisätiedot

MEMS-muisti relaatiotietokannoissa

MEMS-muisti relaatiotietokannoissa MEMS-muisti relaatiotietokannoissa Antti Tikka Espoo 28.2.2009 Seminaari HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos HELSINGIN YLIOPISTO HELSINGFORS UNIVERSITET UNIVERSITY OF HELSINKI Tiedekunta/Osasto

Lisätiedot

FROM-lausekkeessa voidaan määritellä useampi kuin yksi taulu, josta tietoja haetaan: Tuloksena on taululistassa lueteltujen taulujen rivien

FROM-lausekkeessa voidaan määritellä useampi kuin yksi taulu, josta tietoja haetaan: Tuloksena on taululistassa lueteltujen taulujen rivien Monen taulun kyselyt FROM-lausekkeessa voidaan määritellä useampi kuin yksi taulu, josta tietoja haetaan: SELECT FROM Tuloksena on taululistassa lueteltujen taulujen rivien karteesinen

Lisätiedot

PERUSASIOITA ALGEBRASTA

PERUSASIOITA ALGEBRASTA PERUSASIOITA ALGEBRASTA Matti Lehtinen Tässä luetellut lauseet ja käsitteet kattavat suunnilleen sen mitä algebrallisissa kilpatehtävissä edellytetään. Ns. algebrallisia struktuureja jotka ovat nykyaikaisen

Lisätiedot

Tietoturvan perusteet - Syksy 2005. SSH salattu yhteys & autentikointi. Tekijät: Antti Huhtala & Asko Ikävalko (TP02S)

Tietoturvan perusteet - Syksy 2005. SSH salattu yhteys & autentikointi. Tekijät: Antti Huhtala & Asko Ikävalko (TP02S) Tietoturvan perusteet - Syksy 2005 SSH salattu yhteys & autentikointi Tekijät: Antti Huhtala & Asko Ikävalko (TP02S) Yleistä SSH-1 vuonna 1995 (by. Tatu Ylönen) Korvaa suojaamattomat yhteydentottotavat

Lisätiedot

TIEP114 Tietokoneen rakenne ja arkkitehtuuri, 3 op. Assembly ja konekieli

TIEP114 Tietokoneen rakenne ja arkkitehtuuri, 3 op. Assembly ja konekieli TIEP114 Tietokoneen rakenne ja arkkitehtuuri, 3 op Assembly ja konekieli Tietokoneen ja ohjelmiston rakenne Loogisilla piireillä ja komponenteilla rakennetaan prosessori ja muistit Prosessorin rakenne

Lisätiedot

Tietorakenteet ja algoritmit Johdanto Lauri Malmi / Ari Korhonen

Tietorakenteet ja algoritmit Johdanto Lauri Malmi / Ari Korhonen Tietorakenteet ja algoritmit Johdanto Lauri Malmi / Ari 1 1. JOHDANTO 1.1 Määritelmiä 1.2 Tietorakenteen ja algoritmin valinta 1.3 Algoritmit ja tiedon määrä 1.4 Tietorakenteet ja toiminnot 1.5 Esimerkki:

Lisätiedot

Osa 1: Todennäköisyys ja sen laskusäännöt. Klassinen todennäköisyys ja kombinatoriikka

Osa 1: Todennäköisyys ja sen laskusäännöt. Klassinen todennäköisyys ja kombinatoriikka Ilkka Mellin Todennäköisyyslaskenta Osa 1: Todennäköisyys ja sen laskusäännöt Klassinen todennäköisyys ja kombinatoriikka TKK (c) Ilkka Mellin (2007) 1 Klassinen todennäköisyys ja kombinatoriikka >> Klassinen

Lisätiedot

Kombinatorisen logiikan laitteet

Kombinatorisen logiikan laitteet Kombinatorisen logiikan laitteet Kombinatorinen logiikka tarkoittaa logiikkaa, jossa signaali kulkee suoraan sisääntuloista ulostuloon Sekventiaalisessa logiikassa myös aiemmat syötteet vaikuttavat ulostuloon

Lisätiedot

4 Kysyntä, tarjonta ja markkinatasapaino (Mankiw & Taylor, 2 nd ed., chs 4-5)

4 Kysyntä, tarjonta ja markkinatasapaino (Mankiw & Taylor, 2 nd ed., chs 4-5) 4 Kysyntä, tarjonta ja markkinatasapaino (Mankiw & Taylor, 2 nd ed., chs 4-5) Opimme tässä ja seuraavissa luennoissa että markkinat ovat hyvä tapa koordinoida taloudellista toimintaa (mikä on yksi taloustieteen

Lisätiedot

Sisällys. 12. Näppäimistöltä lukeminen. Yleistä. Yleistä 12.1 12.2 12.3 12.4

Sisällys. 12. Näppäimistöltä lukeminen. Yleistä. Yleistä 12.1 12.2 12.3 12.4 Sisällys 12. Näppäimistöltä lukeminen Arvojen lukeminen näppäimistöltä yleisesti. Arvojen lukeminen näppäimistöltä Java-kielessä.. Luetun arvon tarkistaminen. Tietovirrat ja ohjausmerkit. Scanner-luokka.

Lisätiedot

Kuva 7.2 vastaustaulu harjoitukseen 7.2

Kuva 7.2 vastaustaulu harjoitukseen 7.2 Harjoitus 7. Lataa tiedosto http://users.metropolia.fi/~pasitr/opas/ran13b/data/ran13b.zip levylle Z: ja pura se. Kun olet tehnyt kaikki seuraavat 17 tehtävää palauta Tuubiin harjoituksen 7 vastauksena

Lisätiedot

Koottu lause; { ja } -merkkien väliin kirjoitetut lauseet muodostavat lohkon, jonka sisällä lauseet suoritetaan peräkkäin.

Koottu lause; { ja } -merkkien väliin kirjoitetut lauseet muodostavat lohkon, jonka sisällä lauseet suoritetaan peräkkäin. 2. Ohjausrakenteet Ohjausrakenteiden avulla ohjataan ohjelman suoritusta. peräkkäisyys valinta toisto Koottu lause; { ja } -merkkien väliin kirjoitetut lauseet muodostavat lohkon, jonka sisällä lauseet

Lisätiedot

w + x + y + z =4, wx + wy + wz + xy + xz + yz =2, wxy + wxz + wyz + xyz = 4, wxyz = 1.

w + x + y + z =4, wx + wy + wz + xy + xz + yz =2, wxy + wxz + wyz + xyz = 4, wxyz = 1. Kotitehtävät, tammikuu 2011 Vaikeampi sarja 1. Ratkaise yhtälöryhmä w + x + y + z =4, wx + wy + wz + xy + xz + yz =2, wxy + wxz + wyz + xyz = 4, wxyz = 1. Ratkaisu. Yhtälöryhmän ratkaisut (w, x, y, z)

Lisätiedot

1 Erilaisia tapoja järjestää

1 Erilaisia tapoja järjestää TIE-20100 Tietorakenteet ja algoritmit 1 1 Erilaisia tapoja järjestää Käsitellään seuraavaksi järjestämisalgoritmeja, jotka perustuvat muihin kuin vertailuun alkioiden oikean järjestyksen saamiseksi. Lisäksi

Lisätiedot

v 8 v 9 v 5 C v 3 v 4

v 8 v 9 v 5 C v 3 v 4 Verkot Verkko on (äärellinen) matemaattinen malli, joka koostuu pisteistä ja pisteitä toisiinsa yhdistävistä viivoista. Jokainen viiva yhdistää kaksi pistettä, jotka ovat viivan päätepisteitä. Esimerkiksi

Lisätiedot

Kuvan pienentäminen Paint.NET-kuvankäsittelyohjelmalla

Kuvan pienentäminen Paint.NET-kuvankäsittelyohjelmalla Kuvan pienentäminen Paint.NET-kuvankäsittelyohjelmalla Avaa Paint.NET tuplaklikkaamalla sen pikakuvaketta. Paint.NET avautuu tämän näköisenä. Edessä on tyhjä paperi. Saadaksesi auki kuvan, jota aiot pienentää

Lisätiedot

Algoritmit. Ohjelman tekemisen hahmottamisessa käytetään

Algoritmit. Ohjelman tekemisen hahmottamisessa käytetään Ohjelmointi Ohjelmoinnissa koneelle annetaan tarkkoja käskyjä siitä, mitä koneen tulisi tehdä. Ohjelmointikieliä on olemassa useita satoja. Ohjelmoinnissa on oleellista asioiden hyvä suunnittelu etukäteen.

Lisätiedot

8. Lajittelu, joukot ja valinta

8. Lajittelu, joukot ja valinta 8. Lajittelu, joukot ja valinta Yksi tietojenkäsittelyn klassisista tehtävistä on lajittelu (järjestäminen) (sorting) jo mekaanisten tietojenkäsittelylaitteiden ajalta. Lajiteltua tietoa tarvitaan lukemattomissa

Lisätiedot

a b c d + + + + + + + + +

a b c d + + + + + + + + + 28. 10. 2010!"$#&%(')'+*(#-,.*/1032/465$*784 /(9:*;9."$ *;5> *@9 a b c d 1. + + + 2. 3. 4. 5. 6. + + + + + + + + + + P1. Valitaan kannaksi sivu, jonka pituus on 4. Koska toinen jäljelle jäävistä sivuista

Lisätiedot

Ohjelmoinnin peruskurssien laaja oppimäärä

Ohjelmoinnin peruskurssien laaja oppimäärä Ohjelmoinnin peruskurssien laaja oppimäärä Luento 11: Rinnakkaisuus Riku Saikkonen (osa kalvoista on suoraan ei-laajan kurssin luennoista) 25. 4. 2012 Sisältö 1 Rinnakkaisuusmalleja: säie ja prosessi 2

Lisätiedot

HAAGA-HELIA heti09 1 (27) ICT05 Tiedonhallinta ja tietokannat O.Virkki 19.1.2010. Relaatiomalli

HAAGA-HELIA heti09 1 (27) ICT05 Tiedonhallinta ja tietokannat O.Virkki 19.1.2010. Relaatiomalli HAAGA-HELIA heti09 1 (27) Relaatiomalli Relaatiomalli... 2 Peruskäsitteet... 3 Relaatio... 5 Attribuutti ja arvojoukko... 6 Monikko... 7 Säännöt... 8 Arvojoukkoeheyssääntö... 8 Pääavain ja yksilön eheyssääntö...

Lisätiedot

Pythagoraan polku 16.4.2011

Pythagoraan polku 16.4.2011 Pythagoraan polku 6.4.20. Todista väittämä: Jos tasakylkisen kolmion toista kylkeä jatketaan omalla pituudellaan huipun toiselle puolelle ja jatkeen päätepiste yhdistetään kannan toisen päätepisteen kanssa,

Lisätiedot

GDAL ja WFS: suora muunnos ogr2ogr-ohjelmalla

GDAL ja WFS: suora muunnos ogr2ogr-ohjelmalla GDAL ja WFS: suora muunnos ogr2ogr-ohjelmalla Viimeksi muokattu 30. tammikuuta 2012 GDAL tukee WFS-palvelun käyttämistä vektoritietolähteenä yhtenä muiden joukossa. WFS-ajurin käyttöohjeet löytyvät osoitteesta

Lisätiedot

Tehtävä: FIL Tiedostopolut

Tehtävä: FIL Tiedostopolut Tehtävä: FIL Tiedostopolut finnish BOI 2015, päivä 2. Muistiraja: 256 MB. 1.05.2015 Jarkka pitää vaarallisesta elämästä. Hän juoksee saksien kanssa, lähettää ratkaisuja kisatehtäviin testaamatta esimerkkisyötteillä

Lisätiedot

DVD-RAM-levyjen käyttö

DVD-RAM-levyjen käyttö Tämä opas sisältää vähimmäistiedot, joita tarvitaan DVD-RAM-levyjen käyttöön DVD MULTI -asemassa Windows 98/Me/2000 -käyttöjärjestelmässä. Windows, Windows NT ja MS-DOS ovat Microsoft Corporationin rekisteröityjä

Lisätiedot

RATKI 1.0 Käyttäjän ohje

RATKI 1.0 Käyttäjän ohje RATKI RATKI 1.0 Käyttäjän ohje Ohje 0.5 Luottamuksellinen Vastuuhenkilö Petri Ahola Sisällysluettelo 1. Yleistä... 3 1.1. Kuvaus... 3 1.2. Esitiedot... 3 1.3. RATKIn käyttöoikeuksien hankinta... 3 1.4.

Lisätiedot

Digitointi aloitetaan vuodesta 1860 alkaen. Kirjamuotoiset kirkonkirjat digitoidaan perhelehtiin asti.

Digitointi aloitetaan vuodesta 1860 alkaen. Kirjamuotoiset kirkonkirjat digitoidaan perhelehtiin asti. hankinnan nimeäminen.pdf 1. Digitoitavat kirjatyypit Kirkon yhteisen jäsentietojärjestelmän DIGI-järjestelmään tullaan digitoimaan erityyppisiä kirjoja, joiden metatietoja järjestelmään tullaan tallentamaan.

Lisätiedot

Neljän alkion kunta, solitaire-peli ja

Neljän alkion kunta, solitaire-peli ja Neljän alkion kunta, solitaire-peli ja taikaneliöt Kalle Ranto ja Petri Rosendahl Matematiikan laitos, Turun yliopisto Nykyisissä tietoliikennesovelluksissa käytetään paljon tekniikoita, jotka perustuvat

Lisätiedot

Liitokset - haut useaan tauluun

Liitokset - haut useaan tauluun Liitokset Liitokset - haut useaan tauluun Tavallisin liitos on valintaliitos ehtona =,!=, yhtäläisyysliitos (=) yleisin (vrt. Inner join) taulut liitetään toisiinsa yleensä avaimilla (perus-

Lisätiedot

Sisällys. 11. Javan toistorakenteet. Laskurimuuttujat. Yleistä

Sisällys. 11. Javan toistorakenteet. Laskurimuuttujat. Yleistä Sisällys 11. Javan toistorakenteet Laskuri- ja lippumuuttujat.. Tyypillisiä ohjelmointivirheitä: Silmukan rajat asetettu kierroksen verran väärin. Ikuinen silmukka. Silmukoinnin lopettaminen break-lauseella.

Lisätiedot

TIETOKANTOJEN PERUSTEET OSIO 14 MARKKU SUNI

TIETOKANTOJEN PERUSTEET OSIO 14 MARKKU SUNI TIETOKANTOJEN PERUSTEET OSIO 14 MARKKU SUNI Tavoite: Suunnitella käyttäjien tarvitsemat turvallisuusmekanismit ja säännöt. Toisin sanoen: tehdä tietokannasta turvallinen ja luotettava. Muistutus: Tietokanta

Lisätiedot