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

Looginen tietokanta ja transaktiot

Looginen tietokanta ja transaktiot 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

Lisätiedot

Transaktiopalvelimen rakenne, s. 43. Levyjaksot, sivut ja tiedostot, s. 46. Tietokantasivujen puskurointi, s. 53. Tietokannan tila, s. 57.

Transaktiopalvelimen rakenne, s. 43. Levyjaksot, sivut ja tiedostot, s. 46. Tietokantasivujen puskurointi, s. 53. Tietokannan tila, s. 57. 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

Lisätiedot

Tietokantarakenteet ja -algoritmit 3. harjoitus

Tietokantarakenteet ja -algoritmit 3. harjoitus Tietokantarakenteet ja -algoritmit 3. harjoitus Malliratkaisut 1. Analyysivaiheen alussa alustetaan aktiivisten transaktioiden taulu (tyhjä) ja päivitettyjen sivujen taulu (samoin tyhjä) tarkistuspisteestä.

Lisätiedot

Tietokantarakenteet ja -algoritmit 6. harjoitus

Tietokantarakenteet ja -algoritmit 6. harjoitus Tietokantarakenteet ja -algoritmit 6. harjoitus Malliratkaisut 1.. a) T1 = B I[b, r 2, 0, 0] IX-lukitaan järjestelmä s, tietokanta b ja relaatio (b, r 2 ) (tässä järjestyksessä), X-lukitaan (b, r 2, 0)

Lisätiedot

Tietokannan hallinta. Kevät 2004 Jan Lindström R&G Chapter 1

Tietokannan hallinta. Kevät 2004 Jan Lindström R&G Chapter 1 Tietokannan hallinta Kevät 2004 Jan Lindström R&G Chapter 1 Tietokannan hallinta 1. Johdanto (käsitteitä) 2. Tietokannan talletusrakenteet 3. Tietokannan hakemistorakenteet 4. Kyselyiden käsittely ja optimointi

Lisätiedot

HAAGA-HELIA Heti-09 1 (14) ICT05: Tiedonhallinta ja Tietokannnat O.Virkki Transaktionkäsittely

HAAGA-HELIA Heti-09 1 (14) ICT05: Tiedonhallinta ja Tietokannnat O.Virkki Transaktionkäsittely HAAGA-HELIA Heti-09 1 (14) Transaktionkäsittely Transaktion / Tapahtuman hallinta... 2 Taustaa... 3 Tapahtuman käsite... 5 ACID-ominaisuudet... 7 Samanaikaisuuden hallinta... 8 Lukitukset... 9 Toipuminen...

Lisätiedot

Transaktioiden peruutus ja tietokannan elvytys häiriöstä

Transaktioiden peruutus ja tietokannan elvytys häiriöstä Transaktioiden peruutus ja tietokannan elvytys häiriöstä C. Mohan, D. Haderle, B. Lindsay, H. Pirahesh & P. Schwartz: ARIES: a transaction recovery method supporting fine-granularity locking and partial

Lisätiedot

HELIA 1 (14) Outi Virkki Tiedonhallinta

HELIA 1 (14) Outi Virkki Tiedonhallinta HELIA 1 (14) Luento Transaktion / Tapahtuman hallinta... 2 Taustaa... 3 Tapahtuman käsite... 5 ACID-ominaisuudet... 7 Samanaikaisuuden hallinta... 8 Lukitukset... 9 Toipuminen... 10 Loki-tiedosto... 11

Lisätiedot

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

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

Lisätiedot

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

D B. Tiedostojen käsittely

D B. Tiedostojen käsittely Tietokantojen tietoja säilytetään yleensä apumuistissa, lähinnä levymuisteissa Apumuistiin tallentamisen merkittäviä etuja keskusmuistiin nähden ovat tiedon säilyvyys (virtakatkon yli) säilytyskapasiteetin

Lisätiedot

Tietokanta (database)

Tietokanta (database) Tietokanta Tietokanta (database) jotakin käyttötarkoitusta varten laadittu kokoelma toisiinsa liittyviä säilytettäviä tietoja 1 Tiedosto Ohjelmointikielissä apumuistiin tallennettuja tietoja käsitellään

Lisätiedot

Lokin ylläpito ja puskurinhallinta

Lokin ylläpito ja puskurinhallinta 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

Lisätiedot

jotakin käyttötarkoitusta varten laadittu kokoelma toisiinsa liittyviä säilytettäviä tietoja

jotakin käyttötarkoitusta varten laadittu kokoelma toisiinsa liittyviä säilytettäviä tietoja Tietokanta Tietokanta (database) jotakin käyttötarkoitusta varten laadittu kokoelma toisiinsa liittyviä säilytettäviä tietoja mikä tahansa tietokokoelma? --> erityispiirteitä Tietokanta vs. tiedosto 1

Lisätiedot

Seminaari: Keskusmuistitietokannat. Keskusmuistitietokantojen samanaikaisuuden hallinta Ilkka Pullinen

Seminaari: Keskusmuistitietokannat. Keskusmuistitietokantojen samanaikaisuuden hallinta Ilkka Pullinen Seminaari: Keskusmuistitietokannat Keskusmuistitietokantojen samanaikaisuuden hallinta Ilkka Pullinen Sisältö Johdanto Esiteltävien menetelmien taustoja Hajautetun tietokannan spekuloiva samanaikaisuuden

Lisätiedot

Jokaisella tiedostolla on otsake (header), joka sisältää tiedostoon liittyvää hallintatietoa

Jokaisella tiedostolla on otsake (header), joka sisältää tiedostoon liittyvää hallintatietoa Tietojen tallennusrakenteet Jokaisella tiedostolla on otsake (header), joka sisältää tiedostoon liittyvää hallintatietoa tiedot tiedostoon kuuluvista lohkoista esim. taulukkona, joka voi muodostua ketjutetuista

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

Elvytys. R & G Chapter Tietokannan hallinta, kevät 2006, J. Li 1

Elvytys. R & G Chapter Tietokannan hallinta, kevät 2006, J. Li 1 Elvytys R & G Chapter 18 16.02.06 Tietokannan hallinta, kevät 2006, J. Li 1 Motivaatio Atomisuus: Transaktiot voivat päättyä peruutukseen ( Rollback ). Pysyvyys: Entä jos TKHJ kaatuu? (Syyt?) Halutut ominaisuudet

Lisätiedot

Helsingin yliopisto/tktl DO Tietokantojen perusteet, s 2000 Johdanto & yleistä Harri Laine 1. Tietokanta. Tiedosto

Helsingin yliopisto/tktl DO Tietokantojen perusteet, s 2000 Johdanto & yleistä Harri Laine 1. Tietokanta. Tiedosto Tietokanta Tiedosto Tietokanta (database) jotakin käyttötarkoitusta varten laadittu kokoelma toisiinsa liittyviä säilytettäviä tietoja Ohjelmointikielissä apumuistiin tallennettuja tietoja käsitellään

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

Lisätään avainarvo 6, joka mahtuu lehtitasolle:

Lisätään avainarvo 6, joka mahtuu lehtitasolle: Helsingin Yliopisto, Tietojenkäsittelytieteen laitos Tietokannan hallinta, kurssikoe 11.6.2004, J. Lindström Ratkaisuehdotuksia 1. Hakemistorakenteet, 15p. Tutkitaan tyhjää B+-puuta, jossa jokaiselle hakemistosivulle

Lisätiedot

Sivupalvelin- ja yhteislevyjärjestelmät

Sivupalvelin- ja yhteislevyjärjestelmät Sivupalvelin- ja yhteislevyjärjestelmät C. Mohan & I. Narang 1994: ARIES/CSA: a method for database recovery in client-server architectures. Proc. of the 1994 ACM SIG- MOD Internat. Conf. on Management

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

Tietokannan hallintajärjestelmän (DBMS) palvelut ja rakenne

Tietokannan hallintajärjestelmän (DBMS) palvelut ja rakenne HAAGA-HELIA Heti-09 1 (6) Tietokannan hallintajärjestelmän (DBMS) palvelut ja rakenne Tietovarastotekniikan kehittyminen... 2 Tiedostopohjaiset ratkaisut... 2 Tiedoston palvelut... 3 Tiedostopohjaisten

Lisätiedot

Transaktioiden eristyvyys

Transaktioiden eristyvyys Transaktioiden eristyvyys H. Berenson, P. Bernstein, J. Gray, J. Melton, E. O Neil & P. O Neil: A critique of ANSI SQL isolation levels. Proc. of the 1995 ACM SIG- MOD Internat. Conf. on Management of

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

Tietokantakurssit / TKTL

Tietokantakurssit / TKTL Tietokantakurssit / TKTL Tietokantojen perusteet - tietokannan käyttö: SQL, sovellukset Tietokannan hallinta - tietokannanhallintajärjestelmän ominaisuuksia: tallennusrakenteet kyselyjen toteutus tapahtumien

Lisätiedot

TIEDONHALLINTA - SYKSY Luento 11. Hannu Markkanen /10/12 Helsinki Metropolia University of Applied Sciences

TIEDONHALLINTA - SYKSY Luento 11. Hannu Markkanen /10/12 Helsinki Metropolia University of Applied Sciences TIEDONHALLINTA - SYKSY 2011 Kurssikoodi: Saapumisryhmä: Luento 11 TU00AA48-2002 TU10S1E Hannu Markkanen 22.11.2011 9/10/12 Helsinki Metropolia University of Applied Sciences 1 Indeksit Indeksit Taulun

Lisätiedot

HELIA 1 (17) Outi Virkki Tiedonhallinta

HELIA 1 (17) Outi Virkki Tiedonhallinta HELIA 1 (17) Luento 4.1 Looginen suunnittelu... 2 Relaatiomalli... 3 Peruskäsitteet... 4 Relaatio... 6 Relaatiokaava (Relation schema)... 6 Attribuutti ja arvojoukko... 7 Monikko... 8 Avaimet... 10 Avain

Lisätiedot

HELIA 1 (16) Outi Virkki Tietokantasuunnittelu

HELIA 1 (16) Outi Virkki Tietokantasuunnittelu HELIA 1 (16) Luento 3.2 Suorituskyvyn optimointi jatkuu...... 2 Tietojen tallennusratkaisut... 2 Tiedon tallennuksen yksiköitä... 3 Loogiset... 3 Fyysiset... 3 Tallennusmäärittelyt Oraclessa... 5 Loogiset

Lisätiedot

oheishakemistoja voi tiedostoon liittyä useita eri perustein muodostettuja

oheishakemistoja voi tiedostoon liittyä useita eri perustein muodostettuja Tietokantojen hakemistorakenteet Hakemistorakenteiden (indeksien) tarkoituksena on nopeuttaa tietojen hakua tietokannasta. Hakemisto voi olla ylimääräinen oheishakemisto (secondary index), esimerkiksi

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

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

Helsingin yliopisto/tktl Tietokannan hallinta, kevät Harri Laine 1 D B. Transaktionhallinta. Transaktionhallinta. Transaktionhallinta (transaction management) on keskeinen tekijä tietokannan samanaikaisen käytön ja virheistä toipumisen kannalta. Useat prosessit voivat käsitellä tietokantaa samanaikaisesti Jos tietokoneessa on vain yksi

Lisätiedot

Lisätään avainarvo 1, joka mahtuu lehtitasolle:

Lisätään avainarvo 1, joka mahtuu lehtitasolle: Helsingin Yliopisto, Tietojenkäsittelytieteen laitos Tietokannan hallinta, kurssikoe 14.5.2004, J. Lindström Ratkaisuehdotuksia 1. Hakemistorakenteet, 15p. Tutkitaan tyhjää B+-puuta, jossa jokaiselle hakemistosivulle

Lisätiedot

Tietokannan eheysrajoitteet ja niiden määrittäminen SQL-kielellä

Tietokannan eheysrajoitteet ja niiden määrittäminen SQL-kielellä hyväksymispäivä arvosana arvostelija Tietokannan eheysrajoitteet ja niiden määrittäminen SQL-kielellä Tuomas Husu Helsinki 20.2.2010 HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos Sisältö i 1 Johdanto

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

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

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

Tiedostorakenteet. R&G Chapter Tietokannan hallinta, kevät 2006, Jan 1

Tiedostorakenteet. R&G Chapter Tietokannan hallinta, kevät 2006, Jan 1 Tiedostorakenteet R&G Chapter 9 16.02.06 Tietokannan hallinta, kevät 2006, Jan 1 Tiedostorakenteet Tiedostojen tehokkuutta yhtä kyselyä kohti arvioidaan usein tarvittavien levyhakujen määrällä. kuten levykäsittelyn

Lisätiedot

3. Tietokannan hakemistorakenteet

3. Tietokannan hakemistorakenteet 3. Tietokannan hakemistorakenteet Tiedoston tietueiden haku voi perustua johonkin monesta saantipolusta (access path): - perustiedoston tiedostorakenne - hakemistot, joita voidaan tehdä käsittelytarpeiden

Lisätiedot

3. Tietokannan hakemistorakenteet

3. Tietokannan hakemistorakenteet 3. Tietokannan hakemistorakenteet Tiedoston tietueiden haku voi perustua johonkin monesta saantipolusta (access path): - perustiedoston tiedostorakenne - hakemistot, joita voidaan tehdä käsittelytarpeiden

Lisätiedot

Tietohakemisto ja Transaktionkäsittely

Tietohakemisto ja Transaktionkäsittely HELIA TIKO-05 1 (18) Tietohakemisto ja Transaktionkäsittely Tietohakemisto...2 Oraclen tietohakemistonäkymät (osa)...3 Yleiset...3 Taulut...3 Säännöt...3 Näkymät...3 Synonyymit...4 Indeksit...4 Sekvenssit...4

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

D B. Transaktionhallinta

D B. Transaktionhallinta (transaction management) on keskeinen tekijä tietokannan samanaikaisen käytön ja virheistä toipumisen kannalta. Useat prosessit voivat käsitellä tietokantaa samanaikaisesti Jos tietokoneessa on vain yksi

Lisätiedot

D B. Levytiedostojen käsittely. Levytiedostojen käsittely

D B. Levytiedostojen käsittely. Levytiedostojen käsittely Tietokantojen tietoja säilytetään yleensä apumuistissa, lähinnä levymuisteissa Apumuistiin tallentamisen merkittäviä etuja keskusmuistiin nähden ovat tiedon säilyvyys (virtakatkon yli) säilytyskapasiteetin

Lisätiedot

Tiedon talletuspaikkoja. Levymuisti. Vaihtoehtoisia talletusrakenteita. Tietokantojen säilytys. R&G Chapter 8 & 9. Useita vaihtoehtoja:

Tiedon talletuspaikkoja. Levymuisti. Vaihtoehtoisia talletusrakenteita. Tietokantojen säilytys. R&G Chapter 8 & 9. Useita vaihtoehtoja: Tiedon talletuspaikkoja Levymuisti R&G Chapter 8 & 9 Levy: Pystytään noutamaan satunnainen sivu kiinteällä kustannuksella Useiden sivujen noutaminen halvempaa kuin satunnaisen sivun Nauha: Sivuja käsiteltävä

Lisätiedot

Levymuisti. R&G Chapter 8 & Tietokannan hallinta, kevät 2006, Jan 1

Levymuisti. R&G Chapter 8 & Tietokannan hallinta, kevät 2006, Jan 1 Levymuisti R&G Chapter 8 & 9 16.02.06 Tietokannan hallinta, kevät 2006, Jan 1 Tiedon talletuspaikkoja Levy: Pystytään noutamaan satunnainen sivu kiinteällä kustannuksella Useiden sivujen noutaminen halvempaa

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

HELIA 1 (15) Outi Virkki Tiedonhallinta

HELIA 1 (15) Outi Virkki Tiedonhallinta HELIA 1 (15) Luento Suorituskyvyn optimointi... 2 Tiedonhallintajärjestelmän rakenne... 3 Suunnittele... 4 SQL-komentojen viritys... 5 Tekninen ympäristö... 6 Fyysisen tason ratkaisut... 7 Indeksit...

Lisätiedot

Muita transaktioiden hallintamenetelmiä

Muita transaktioiden hallintamenetelmiä Muita transaktioiden hallintamenetelmiä H. Berenson, P. Bernstein, J. Gray, J. Melton, E. O Neil & P. O Neil: A critique of ANSI SQL isolation levels. Proc. of the 1995 ACM SIG- MOD Internat. Conf. on

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

TKHJ:ssä on yleensä komento create index, jolla taululle voidaan luoda hakemisto

TKHJ:ssä on yleensä komento create index, jolla taululle voidaan luoda hakemisto Indeksin luonti ja hävitys TKHJ:ssä on yleensä komento create index, jolla taululle voidaan luoda hakemisto Komentoa ei ole standardoitu ja niinpä sen muoto vaihtelee järjestelmäkohtaisesti Indeksi voidaan

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

D B. Tietokannan hallinta kertaus

D B. Tietokannan hallinta kertaus TKHJ:n pääkomponentit metadata TKHJ:ssä Tiedostojen käsittely puskurien rooli tiedostokäsittelyssä levymuistin rakenne ja käsittely mistä tekijöistä hakuaika muodostuu jonotus jos useita samanaikaisia

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

Algoritmit 1. Luento 6 Ke Timo Männikkö

Algoritmit 1. Luento 6 Ke Timo Männikkö Algoritmit 1 Luento 6 Ke 25.1.2017 Timo Männikkö Luento 6 Järjestetty lista Listan toteutus dynaamisesti Linkitetyn listan operaatiot Vaihtoehtoisia listarakenteita Puurakenteet Binääripuu Järjestetty

Lisätiedot

Tieto- ja tallennusrakenteet

Tieto- ja tallennusrakenteet Tieto- ja tallennusrakenteet Sisältö Tyyppi, abstrakti tietotyyppi, abstraktin tietotyypin toteutus Tallennusrakenteet Taulukko Linkitetty rakenne Abstraktit tietotyypit Lista (Puu) (Viimeisellä viikolla)

Lisätiedot

D B. Tietokannan hallinta - kurssin tavoite. Kurssilla opitaan periaatteet. Edellytyksenä osallistumiselle on Tietokantojen perusteiden hallinta

D B. Tietokannan hallinta - kurssin tavoite. Kurssilla opitaan periaatteet. Edellytyksenä osallistumiselle on Tietokantojen perusteiden hallinta Tietokannan hallinta - kurssin tavoite Kurssilla opitaan periaatteet fyysisen tietokannan tallennuksesta ja käsittelystä tietokantakyselyiden muuntamisesta fyysisen tietokannan käsittelyoperaatioiksi kyselyn

Lisätiedot

Hajautettujen transaktioiden hallinta

Hajautettujen transaktioiden hallinta Hajautettujen transaktioiden hallinta M. Kifer, A. Bernstein & P. M. Lewis: Database Systems. An Application-Oriented Approach. Complete Version. Pearson Addison Wesley, 2006; sivut 1005 1028, luvun 24

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

SQL. ! nykystandardi SQL3 eli SQL'99. ! CREATE TABLE, ALTER TABLE ja DROP TABLE. ! CREATE VIEW ja DROP VIEW. ! CREATE INDEX ja DROP INDEX

SQL. ! nykystandardi SQL3 eli SQL'99. ! CREATE TABLE, ALTER TABLE ja DROP TABLE. ! CREATE VIEW ja DROP VIEW. ! CREATE INDEX ja DROP INDEX SQL - perusteet SQL - yleistä Esa Salmikangas InMics SE Oy versio 16.6.2003 SQL - perusteet 1 SQL - perusteet 2 SQL Structured Query Language SQL on tietokantojen käsittelyyn kehitetty kieli yleisimmät

Lisätiedot

Algoritmit 2. Luento 2 To Timo Männikkö

Algoritmit 2. Luento 2 To Timo Männikkö Algoritmit 2 Luento 2 To 14.3.2019 Timo Männikkö Luento 2 Tietorakenteet Lineaarinen lista, binääripuu Prioriteettijono Kekorakenne Keko-operaatiot Keon toteutus taulukolla Algoritmit 2 Kevät 2019 Luento

Lisätiedot

Algoritmit 2. Luento 6 To Timo Männikkö

Algoritmit 2. Luento 6 To Timo Männikkö Algoritmit 2 Luento 6 To 28.3.2019 Timo Männikkö Luento 6 B-puun operaatiot Nelipuu Trie-rakenteet Standarditrie Pakattu trie Algoritmit 2 Kevät 2019 Luento 6 To 28.3.2019 2/30 B-puu 40 60 80 130 90 100

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 2.3.2009 T-106.1208 Ohjelmoinnin perusteet Y 2.3.2009 1 / 28 Puhelinluettelo, koodi def lue_puhelinnumerot(): print "Anna lisattavat nimet ja numerot." print

Lisätiedot

Algoritmit 2. Luento 6 Ke Timo Männikkö

Algoritmit 2. Luento 6 Ke Timo Männikkö Algoritmit 2 Luento 6 Ke 29.3.2017 Timo Männikkö Luento 6 B-puun operaatiot B-puun muunnelmia Nelipuu Trie-rakenteet Standarditrie Pakattu trie Algoritmit 2 Kevät 2017 Luento 6 Ke 29.3.2017 2/31 B-puu

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

Oraclen syvin ydin. Pertti Eiskonen Yleisradio Oy Tietokanta-asiantuntija. OUGF syysseminaari 2002 Sivu 1

Oraclen syvin ydin. Pertti Eiskonen Yleisradio Oy Tietokanta-asiantuntija. OUGF syysseminaari 2002 Sivu 1 Pertti Eiskonen Yleisradio Oy Tietokanta-asiantuntija OUGF syysseminaari 2002 Sivu 1 Oracle 8i (8.1.7) muistinkäyttöä ja viritystä: SGA ja PGA mitä ne on ja niihin vaikuttavat init.orat SGA:n rakenne Kannan

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

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

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

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

Tiedonhallintajärjestelmän rakenne ja Suorituskyky

Tiedonhallintajärjestelmän rakenne ja Suorituskyky HELIA TIKO-05 1 (20) Tiedonhallintajärjestelmän rakenne ja Suorituskyky Tiedonhallintajärjestelmän rakenne... 2 SQL-käsittelijä... 3 Parsinta (Parser)... 3 Optimointi (Optimizer)... 3 Tilan käsittelijä...

Lisätiedot

SQL - STRUCTURED QUERY LANGUAGE

SQL - STRUCTURED QUERY LANGUAGE SQL Peruskomentoja SQL - STRUCTURED QUERY LANGUAGE SQL on tietokantojen käsittelyyn kehitetty kieli Esimerkkejä kielellä hoidettavistaa toiminnoista: Tietokannan rakenteen määrittely ja muuttaminen Kyselyt

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

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

CS-A1150 Tietokannat CS-A1150 Tietokannat / 43

CS-A1150 Tietokannat CS-A1150 Tietokannat / 43 CS-A1150 Tietokannat 15.4.2019 CS-A1150 Tietokannat 15.4.2019 1 / 43 Oppimistavoitteet: tämän luennon jälkeen Tiedät, mitä tarkoitetaan hakemistolla ja mitä hyötyä hakemistosta on. Tiedät, miten voidaan

Lisätiedot

HELIA 1 (14) Outi Virkki Tiedonhallinta

HELIA 1 (14) Outi Virkki Tiedonhallinta HELIA 1 (14) Luento SQL... 2 Historiaa... 2 Standardit... 3 Käyttö... 4 DDL... 5 Tietokantaobjektien määrittely... 5 SQL:n tietotyypit... 6 Eheyssääntöjen määrittely... 9 Indeksin määrittely... 11 Syntaksikuvaukset...

Lisätiedot

Hakemistorakenteet. R & G Chapter Tietokannan hallinta, kevät 2006, Jan 1

Hakemistorakenteet. R & G Chapter Tietokannan hallinta, kevät 2006, Jan 1 Hakemistorakenteet R & G Chapter 10 16.02.06 Tietokannan hallinta, kevät 2006, Jan 1 Hakemistotyypeistä Hakemistomerkintä sisältää hakemistoavaimen (indexing key) muodostusperustan määrittelemänä tietueesta

Lisätiedot

D B. Harvat hakemistot. Harvat hakemistot

D B. Harvat hakemistot. Harvat hakemistot Harvassa hakemistossa on ei ole hakemistomerkintöjä jokaista tietuetta kohden vaan yksi merkintä jotain isompaa kokonaisuutta esimerkiksi sivua tai sivujoukkoa (esim. saman uran sivut) kohti Harvan hakemiston

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

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

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

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

Transaktioiden samanaikaisuuden hallinta

Transaktioiden samanaikaisuuden hallinta Transaktioiden samanaikaisuuden hallinta C. Mohan, D. Haderle, B. Lindsay, H. Pirahesh & P. Schwartz: ARIES: a transaction recovery method supporting fine-granularity locking and partial rollbacks using

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

18. Abstraktit tietotyypit 18.1

18. Abstraktit tietotyypit 18.1 18. Abstraktit tietotyypit 18.1 Sisällys Johdanto abstrakteihin tietotyyppeihin. Pino ja jono. Linkitetty lista. Pino linkitetyllä listalla toteutettuna. 18.2 Johdanto Javan omat tietotyypit ovat jo tuttuja:

Lisätiedot

Algoritmit 1. Luento 5 Ti Timo Männikkö

Algoritmit 1. Luento 5 Ti Timo Männikkö Algoritmit 1 Luento 5 Ti 24.1.2017 Timo Männikkö Luento 5 Järjestetty lista Järjestetyn listan operaatiot Listan toteutus taulukolla Binäärihaku Binäärihaun vaativuus Algoritmit 1 Kevät 2017 Luento 5 Ti

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

CSE-A1200 Tietokannat

CSE-A1200 Tietokannat CSE-A1200 Tietokannat 12.4.2016 CSE-A1200 Tietokannat 12.4.2016 1 / 42 Oppimistavoitteet: tämän luennon jälkeen Tiedät, mitä tarkoitetaan hakemistolla ja mitä hyötyä hakemistosta on. Tiedät, miten voidaan

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

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

Tietokannanhoitaja DBA (Database Administrator) ja tietokannan hallinta

Tietokannanhoitaja DBA (Database Administrator) ja tietokannan hallinta Tietokannanhoitaja DBA (Database Administrator) ja tietokannan hallinta Jouni Huotari Martti Laiho (materiaali on osa virtuaaliammattikorkeakoulun Tietokantaosaaja-opintokokonaisuutta) opintokokonaisuutta)

Lisätiedot

Transaktionhallinta. R & G Chapter Tietokannan hallinta, kevät 2006, J. Li 1

Transaktionhallinta. R & G Chapter Tietokannan hallinta, kevät 2006, J. Li 1 Transaktionhallinta R & G Chapter 17 16.02.06 Tietokannan hallinta, kevät 2006, J. Li 1 Transaktionhallinta ~ samanaikaisuus Tietokannalla on tyypillisesti useita samanaikaisia käyttäjiä (prosesseja).

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

Hakemistotyypeistä. Hakemistorakenteet. Hakemiston toteutuksesta. Hakemiston toteutuksesta

Hakemistotyypeistä. Hakemistorakenteet. Hakemiston toteutuksesta. Hakemiston toteutuksesta Hakemistotyypeistä Hakemistorakenteet R & G Chapter 10 Hakemistomerkintä sisältää hakemistoavaimen (indexing key) muodostusperustan määrittelemänä tietueesta tai tietuejoukosta tuotettu tunnus yleensä

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

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