T Transaktionhallinta tietokantajärjestelmissä

Koko: px
Aloita esitys sivulta:

Download "T-106.5220 Transaktionhallinta tietokantajärjestelmissä"

Transkriptio

1 Opetusmoniste T 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 Osa 4: Transaktioiden peruutus ja tietokannan elvytys häiriöstä Osa 5: Transaktioiden eristyvyys Osa 6: Transaktioiden samanaikaisuuden hallinta Osa 7: Muita transaktioiden hallintamenetelmiä

2 Looginen tietokanta ja transaktiot A. Silberschatz, H. F. Korth & S. Sudarshan: Database System Concepts. Fifth Edition. McGraw-Hill, 2006, sivut 22 23, luvun 1 (introduction) kohta kohta 1.9 (transaction management); sivut , luku 3 (SQL); sivut , luvun 4 (advanced SQL) kohta 4.4 (embedded SQL); sivut , luvun 15 (transactions) kohdat 15.1 (transaction concept) ja 15.2 (transaction state); sivut , luvun 20 (database-system architectures) kohta 20.1 (centralized and client-server architectures). Transaktiopalvelin, looginen tietokanta, tiedonmäärittely- ja tiedonkäsittelykieli SQL, loogisen tietokannan eheys, transaktiot, transaktioiden tilat, oikeellinen transaktio, transaktion ACID-ominaisuudet, luku-kirjoitusmalli, avainvälimalli, peruutuspisteet ja osittaisperuutus, monirakeisuus. Transaktiopalvelin Useimmat relaatiotietokannan hallintajärjestelmät ovat ns. transaktiopalvelimia (transaction server) eli kyselypalvelimia (query server). Transaktiopalvelin tarjoaa liittymän, jonka välityksellä asiakassovellukset voivat lähettää palvelimelle tietokantaoperaatioiden (kyselyiden ja päivitysten) suorituspyyntöjä. Palvelin palauttaa asiakkaalle operaation tuloksen. Pyynnöt voidaan määrittää SQL-kielellä tai erityisellä sovellusohjelmointiliittymällä (esim. JDBC, ODBC tms). Transaktiopalvelinjärjestelmän toimintatapaa kutsutaan transaktionkuljetukseksi (transaction shipping) eli kyselynkuljetukseksi (query shipping) eli funktionkuljetukseksi (function shipping). 1 2 Palvelimessa toimii yksi tai useampi (yleensä monisäikeinen) palvelinprosessi (server process). Joissakin järjestelmissä käytetään omaa palvelinprosessia kunkin käyttäjän istunnolle (asiakassovelluprosessille). Yleisempi lienee käytäntö, jossa yksi palvelinprosessi palvelee useampaa käyttäjää niin, että kullekin käyttäjälle on osoitettu yksi palvelinprosessin säie (thread). Prosessin kaikki säikeet toimivat rinnakkain samassa virtuaalimuistitilassa. Sovellusprosessin yhteys palvelimeen luodaan sulautettuun SQL-kieleen (embedded SQL) kuuluvalla lauseella connect to s, missä s on palvelimen tunniste (verkko-osoite). Lause luo sovellusprosessia palvelemaan uuden säikeen tai osoittaa tehtävään vapaana olevan säikeen. Looginen tietokanta Looginen tietokanta (logical database) on loogisen tietokantamallin (useimmiten relaatiomallin tai oliomallin) mukainen kokoelma tietoalkioita. Tällä kurssilla käsittelemämme loogiset tietokannat ovat relaatiotietokantoja. Looginen tietokanta on siten kokoelma relaatioita (relation) eli tauluja (table), jotka ovat monikoiden (tuple) eli rivien (row) monijoukkoja. Monijoukko (multiset, bag) on (järjestämätön) joukko, jossa sama alkio voi esiintyä useita kertoja. Relaation monikot ovat kaikki saman kaavion mukaisia, so. samantyyppisiä. Relaatiokaavio (relation schema) r(z) sisältää kaavion nimen r ja attribuuttien nimi- ja tyyppimääritykset Z kaavioon asetettuine eheysrajoitteineen (avain- ja viite-eheys- ym. rajoitteet). 3 4 Tietokantasovellus näkee tietokannan loogisena tietokantana ja operoi siihen loogisen tietokannan operaatioita käyttäen. Relaatiotietokannan loogisia operaatioita ovat (mm.): Uuden monikon t lisääminen relaatioon r. Monikon t poistaminen relaatiosta r. Relaation r monikon t attribuutin A arvon päivittäminen. Relaation r ehdon C täyttävän monikon t lukeminen. Uuden relaation r(z) luonti tietokantaan. Operaation syötteenä on relaatiokaavio. Operaatio on mahdollinen, mikäli tietokannassa ei ennestään ole r-nimistä relaatiota. Operaatio luo tyhjän relaation, johon sitten voi kohdistaa muita operaatioita. Tyhjän relaation r hävittäminen tietokannasta. Loogisiin operaatioihin kuuluvat lisäksi transaktioiden hallinnassa tarvittavat operaatiot: aloituskirjaus, sitoutumispyyntö, keskeytyspyyntö ja peruutuksen päättymiskirjaus. Tarkasteltava loogisten operaatioiden joukko kiinnitetään myöhemmin tarkemmin transaktiomallin (avainvälimallin) määrittelyn yhteydessä. Olennaista on määritellä jokainen päivitysoperaatio siten, että myös sen käänteis- eli peruutusoperaatio (inverse action, undo action) on selvästi määriteltävissä ja voidaan niin muodoin järjestelmän toimesta automaattisesti suorittaa tarvittaessa (kun päivitys pitää perua). Tämä johtaakin yleensä monikkokohtaisiin operaatioihin, joille käänteisoperaatio on itsestään selvä; esimerkiksi monikon lisäyksen käänteisoperaatio on monikon poisto (ja kääntäen). 5 6

3 Tiedonmäärittely- ja tiedonkäsittelykieli SQL Loogiset operaatiot tuotetaan tietokannan hallintajärjestelmän tiedonkäsittelykielen (data manipulation language, DML) ja tiedonmäärittelykielen (data definition language, DDL) lauseilla. Useimmiten tiedonkäsittely- ja määrittelykielenä käytetään SQL:ää. Tiedonmäärittelykieleen kuuluviksi luetaan lauseet, jotka päivittävät tietokannan tietohakemistoa eli järjestelmäluetteloa (data dictionary, system catalog), kuten create table ja drop table. Tiedonkäsittelykieleen luetaan lauseet, jotka lukevat tai päivittävät tietokantarelaatioiden sisältöä, kuten insert, delete ja update. SQL-kielen lauseet tuottavat seuraavanlaisia loogisia operaatioita: Monikon t lisäys relaatioon r: insert into r values (t) Yksilöivän avaimen X arvolla x varustetun monikon poistaminen relaatiosta r: delete from r where X = x. Ehdon C täyttävien monikoiden poistaminen relaatiosta r: delete from r where C (sarja monikoiden poisto-operaatioita). 7 8 Relaation r yksilöivän avaimen X arvolla x varustetun monikon attribuutin A arvon muuttaminen e:ksi: update r set A = e where X = x, missä e on mahdollisesti A:n tai muita r:n attribuutteja sisältävä lauseke. Mikäli e sisältää A:n tai muita r:n attribuutteja, lause tuottaa avaimen X arvolla x varustetun monikon (x,v) lukuoperaation ja sitä seuraavan päivitysoperaation, jossa arvo v muutetaan e:n arvoksi. Mikäli e ei sisällä r:n attribuutteja, lause tuottaa vain päivitysoperaation. Relaation r ehdon C täyttävien monikoiden attribuutin A arvon muuttaminen e:ksi: update r set A = e where C. Lause tuottaa sarjan monikoiden päivitysoperaatioita (mikäli e ei sisällä r:n attribuutteja) tai sarjan luku- ja päivitysoperaatioiden pareja (mikäli e sisältää r:n attribuutin). Relaation r(z) ehdon C täyttävien monikoiden t projektiomonikoiden t[y ] lukeminen, kun Y Z, so. attribuuttijoukko Y on kaavion attribuuttijoukon Z osajoukko: select Y from r where C (sarja monikoiden lukuoperaatioita). Relaation r(z) luonti: create table r(z), missä Z on kaavion attribuuttien ja eheysrajoitteiden määrittely SQL:llä Loogisen tietokannan eheys Relaation r hävittäminen tietokannasta: drop table r. Mikäli r on tyhjä, lause tuottaa yhden loogisen operaation: hävitä tyhjä relaatio r tietokannasta. Mikäli r on epätyhjä, sisältönään monikot t 1,...,t n, lause tuottaa operaatiosarjan: poista monikko t 1 relaatiosta r; poista monikko t 2 relaatiosta r;... poista monikko t n relaatiosta r; hävitä tyhjä relaatio r tietokannasta. 11 Looginen tietokanta (tai oikeammin sen tila) on eheä (integral, consistent), jos se täyttää tietokannan kaavion sisältämät tyyppi- sekä rajoitemääritykset sekä muut tietokannalle asetetut eheysrajoitteet (integrity constraint). Relaatiotietokannassa kunkin relaation monikoiden attribuuttiarvojen tulee olla oikeaa tietotyyppiä ja relaation tulee toteuttaa kaavion avainrajoitteet (key constraint) eli (SQL:n) pääavainrajoitteet (primary key) ja yksilöivyysrajoitteet (unique). Relaatioiden välille määriteltyjen viite-eheysrajoitteiden (referential integrity constraint) eli (SQL:n) viiteavainrajoitteiden (foreign key) tulee niin ikään olla voimassa. SQL:llä tietokannan kaavioon määriteltävissä olevien eheysrajoitteiden lisäksi loogiseen tietokantaan liittyy yleensä sovellusaluekohtaisia rajoitteita, joiden tarkistaminen ja voimassa pysyttäminen on tietokantaa käyttävien sovellusten tehtävänä. 12

4 Transaktiot Loogisen tietokannan D transaktio eli tietokantatapahtuma (transaction) on D:hen kohdistuva loogisten tietokantaoperaatioiden sarja, jonka vaikutusten halutaan muodostavan yhden atomisen (so. jakamattoman) kokonaisuuden. Tietokantasovelluksen ohjelmoija merkitsee ohjelmaan transaktioiden rajat: transaktio alkaa aloituskirjauksella (begin) ja päättyy sitoutumispyyntöön (commit) tai keskeytys- ja peruutuspyyntöön (abort tai rollback). SQL:ssä ei eksplisiittistä transaktion aloitusoperaatiota ole, vaan uuden transaktion katsotaan alkavan ensimmäisestä tietokantaoperaatiosta, joka ei vielä kuulu mihinkään transaktioon. Tarkastellaan relaatiota r(x,v ), missä attribuutti V on numeerinen. Millaisen transaktion tuottaa asiakassovellusohjelman osan exec sql update r set V = 2 V ; exec sql select sum(v ) from r; exec sql commit; suoritus, kun relaation r sisältönä suoritushetkellä on monikkojoukko {t 1,...,t n } (ja kun tätä ennen suoritettiin viimeksi SQL-lause commit tai rollback)? Asiakasprosessi lähettää palvelimelle yksitellen kunkin kolmen operaation (update, select, commit) suorituspyynnön jääden kunkin pyynnön jälkeen odottamaan vastausta update-operaation suorituspyyntö tuottaa palvelimella seuraavan operaatiojonon: aloita uusi transaktio T 1 ; lue relaation r ensimmäinen monikko t 1 ; päivitä t 1 :n V -attribuutin arvo v 1 kertomalla se kahdella; lue relaation r toinen monikko t 2 ; päivitä t 2 :n V -attribuutin arvo v 2 kertomalla se kahdella;... lue relaation r viimeinen monikko t n ; päivitä t n :n V -attribuutin arvo v n kertomalla se kahdella. Vastausviestinä on tieto update-operaation onnistumisesta. Koska SQL:n update r -lauseen tai select sum(v ) -kyselyn semantiikka ei kiinnitä r-monikoiden läpikäyntijärjestystä, palvelin valitsee tehokkuuden kannalta edullisimman, mikä arvattavasti on monikoiden fyysinen peräkkäisjärjestys r:n tiedostossa. select-operaation suorituspyyntö tuottaa palvelimella seuraavan operaatiojonon: lue relaation r ensimmäinen monikko t 1 ; lue relaation r toinen monikko t 2 ;... lue relaation r viimeinen monikko t n. Palvelin palauttaa asiakasprosesille operaation onnistumisviestin lisäksi myös operaation tuloksen (lasketun summan). Vastauksena commit-pyyntöön palvelin sitouttaa transaktion T 1, mikäli mahdollista, ja palauttaa sitoutumisen onnistumisesta tiedon sovellusprosessille Transaktiolta vaadittava ominaisuus atomisuus (atomicity) tarkoittaa, että joko (1) kaikki transaktion aikaansaamat muutokset loogisen tietokannan tilaan toteutuvat tai (2) yksikään muutos ei jää voimaan loogiseen tietokantaan. Transaktio, joka on suorittanut loppuun commit-operaation, on sitoutunut (committed). Sitoutuneelta transaktiolta vaaditaan atomisuuden lisäksi ominaisuus pysyvyys (durability), mikä tarkoittaa, että sitoutuneen transaktion aikaansaamien muutosten on toteuduttuva ja jäätävä pysyvästi voimaan loogiseen tietokantaan, mahdollisista häiriöistä huolimatta. Sitoutuneen transaktion tekemät päivitykset voi kumota ainoastaan ohjelmoimalla sitä varten uusi transaktio (tai uusia transaktioita). Esimerkkitransaktiomme T 1 päivittää relaation r kaikkien monikoiden V -attribuutin arvon kertomalla entisen arvon kahdella. Mikäli T 1 siis sitoutuu, r:n kaikkien monikoiden V -attribuutin päivityksen on jäätävä voimaan. Jos taas T 1 ei sitoudu esim. järjestelmähäiriön vuoksi, on r:n kaikkien monikoiden V -attribuutin arvojen jäätävä entiselleen, so. kahdella kertomatta. Päivitettyjen monikoiden V -arvot täytyy palauttaa ennalleen

5 Transaktioiden tilat Edellä määritelty transaktiokäsite sisältää vain sitoutuneen transaktion, so. transaktion, joka koostuu loogisten operaatioiden sarjasta BαC, missä B on transaktion aloituskirjaus (begin), α on jono normaaleja lukuja päivitysoperaatioita ja C on transaktion sitoutumispyyntö (commit). Operaatiojono α muodostaa transaktion etenemisvaiheen (forward-rolling phase). Transaktiota suoritetaan kuitenkin operaatio kerrallaan, ja transaktio ei välttämättä koskaan pääty sitoutumiseen, vaan voi sen sijaan joko itse keskeyttää ja peruuttaa itsensä (SQL-lauseella rollback) tai keskeytyä transaktiosta riippumattomasta syystä (esim. järjestelmähäiriöstä), jolloin järjestelmä peruuttaa transaktion tietokannan elvytysvaiheessa. Erotammekin neljä eri transaktiotyyppiä eli transaktion tilaa (transaction state): (1) etenevä transaktio, (2) sitoutunut transaktio, (3) peruuntuva transaktio ja (4) peruuntunut transaktio. Etenevä transaktio (forward-rolling transaction) koostuu operaatiosarjasta Bα, missä B on transaktion aloituskirjaus ja α jono etenemisvaiheen luku- ja päivitysoperaatioita eli ns. etenemisoperaatioita (forward action). Etenevää transaktiota voidaan edistää normaaleilla luku- ja päivitysoperaatioilla sekä sitoutumis- tai keskeytyspyynnöllä Peruuntuva transaktio (backward-rolling transaction) koostuu operaatiosarjasta BαβAβ 1, missä B on transaktion aloituskirjaus, αβ jono etenemisvaiheen luku- ja päivitysoperaatioita, A on transaktion keskeytyskirjaus (abort) ja β 1 on etenemisvaiheen operaatiojonon αβ loppuosan β peruutusjono. Operaatiojono β 1 muodostaa transaktion peruutusvaiheen (backwardrolling phase). Peruuntuva transaktio on peruuttanut loppuosan β etenemisvaiheen operaatioistaan; alkuosa α on vielä peruuttamatta. Etenemisvaiheen operaatiojonon β peruutusjono β 1 eli undo(β) koostuu β:n sisältämien päivitysoperaatioiden jonon o 1 o 2...o n operaatioiden o i käänteisoperaatioista o 1 i käänteisessä järjestyksessä o 1 n o 1 n 1...o 1 1. Etenemisvaiheen päivitysoperaation o käänteisoperaatio (inverse action) eli peruutusoperaatio (backward action) o 1 eli undo(o) määritellään operaatiokohtaisesti: undo(monikon t lisääminen r:ään) = monikon t poistaminen r:stä. undo(monikon t poistaminen r:stä) = monikon t lisääminen r:ään. undo(r:n monikon t attribuutin A arvon u päivittäminen v:ksi) = r:n monikon t attribuutin A arvon v päivittäminen u:ksi. undo(relaation r(z) luonti tietokantaan) = tyhjän relaation r(z) hävittäminen tietokannasta. undo(tyhjän relaation r(z) hävittäminen tietokannasta) = relaation r(z) luonti tietokantaan Toisin kuin etenevää transaktiota, peruuntuvaa transaktiota ei voida edistää mielivaltaisesti, vaan seuraavaksi suoritettava operaatio on aina tarkasti määrätty: seuraavaksi suoritetaan etenemisvaiheen viimeisen vielä peruuttamatta olevan päivitysoperaation käänteisoperaatio. Kun kaikki etenemisvaiheen päivitykset on peruutettu, kirjataan transaktio peruuntuneeksi. Peruuntunut transaktio eli peruutuksensa päättänyt transaktio (rolledback transaction) koostuu operaatiosarjasta: BαAα 1 C, missä B on transaktion aloituskirjaus, α jono etenemisvaiheen luku- ja päivitysoperaatioita, A on transaktion keskeytyskirjaus, α 1 on etenemisvaiheen operaatiojonon α peruutusjono ja C on transaktion peruutuksen päättymiskirjaus (rolled-back). Peruuntunut transaktio on siis peruutusvaiheensa α 1 tuloksena peruuttanut etenemisvaiheensa α kokonaan. 23 Peruuntuneella transaktiolla ei ole mitään vaikutusta loogisen tietokannan tilaan. Fyysisen tietokannan tila ei sitä vastoin välttämättä palaudu peruutuksessa entiselleen. Sitoutunut tai peruuntunut transaktio on päättynyt (terminated). Päättynyttä transaktiota ei enää voi edistää millään operaatiolla. Etenevä tai peruuntuva transaktio on aktiivinen (active). Peruuntuva tai peruuntunut transaktio on keskeytynyt (aborted). 24

6 Oikeellinen transaktio Tietokantasovelluksen laatijan tehtävänä on huolehtia siitä, että jokainen sovellusprosessin tuottama sitoutunut transaktio T on loogisesti oikeellinen (logically consistent): T säilyttää eheän loogisen tietokannan eheänä, kun T ajetaan yksinään häiriöttömässä tilassa. Transaktiot on luonnollisesti voitava ohjelmoida ottamatta huomioon fyysisen tietokannan rakennetta, muita samanaikaisia transaktioita sekä järjestelmähäiriöitä. Tietokannan hallintajärjestelmän tehtävänä on taata sekä loogisen että fyysisen tietokannan eheyden säilyminen, vaikka suorituksessa on samanaikaisesti useita loogisesti oikeellisia transaktioita ja järjestelmähäiriöitä voi esiintyä. Peruuntunut transaktio on aina triviaalisti loogisesti oikeellinen, tehtiinpä sen etenemisvaiheessa mitä tahansa ja olivatpa tietokannan eheysrajoitteet millaisia hyvänsä: peruutusvaihe joka tapauksessa peruuttaa kaikki etenemisvaiheen päivitykset. Etenevän transaktion ei ole tarpeen olla oikeellinen, ts. transaktion ei kaikissa etenevissä tiloissaan tarvitse olla oikeellinen: sellaisten eheysrajoitteiden, joiden voimassaolo tarkistetaan vasta transaktion sitoutumispisteessä, ei tietenkään tarvitse olla voimassa transaktion sisältämän päivitysoperaatiosarjan keskellä. Viimeistään juuri ennen sitoutumistaan transaktion on kuitenkin saatettava eheysrajoitteet voimaan Transaktion ACID-ominaisuudet Edellä on tullut määritellyksi kolme transaktioilta vaadittavista ACIDominaisuuksista: Atomisuus (atomicity): transaktion kaikki päivitykset jäävät voimaan tai mikään niistä ei jää voimaan; ominaisuutta ylläpitää järjestelmä. Oikeellisuus (consistency): transaktio (yksin häiriöttömässä tilassa suoritettuna) säilyttää eheän loogisen tietokannan eheänä; ominaisuutta ylläpitää transaktion ohjelmoija. Pysyvyys (durability): sitoutuneen transaktion päivitykset jäävät tietokantaan pysyvästi; ominaisuutta ylläpitää järjestelmä. Neljäs ominaisuus on: Eristyvyys (isolation): transaktiosta näyttää, ettei sen kanssa ole suorituksessa samanaikaisesti muita samoihin tietoalkioihin operoivia transaktioita; ominaisuutta ylläpitää järjestelmä. Luku-kirjoitusmalli Transaktionhallinnan yksityiskohtaista tarkastelua varten on tarpeen kiinnittää se tietokanta- ja transaktiomalli, jonka mukaisista operaatioista transaktiot koostuvat. Oletamme yksinkertaisuuden vuoksi, että looginen tietokantamme koostuu yhdestä kaavion r(xv ) mukaisesta relaatiosta. Relaation monikot ovat pareja (x, v), missä x on monikon yksilöivä avainarvo ja v on monikon arvo (so. monikon muiden attribuuttien arvot). Transaktiot operoivat r:n monikoihin (x,v) aina avainarvon x perusteella. Yksikertaisimmassa transaktiomallissa, ns. luku-kirjoitusmallissa (readwrite model) tietokannan r transaktio voi sisältää seuraavia operaatioita: B: transaktio alkaa (begins). R[x, v]: luetaan avainarvolla x varustettu monikko (x, v). Syöteparametrina annetaan avainarvo x. Operaatio hakee r:stä monikon (x, v). Jos monikkoa ei löydy, operaatio epäonnistuu. Operaatiota voidaan merkitä lyhyemmin R[x]. W[x,u,v]: kirjoitetaan avainarvolla x varustettu monikko. Syöteparametrina annetaan avainarvo x ja arvo v. Operaatio korvaa relaatiossa r olevan, avainarvolla x varustetun monikon arvon u arvolla v. Jos monikkoa ei löydy, operaatio epäonnistuu. Operaatiota voidaan merkitä lyhyemmin W[x,v] tai W[x]. C: etenevä transaktio sitoutuu (commits) tai keskeytynyt transaktio päättää peruutuksensa (completes its rollback). Esim. operaatiojono BR[x,u]R[y,v]W[z,w,u + v] on etenevä transaktio, joka lukee avainarvoilla x ja y varustettujen monikoiden arvot u ja v ja sijoittaa summan u+v avainarvolla z varustetun monikon arvoksi, kun avainarvolla z varustetun monikon entinen arvo on w. Operaatiojono on sitoutunut transaktio. BR[x,u]R[y,v]W[z,w,u + v]c A: transaktio keskeytyy (aborts)

7 Keskeytyneen transaktion peruutusvaiheessa suoritetaan etenemisvaiheen kirjoitusoperaatioiden käänteisoperaatiot (käänteisessä järjestyksessä). Operaation W[x,u,v] käänteisoperaatio W 1 [x,u,v] on W[x,v,u]. Operaatiojono BR[x,u]R[y,v]W[z,w,u + v]aw 1 [z,w,u + v] on peruuntuva keskeytynyt transaktio, joka on peruuttanut (ainoan) kirjoitusoperaationsa. Operaatiojono BR[x,u]R[y,v]W[z,w,u + v]aw 1 [z,w,u + v]c on peruutuksensa päättänyt keskeytynyt transaktio. Luku-kirjoitusmallissa ei voi esittää monikoiden lisäyksiä eikä poistoja. Kun kirjallisuudessa tarkastellaan luku-kirjoitusmalliin perustuvaa transaktionhallintaa, operaatioiden kohteina ovat monikoiden sijasta tarkemmin määrittelemättömät abstraktit tietoalkiot. Jos tietoalkioiksi valitaan loogisen tietokannan monikkokokoelmat, esim. relaatiotietokannan relaatiot, on mahdollista mallintaa monikoiden lisäykset ja poistot kyseisen kokoelman (relaation) kirjoitusoperaatioina. Vastaavasti jos tietoalkioiksi valitaan fyysisen tietokannan sivut, joille relaatioiden monikoita sijoitetaan, on mahdollista mallintaa monikoiden lisäykset ja poistot kyseisen sivun kirjoitusoperaatioina. Transaktio on kumminkin loogiseen tietokantaan liittyvä käsite, joten sen mallintaminen fyysisen tietokannan käsittein ei ole asianmukaista Kummassakin tapauksessa transaktionhallinta on varsin karkearakeista: lokiin on kirjattava kokonaisen relaation tai sivun muutoskirjauksia, ja samanaikaisuuden hallinnan synkroinointiyksikkönä, lukittavana kokonaisuutena, on kokonainen relaatio tai sivu. Nykyaikaisissa tietokannan hallintajärjestelmissä lokikirjaukset ja lukittavat kokonaisuudet ovat hienojakoisimmillaan yksittäisiä monikoita, jolloin transaktion T 1 päivittämää sivua voi toinen transaktio T 2 päivittää T 1 :n ollessa vielä aktiivisena. Transaktion T 2 aiheuttaman rakennemuutoksen seurauksena transaktion T 1 sivulla p päivittämä monikko voi siirtyä toiselle sivulle p transaktion T 1 ollessa vielä aktiivinen. Avainvälimalli Avainvälimalliksi (key-range model) kutsumassamme transaktiomallissa lukuoperaatiot ovat selausoperaatioita, joissa haetaan relaatiosta r avainarvojen suuruusjärjestyksessä ensimmäinen monikko tietyltä avainväliltä (key range). Mallin päivitysoperaatiot ovat monikoiden lisäyksiä ja poistoja. Monikoiden avainarvojen joukon oletetaan olevan täydellisesti järjestetty; järjestystä merkitään ja sen käänteisrelaatiota ; vastaavia epärefleksiivisiä järjestysrelaatioita merkintään tuttuun tapaan < ja >. Pienintä avainarvoa merkitään ja suurinta. Oletamme, etteivät nämä esiinny tietokannan missään monikossa Avainvälimallissa tietokannan r transaktio voi sisältää seuraavia operaatioita: B: transaktio alkaa (begins). Avainvälimalli on riittävä kuvaamaan tärkeimmät periaatteet, joita käytetään ns. fysiologisessa (fyysis-loogisessa) lokiperustaisessa elvytyksessä sekä monikkotason samanaikaisuuden hallinnassa (yksilöivän avaimen avainvälilukinta). Mallissa voidaan myös luontevasti esittää samanaikaisista avainväliselauksista ja yksittäisten monikoiden lisäyksistä ja poistoista johtuvat eristyvyysanomaliat (mm. haamuilmiö). R[x, z, v]: luetaan ensimmäinen hakuehdon täyttävä monikko (retrieve first tuple) (x, v). Syöteparametrina annetaan avainarvo z, z <. Operaatio hakee sen monikon (x,v), jonka avainarvo x on pienin ehdot x z ja (x,v) r täyttävä. Jos tällaista ei ole, palautetaan (, 0). Operaatiota voidaan merkitä lyhyemmin R[x, z], R[x, v] tai R[x]. R[x, >z, v]: luetaan seuraava monikko (retrieve next tuple) (x, v). Syöteparametrina annetaan avainarvo z, z <. Operaatio hakee sen monikon (x,v), jonka avainarvo x on pienin ehdot x > z ja (x, v) r täyttävä. Jos tällaista ei ole, palautetaan (, 0). Operaatiota voidaan merkitä lyhyemmin R[x,>z], R[x,v] tai R[x]

8 I[x, v]: lisätään monikko (insert tuple) (x, v). Syöteparametrina annetaan avainarvo x ja arvo v. Operaatio lisää monikon (x, v) relaatioon r. Mikäli r sisältää ennestään avainarvolla x varustetun monikon, operaatio epäonnistuu. Operaatiota voidaan merkitä lyhyemmin I[x]. D[x, v]: poistetaan monikko (delete tuple) (x, v). Syöteparametrina annetaan avainarvo x. Operaatio etsii relaatiosta r avainarvolla x varustetun monikon (x, v) ja poistaa sen. Jos monikkoa ei löydy, operaatio epäonnistuu. Operaatiota voidaan merkitä lyhyemmin D[x]. C: etenevä transaktio sitoutuu (commits) tai keskeytynyt transaktio päättää peruutuksensa (completes its rollback). A: transaktio keskeytyy (aborts). Lisäys- ja poisto-operaatioille o[ x] määritellään käänteisoperaatio o 1 [ x] seuraavasti: I 1 [x,v] = D[x,v]. D 1 [x,v] = I[x,v]. Esim. peruuntunut transaktio BR[x 1, x,v 1 ]R[x 2,>x 1,v 2 ]R[x 3,>x 2,v 3 ]D[x,v]I[x,v 1 + v 2 + v 3 ] AI 1 [x,v 1 + v 2 + v 3 ]D 1 [x,v]c = BR[x 1, x,v 1 ]R[x 2,>x 1,v 2 ]R[x 3,>x 2,v 3 ]D[x,v]I[x,v 1 +v 2 +v 3 ] AD[x,v 1 + v 2 + v 3 ]I[x,v]C lukee kolmen peräkkäisillä avainarvoilla varustetun monikon arvon, korvaa avainarvolla x varustetun monikon arvon luettujen monikoiden arvojen summalla, keskeytyy, peruuttaa päivityksensä ja päättää peruutuksensa Peruutuspisteet ja osittaisperuutus SQL:n transaktiomallissa on mahdollista ns. osittaisperuutus (partial rollback), jolla peruutetaan osa etenevän transaktion tekemistä päivityksistä peruuttamatta koko transaktiota. Osittaisperuutuksen jälkeen transaktio on edelleen etenevässä tilassa ja voi siis suorittaa uusia etenemisvaiheen operaatioita. Osittaisperuutuksessa peruutettava etenemisvaiheen osa määrätään määrittelemällä transaktion sisälle peruutuspisteitä (savepoint) SQL:n lauseella set savepoint P, missä P on peruutuspisteelle annettava nimi. SQL:n lauseella rollback to savepoint P palataan peruutuspisteeseen P, so. perutaan kaikki pisteen P jälkeen suoritetut (vielä perumatta olevat) etenemisvaiheen päivitykset. Osittaisperuutukset voivat olla sisäkkäisiä: insert into r values (x 1,v 1 ); set savepoint P 1 ; insert into r values (x 2,v 2 ); set savepoint P 2 ; insert into r values (x 3,v 3 ); rollback to savepoint P 2 ; insert into r values (x 4,v 4 ); rollback to savepoint P 1 ; insert into r values (x 5,v 5 ); commit. Lause rollback to savepoint P 2 poistaa relaatiosta r siihen lisätyn monikon (x 3,v 3 ). Lause rollback to savepoint P 1 poistaa relaatiosta r siihen lisätyt monikot (x 4,v 4 ) ja (x 2,v 2 ). Transaktion lopputuloksena relaatiossa r on siis monikot (x 1,v 1 ) ja (x 5,v 5 ) Lisätään transaktiomalliimme (avainvälimalliin) osittaisperuutukset. Tätä varten transaktiomalliin lisätään seuraavat operaatiot: S[P]: asetetaan peruutuspiste (set savepoint) P. A[P]: aloitetaan osittaisperuutus pisteeseen (begin partial rollback to savepoint) P. C[P]: päätetään osittaisperuutus pisteeseen (complete the partial rollback to savepoint) P. 41 Transaktion etenemisvaihe voi nyt olla mitä tahansa seuraavista muodoista: 1. Jono α operaatioita R, I, D ja S. 2. Muotoa αs[p]βa[p]β 1 C[P]γ oleva operaatiojono, missä α, β ja γ ovat muotoa (1) tai (2). 3. Muotoa αs[p]βδa[p]δ 1 oleva operaatiojono, missä α, β ja δ ovat muotoa (1) tai (2). Tapauksessa 2 osajono S[P]βA[P]β 1 C[P] esittää päätettyä peruutusta pisteeseen P. Tapauksessa 3 osajono S[P]βδA[P]δ 1 ilmaisee, että transaktio on parhaillaan peruuttamassa pisteeseen P. Operaatiojonon α peruutusjono (undo string) α 1 eli undo(α) määritellään nyt sen mukaan, minkä muotoinen se on: Muotoa 1 olevalle jonolle α peruutusjono α 1 määritellään kuten aiemmin. Muotoa 2 olevan jonon peruutusjono on γ 1 α 1. Muotoa 3 olevan jonon peruutusjono on β 1 C[P]α 1. 42

9 Monirakeisuus Lisätään tietokanta- ja transaktiomalliin monirakeisuutta (multiple granularity) niin, että monikoita voidaan ryhmitellä relaatioiksi. Tietokannan relaatiot muodostavat tunnisteidensa mukaan täydellisesti järjestetyn joukon {(r 1,R 1 ),...,(r ni,r ni )}, missä r i on relaation yksilöivä tunniste ja R i on relaation kaavio (= X i V i ). Relaation r monikon (x,v) yksilöi pari (r,x). Monikkokohtaiset operaatiot ovat nyt: R[r, x, θ z, v]: relaation r monikon (x, v) lukeminen. I[r,x,v]: monikon (x,v) lisääminen relaatioon r. Uusia operaatioita ovat: R[r,θr,R ]: relaation r kaavion selailu. I[r,R]: uuden relaation r(r) luonti tietokantaan; vastaa SQL:n operaatiota create table r(r). D[r, R]: (tyhjän) relaation r poistaminen tietokannasta; vastaa SQL:n operaatiota drop table r. Lisää rakeisuustasoja saataisiin ryhmittelemällä relaatioita edelleen (eri omistajien) tietokannoiksi, jolloin uusina operaatioina saataisiin mm. vastineet SQL:n create database ja destroy database -operaatioille. D[r,x,v]: monikon (x,v) poistaminen relaatiosta r

10 Fyysinen tietokanta A. Silberschatz, H. F. Korth & S. Sudarshan: Database System Concepts. Fifth Edition. McGraw-Hill, 2006, sivut 24 26, luvun 1 (introduction) kohta 1.11 (database architecture); sivut , luvun 11 (storage and file structure) kohdat 11.5 (storage access), 11.6 (file organization), 11.7 (organization of records in files) ja 11.8 (data dictionary storage); sivut , luvun 17 (recovery system) kohta 17.6 (buffer management); sivut , luvun 20 (database-system architectures) kohta (transaction-server process structure). Transaktiopalvelimen tietokokoelmat, transaktiopalvelimen prosessit, levyjaksot ja sivut, monikkotunniste, tiedostot ja segmentit, tietokantasivujen puskurointi, sivujen naulinnat SQL-operaation suorituksessa, naulintakutsun suoritus, tietokannan tila, tietokannan elvytys ja tarkistuspisteet, tiedoston vapaan tilan hallinta, fyysisen tietokannan eheys, salpauskäytäntö, konttauskäytäntö, fyysisen tietokannan rakennemuutokset, uuden sivun varaus tietokantarakenteeseen. 1 2 Transaktiopalvelimen tietokokoelmat Transaktiopalvelimella ylläpidetään kahta pysyvää tietokokoelmaa: Tietokannan relaatiot ja niiden hakemistot (index) sekä tietohakemistorelaatiot (system catalog, data dictionary) sisältävät tietolevyt (data disk). Tietokannan päivityksien lokikirjauksista koostuvat lokilevyt (log disk). Järjestelmän ollessa toiminnassa ylläpidetään mm. seuraavia katoavia rakenteita palvelimen eri prosessien yhteisessä keskusmuistissa (virtuaalimuistissa): Puskuriallas (buffer pool) eli tietokantapuskuri (database buffer) tietokantasivujen käsittelyä varten. Lokipuskuri (log buffer) lokitiedoston käsittelyä varten. Lukkotaulu (lock table) transaktioiden samanaikaisuuden hallintaa varten. Kyselysuunnitelmavälimuisti (query-plan cache), jossa säilytetään valmiiksi käännettyjä kyselysuunnitelmia (suoritussuunnitelmia), joita voidaan käyttää uudelleen, kun sama kysely tulee järjestelmään uudestaan. 3 4 Transaktiopalvelimen prosessit Yhteisessä muistissa säilytettävään tietoon operoi useita prosesseja: Jo aiemmin mainittuja palvelinprosesseja (server process) ja niiden säikeitä, jotka tuottavat sovellusprosessien lähettämien pyyntöjen perusteella transaktioita. Tietokannankirjoitusprosessi (database-writer process), joka vie päivitettyjä tietokantasivuja puskurialtaasta takaisin levylle. Lokinkirjoitusprosessi (log-writer process), joka vie lokikirjauksia lokipuskurista lokilevylle silloin, kun lokipuskuri täyttyy tai kun palvelinprosessi (transaktion sitoutumisen yhteydessä) pyytää lokin pakotusta levylle. Tarkistuspisteprosessi (checkpoint process) ottaa aika-ajoin ns. tarkistuspisteen, jossa eräitä katoavia tietoja viedään levylle. Prosessien valvontaprosessi (process-monitor process), joka valvoo järjestelmän muita prosesseja ja suorittaa romahtaneen prosessin vaatimat elvytystoimenpiteet, kuten keskeyttää ja peruuttaa suoritusvirheeseen päättyneen palvelinprosessin säikeen tuottaman transaktion. Lukkojenhallintaprosessi (lock-manager process), joka palvelee lukon varaus- ja vapautuspyyntöjä sekä huolehtii lukkiumien havaitsemisesta. 5 6

11 Levyjaksot ja sivut Prosessien välisten viestien vähentämiseksi useissa järjestelmissä palvelinprosessit toteuttavat lukituksen päivittämällä lukkotaulua suoraan eikä lähettämällä pyyntöjä lukkojenhallintaprosessille. Lukkotaulu täytyy silloin suojata keskinäisen poissulkemisen mekanismilla (semaforilla) kuten muutkin usean prosessin yhteiskäytössä olevat muistirakenteet. Fyysinen tietokanta (physical database) on levymuistiin sijoitettu kokoelma sivuja, jotka sisältävät tietueita. Sivu (page) on vakiokokoinen (joko 2, 4, 8, 16 tai 32 kilotavun) alue, joka on sijoitettu levymuistin yhteen jaksoon (tai useampaan peräkkäiseen jaksoon, mikäli sivu on jaksoa pitempi). Levyjakso eli -lohko (disk block) on yhdestä tai useammasta peräkkäisestä sektorista koostuva alue levypinnan uralla. Esim. jos jakson koko on 8 KB ja sektorin koko on 512 B, käsittää jakso 16 peräkkäistä sektoria. Levyllä yksittäinen sektori on pienin osoitettavissa oleva yksikkö. Sivun tuonti levyltä keskusmuistiin ja sivun vienti keskusmuistista levylle toteutetaan yhdellä levyoperaatiolla (yksi hakuvarren asetus ja sivuun kuuluvien peräkkäisten sektorien luku tai kirjoitus). 7 8 Looginen tietokanta toteutetaan fyysisen tietokannan avulla sijoittamalla tietokannan relaatioiden monikot sivuille. Monikoita sisältävää sivua kutsutaan tietosivuksi (data page). Tietosivujen lisäksi tarvitaan mm. tiedostorakenteesta riippuva joukko hakemisto- eli indeksisivuja (index page), joiden kautta tietosivuihin päästään tehokkaasti käsiksi. Tietokannan hallinnan tarpeisiin on vielä erinäisiä muita sivutyyppejä. Monikko toteutetaan tietosivulla yleensä yhtenä tietueena. Sivua pitempi monikko joudutaan jakamaan useaksi tietueeksi, jotka ketjutetaan toisiinsa. Sivulla on otsikkotietue, tietuealue ja tietuehakemisto. Sivun alun otsikkotietue (header) sisältää ainakin seuraavat tiedot: Sivun tyyppi, esim. relaatiotietosivu (relation data page, rivejä yhdestä relaatiosta), rypään tietosivu (cluster data page, toisiinsa liittyviä rivejä useasta relaatiosta), hakemistosivu (index page, relaation hakemistoon eli indeksiin kuuluva sivu), vapaata tilaa (free space, unallocated page), tietohakemistosivu (data-dictionary page), varauskuvaajasivu (storage-map page),... Relaation, hakemiston, tms. sisäinen tunniste Sivun otsikkotietueen sisältöä... Sivun tietuehakemiston alkioiden lukumäärä. Sivun sisäisen vapaan tilan hallitsemiseksi tarvittavaa tietoa: sivun tietuealueen pisimmän yhtenäisen vapaan alueen pituus ja sivun yhteenlaskettu vapaan tilan määrä. Sivun viimeisimmän päivityksen lokikirjauksen järjestysnumero (page log-sequence number, Page-LSN). Puskuroidun sivun Page- LSN-kenttää päivitetään aina sivun päivityksen yhteydessä; kenttään sijoitetaan päivitystä kuvaavan lokikirjauksen LSN. Sivun tietuealue sisältää sivun varsinaisen tiedon, tietosivun tapauksessa sivulle sijoitetut loogisen tietokannan monikot. Tietuealuetta täytetään sivun alusta lukien (otsikkotietueen jäljestä). Sivun tietuehakemisto on sivun lopussa sijaitseva taulukko m, jonka alkio m[i] sisältää tietuealueen i:nnen tietueen tavusiirtymän sivun alusta lukien. Tietuehakemisto kasvaa sivun lopusta alkuun päin

12 Monikkotunniste Jokaisella sivulla on yksikäsitteinen sivutunniste (page identifier, page-id, PID), joka yksilöi sivun fyysisessä tietokannassa: sivutunniste sisältää tiedoston numeron ja sivun järjestysnumeron tiedostossa. Hajautetussa tietokannassa täydellinen sivutunniste sisältää lisäksi järjestelmän asianomaisen pisteen (site, node) tunnisteen. Sivun tunnisteesta voidaan tiedostokuvaajan avulla määrätä sivun sisältävän levyjakson osoite. Sivun p tietuealueen i:nnen tietueen tietuetunniste (record identifier, record-id, RID) on pari (p,i), missä p on sivutunniste. Tietosivun p tietueeseen i sijoitetun monikon tietuetunnistetta (p, i) kutsutaan myös monikkotunnisteeksi (tuple identifier, tuple-id, TID). Monikkotunnisteeseen perustuva haku on nopein tapa hakea monikko esille: 1. Eristä monikkotunnisteesta (p, i) sivutunniste p ja naulitse sivu p puskuriin; olkoon p:n puskurikehyksen osoite b. 2. Hae monikko osoitteesta b + m[i]. Tietuehakemiston m kautta käyvän epäsuoran osoituksen ansiosta tietueen tunniste voidaan säilyttää samana, vaikka tietuetta siirreltäisiin sivun sisällä Tiedostot ja segmentit Tietokannan sivut ryhmitellään yleensä tiedostoihin (file) tai segmentteihin (segment). Ryhmittely perustuu usein tietueiden tyyppiin. Relaatiotietokannan yksittäinen relaatio sijoitetaan usein omaan tiedostoonsa. Joissakin järjestelmissä kahden tai useamman toisiinsa liittyvän relaation monikot voidaan kaikki sijoittaa samaan tiedostoon, ns. ryvästiedostoon (cluster file), niin että samalla liitosattribuutin arvolla varustetut monikot ovat fyysisesti lähekkäin. Hyvin suuri relaatio on pakko osittaa useampaan tiedostoon. Osittaminen usein myös helpottaa tietokannan hallintatoimenpiteitä sekä lisää käsittelyn tehokkuutta (rinnakkaisuus). Tiedosto tai segmentti koostuu yhdestä tai useammasta fyysisesti peräkkäisten sivujen levyalueesta (extent). Tiedostolle varataan tilaa tarvittaessa alue (tai muutama alue) kerrallaan. Useissa järjestelmissä loogisen tietokannan tietokokoelmat ryhmitellään ylimmällä tasolla tauluavaruuksiksi tai taulutiloiksi (tablespace) kutsutuiksi loogisiksi tallennusyksiköiksi. Jokainen tauluavaruus jakaantuu tiedostoihin eli segmentteihin Tietokantasivujen puskurointi Tietokantapalvelimen ollessa käynnissä on keskusmuistista varattuna tietokantasivujen käsittelyä varten yksi tai useampi puskuri. Puskuri (buffer) eli puskuriallas (buffer pool) on sivun kokoisista puskurikehyksistä (buffer frame) koostuva taulukko B[1, 2,..., N]. Mikäli tietokannassa esiintyy erikokoisia sivuja, on jokaista eri sivukokoa varten oltava eri puskuri. Puskurin koko N on yleensä kertaluokkaa pienempi kuin tietokannan sivujen lukumäärä, joten yleensä vain pieni osa tietokannan sivuista mahtuu kerrallaan puskuriin. Puskurin kokoa voidaan säädellä, mutta se voi harvoin olla enempää kuin joitakin tuhansia sivuja, kun taas tietokanta sisältää miljoonia, iso tietokanta jopa miljardeja sivuja. Jotta tietokannan sivun p sisältöä voitaisiin lukea tai kirjoittaa, on sivu tuotava levyltä johonkin vapaaseen puskurikehykseen B[i]. Sivun p käsittelyn ajaksi tietokantaa käsittelevä prosessi tai säie naulitsee (fix, pin) sivun puskuriin. Mikäli sivu p ei ole ennestään puskurissa, naulintakutsu fix(p) tuo p:n ensin levyltä puskuriin johonkin vapaaseen puskurikehykseen. Naulittua sivua ei puskurinhallitsimen ole lupa poistaa puskurista eikä siirtää toiseen kehykseen. Kutsuneelle prosessille välitetty sivun puskurikehyksen osoite säilyy siis voimassa naulinnan ajan. Sivun käsittelyn päätyttyä prosessi tai säie vapauttaa naulinnan (unfix, unpin)

13 Sivu voidaan poistaa puskurista vasta, kun se ei ole enää naulittuna millekään prosessille. Sivuja poistetaan puskurista yleensä vasta silloin, kun puskuri on täynnä ja levyltä tuotavalle sivulle p täytyy (fix(p)-kutsussa) osoittaa puskurikehys. Tällöin puskurista poistetaan LRU-periaatteen mukaisesti sivu q, joka on pisimpään ollut käyttämättä (so. lukematta tai päivittämättä); mikäli sivua q on päivitetty, se on ensin vietävä levylle. SQL-kyselyn toteutus sisältää sarjan sivujen fix- ja unfix-kutsupareja, jotka mahdollistavat operoinnin kyselyn viittaamiin sivuihin. Puskuroidun sivun puskurinohjauslohko (buffer control block) on puskurinhallitsimen ylläpitämä pieni keskusmuistirakenne, joka sisältää mm. sivun tunnisteen, sivun sijainnin puskurissa (kehyksen osoitteen), naulintalaskurin (monelleko prosessille tai säikeelle sivu naulittu), päivitysbitin (sivu päivitetty/päivittämätön), viimeisimpään päivitykseen liittyneen lokikirjauksen LSN:n sekä osoittimen kehykseen viittauksia valvovaan semaforiin. Ohjauslohkojen osoitteet talletetaan hajautustauluun, jota indeksoidaan sivun tunnisteella. Näin saadaan nopeasti selville, onko tietty sivu puskurissa vai ei ja mikä puskurikehys puskuroidulle sivulle on varattu Sivujen naulinnat SQL-operaation suorituksessa SQL-kyselyn select sum(salary) from employee suoritus transaktiossa T sisältää relaation employee tietosivujen läpikäynnin niiden fyysisessä tallennusjärjestyksessä; kunkin tietosivun p kohdalla suoritetaan mm. seuraavat toimenpiteet: 1. fix(p); 2. hae p:n puskurikehyksestä kaikkien employee-monikoiden salaryattribuutin arvot ja lisää ne summaan; Naulinnan yhteydessä sivu p täytyy vielä lukusalvata (read-latch) naulinnan ajaksi, jottei mikään muu prosessi pääse samanaikaisesti päivittämään sitä. Lisäksi relaatio employee tai kaikki sen monikot täytyy lukulukita (readlock, S-lock) transaktiolle T sen sitoutumiseen asti transaktion eristyvyyden takaamiseksi. Salpauskäytäntö esitetään jäljempänä, ja lukitukseen perustuva samanaikaisuuden hallinta myöhemmin tällä kurssilla. 3. unfix(p) SQL-päivityslauseen update employee set salary = salary where employee-id = I suoritus transaktiossa T sisältää mm: 1. fix(q)- ja unfix(q)-kutsuja relaation employee attribuuttiin employeeid perustuvan hakemiston sivuille työntekijän I-1234 tietosivun p paikallistamiseksi employee-relaatiossa; 2. fix(p); 3. paikallista työntekijän I-1234 employee-monikko sivulla p ja lisää sen salary-attribuutin arvoa 100:lla; Päivitettävän sivun naulinnan yhteydessä sivu täytyy vielä kirjoitussalvata (write-latch) naulinnan ajaksi, jottei mikään toinen prosessi pääse samanaikaisesti lukemaan tai päivittämään sitä. Lisäksi päivitettävä employee-monikko täytyy kirjoituslukita (write-lock, X-lock) transaktiolle T sen sitoutumiseen asti transaktion eristyvyyden takaamiseksi. 4. kirjaa päivitys lokiin transaktiolle T ja leimaa lokikirjauksen LSN sivun p Page-LSN-kenttään; 5. unfix(p)

14 Naulintakutsun suoritus fix(p)-kutsun suoritus (yksinkertaistettuna) sisältää seuraavat vaiheet: 1. Puskurinhallitsin etsii hajautustaulusta sivun p tunnistetta. Jos löytyy, mennään askeleeseen Etsitään puskurista kehys B[i], johon ei ole osoitettu sivua. Jos vapaata kehystä ei ole, poistetaan puskurista jokin naulitsematon sivu q. Jos q:ta on päivitetty (ts. q:n tuoretta sisältöä ei ole levyllä), viedään q ensin levylle q:n sivutunnisteen osoittamaan levyosoitteeseen. 3. Määrätään sivun p tunnisteesta levyjakson osoite. 4. Tuodaan sivu p levyltä, sijoitetaan se kehykseen B[i] ja tehdään p:lle puskurinohjauslohko, jossa päivitysbitti on nolla ja naulintalaskuri on nolla. 5. Lisätään p:n puskurinohjauslohkon naulintalaskuria yhdellä ja palautetaan kehyksen osoite kutsuneelle prosessille. Mikäli naulintakutsun askeleessa 2 kaikki kehykset ovat varattuja ja naulittuja, jää kutsua suorittava prosessi tai säie odottamaan vapaan kehyksen ilmaantumista, ts. sitä, että jokin toinen prosessi suorittaa kutsun unfix(q) jollekin puskuroidulle sivulle q. Naulinnan vapautuskutsu unfix(p) vähentää sivun p naulintalaskuria yhdellä Tietokannan tila Sivun p levyversio (disk version) on levyllä p:n levyosoitteessa olevan sivun sisältö. Fyysisen tietokannan levyversio on sen sivujen levyversioiden joukko. Loogisen tietokannan levyversio on vastaavan fyysisen tietokannan levyversion tietosivujen sisältämien monikoiden joukko. Puskuroidun sivun p puskuriversio (buffer version) on puskurissa oleva p:n sisältö. Sivun p nykyversio (current version) on p:n puskuriversion sisältö, jos p on puskuroituna, ja p:n levyversion sisältö muutoin. Fyysisen tietokannan tila (state) eli nykyversio tietyllä hetkellä on sen sivujen nykyversioiden sisältö kyseisellä hetkellä. Loogisen tietokannan tila eli nykyversio tietyllä hetkellä on sen relaatioiden sisältämien monikoiden joukko kyseisellä hetkellä, ts. vastaavan fyysisen tietokannan tietosivujen nykyversioiden sisältämien monikoiden joukko. Päivitetyn sivun puskuriversio eroaa sivun levyversiosta siihen asti, kun sivu viedään puskurista levylle. Levylleviennissä sivun levyversion päälle kirjoittuu sivun puskuriversio Tehokkuussyistä päivitettyä sivua ei viedä levylle välittömästi päivitysoperaation suorituksen jälkeen, eikä edes sivua päivittäneen transaktion sitouduttua. Usein käytettyä sivua pyritään pitämään puskurissa mahdollisimman pitkään (LRU-periaate). Sivun puskuriversioon voi näin ollen kertyä useita päivityksiä, ja sivun levyversio voi jäädä paljon jälkeen nykyversiosta. Esimerkiksi tuhat peräkkäistä transaktiota päivittää kukin vuorollaan jotakin tietosivulla p olevaa monikkoa ja sitoutuu. Sivua p ei viedä välillä kertaakaan levylle, joten sen levyversio on ainakin tuhat päivitystä jäljessä nykyversiosta. Tietokannan elvytys ja tarkistuspisteet Miten käy, jos järjestelmä romahtaa kesken transaktioiden käsittelyn, kun puskurissa on päivitettyjä sivuja? Keskusmuistin sisältö, mukaan lukien puskurit, menetetään. Sitoutuneiden transaktioiden tekemien päivitysten lokikirjaukset on kuitenkin sitoutumisen yhteydessä viety lokilevylle. Tietokannan elvytyksessä (restart recovery) tietokannan romahdusta edeltävä tila rekonstruoidaan lokikirjausten avulla tietokannan levyversiosta: lokikirjausten esittämät päivitykset suoritetaan levyltä puskuriin tuoduille sivuille. Lisäksi peruutetaan romahduksen vuoksi keskeytyneet transaktiot (ja saatetaan valmiiksi jo peruuntuvien transaktioiden peruutus)

15 Elvytyksen nopeuttamiseksi päivitettyjä sivuja viedään levylle aika ajoin (tyypillisesti 5 10 minuutin välein) otettavan tarkistuspisteen (checkpoint) yhteydessä. Juuri levylle viennin jälkeen sivun levyversio on samansisältöinen kuin sivun nykyversio (eli puskuriversio). Täydellisessä tarkistuspisteessä viedään levylle kaikki päivitetyt sivut puskurista. Täydellisen tarkistuspisteen ottamisen jälkeen tietokannan sivujen levyversiot ovat samansisältöisiä kuin tietokannan tilassa (mikäli tarkistuspisteen ottamisen aikana tietokannan päivitys on estetty). Täydellisen tarkistuspisteen ottaminen yleensä hidastaa transaktionkäsittelyä huomattavasti. Täydellistä tarkistuspistettä kevyempi menettely tehostaa elvytystä on epäsuora tarkistuspiste (indirect checkpoint) eli sumea tarkistuspiste (fuzzy checkpoint), jossa vain osa päivitetyistä sivuista viedään levylle. Minimaalisimmillaan sumeassa tarkistuspisteessä ei viedä yhtään sivua levylle, vaan kirjataan lokiin jokaisen puskurissa olevan päivitetyn sivun sivutunniste sekä sen lokikirjauksen LSN, josta lähtien sivun päivityksiä saattaa puuttua sivun levyversiosta. Tätä tietoa käytetään elvytyksessä sen selvittämiseen, minkä sivujen levyversioista mahdollisesti puuttuu päivityksiä. Asiaa tarkastellaan tarkemmin elvytystä käsittelevässä kurssin osassa Tiedoston vapaan tilan hallinta Edellä esitetty sivun sisäinen tietorakenne sisältää sivun sisäisen vapaan tilan hallinnan. Seuraavassa tarkastellaan, miten hallitaan koko tiedoston vapaata tilaa. Mille sivulle sijoitetaan relaatioon r lisättävä uusi monikko t? Joissakin tietokantarakenteissa, kuten ns. harvassa B-puussa, jonka lehtisivut sisältävät perustietueita, lisättävän monikon t sijoitussivu p määräytyy suoraan indeksointiattribuutin arvon mukaan. Mikäli t ei sovi indeksointiattribuutin arvon peittävälle sivulle p, sivu halkaistaan, so. sivun p monikot jaetaan p:n ja sille varattavan uuden tyhjän sisarussivun p kesken. B-puun lehtisivun tultua monikoiden poistojen seurauksena liian vajaaksi sivun monikot siirretään sisarussivulle ja tyhjentynyt sivu vapautetaan. Ns. tiheitä hakemistorakenteita käytettäessä perustietueet pidetään järjestämättömässä tiedostossa eli kasassa, ja hakemiston lehtisivuilla on tietueita, jotka sisältävät perustietueen indeksointiattribuutin arvon ja perustietueen tunnisteen. Edellisessä tapauksessa on monikon t lisäämistä varten löydettävä täysin tyhjä sivu p, joka linkitetään B-puun osaksi. Jälkimmäisessä tapauksessa on löydettävä sellainen kasan sivu p, jossa on tilaa monikolle t B-puun sivujen varausta ja vapauttamista varten voidaan pitää yllä tyhjien sivujen ketjua, johon B-puusta irrotetut, tyhjentyneet hakemisto- tai tietosivut sijoitetaan. Varattava uusi sivu otetaan tyhjien sivujen ketjusta, mikäli ketju on epätyhjä; muutoin B-puulle varattua tiedostoaluetta kasvatetaan varaamalla uusi yhtenäinen alue levyltä ja ottamalla sieltä käyttöön peräkkäisjärjestyksessä ensimmäinen sivu. Toinen tapa on ylläpitää varauskuvaajassa (space map) tietoa siitä, mikä tiedoston sivuista on vapaa ja mikä varattu. Tiedoston ensimmäisen sivun (sivun 0) täyttää e-alkioinen bittitaulukko, joka sisältää tiedoston e:n seuraavan sivun, so. sivujen 1,2,...,e muodostaman alueen varauskuvaajan. Varauskuvaajan i:nnen alkion arvo 1 osoittaa, että sivu i on varattu, ja arvo 0, että sivu i on vapaa. Neljän kilotavun sivulle mahtuu noin alkioinen varauskuvaaja. Yli sivuisen tiedoston vapaan tilan hallitsemiseksi tarvitaan useampia varauskuvaajia: sivun e + 1 täyttää varauskuvaaja, joka osoittaa seuraavien e:n sivun vapaan tilan, jne. Tiedostolle voidaan varata sivuja rypäissä, joissa on e sivua (tai sitä vähemmän)

16 Fyysisen tietokannan eheys Fyysinen tietokanta (tai oikeammin sen tila) on eheä, jos sen kaikkien sivujen sisäinen tietorakenne on eheä ja sivujen joukko muodostaa asianomaisen tiedostorakenteen mukaisen verkkorakenteen. Esim. tiedoston B-puurakenne määrittää tarkoin, millaisen verkkorakenteen sivut muodostavat, millaista tietoa rakenteen milläkin sivulla pitää olla, millaisten tasapainoehtojen tulee olla täytetty ja millaisella algoritmilla B-puun lehtisivuille tallennetut tietueet löydetään. Eheysvaatimukset koskevat ainoastaan tietokannan nykyversiota (kun rakennemuutoksia ei ole käynnissä). Tietokannan levyversion ei tarvitse olla eheä. Mikäli jokainen yksittäisen sivun levylle vienti tai levyltä tuonti sujuu aina virheettömästi, fyysisen tietokannan jokaisen sivun levyversio on kyllä sisäiseltä tietorakenteeltaan eheä. Sivujen levyversioiden joukko ei kuitenkaan välttämättä muodosta eheätä tietokantarakennetta. Esim. kun B-puun rakenne muuttuu täyttynyttä sivua p halkaistaessa, osa rakennemuutokseen osallistuneista sivuista (esim. p) on voitu viedä levylle, mutta osa sivuista (esim. p:n isä ja uusi sisarus) on viemättä levylle. Samoin loogisen tietokannan levyversio voi olla jatkuvasti epäeheä. Kun minkään aktiivisen transaktion tietokantaoperaatiota ei ole parhaillaan suoritettavana, on fyysisen tietokannan nykyversio eheä. Kun yhtään transaktiota ei ole aktiivisena, on myös loogisen tietokannan nykyversio eheä, edellyttäen, että kaikki transaktiot ovat oikeellisia ja ne on ajettu täysin eristyneesti Salpauskäytäntö Tietokannan tulee säilyä eheänä samanaikaisten prosessien siihen kohdistamissa operaatioissa. Fyysisen tietokannan eheyden säilyttämiseksi tietokantasivua käsittelevän prosessin tai säikeen on aina asianmukaisesti salvattava (latch) naulitsemansa sivu sen käsittelyn ajaksi. Lukusalpa (read latch) oikeuttaa prosessin lukemaan sivua ja estää kaikkia prosesseja samanaikaisesti päivittämästä sivua. Usealla prosessilla voi olla sivuun yhtä aikaa lukusalpa. Kirjoitussalpa (write latch) oikeuttaa prosessin sekä lukemaan että päivittämään sivua ja estää muita prosesseja samanaikaisesti lukemasta ja päivittämästä sivua. Salvan haltijan on vapautettava (unlatch) salpa sivun käytön jälkeen. Salpa toteutetaan puskuroituun sivuun liittyvän semaforin avulla. Järjestelmä tuottaa automaattisesti jokaisen SQL-kyselyn aiheuttaman sivun p viittauksen edelle kutsun rl(p) fix(p) & read-latch(p), mikäli p:tä ainoastaan luetaan tällä naulintakerralla, ja kutsun wl(p) fix(p) & write-latch(p), mikäli p:tä päivitetään tällä naulintakerralla. Salpaus ja naulinta vapautetaan tuottamalla kutsu ul(p) unlatch(p) & unfix(p) Kun prosessi pyytää lukusalpaa sivuun, joka parhaillaan on kirjoitussalvattuna toiselle prosessille, tai kirjoitussalpaa sivuun, joka on parhaillaan luku- tai kirjoitussalvattuna toiselle prosessille, salpaa pyytänyt prosessi pannaan odottamaan, kunnes toiset prosessit ovat vapauttaneet salpansa. Periaatteena on, ettei mikään prosessi saa pitää salpaa kovin pitkää aikaa, ja ettei prosessilla saa olla kuin pieni vakiomäärä salpoja samanaikaisesti. Salpojen odotuksista ei näet ylläpidetä mitään odotusverkkoa mahdollisten lukkiumien havaitsemiseksi, joten prosessien salpauskäytännön tulee olla lukkiumat estävä. Useimmiten prosessilla on kerrallaan hallussaan vain yksi salpa suojaamassa tietokantaoperaatiota. Kun prosessi haluaa lukea tietosivulla p sijaitsevan monikon, prosessi suorittaa kutsun rl(p), kopioi monikon sivun p puskurikehyksestä ja suorittaa sitten kutsun ul(p). Kun prosessi haluaa päivittää tietosivulla p sijaitsevaa monikkoa, prosessi suorittaa kutsun wl(p), päivittää monikkoa sivun p puskurikehyksessä, tuottaa päivityksestä lokikirjauksen, leimaa sen LSN:n sivun p Page-LSNkenttään ja suorittaa sitten kutsun ul(p)

17 Konttauskäytäntö Ketjutettujen tietokantarakenteiden läpikäynnissä prosessin on tarpeen pitää kaksi sivua yhtä aikaa salvattuina. Oletetaan, että sivut p 1,..., p n muodostavat yksisuuntaisen ketjun niin, että sivun p i otsikkotietueessa on aina sivun p i+1 tunniste, 1 i < n, ja sivun p n otsikkotietueessa on ketjun päättävä tyhjä linkki. Prosessilla on hallussaan sivun p 1 tunniste ja se haluaa lukea sivut ketjun mukaisessa järjestyksessä. Jotta prosessi voisi varmistua siitä, että sivulta p i sivulle p i+1 johtava linkki todella pysyy voimassa linkin käytön ajan, on salpauskäytännön oltava seuraava: rl(p 1 ); lue sivua p 1 ja ota p 1 :stä seuraavan sivun tunniste p 2 ; rl(p 2 ); ul(p 1 ); lue sivua p 2 ja ota p 2 :stä seuraavan sivun tunniste p 3 ; rl(p 3 ); ul(p 2 ); lue sivua p 3 ja ota p 3 :sta seuraavan sivun tunniste p 4 ;... rl(p n ); ul(p n 1 ); lue sivua p n ja ota p n :stä seuraavan sivun tunniste (tyhjä); ul(p n ) Fyysisen tietokannan rakennemuutokset Lisättäessä tietoa tietokantaan joudutaan toisinaan varaamaan uusia sivuja ja kytkemään ne osaksi tietokantarakennetta. Tätä salpauskäytäntöä kutsutaan konttauskäytännöksi (latch-coupling). Konttauskäytäntöä sovelletaan mm. haettaessa tietuetta B-puusta. Tietueen hakupolulla B-puun juurisivulta tietueen sisältävälle lehtisivulle pidetään aina isäsivua salvattuna niin kauan kuin on saatu lapsisivu salvatuksi. B-puun täyttyneen sivun halkaisu sisältää uuden sivun varauksen ja sivun linkittämisen osaksi B-puun rakennetta. Tiedon poisto voi vastaavasti supistaa tietokantarakennetta, ja tyhjentyneitä sivuja irrotetaan rakenteesta. Kutsumme näitä fyysisen tietokannan rakennetta muuttavia operaatioita rakennemuutoksiksi (structure modification). Koko rakenteen täytyy säilyä eheänä, vaikka samanaikaisesti on suorituksessa useita transaktioita ja niiden aiheuttamia rakennemuutoksia. Rakennemuutokselta täytyy vaatia atomisuus Normaalin transaktionkäsittelyn aikana fyysisen tietokannan eheys taataan pitämällä fyysisen tietokantarakenteen rakennemuutokseen osallistuvat sivut kirjoitussalvattuina rakennemuutoksen ajan. Esim. kun B-puun sivun p täyttynyt lapsisivu q halkaistaan varaamalla uusi tyhjä sivu q, niin kaikki nämä kolme sivua pidetään kirjoitussalvattuina halkaisun ajan, so. kunnes sivu q on saatu linkitetyksi sivun p lapseksi ja sivulta q on saatu siirretyksi puolet tietueista sivulle q. Häiriötilanteessa fyysisen tietokannan levyversio voi olla enemmän tai vähemmän epäajantasainen sekä tietosivujen päivitysten että rakennemuutosten osalta. Tietokannan levyversiossa ei välttämättä näy rakennemuutosta, joka on ehditty suorittaa valmiiksi ennen häiriötä, tai rakennemuutos näkyy vain osittain, so. osasta rakennemuutokseen osallistuvia sivuja levylle on ehtinyt sivun uusi versio ja osasta jäljellä on vanha versio. Uuden sivun varaus tietokantarakenteeseen Oletetaan, että looginen tietokanta (tai sen relaatio) toteutetaan kasana (heap), so. järjestämättömänä peräkkäistiedostona, jolle varataan uusia sivuja sitä mukaa kuin tietokantaan lisätään uusia monikoita. Kasaan kuuluvat sivut linkitetään niin, että sivun otsikkotietueessa on kasan seuraavan sivun tunniste. Kasan ensimmäisen sivun f otsikkotietueessa on myös kasan viimeisen sivun tunniste. Oletetaan, että transaktion T 1 operaatio I[x,v] saa aikaan uuden sivun q varauksen ja linkittämisen kasan loppuun, sen viimeisen sivun p seuraajaksi

18 Oletetaan, että seuraavaksi toinen transaktio T 2 suorittaa operaation I[y,w], missä y > x. Jotta rakenne säilyisi eheänä normaalin transaktionkäsittelyn kuluessa, täytyy varauskuvaajan sisältävä sivu s, kasan viimeinen sivu p, kasaan linkitettävä sivu q ja kasan ensimmäinen sivu f pitää kirjoitussalvattuina koko varausoperaation ajan. Kaikkia näitä sivuja näet päivitetään varausoperaatiossa; varattu sivu q, jolle monikko (x,v) on tarkoitus lisätä, alustetaan tyhjäksi tietosivuksi. Sivu q pidetään kirjoitussalvattuna, kunnes operaatio I[x, v] on loppuun suoritettu, ts. monikko (x,v) on lisätty sivulle q ja lisäys kirjattu lokiin. Kasarakenteessa tämäkin lisäysoperaatio suoritetaan sivulle q. Kun edellisen lisäyksen tehnyt transaktio T 1 on vapauttanut kirjoitussalpansa, pääsee T 2 kirjoitussalpaamaan sivun q ja lisäämään monikon (y,w) sinne. Sitten T 2 sitoutuu. T 1 on vielä aktiivinen ja haluaa nyt keskeytyä. T 1 :n peruuntumisvaiheessa suoritetaan käänteisoperaatio I 1 [x,v], joka poistaa monikon (x,v) sivulta q. Sitä vastoin ei sovi peruuttaa sivun q varausta. T 2 on näet ehtinyt jo tehdä oman päivityksensä sivulle q ja sitoutuakin. Siis rakennemuutoksen on annettava sitoutua siitä riippumatta, miten käy sen transaktion, joka rakennemuutoksen aiheutti

19 Lokin ylläpito ja puskurinhallinta C. Mohan, D. Haderle, B. Lindsay, H. Pirahesh & P. Schwartz: ARIES: a transaction recovery method supporting fine-granularity locking and partial rollbacks using write-ahead logging. ACM Transactions on Database Systems 17:1 (1992), ; kohdat 1.1 (logging, failures, and recovery methods), 1.2 (latches and locks), 1.4 (buffer management), 2 (goals), 3 (overview of ARIES), 4 (data structures), 5.1 (updates) ja 9 (nested top actions). A. Silberschatz, H. F. Korth & S. Sudarshan: Database System Concepts. Fifth Edition. McGraw-Hill, 2006, sivut , luvun 11 (storage and file structure) kohdat (buffer manager) ja (buffer-replacement policies); sivut , luvun 17 (recovery system) kohdat 17.2 (storage structure), 17.3 (recovery and atomicity) ja 17.4 (log-based recovery); sivut , kohta 17.6 (buffer management); sivut , kohta (logical undo logging); sivut , kohdan (ARIES) 1 alakohta (data structures). Tietokannan loki, fyysinen ja looginen lokikäytäntö, fysiologinen lokikäytäntö, aktiivisten transaktioiden taulu, avainvälimallin operaatioiden lokikirjaukset, rakennemuutosten lokikirjaukset, tietosivun päivittäminen, WAL-käytäntö, sitoutumiskäytäntö, puskurinhallintakäytännöt, levyhakujen vähentäminen. 2 Tietokannan loki Normaalin transaktionkäsittelyn aikana pidetään yllä lokia (log) seuraavia tarkoituksia varten: Transaktioiden peruutus tai osittaisperuutus: etenemisvaiheen päivitysten käänteisoperaatioiden tuottaminen. Häiriöistä elvytys: tietokannan levyversiosta puuttuvien päivitysten toisto ja transaktioiden peruutus. Lokiin kirjataan transaktioiden tietokantaan tekemät päivitykset, so. avainvälimallissa I-, D-, I 1 - ja D 1 -operaatiot, transaktioiden ohjausoperaatiot B, C, A, S[P], A[P] ja C[P], fyysisen tietokannan rakennemuutokset sekä elvytystä nopeuttavaa tietoa tarkistuspisteistä. Jokainen lokikirjaus saa yksikäsitteisen lokijärjestysnumeron (log sequence number, LSN). Keskitetyssä tietokannassa lokijärjestysnumeroiden jono on nouseva: jos transaktion T operaatio o on suoritettu transaktion T operaation o jälkeen, on LSN(o) < LSN(o ). Yhteislevy- tai sivupalvelinjärjestelmässä, jossa pisteet (asiakkaat) tuottavat yhteiseen tietokantaan kohdistamistaan operaatioista lokikirjauksia toisistaan riippumattomasti, ei lokijärjestysnumeroiden jono voi olla globaalisti nouseva. Samalle sivulle kohdistuvien päivitysten LSN-arvojen pitää kuitenkin aina muodostaa ajan suhteen nouseva jono. 3 4 Lokijärjestysnumerot pyritään tuottamaan siten, että ne toimivat myös suorina (tai lähes suorina) osoitteina lokikirjauksiin. Usein käytetään lokitiedoston numeron ja tavusiirtymän muodostamaa paria. Tavusiirtymä ilmoittaa lokikirjauksen ensimmäisen tavun numeron tiedoston alusta lukien; siitä saadaan tietueen sijaintisivu operaatiolla sivunumero = tavusiirtymä div sivun koko. Tavusiirtymän sijasta voitaisiin käyttää myös tietuetunnistetta (p,i), missä p on sivunumero (1,2,3,...) ja i tietueen järjestysnumero sivulla (sivun sisäisen tietuehakemiston indeksi). Silloin (p 1,i 1 ) < (p 2,i 2 ), jos joko p 1 < p 2 tai p 1 = p 2 ja i 1 < i 2. Transaktion T tuottama lokikirjaus varustetaan aina T :n tunnisteella ja T :lle kuuluvat lokikirjaukset linkitetään LSN:ien avulla toisiinsa. Transaktion T lokikirjauksen yleinen muoto on n: T,o[ x],n, missä o[ x] esittää kirjattavaa operaatiota ja sen argumentteja, n on kirjauksen LSN ja n on joko T :n edellisen lokikirjauksen LSN (etenemisoperaation kirjauksessa) tai T :n seuraavaksi peruutettavan operaation lokikirjauksen LSN (käänteisoperaation kirjauksessa). Transaktion T etenemisoperaatio o[ x] kirjataan lokitietueeseen siten, että operaatio voidaan tarvittaessa toistaa tai perua. Transaktion T peruutusvaiheessaan tai osittaisperuutuksessa suorittama käänteisoperaatio o 1 [ x] on tarpeen kirjata ainoastaan toistokelpoisesti: operaatio o 1 [ x] on lokikirjauksen perusteella voitava toistaa; peruutuskelpoisuus ei sitä vastoin ole tarpeen, koska käänteisoperaatioita ei koskaan peruta. Lokikirjauskäytännöt voidaan luokitella fyysisiin, loogisiin ja fysiologisiin lokikäytäntöihin. 5 6

20 Fyysinen ja looginen lokikäytäntö Arvoperustaisessa eli fyysisessä lokikäytännössä (value logging, physical logging) lokitietueeseen kirjataan päivityksen kohteena olevan sivun numero, päivitysoperaation vaikutuksesta muuttuneiden tavujen sijainti sivulla sekä päivityksen alkukuva ja jälkikuva. Alkukuva (before image) ilmoittaa tavujen sisällön ennen päivitystä ja jälkikuva (after image) tavujen sisällön päivityksen jälkeen. Esim. monikon (x,v) lisäyksestä sivulle p tietuepaikkaan i kirjattaisiin tietuepaikan i muuttuneet tavut sivun p tietuealueella sekä myös muuttuneet tavut sivun p tietuehakemistossa (indeksin i kohdalla) ja p:n otsikkotietueessa (tietuehakemiston alkioiden lukumäärän osoittavassa kentässä). Muuttuneet tavujonot osoitteineen (tavusiirtymä sivun alusta) ja alku- ja jälkikuvineen voidaan kirjata kaikki yhteen lokikirjaukseen, mikäli tämä mahtuu yhdelle sivulle. Voidaan myös käyttää useampaa lokitietuetta; esim. alkukuva voidaan kirjata yhteen ja jälkikuva toiseen. Lokiin fyysisesti kirjattu päivitysoperaatio voidaan toistaa naulitsemalla ja kirjoitussalpaamalla asianomainen sivu ja kirjoittamalla siihen jälkikuva, ja operaatio voidaan perua kirjoittamalla alkukuva. 7 8 Loogisessa lokikäytännössä (logical logging) lokitietueeseen kirjataan loogisia operaatioita, so. avainvälimallissamme operaatioita I[x,v], D[x,v], I 1 [x,v] ja D 1 [x,v]. Esim. transaktion T etenemisoperaatio I[x,v] kirjattaisiin n: T,I,x,v,n, missä n on T :n edellisen lokikirjauksen LSN. Looginen operaatio toistetaan suorittamalla operaatio uudestaan (loogisesti) ja perutaan suorittamalla operaation käänteisoperaatio (loogisesti). Esim. I[x,v] perutaan suorittamalla D[x,v]. Loogisesti kirjatun operaation toisto ja peruutus ovat tehottomia. Esim. toistetaan D[x,v]. Jos tietokannan rakenteena on kasa (järjestämätön peräkkäistiedosto), on siitä etsittävä avainarvolla x varustettu monikko konttaamalla kasan sivut läpi kirjoitussalpoja varaten, kunnes päästään monikon (x, v) sisältävälle sivulle. Jos tietokannan rakenteena on B-puu, on siitä etsittävä avainarvolla x varustettu monikko konttaamalla hakupolku B-puun juurisivulta avainarvon x peittävälle lehtisivulle Fysiologinen lokikäytäntö Nykyisissä tkhj:ssä sovelletaan yleensä fyysis-loogista eli fysiologista lokikäytäntöä (physiological logging), jossa lokikirjaukset ovat sivun osalta fyysisiä ja tietueen osalta loogisia. Esim. transaktion T harvan B-puun lehtisivulle p suorittama operaatio I[x,v] kirjataan n: T,I, p,x,v,n. Esitettävässä elvytysmenetelmässä (ARIES-algoritmissa) operaatioiden toistot suoritetaan aina täsmälleen lokikirjausjärjestyksessä eli operaatioiden alkuperäisessä suoritusjärjestyksessä. Fysiologisesti kirjatun operaation toisto voidaan niin muodoin aina toteuttaa fyysisesti, so. samalle sivulle p, johon se alkujaan tehtiin ja jonka sivun tunniste, p, on kirjattu lokitietueeseen. Fyysinen toisto on hyvin tehokasta, sillä operaation kohdetta ei tarvitse etsiä, vaan kohteen sijaintisivulle päästään suoraan riippumatta siitä, mikä fyysinen tietokantarakenne on kysymyksessä. Lokiin tietueella T,I, p,x,v,n kirjatun operaation I[x,v] toistossa sivu p naulitaan ja kirjoitussalvataan, lisätään monikko (x, v) sivulle p ja vapautetaan p:n salpaus ja naulinta. Lokiin tietueella T,D, p,x,v,n kirjatun operaation D[x,v] toistossa sivu p naulitaan ja kirjoitussalvataan, poistetaan sivulta p avainarvolla x varustettu monikko (joka on (x,v)) ja vapautetaan p:n salpaus ja naulinta

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

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

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

Tietokantarakenteet ja -algoritmit Harjoitukset 1-12

Tietokantarakenteet ja -algoritmit Harjoitukset 1-12 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

Lisätiedot

IIO30220 Database Management / Tietokannan hallinta TAPAHTUMIEN HALLINTA JOUNI HUOTARI (7.3.2012)

IIO30220 Database Management / Tietokannan hallinta TAPAHTUMIEN HALLINTA JOUNI HUOTARI (7.3.2012) IIO30220 Database Management / Tietokannan hallinta TAPAHTUMIEN HALLINTA JOUNI HUOTARI (7.3.2012) TEHTÄVIÄ/KYSYMYKSIÄ Määrittele tapahtuma (transaction) tapahtumien hallinta Mitä ovat tapahtuman ACIDominaisuudet?

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

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

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

Relaatiomalli ja -tietokanta

Relaatiomalli ja -tietokanta Relaatiomalli ja -tietokanta > Edgar. F. (Ted) Codd, IBM, 1969 < A Relational Model of Data for Large Shared Data Banks Communications of the ACM, Vol. 13, No. 6, June 1970, pp. 377-387. > 70-luvun lopulla

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

HELIA 1 (15) Outi Virkki Tietokantasuunnittelu 13.11.2000

HELIA 1 (15) Outi Virkki Tietokantasuunnittelu 13.11.2000 HELIA 1 (15) Luento 2.7 Toiminnallisuutta tietokantaan... 2 Deklaratiivinen eheysvalvonta... 2 Proseduraalinen eheysvalvonta... 3 Eheysvalvonnan suunnittelusta... 4 Sääntöjen määrittely... 4 Toteutusvaihtoehdot...

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

TIETOKANTOJEN PERUSTEET MARKKU SUNI

TIETOKANTOJEN PERUSTEET MARKKU SUNI TIETOKANTOJEN PERUSTEET MARKKU SUNI SQL - KIELI TIETOJEN MUOKKAUS MARKKU SUNI Tarkastellaan tauluissa olevien tietojen muokkausta muokkauskäskyjä: INSERT UPDATE DELETE Kysymys kuuluu: Voiko tietoja muokata

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

Tietojärjestelmä tuotantoympäristössä. Sovellusohjelmat Helsingin ammattikorkeakoulu Stadia / Tekniikka ja liikenne Vesa Ollikainen

Tietojärjestelmä tuotantoympäristössä. Sovellusohjelmat Helsingin ammattikorkeakoulu Stadia / Tekniikka ja liikenne Vesa Ollikainen Tietojärjestelmä tuotantoympäristössä Tausta ja tavoitteet Tausta Kurssilla on opiskeltu suunnittelemaan ja toteuttamaan tietokanta, joka on pieni perustuu selkeisiin vaatimuksiin on (yleensä) yhden samanaikaisen

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

Tietokannat. CREATE TABLE table(col1,col2,... ); Luo uuden taulun. CREATE TABLE opiskelijat(opnumero,etunimi,sukunimi);

Tietokannat. CREATE TABLE table(col1,col2,... ); Luo uuden taulun. CREATE TABLE opiskelijat(opnumero,etunimi,sukunimi); Tietokannat SQL-peruskomentojen pikaopas CREATE TABLE table(col1,col2,... ); Luo uuden taulun. CREATE TABLE opiskelijat(opnumero,etunimi,sukunimi); INSERT INTO table VALUES(val1,val2,... ); Lisää tauluun

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

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

HAAGA-HELIA TIKO-05 1 (19) ICT23a Tietokannan suunnittelu ja toteutus O.Virkki 4.9.2008

HAAGA-HELIA TIKO-05 1 (19) ICT23a Tietokannan suunnittelu ja toteutus O.Virkki 4.9.2008 HAAGA-HELIA TIKO-05 1 (19) Relaatiomalli Relaatiomalli... 2 Peruskäsitteet... 3 Relaatio... 5 Attribuutti ja arvojoukko... 6 Monikko... 7 Säännöt... 8 Yksilön eheyssääntö ja Pääavain... 9 Viite-eheyssääntö

Lisätiedot

Samanaikaisuuden hallinta. tietokantapalvelimessa. Tiedonhallintaa. Alkuper. versio: Jaakko Rantanen Pieniä korjauksia: Jouni Huotari 26.2.

Samanaikaisuuden hallinta. tietokantapalvelimessa. Tiedonhallintaa. Alkuper. versio: Jaakko Rantanen Pieniä korjauksia: Jouni Huotari 26.2. Samanaikaisuuden hallinta tietokantapalvelimessa Tiedonhallintaa Alkuper. versio: Jaakko Rantanen Pieniä korjauksia: Jouni Huotari 1 Transaktiot eli tapahtuma(sarja)t 2 Transaktio (transaction) on DBMSn

Lisätiedot

Tietomallit. Näkökulmat tietoon. Näkökulmat tietoon. Mitä malleja olisi tarjolla? Abstraktiotasot tiedon käsittelyssä

Tietomallit. Näkökulmat tietoon. Näkökulmat tietoon. Mitä malleja olisi tarjolla? Abstraktiotasot tiedon käsittelyssä Tietomallit Tietomallilla (data model) tarkoitetaan tiedon rakenteen ja tiedolle suoritettavan käsittelyn määrittelevää kehikkoa - käsitteistöä Tietoa voidaan tarkastella eri näkökulmista - eri abstraktiotasoilla

Lisätiedot

TIETOKANTOJEN PERUSTEET MARKKU SUNI

TIETOKANTOJEN PERUSTEET MARKKU SUNI TIETOKANTOJEN PERUSTEET MARKKU SUNI Tarkastellaan tietokantojen perusominaisuuksia taulujen suhteita toisiinsa tietokantojen suunnittelun alkeita Id enimi snimi muuta 1 Aki Joki xxx 2 Esa Elo yyy Id katuos

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

Maiju Mykkänen (D6297@jamk.fi) Susanna Sällinen (E0941@jamk.fi)

Maiju Mykkänen (D6297@jamk.fi) Susanna Sällinen (E0941@jamk.fi) Maiju Mykkänen (D6297@jamk.fi) Susanna Sällinen (E0941@jamk.fi) Tietokannan hallinta-opintojakson selvitysraportti Huhtikuu 2010 Mediatekniikka ICT/Teknologia Tämän teosteoksen käyttöoikeutta koskee Creative

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

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

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

CSE-A1200 Tietokannat

CSE-A1200 Tietokannat CSE-A1200 Tietokannat 29.3.2016 CSE-A1200 Tietokannat 29.3.2016 1 / 40 Oppimistavoitteet: tämän luennon jälkeen Tiedät, miten tietokannan relaatioiden (taulujen) määrittelyt kirjoitetaan SQL:llä. Osaat

Lisätiedot

Johdanto Javaan ja tietokantojen käsittelyyn Java Database Connectivity (JDBC)

Johdanto Javaan ja tietokantojen käsittelyyn Java Database Connectivity (JDBC) HAAGA-HELIA ICT1TA006: Ohjelmointi 1 /5 Johdanto Javaan ja tietokantojen käsittelyyn Java Database Connectivity (JDBC) (Lähteet: Oracle java jdbc Tutorial, Arvo Lipitsäinen: Tietokannan käsittely JDBC:n

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

DOORS Word DOORS 29.04.2004. SoftQA Pekka Mäkinen Pekka.Makinen@softqa.fi

DOORS Word DOORS 29.04.2004. SoftQA Pekka Mäkinen Pekka.Makinen@softqa.fi DOORS Word DOORS 29.04.2004 SoftQA Pekka Mäkinen Pekka.Makinen@softqa.fi Tietojen siirto DOORSista ja DOORSiin Yhteistyökumppaneilla ei välttämättä ole käytössä Telelogic DOORS -ohjelmistoa, jolloin vaatimusten

Lisätiedot

Tiedonhallinnan perusteet. H11 Ovien ja kulun valvontajärjestelmän tietokanta

Tiedonhallinnan perusteet. H11 Ovien ja kulun valvontajärjestelmän tietokanta Tiedonhallinnan perusteet H11 Ovien ja kulun valvontajärjestelmän tietokanta Nimi: Mikko Haapanen Opiskelijanumero: 0900568 Ryhmä: T09L Työ tehty: 15.3.2010 Mikko Haapanen 15.3.2010 1(7) 1. Asiakasvaatimukset

Lisätiedot

MUITA TIETOKANTAOBJEKTEJA NÄKYMÄT, SYNONYYMIT, INDEKSOINTI, VALTUUDET JA SYSTEEMIHAKEMISTO

MUITA TIETOKANTAOBJEKTEJA NÄKYMÄT, SYNONYYMIT, INDEKSOINTI, VALTUUDET JA SYSTEEMIHAKEMISTO MUITA TIETOKANTAOBJEKTEJA NÄKYMÄT, SYNONYYMIT, INDEKSOINTI, VALTUUDET JA SYSTEEMIHAKEMISTO NÄKYMÄT Näkymä (view) on looginen näyte tietokannan tauluista tai näkymistä Näkymä ei voi sisältää SELECT INTO,

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

Opettajana Mika Sorsa, mika.sorsa@koudata.fi, HAMK:n ammatillisen opettajakoulutuksen opetusharjoittelija

Opettajana Mika Sorsa, mika.sorsa@koudata.fi, HAMK:n ammatillisen opettajakoulutuksen opetusharjoittelija Opettajana Mika Sorsa, mika.sorsa@koudata.fi, HAMK:n ammatillisen opettajakoulutuksen opetusharjoittelija Opintojaksolla: keskitytään relaatiotietokantojen teoriaan ja toimintaan SQL-kieli kyselykielenä

Lisätiedot

HELIA 1 (11) Outi Virkki Tiedonhallinta 4.11.2000

HELIA 1 (11) Outi Virkki Tiedonhallinta 4.11.2000 HELIA 1 (11) Access 1 ACCESS...2 Yleistä...2 Access-tietokanta...3 Perusobjektit...3 Taulu...5 Kysely...7 Lomake...9 Raportti...10 Makro...11 Moduli...11 HELIA 2 (11) ACCESS Yleistä Relaatiotietokantatyyppinen

Lisätiedot

HELIA 1 (19) Outi Virkki Tietokantasuunnittelu 9.3.2001

HELIA 1 (19) Outi Virkki Tietokantasuunnittelu 9.3.2001 HELIA 1 (19) Luento 11 Eheyssäännöt (Integrity Constraints)... 2 Eheyden valvonta... 3 Yksilön eheyssääntö... 4 Arvojoukkoeheyssäännöt... 5 Null-arvoista... 6 Viite-eheyssäännöt... 7 Emorelaation päivitys...

Lisätiedot

Kortinhaltijat joilla on maksukeskeytys Maksuryhmään liitettyjen kortinhaltijoiden lukumäärä, joiden maksut ovat tilapäisesti keskeytetty.

Kortinhaltijat joilla on maksukeskeytys Maksuryhmään liitettyjen kortinhaltijoiden lukumäärä, joiden maksut ovat tilapäisesti keskeytetty. 1(6) MAKSURYHMÄN HALLINTA Maksuryhmäkohtaiselle sivulle pääset klikkaamalla yksittäisen maksuryhmän nimeä verkkopalvelun etusivulla tai valitsemalla ryhmän Maksuryhmät - osion listalta. Sivun tiedot ja

Lisätiedot

Written by Administrator Monday, 05 September 2011 15:14 - Last Updated Thursday, 23 February 2012 13:36

Written by Administrator Monday, 05 September 2011 15:14 - Last Updated Thursday, 23 February 2012 13:36 !!!!! Relaatiotietokannat ovat vallanneet markkinat tietokantojen osalta. Flat file on jäänyt siinä kehityksessä jalkoihin. Mutta sillä on kuitenkin tiettyjä etuja, joten ei se ole täysin kuollut. Flat

Lisätiedot

TIETOKANTOJEN PERUSTEET OSIO 11 MARKKU SUNI

TIETOKANTOJEN PERUSTEET OSIO 11 MARKKU SUNI TIETOKANTOJEN PERUSTEET OSIO 11 MARKKU SUNI Tarkastellaan Tietokannan fyysistä suunnittelua Menetelmän vaihetta 4 Looginen suunoitelma muutetaan toimiviksi tauluiksi Id enimi snimi muuta 1 Aki Joki xxx

Lisätiedot

A274101 TIETORAKENTEET JA ALGORITMIT

A274101 TIETORAKENTEET JA ALGORITMIT A274101 TIETORAKENTEET JA ALGORITMIT PERUSTIETORAKENTEET LISTA, PINO, JONO, PAKKA ABSTRAKTI TIETOTYYPPI Tietotyyppi on abstrakti, kun se on määritelty (esim. matemaattisesti) ottamatta kantaa varsinaiseen

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

select tulostietomäärittely from taulukkeet [where valintaehdot] [group by ryhmitystekijät] [having ryhmärajoitteet] [order by järjestysperusta]

select tulostietomäärittely from taulukkeet [where valintaehdot] [group by ryhmitystekijät] [having ryhmärajoitteet] [order by järjestysperusta] SQL kysely Kyselyn yleisrakenne: select tulostietomäärittely from taulukkeet [where valintaehdot] [group by ryhmitystekijät] [having ryhmärajoitteet] [order by järjestysperusta] Kysely tuottaa nimettömän

Lisätiedot

HSMT Tietokannoista. Ville Leppänen. HSMT, c Ville Leppänen, IT, Turun yliopisto, 2008 p.1/32

HSMT Tietokannoista. Ville Leppänen. HSMT, c Ville Leppänen, IT, Turun yliopisto, 2008 p.1/32 HSMT Tietokannoista Ville Leppänen HSMT, c Ville Leppänen, IT, Turun yliopisto, 2008 p.1/32 Missä mennään... 1. Johdanto (1h) 2. Säikeet (2h) 3. Samanaikaisuudesta (2h) 4. Hajautetuista sovelluksista (1h)

Lisätiedot

Kirjasto Relaatiotietokannat Kevät 2001. Auvinen Annemari Niemi Anu Passoja Jonna Pulli Jari Tersa Tiina

Kirjasto Relaatiotietokannat Kevät 2001. Auvinen Annemari Niemi Anu Passoja Jonna Pulli Jari Tersa Tiina Kirjasto Kevät 2001 Auvinen Annemari Niemi Anu Harjoitustyö 7.4.2001 Sisällysluettelo 1. Yleiskuvaus... 3 2. Vaatimukset... 3 2.1. Toiminnalliset... 3 2.1.1. Sisäänkirjautuminen... 3 2.1.2. Nimikkeiden

Lisätiedot

Denormalisointia turvallisesti. Ougf syysseminaari 4.11.2010 Pörssitalo Helsinki Timo Raitalaakso

Denormalisointia turvallisesti. Ougf syysseminaari 4.11.2010 Pörssitalo Helsinki Timo Raitalaakso Denormalisointia turvallisesti Ougf syysseminaari 4.11.2010 Pörssitalo Helsinki Timo Raitalaakso Timo Raitalaakso Senior Database Specialist Solita Oy 2001- - 2001 Tampereen Teknillinen korkeakoulu Tietokannat

Lisätiedot

DOORSin Spreadsheet export/import

DOORSin Spreadsheet export/import DOORSin Spreadsheet export/import 17.10.2006 SoftQA Oy http/www.softqa.fi/ Pekka Mäkinen Pekka.Makinen@softqa.fi Tietojen siirto DOORSista ja DOORSiin Yhteistyökumppaneilla ei välttämättä ole käytössä

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

7.11.2006. Helsingin yliopisto/tktl Kyselykielet, s 2006 Relaatiokalkyylit. Harri Laine 1

7.11.2006. Helsingin yliopisto/tktl Kyselykielet, s 2006 Relaatiokalkyylit. Harri Laine 1 perusteita - relaatiokalkyylit perusteita - relaatiokalkyylit Relaatioalgebra on luonteeltaan proseduraalinen tapa käsitellä tietoa. Tiedon haetaan sarjaksi järjestettyjen operaatioiden avulla. Edellä

Lisätiedot

Tietokannat II -kurssin harjoitustyö

Tietokannat II -kurssin harjoitustyö Tietokannat II -kurssin harjoitustyö Jyri Lehtonen (72039), jkoleh@utu.fi Azad Hajipour (72187), azhaji@utu.fi 10.6.2007 Sisältö 1. Tietokannan kuvaus... 1 1.1 Tietokannan rakenne... 1 1.2 Relaatiokaava

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 25.2.2009 T-106.1208 Ohjelmoinnin perusteet Y 25.2.2009 1 / 34 Syötteessä useita lukuja samalla rivillä Seuraavassa esimerkissä käyttäjä antaa useita lukuja samalla

Lisätiedot

Tällä viikolla. Kotitehtävien läpikäynti Aloitetaan Pelifirman tietovaraston suunnittelu Jatketaan SQL-harjoituksia

Tällä viikolla. Kotitehtävien läpikäynti Aloitetaan Pelifirman tietovaraston suunnittelu Jatketaan SQL-harjoituksia Tällä viikolla Kotitehtävien läpikäynti Aloitetaan Pelifirman tietovaraston suunnittelu Jatketaan SQL-harjoituksia 1.) Mainitse tietokonepelistä (kuvitteellisesta tai todellisesta) esimerkkitilanteita,

Lisätiedot

Tietokannat. CREATE TABLE table(col1,col2,... ); Luo uuden taulun. CREATE TABLE opiskelijat(opnumero,etunimi,sukunimi);

Tietokannat. CREATE TABLE table(col1,col2,... ); Luo uuden taulun. CREATE TABLE opiskelijat(opnumero,etunimi,sukunimi); Tietokannat SQL-peruskomentojen pikaopas CREATE TABLE table(col1,col2,... ); Luo uuden taulun. CREATE TABLE opiskelijat(opnumero,etunimi,sukunimi); INSERT INTO table VALUES(val1,val2,... ); Lisää tauluun

Lisätiedot

Järjestelmäarkkitehtuuri (TK081702) Hajautettu tietokanta. Hajautuksen hyötyjä

Järjestelmäarkkitehtuuri (TK081702) Hajautettu tietokanta. Hajautuksen hyötyjä Järjestelmäarkkitehtuuri (TK081702) Hajautettu tietokanta Hajautettu tietokanta Jokainen hajautettu tietokanta muodostaa oman kokonaisuutensa Loogisesti yhtenäinen data on hajautettu tietokantoihin (eri

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

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

FYYSINEN SUUNNITTELU

FYYSINEN SUUNNITTELU IIO30120 DATABASE DESIGN / TIETOKANTOJEN SUUNNITTELU JA IIO30220 DATABASE MANAGEMENT / TIETOKANNAN HALLINTA FYYSINEN SUUNNITTELU KIRJAN HOVI, HUOTARI, LAHDENMÄKI: TIETOKANTOJEN SUUNNITTELU & INDEKSOINTI,

Lisätiedot

1 Aritmeettiset ja geometriset jonot

1 Aritmeettiset ja geometriset jonot 1 Aritmeettiset ja geometriset jonot Johdatus Johdatteleva esimerkki 1 Kasvutulille talletetaan vuoden jokaisen kuukauden alussa tammikuusta alkaen 100 euroa. Tilin nettokorkokanta on 6%. Korko lisätään

Lisätiedot

CSE-A1200 Tietokannat

CSE-A1200 Tietokannat CSE-A1200 Tietokannat 23.2.2016 CSE-A1200 Tietokannat 23.2.2016 1 / 36 Oppimistavoitteet: tämän luennon jälkeen Tunnet SQL:n perusteet ja osaat tehdä yksinkertaisia SQL-kyselyitä, esimerkiksi hakea relaatiosta

Lisätiedot

HELIA TIKO-05 1 (22) ICT03D Tieto ja tiedon varastointi E.Räty, O.Virkki 9.3.2010

HELIA TIKO-05 1 (22) ICT03D Tieto ja tiedon varastointi E.Räty, O.Virkki 9.3.2010 HELIA TIKO-05 1 (22) SQL SQL... 2 Historiaa... 2 Standardit... 3 Käyttö... 4 Sql-komentojen kirjoittaminen... 5 DDL... 7 Tietokantaobjektien määrittely... 7 SQL:n tietotyypit... 8 Eheyssääntöjen määrittely...

Lisätiedot

17 BUDJETOINTI. Asiakaskohtainen Budjetti. 17.1 Ylläpito-ohjelma. Dafo Versio 10 BUDJETOINTI. Käyttöohje. BudgCust. 17.1.1 Yleistä

17 BUDJETOINTI. Asiakaskohtainen Budjetti. 17.1 Ylläpito-ohjelma. Dafo Versio 10 BUDJETOINTI. Käyttöohje. BudgCust. 17.1.1 Yleistä 17 Asiakaskohtainen Budjetti 17.1 Ylläpito-ohjelma 17.1.1 Yleistä BudgCust Ohjelmalla avataan järjestelmään asiakaskohtaisia budjetteja, jotka annetaan kuukausitasolla (oletus). 17.1.2 Parametrit Ohjelmaa

Lisätiedot

SQL:N PERUSTEET MARKKU SUNI

SQL:N PERUSTEET MARKKU SUNI SQL:N PERUSTEET MARKKU SUNI Relaatiomallisen tietokannan käsittely Tietojen saanti, talletus ja päivitys tapahtuu SQL-kielellä Yhtä operaatiota sanotaan kyselyksi (query) Kyselyjä voidaan laittaa peräkkäin

Lisätiedot

Relaation ominaisuuksia. Ominaisuuksia koskevia lauseita Sulkeumat. Joukossa X määritelty relaatio R on. (ir) irrefleksiivinen, jos x Rx kaikilla x X,

Relaation ominaisuuksia. Ominaisuuksia koskevia lauseita Sulkeumat. Joukossa X määritelty relaatio R on. (ir) irrefleksiivinen, jos x Rx kaikilla x X, Relaation Joukossa X määritelty relaatio R on (r) refleksiivinen, jos xrx kaikilla x X, (ir) irrefleksiivinen, jos x Rx kaikilla x X, Relaation Joukossa X määritelty relaatio R on (r) refleksiivinen, jos

Lisätiedot

SQL - Tietokannan ylläpito. SQL - Tietokannan ylläpito. SQL - Tietokannan ylläpito. SQL - Tietokannan ylläpito. SQL - Tietokannan ylläpito

SQL - Tietokannan ylläpito. SQL - Tietokannan ylläpito. SQL - Tietokannan ylläpito. SQL - Tietokannan ylläpito. SQL - Tietokannan ylläpito SQL sisältää operaatiot tietokannan sisällön muodostamiseen ja ylläpitoon: insert - uusien rivien vienti tauluun delete - rivien poisto update - rivien muutos Insert lauseella on kaksi muotoa: insert into

Lisätiedot

Tietokannat PERUSMATERIAALI Microsoft Access 2007 Kieliversio: suomi Materiaaliversio 1.0 päivitetty 8.6.2009 www.piuha.fi materiaalimyynti@piuha.

Tietokannat PERUSMATERIAALI Microsoft Access 2007 Kieliversio: suomi Materiaaliversio 1.0 päivitetty 8.6.2009 www.piuha.fi materiaalimyynti@piuha. Tietokannat PERUSMATERIAALI Microsoft Access 2007 Kieliversio: suomi Materiaaliversio 1.0 päivitetty 8.6.2009 materiaalimyynti@piuha.fi Tämän materiaalin kopioiminen ilman tekijän lupaa kielletään tekijänoikeuslain

Lisätiedot

1. (a) Seuraava algoritmi tutkii, onko jokin luku taulukossa monta kertaa:

1. (a) Seuraava algoritmi tutkii, onko jokin luku taulukossa monta kertaa: Tietorakenteet, laskuharjoitus 10, ratkaisuja 1. (a) Seuraava algoritmi tutkii, onko jokin luku taulukossa monta kertaa: SamaLuku(T ) 2 for i = 1 to T.length 1 3 if T [i] == T [i + 1] 4 return True 5 return

Lisätiedot

Versiohallinta ja Subversion. 26.9.2007 Maunu Tuomainen mttuomai@jyu.fi

Versiohallinta ja Subversion. 26.9.2007 Maunu Tuomainen mttuomai@jyu.fi Versiohallinta ja Subversion 26.9.2007 Maunu Tuomainen mttuomai@jyu.fi Versiohallinta yleisesti Ongelma: lähdekoodin ja muun materiaalin säilyttäminen siten, että: se on kaikkien saatavilla tuorein versio

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 2.3.2011 T-106.1208 Ohjelmoinnin perusteet Y 2.3.2011 1 / 39 Kertausta: tiedoston avaaminen Kun ohjelma haluaa lukea tai kirjoittaa tekstitiedostoon, on ohjelmalle

Lisätiedot

Fyysinen suunnittelu

Fyysinen suunnittelu Informaatioteknologian instituutti IIO30100 Tietokantojen suunnittelu Fyysinen suunnittelu kirjan Hovi, Huotari, Lahdenmäki: Tietokantojen suunnittelu & indeksointi, Docendo (2003, 2005) luvusta 9 Jouni

Lisätiedot

Käyttöjärjestelmät: prosessit

Käyttöjärjestelmät: prosessit Käyttöjärjestelmät: prosessit Teemu Saarelainen Tietotekniikka teemu.saarelainen@kyamk.fi Lähteet Stallings, W. Operating Systems Haikala, Järvinen, Käyttöjärjestelmät Eri Web-lähteet Käyttöjärjestelmä

Lisätiedot

3. Taulujen määrittely ja muuttaminen

3. Taulujen määrittely ja muuttaminen 3. Taulujen määrittely ja muuttaminen DDL: Taulujen luonti, muutos ja poisto DML: taulujen tietojen ylläpito Tapahtumien (transaktioiden) hallinta Näkymät, synonyymit ja muut tietokantaobjektit Taulujen

Lisätiedot

HELIA 1 (21) Outi Virkki Tietokantasuunnittelu 20.9.2005

HELIA 1 (21) Outi Virkki Tietokantasuunnittelu 20.9.2005 HELIA 1 (21) Luento 7 Relaatiomallin kertausta... 2 Peruskäsitteet... 2 Relaatio... 4 Määritelmä... 4 Relaatiokaava (Relation schema)... 4 Relaatioinstanssi (Relation instance)... 4 Attribuutti ja arvojoukko...

Lisätiedot

3. TAULUJEN MÄÄRITTELY JA MUUTTAMINEN

3. TAULUJEN MÄÄRITTELY JA MUUTTAMINEN 3. TAULUJEN MÄÄRITTELY JA MUUTTAMINEN DDL: TAULUJEN LUONTI, MUUTOS JA POISTO DML: TAULUJEN TIETOJEN YLLÄPITO TAPAHTUMIEN (TRANSAKTIOIDEN) HALLINTA NÄKYMÄT, SYNONYYMIT JA MUUT TIETOKANTAOBJEKTIT TAULUJEN

Lisätiedot

18 LIITTYMÄT MUIHIN JÄRJESTELMIIN

18 LIITTYMÄT MUIHIN JÄRJESTELMIIN 18 MUIHIN JÄRJESTELMIIN Prospekti DAFOon rakennettu liittymiä muiden ohjelmiston toimittajien järjestelmiin. Tässä yhteydessä ei tarkoiteta siirtotiedoston muodostamista, kuten reskontraan siirto tai lappujen

Lisätiedot

TIEDONHALLINTA - SYKSY 2011. Luento 12. Hannu Markkanen 28.-29.11.2011. 9/10/12 Helsinki Metropolia University of Applied Sciences

TIEDONHALLINTA - SYKSY 2011. Luento 12. Hannu Markkanen 28.-29.11.2011. 9/10/12 Helsinki Metropolia University of Applied Sciences TIEDONHALLINTA - SYKSY 2011 Kurssikoodi: Saapumisryhmä: Luento 12 TU00AA48-2002 TU10S1E Hannu Markkanen 28.-29.11.2011 9/10/12 Helsinki Metropolia University of Applied Sciences 1 Tietokantapahtumien hallinta

Lisätiedot

Amazon Web Services (AWS) on varmaankin maailman suosituin IaaS-tarjoaja. Lisäksi se tarjoaa erilaisia PaaS-kategoriaan kuuluvia palveluita.

Amazon Web Services (AWS) on varmaankin maailman suosituin IaaS-tarjoaja. Lisäksi se tarjoaa erilaisia PaaS-kategoriaan kuuluvia palveluita. 1 2 Amazon Web Services (AWS) on varmaankin maailman suosituin IaaS-tarjoaja. Lisäksi se tarjoaa erilaisia PaaS-kategoriaan kuuluvia palveluita. 3 4 Region vastaa palvelun fyysistä sijaintipaikkaa (AWS

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

HELIA TIKO-05 1 ( 12) ICT03D Tieto ja tiedon varastointi Martti Laiho 15.11.2005

HELIA TIKO-05 1 ( 12) ICT03D Tieto ja tiedon varastointi Martti Laiho 15.11.2005 HELIA TIKO-05 1 ( 12) Suorituskyky DBMS-järjestelmien keskeisiä laatuvaatimuksia ovat Tiedon luotettavuus (kattaen seuraavat: tietoturva, tiedon eheys, tiedon säilyvyys) Tiedon saatavuus (kattaen myös

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

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

TIETOKANNAT JOHDANTO

TIETOKANNAT JOHDANTO TIETOKANNAT JOHDANTO JOUNI HUOTARI & ARI HOVI 2000-2011 Tieto TAUSTAA Yritykselle tiedot ovat tärkeä resurssi päätöksenteon tukena (JIT) varastointi ja käyttö vaativat investointeja vrt. energia (lähde,

Lisätiedot

Tietokannat II -kurssin harjoitustyö

Tietokannat II -kurssin harjoitustyö Tietokannat II -kurssin harjoitustyö Olli Opiskelija (123), olli.opiskelija@foo.fi Maija Mallioppilas (321), maija.mallioppilas@foo.fi 13.3. 2007 1 Sisältö 1 Tietokannan kuvaus 3 1.1 Tietokannan rakenne..................................

Lisätiedot

2. Lisää Java-ohjelmoinnin alkeita. Muuttuja ja viittausmuuttuja (1/4) Muuttuja ja viittausmuuttuja (2/4)

2. Lisää Java-ohjelmoinnin alkeita. Muuttuja ja viittausmuuttuja (1/4) Muuttuja ja viittausmuuttuja (2/4) 2. Lisää Java-ohjelmoinnin alkeita Muuttuja ja viittausmuuttuja Vakio ja literaalivakio Sijoituslause Syötteen lukeminen ja Scanner-luokka 1 Muuttuja ja viittausmuuttuja (1/4) Edellä mainittiin, että String-tietotyyppi

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 9.2.2009 T-106.1208 Ohjelmoinnin perusteet Y 9.2.2009 1 / 35 Listat Esimerkki: halutaan kirjoittaa ohjelma, joka lukee käyttäjältä 30 lämpötilaa. Kun lämpötilat

Lisätiedot

Tiedon hajauttaminen ja hajautettu kyselynkäsittely

Tiedon hajauttaminen ja hajautettu kyselynkäsittely Tiedon hajauttaminen ja hajautettu kyselynkäsittely M. Kifer, A. Bernstein & P. M. Lewis: Database Systems. An Application-Oriented Approach. Complete Version. Second Edition. Pearson Addison Wesley, 2006;

Lisätiedot

OHJE KILPIEN LISÄÄMISESTÄ ATJN KILPIVARASTOON

OHJE KILPIEN LISÄÄMISESTÄ ATJN KILPIVARASTOON OHJE KILPIEN LISÄÄMISESTÄ ATJN KILPIVARASTOON Kilpiä voidaan joutua lisäämään kilpivarastotiedoksi mm. alla mainituissa tilanteissa. Sarjakilpivarastoon: - Tunnus on määräytynyt ajoneuvolle LTJn aikaisessa

Lisätiedot

2 Konekieli, aliohjelmat, keskeytykset

2 Konekieli, aliohjelmat, keskeytykset ITK145 Käyttöjärjestelmät, kesä 2005 Tenttitärppejä Tässä on lueteltu suurin piirtein kaikki vuosina 2003-2005 kurssin tenteissä kysytyt kysymykset, ja mukana on myös muutama uusi. Jokaisessa kysymyksessä

Lisätiedot

Työvälineohjelmistot KSAO Liiketalous 1

Työvälineohjelmistot KSAO Liiketalous 1 KSAO Liiketalous 1 Osat Tiedosto voidaan jakaa osiin ja jokainen osa muotoilla erikseen. Osa voi olla miten pitkä tahansa, yhdestä kappaleesta kokonaiseen tiedostoon. Osanvaihto näkyy näytöllä vaakasuorana

Lisätiedot

U U D E T O M I N A I S U U D E T V E R S I O S T A 2 0 1 3 V E R S I O O N 2 0 1 4

U U D E T O M I N A I S U U D E T V E R S I O S T A 2 0 1 3 V E R S I O O N 2 0 1 4 Sivu 1/5 U U D E T O M I N A I S U U D E T V E R S I O S T A 2 0 1 3 V E R S I O O N 2 0 1 4 Talgraf Raportointi, sivut 1-2 Talgraf Budjetointi, sivu 3 Talgraf Viewer, sivu 4 Talgraf Konserni, sivu 5 Express

Lisätiedot

Taulukot. Jukka Harju, Jukka Juslin 2006 1

Taulukot. Jukka Harju, Jukka Juslin 2006 1 Taulukot Jukka Harju, Jukka Juslin 2006 1 Taulukot Taulukot ovat olioita, jotka auttavat organisoimaan suuria määriä tietoa. Käsittelylistalla on: Taulukon tekeminen ja käyttö Rajojen tarkastus ja kapasiteetti

Lisätiedot

Numeropelissä 3x3-ruudukko sisältää luvut 1, 2,, 9. Tehtäväsi on järjestää ruudukko näin:

Numeropelissä 3x3-ruudukko sisältää luvut 1, 2,, 9. Tehtäväsi on järjestää ruudukko näin: A Numeropeli Numeropelissä 3x3-ruudukko sisältää luvut 1, 2,, 9. Tehtäväsi on järjestää ruudukko näin: 1 2 3 4 5 6 7 8 9 Voit jokaisella siirrolla vaihtaa keskenään kaksi vierekkäistä lukua vaaka- tai

Lisätiedot

4. Luento: Prosessit ja säikeets. Tommi Mikkonen, tommi.mikkonen@tut.fi

4. Luento: Prosessit ja säikeets. Tommi Mikkonen, tommi.mikkonen@tut.fi 4. Luento: Prosessit ja säikeets Tommi Mikkonen, tommi.mikkonen@tut.fi Agenda Prosessi Säikeet Keskeytykset Keskeytyskäsittely Käyttöjärjestelmäkutsut Prosessielementti Prosessin hallinta Suunnittelunäkökohtia

Lisätiedot

Maksuturva-palvelun rajapintakuvaus verkkokaupalle / MAKSUN PERUUTUS

Maksuturva-palvelun rajapintakuvaus verkkokaupalle / MAKSUN PERUUTUS Maksuturva-palvelun rajapintakuvaus verkkokaupalle / MAKSUN PERUUTUS Versio 4.0 2(5) Sisältö 1. Muutokset... 3 2. Maksun peruutuksen tiedot... 3 2.1 Kenttien selitteet Maksun peruutuksen tiedot... 4 3.

Lisätiedot

Järjestelmänvalvontaopas

Järjestelmänvalvontaopas Järjestelmänvalvontaopas Medtronic MiniMed Northridge, CA 91325 USA 800 646 4633 (800-MiniMed) 818 576 5555 www.minimed.com Edustaja EU:n alueella Medtronic B.V. Earl Bakkenstraat 10 6422 PJ Heerlen Alankomaat

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

Haka-palveluiden valvonta ja tilastointi AAIEye -työkalun avulla. Mika Suvanto, CSC. mika.suvanto@csc.fi 3.9.2009

Haka-palveluiden valvonta ja tilastointi AAIEye -työkalun avulla. Mika Suvanto, CSC. mika.suvanto@csc.fi 3.9.2009 Haka-palveluiden valvonta ja tilastointi AAIEye -työkalun avulla Mika Suvanto, CSC mika.suvanto@csc.fi 3.9.2009 Mitä se tekee? kaksi perustoimintoa: valvoo Haka-palveluiden toimintaa kirjautumalla niihin

Lisätiedot

IT K 1 45 K ä yt t öj ä rj estelmät

IT K 1 45 K ä yt t öj ä rj estelmät IT K 1 45 K ä yt t öj ä rj estelmät Tenttikysymyksiä ja vastauksia Aliohjelman suoritusperiaate, ts. selvitä pinon käyttö ja paluuarvon välittäminen (3p) 1. Ennen aliohjelman aloittamista kutsuja tallettaa

Lisätiedot

Osoitin ja viittaus C++:ssa

Osoitin ja viittaus C++:ssa Osoitin ja viittaus C++:ssa Osoitin yksinkertaiseen tietotyyppiin Osoitin on muuttuja, joka sisältää jonkin toisen samantyyppisen muuttujan osoitteen. Ohessa on esimerkkiohjelma, jossa määritellään kokonaislukumuuttuja

Lisätiedot

2. Käsiteanalyysi ja relaatiomalli

2. Käsiteanalyysi ja relaatiomalli 2. Käsiteanalyysi ja relaatiomalli lehtori Pasi Ranne Metropolia ammattikorkeakoulu E-mail: pasi.ranne@metropolia.fi sivu 1 Tietokannan suunnitteluprosessin osat sivu 2 Käsiteanalyysi ER-mallinnus, tietomallinnus

Lisätiedot