Tilannevedoseristyvyydessä esiintyvät eristyvyysanomaliat

Koko: px
Aloita esitys sivulta:

Download "Tilannevedoseristyvyydessä esiintyvät eristyvyysanomaliat"

Transkriptio

1 Tilannevedoseristyvyydessä esiintyvät eristyvyysanomaliat Pasi Oja-Nisula Helsinki Tietokannat nyt -seminaari HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

2 Sisältö i 1 Johdanto 1 2 Tilannevedoseristyvyyden toimintaperiaate 1 3 Tilannevedoseristyvyys verrattuna kaksivaihelukitukseen 5 4 Tilannevedoseristyvyydelle ominaiset eristyvyysanomaliat Kirjoitusvääristymä Lisäyksiä koskeva anomalia Lukutransaktioita koskeva anomalia Yhteenveto 15 Lähteet 15

3 1 Johdanto 1 Tilannevedoseristyvyydessä transaktiolle tarjotaan tiettyyn ajanhetkeen sidottu näkymä tietokantaan. Tilannevedoseristyvyys toteutetaan versioinnin avulla siten, että lukutransaktiot saavat tarvitsemansa tiedot aina transaktion alkuhetkellä muodostettavasta tietokannan sitoutunutta tilaa kuvaavasta näkymästä eli tilannevedoksesta. Rinnakkaiset kirjoitustransaktiot operoivat samojen tietoalkioiden uusiin versioihin. Lukutransaktioiden ei tarvitse varata lukkoja tietoalkioihin, joten lukutransaktiot eivät joudu lainkaan odottamaan kirjoitustransaktioita. Tämä rinnakkaisuuden lisäys tekee tilannevedoseristyvyydestä houkuttelevan käytännön transaktioiden samanaikaisuuden hallintaan. Tilannevedoseristyvyys takaa hyvän eristyvyyden transaktioiden välille ja siinä vältetään monet perinteisen kaksivaiheiseen lukitukseen perustuvien järjestelmien ongelmat. Tilannevedoseristyvyys ei kuitenkaan takaa sarjallistuvuutta. Jo tilannevedoseristyvyyden määritelleessä artikkelissa [BBG + 95] kuvattiin anomalia, joka syntyy kahden päivitystransaktion lomittuessa sopivasti. Pitkään oletettiin tilannevedoseristyvyyden olevan lukutransaktioiden suhteen sarjallistuva, sillä lukutransaktiot lukevat vain tilannevedoksen sisältämää sitoutunutta tietoa eikä tilannevedoksessa näy keskeneräisten transaktioiden tekemiä kirjoituksia. Yllättäen on kuitenkin mahdollista muodostaa transaktioiden limite, jossa lukutransaktio saa virheellisen kuvan tietokannasta, vaikka rinnakkaiset kirjoitustransaktiot toimivatkin oikein. Tässä seminaarityössä kuvataan tällainen Feketen ja kumppaneiden artikkelissaan [FOO04] esittämä anomalia. Luvussa 2 esitetään esimerkki tilannevedoseristyvyyden vaatimasta versioinnista ja kuvataan tilannevedoseristyvyyden toimintaperiaate yleisellä tasolla. Luvussa kuvataan myös yleisesti käytännön toteutuksissa käytetty muunnelma rinnakkaisten päivitysten aiheuttamien konfliktien ratkaisemiseen. Luvussa 3 vertaillaan tilannevedoseristyvyyttä perinteiseen kaksivaihelukitukseen ja ANSI SQL:n eristyvyystasoihin. Luvussa 4 esitellään nimenomaisesti tilannevedoseristyvyydessä esiintyviä anomalioita. Ensin käsitellään rinnakkaisia päivityksiä koskeva anomalia ja sen rinnakkaisiin lisäyksiin kohdistuva muunnelma. Luvussa käsitellään myös lukutransaktioita koskeva anomalia Feketen ja kumppaneiden artikkelin pohjalta. Anomaliasta esitetään myös esimerkki SQL-kielellä ja esitetään ratkaisuvaihtoehtoja anomalian estämiseksi. Luku 5 on yhteenveto. 2 Tilannevedoseristyvyyden toimintaperiaate Tilannevedoseristyvyys (snapshot isolation) on versiointiin perustuva menetelmä, joka yhdistelee aikaleimakäytäntöä ja kaksivaihelukitusta. Menetelmä voidaan näh-

4 dä kehittyneempänä muunnelmana Bernsteinin ja kumppanien multiversion mixed -käytännöstä, jonka kuvaus löytyy lähteestä [BHG87, sivu 160]. Uusimmissa transaktioiden samanaikaisuudenhallintaa käsittelevissä artikkeleissa tilannevedoseristyvyys määritellään yleensä artikkelista [BBG + 95] löytyvällä tavalla. Tilannevedoseristyvyys tai sen muunnelmat ovat käytössä useissa tietokannanhallintajärjestelmissä. Oracle ja PostgreSQL ovat perustaneet samanaikaisuudenhallintansa tilannevedoseristyvyyteen jo pitkään. Microsoft SQL Server on aiemmin perustunut perinteiseen kaksivaihelukitukseen, mutta uudessa versiossa (SQL Server 2005) tämän rinnalle on tullut myös tilannevedoseristyvyys [FLO + 05]. Tilannevedoseristyvyydessä transaktion tekemät luvut kohdistuvat vain ennen transaktion alkua sitoutuneiden transaktioiden kirjoittamiin tietoalkioihin. Transaktio näkee näin ollen kuvan, tilannevedoksen, tietokannan tilasta aloitushetkellään. Samanaikaisesti aktiivisena olevien transaktioiden päivitykset eivät vaikuta transaktion näkemään tilannevedokseen. Poikkeuksen tästä muodostavat transaktion omat päivitykset, jotka voivat muuttaa transaktion omaa tilannevedosta [BBG + 95]. Tilannevedoseristyvyydessä käytetyn versioinnin teknisiä toteutustapoja on monia. Tämän esityksen puitteissa ei ole mahdollista käydä näitä tapoja tarkemmin läpi, mutta tilannevedoseristyvyyden hyöty tulee selkeimmin ilmi versiointia käsittelevän esimerkin avulla. Tarkastellaan siis Oraclen käyttämää versiointia hieman yksinkertaistetussa muodossa. Oraclessa jokaiselle transaktiolle annetaan sen alussa järjestelmämuutosnumero (system change number, SCN). Tämä on käytännössä aikaleimaa vastaavan laskurin numero, joka määrää transaktiolle tietokannassa näkyvän tilannevedoksen. Oraclessa versioinnin yksikkö on tietolohko (data block). Vaikka tietolohko ei teknisesti välttämättä olekaan saman kokoinen kuin sivu, versioinnin toteutusnäkökohtia tutkittaessa voidaan nämä käsitteet samaistaa. Tietolohkoa päivitettäessä siihen merkitään sitä päivittäneen transaktion SCN. Toinen oleellinen seikka on Oraclen tapa jakaa tietueiden tallennus eri segmentteihin. Tietueiden nykyversiot tallennetaan datasegmenttiin (data segment) ja vanhat versiot peruutussegmenttiin (rollback segment). Oraclen moniversioivan lukujohdonmukaisuuden toimintaa voidaan kuvata seuraavan esimerkin avulla [IBM02]. Kuvassa 1 on esitetty nuolella valituksi tulevat tietolohkot [Ora05, sivu 13-3]. 1. Transaktio suorittaa kyselyn select from T, joka kohdistuu taulun T kaikkiin tietueisiin. Kyselylle annetaan SCN ja aloitetaan taulun läpikäynti. 2. Luetaan tietolohko datasegmentistä puskurimuistiin. 3. Jokaisen tietolohkon kohdalla tutkitaan tietolohkon SCN. Jos se on pienempi kuin kyselyn SCN, luetaan tietolohko ja jatketaan skannausta seuraavasta tietolohkosta. Jos SCN on kuitenkin suurempi kuin kyselyllä (kuvassa 10024) siirrytään seuraavaan kohtaan. 4. Peruutussegmentistä haetaan tietolohkon edellinen versio (kuvassa tietoloh- 2

5 ko, jonka SCN on 10008). Jos tämänkin tietolohkon SCN on suurempi kuin kyselyllä, haetaan peruutussegmentistä lisää uusia tietolohkoja, kunnes löytyy kyselyn alkuhetkeä vanhempi versio. Tämä versio on lopullisesti se, josta kyselyn tulokset luetaan. 5. Siirrytään kohtaan 2 jatkamaan käsittelyä seuraavasta tietolohkosta. 3 select from T (SCN 10023) Peruutussegmentti Kuva 1: Oraclen moniversioivan lukujohdonmukaisuuden toimintaperiaate Kuvan 1 esimerkistä nähtiin lukutransaktion valmistuvan huolimatta samanaikaisista päivitystransaktioista. Mahdollisesti useat päivitystransaktiot olivat edelleen kesken ja osa taulun tietueista oli lukittuna kirjoituslukoilla. Kaksivaihelukitukseen perustuvissa järjestelmissä vastaavan suorituskyvyn saavuttamiseksi olisi vaadittu lukutransaktion suorittamista read uncommitted -eristyvyystasolla. Tilannevedoseristyvyydessä puolestaan lukutransaktio luki ainoastaan sitoutuneita tietueita. Huomattavaa on myös, että luetut tietueet olivat lukutransaktion alkuhetkellä viimeisimpiä sitoutuneita versioita. Näin ollen lukutransaktio näki aloitushetkellään tietokannassa vallinneen sitoutuneen tilanteen. Palataan Oraclen parista jälleen tarkastelemaan tilannevedoseristyvyyttä yleisemmällä tasolla. Tilannevedoseristyvyydessä tilannevedos toteutetaan siten, että transaktiolle annetaan alkuhetkellään aikaleima s-ts(t i ). Tämän aikaleiman jälkeen tapahtuvat kirjoitukset eivät näy transaktiolle. T i ei myöskään näe samanaikaisten, vielä sitoutumattomien, transaktioiden ennen aloitusaikaleimaa tekemiä päivityksiä. Tämä johtuu siitä, että tilannevedoseristyvyydessä transaktiot noudattavat niin sanottua ensimmäinen sitoutuja voittaa (first-committer-wins) -käytäntöä. Tämä

6 tarkoittaa sitä, että T i sitoutuu vain, mikäli mikään samanaikaisesti suorituksessa ollut, mutta aiemmin sitoutunut transaktio T k ei ole päivittänyt tietoalkioita, joita T i aikoo päivittää. Tämä tarkistus tehdään käyttäen transaktion T i alkuaikaleimaa s-ts(t i ) ja sitoutumisaikaleimaa c-ts(t i ). Jos jokin ehdon s-ts(t i ) < c-ts(t k ) < c- ts(t i ) täyttävä transaktio T k on kirjoittanut samoja tietoalkioita kuin T i, aiheuttaa tämä T i :n peruuntumisen. Sitoutumisen onnistuessa tulevat kaikki T i :n tekemät päivityksen näkyviin aikaleiman c-ts(t i ) jälkeen aloittaville transaktioille [BBG + 95]. Tilannevedoseristyvyydessä siis transaktion tekemät kirjoitukset voidaan ajatella suoritettaviksi yhdellä ajanhetkellä transaktion sitoutuessa, vastaavasti kuin luvutkin suoritetaan tiettyyn ajanhetkeen kohdistuen. Ensimmäinen sitoutuja voittaa -käytännöstä on olemassa muunnelma, jota käytetään esimerkiksi Oraclessa ja PostgreSQL:ssä. Muunnelmaa kutsutaan nimellä ensimmäinen päivittäjä voittaa (first updater wins). Ensimmäinen päivittäjä voittaa -käytännössä voittajan tarkistus suoritetaan aina päivityksen yhteydessä, jolloin transaktion peruuntuessa hukkaan menee mahdollisimman vähän prosessointia. Oraclen ensimmäinen päivittäjä voittaa -algoritmi toimii seuraavasti. Oletetaan että transaktio T i päivittää tietoalkiota x ja saa siihen kirjoituslukon. Jos T i :n kanssa rinnakkain suoritettava transaktio T j yrittää päivittää x:ää, se ei saa lukkoa ja joutuu odottamaan. T j :n kohtalo riippuu tämän jälkeen T i :n lopputuloksesta. Jos T i sitoutuu, aiheuttaa se T j :n peruuntumisen. Jos T i peruuntuu, saa T j lukon haltuunsa ja voi jatkaa suoritustaan [FLO + 05]. Seuraavassa esitetään esimerkki Oraclen ensimmäinen päivittäjä voittaa -käytännöstä. Esimerkissä transaktio T 1 jää odottamaan T 2 :n sitoutumista. Transaktion T 2 sitouduttua T 1 :n päivitys päättyy sarjallistuvuusvirheeseen (serialization error), ORA SQL> /* T1 */ SQL> select sal from emp where empno=7934; SAL SQL> update emp set sal = sal where empno=7934; ERROR at line 1: ORA-08177: can t serialize access for this transaction SQL> /* T2 */ SQL> update emp set sal = sal + 100; 14 rows updated.

7 Edellistä esimerkkiä hieman muokaten voidaan havainnollistaa toinenkin tilanne, jossa päädytään sarjallistuvuusvirheeseen. Oletetaan edelleen, että T i ja T j ovat rinnakkaisia transaktioita. Nyt kuitenkin T i sitoutuu ennen kuin T j yrittää päivitystä tietoalkioon x [FLO + 05]. Tällöin T i :n yrittäessä päivitystä tiedetään heti T j :n suorittaneen sitoutuneen päivityksen ja T i :lle palautetaan sarjallistuvuusvirhe. Edellisessä esimerkissä tilanne saataisiin aikaan siirtämällä T 1 :n update-lause suoritettavaksi T 2 :n sitoutumisen jälkeen. Tällöin sarjallistuvuusvirhe palautuu heti, sillä T 2 sitoutumista ei tarvitse enää odottaa. 5 3 Tilannevedoseristyvyys verrattuna kaksivaihelukitukseen ANSI SQL määrittelee transaktioille neljä eristyvyystasoa: read uncommitted, read committed, repeatable read ja serializable. Tilannevedoseristyvyyttä ei voi suoraan sijoittaa ANSI SQL:n eristyvyystasojen hierarkiaan, johtuen lähinnä ANSIn määritelmien vahvasta nojautumisesta lukituksiin perustuviin toteutuksiin. Tilannevedoseristyvyys on kuitenkin laajalti käytetty eristyvyystaso, ja määritelmästä riippumatta sillä saavutetaan hyvä eristyvyys transaktioiden välille. Seuraavassa tarkastellaan tilannevedoseristyvyyttä verrattuna ANSI SQL:n määrittelemiin eristyvyystasoihin. Versioivien järjestelmien historioita käsiteltäessä transaktioiden T 1, T 2,..., T n tekemiä lukuja, kirjoituksia, peruuntumista ja sitoutumista merkitään normaaliin tapaan r i [x], w i [y], a i ja c i. Tarvittaessa voidaan merkitä myös tietoalkion x arvo näkyviin operaation kohdalle, esimerkiksi r 1 [x = 10]. Versiointiin perustuvissa käytännöissä kirjoitusoperaatio w[x] luo aina uuden version tietoalkiosta x. Versionumero kirjoitetaan näkyviin tietoalkion yhteyteen. Esimerkiksi r 1 [x 0 = 10] tarkoittaa, että transaktio T 1 lukee transaktion T 0 kirjoittaman x:n arvon 10. Kirjoitusoperaatiossa w i [x i ] luodun uuden version numero on siis aina kirjoittavan transaktion numero. Transaktiolla T 0 viitataan kuvitteelliseen tietokannan alkuarvot kirjoittavaan transaktioon. Tilannevedoseristyvyys ei kärsi sitoutuneiden transaktioiden likaisista kirjoituksista, sillä sitoutumisvaiheessa suoritettava tarkistus aiheuttaa transaktion peruuntumisen, mikäli transaktion kirjoittamaa tietoalkiota on sen elinaikana muutettu. Myöskään likaisia lukuja ei tapahdu, sillä aikaleimakäytännön ansiosta transaktiot lukevat vain sitoutuneita tietoja [BBG + 95]. Tämä tekee tilannevedoseristyvyydestä vähintään yhtä vahvan eristyvyystason kuin read committed. Tarkastellaan historiaa H 1 : r 1 [x 0 = 50] r 2 [x 0 = 50] w 2 [x 2 = 70] c 2 w 1 [x 1 = 60] a 1. Yksiversiokäytäntöön ja kaksivaihelukitukseen perustuvassa järjestelmässä read committed -eristyvyystasolla suoritettaessa historian H 1 yksiversiomuunnelma olisi mahdollinen ja transaktio T 1 sitoutuisi lopussa aiheuttaen hukatun päivityksen. Tämä

8 johtuu read committed -eristyvyystason lyhytkestoisista lukulukoista. Tilannevedoseristyvyydessä historia kuitenkin hylätään, sillä sitoutumisvaiheen tarkistuksessa huomataan T 1 :n kanssa rinnakkaisen sitoutuneen transaktion T 2 kirjoittaneen tietoalkion, jonka T 1 olisi aikeissa kirjoittaa. Tilannevedoseristyvyys ei siis mahdollista historioita, joissa tapahtuu hukattu päivitys, toisin kuin read committed - eristyvyystaso. Näin ollen voidaan sanoa tilannevedoseristyvyyden olevan read committed -tasoa vahvempi [FLO + 05]. Repeatable read -eristyvyystason kohdalla vertailu ei ole enää aivan suoraviivaista. ANSI SQL:n määritelmän mukaan toistokelvoton luku tapahtuu, kun transaktio T 1 lukee tietoalkion x, minkä jälkeen toinen transaktio T 2 päivittää x:ää, ja T 2 :n sitouduttua T 1 lukee x:n uudelleen. Koska tilannevedoseristyvyydessä luvut kohdistuvat tietyllä ajanhetkellä voimassa olleeseen tilanteeseen, ei tällaista anomaliaa luonnollisestikaan voi tapahtua. Tässä mielessä tilannevedoseristyvyys on vahvempi kuin repeatable read. Jos edelleen pitäydytään ANSIn määritelmissä eristyvyysanomalioille, myöskään haamuja ei tilannevedoseristyvyydessä esiinny. Tästä näkökulmasta katsottuna tilannevedoseristyvyyden voisi sanoa olevan jopa yhtä vahva kuin serializable [BBG + 95]. Tilannevedoseristyvyys kärsii kuitenkin myöhemmin esiteltävästä lukulukkojen puuttumisen aiheuttamasta anomaliasta ja on toisaalta siis heikompi kuin serializable ja jopa repeatable read -eristyvyystasot. Kaikkiaan voidaan siis sanoa, että vaikka tilannevedoseristyvyys tarjoaa hyvän eristyvyyden transaktioiden välille, se ei tarjoa tietokantateorian mukaista sarjallistuvuutta [BHG87, sivu 32]. Tilannevedoseristyvyyteen perustuvat tietokannat, esimerkiksi Oracle ja Postgre- SQL, kuitenkin sisältävät serializable-eristyvyystason. Tämä johtuu siitä, että tietokantavalmistajien kielenkäytössä sarjallistuvuus on seuraus ANSI SQL -standardissa mainittujen anomalioiden (likaisten lukujen, toistokelvottomien lukujen ja haamujen) esiintymättömyydestä. SQL 2003-standardiin on lisätty mielenkiintoinen huomautus tähän liittyen. Eristyvyystasojen määrittelyn yhteydessä standardissa todetaan serializable-eristyvyystasolla suoritettaessa anomalioiden esiintymättömyyden olevan nimenomaan seuraus transaktioiden sarjallistuvuudesta [ISO03, sivu 118]. Tämä ero sarjallistuvuuskäsitteen määritelmässä johtaa siihen, että myöhemmin tässä luvussa esiteltävät sarjallistumattomat historiat ovat mahdollisia tilannevedoseristyvyyteen perustuvien järjestelmien serializable-eristyvyystasolla. 6 4 Tilannevedoseristyvyydelle ominaiset eristyvyysanomaliat Versiointiin perustuvasta luonteestaan johtuen tilannevedoseristyydessä esiintyy joitain eristyvyysanomalioita, jotka vältetään kaksivaihelukitusta käyttävissä järjestelmissä. Erityisesti IBM on korostanut kaksivaihelukituksen paremmuutta tilannevedoseristyvyyteen nähden [IBM02]. Tässä luvussa kuvattujen anomalioiden esiintyminen ei kuitenkaan välttämättä ole yleistä todellisissa tietokantasovelluksissa. Esimerkiksi monia sovellustyyppejä edustava TPC-C -testi ei sisällä lainkaan näitä

9 nimenomaisesti tilannevedoseristyvyyttä haittaavia anomalioita [FLO + 05]. Eräs ongelma tilannevedoseristyvyydessä on ollut sarjallistuvuuden varmistavan analyysimenetelmän puute. Artikkelissaan [FLO + 05] Fekete ja kumppanit kuvaavat menetelmän, jolla tilannevedoseristyvyydessä suoritettavat transaktiot voidaan analysoida ja tarvittaessa muokata sovelluksista versiot, jotka päätyvät sarjallisten historioiden kanssa samaan lopputulokseen. Menetelmä soveltuu kuitenkin huonosti suurten tietokantasovellusten analysointiin, sillä analyysi on varsin raskas prosessi ja heikosti automatisoitavissa. Käytännön tietokantajärjestelmissä tilannevedoseristyvyyden anomaliat estetään parhaiten ymmärtämällä tilannevedoseristyvyyden toimintaperiaatteet ja suunnittelemalla transaktiot tämä huomioiden. Kaikki tässä luvussa esitetyt anomaliat voidaan estää käyttäen hyväksi joko sopivaa tietokannan taulurakennetta tai tietokantajärjestelmän tarjoamia lukitusominaisuuksia Kirjoitusvääristymä Tarkastellaan seuraavaa tilannevedoseristyvyyteen perustuvassa järjestelmässä suoritettavaa esimerkkiä [BBG + 95]. Oletetaan, että x ja y esittävät pankkitilien saldoja. Annetaan tietokantaan eheysrajoite, että tili voidaan ylittää, kunhan tilien yhteissumma säilyy positiivisena, eli x + y > 0. Ajatellaan tilannevedoseristyvyystasolla suoritettavaksi historia H 2 : r 1 [x 0 = 70] r 2 [x 0 = 70] r 1 [y 0 = 80] r 2 [y 0 = 80] w 1 [x 1 = 30] c 1 w 2 [y 2 = 20] c 2 Historiassa H 2 esiintyy Berensonin ja kumppaneiden määrittelemä anomalia A5B, kirjoitusvääristymä (write skew). Ensimmäinen sitoutuja voittaa -käytäntö ei kuitenkaan estänyt tilannetta, sillä anomalian aiheuttavat eri tietoalkioihin kohdistuvat päivitykset. Tarkastellaan samaa esimerkkiä Oraclessa.

10 8 SQL> /* T1 */ SQL> select * from bank where account in (1,2); ACCOUNT BALANCE SQL> /* Eheystarkistus */ SQL> /* T2 */ SQL> select * from bank where account in (1,2); ACCOUNT BALANCE SQL> update bank set balance=-30 where account=1; 1 row updated. SQL> /* Eheystarkistus */ SQL> update bank set balance=-20 where account=2; 1 row updated. Edellisestä esimerkistä voidaan havaita, että lukulukkojen puuttuminen aiheuttaa tietokannan eheydelle ongelman. Eheystarkistus ajatellaan tapahtuvaksi sovellustasolla heti kun tilien 1 ja 2 saldot on luettu. Koska transaktioiden T 1 ja T 2 päivitykset kohdistuvat eri riveihin, ei päivityksistä aiheudu konfliktia. Tämän takia molemmat transaktiot saavat suoritettua päivityksen ja sitoutumisen. T 1 :n ja T 2 :n loputtua tietokannassa sekä tilin 1 että 2 saldot ovat negatiivisia. Erikseen kummassa tahansa järjestyksessä T 1, T 2 tai T 2, T 1 suoritettuina sovelluksen eheystarkistus huomaisi ongelman ja jälkimmäinen päivitys jätettäisiin suorittamatta. Edellisen esimerkin ongelma voi esiintyä myös kaksivaiheihelukitukseen perustuvassa tietokantajärjestelmässä, mutta vain jos transaktioita suoritetaan read committed -eristyvyystasolla [JBD + 95]. Repeatable read -eristyvyystasolla toimittaessa pitkäkestoiset lukulukot olisivat estäneet tilanteen.

11 Oraclessa kirjoitusvääristymä-anomalia voidaan estää select for update -lauseen avulla. Select for update lukitsee luetut rivit sitoutumiseen asti, jolloin esimerkin jälkimmäisen transaktion select-lause jäisi odottamaan lukkojen vapautumista. Koska transaktio T 1 suorittaa kuitenkin päivityksen, lukkojen vapauduttua T 2 :lle ilmoitettaisiin sarjallistuvuusvirheestä Lisäyksiä koskeva anomalia Berenson ja kumppanit kritisoivat artikkelissaan [BBG + 95] ANSIn eristyvyystasojen määritelmiä ja esittävät anomalioiden laajennetut määritelmät. Tällainen laajan määritelmän mukainen haamuilmiö voi tapahtua myös tilannevedoseristyvyydessä, mikäli transaktiot suorittavat useiden tietoalkioiden lisäyksiä. Seuraavassa on esitetty Berensonin ja kumppaneiden artikkelissa kuvaama anomalia. Tässä esityksessä käytetään Feketen ja kumppaneiden artikkelissaan [FLO + 05] kuvaamien tietokantataulujen nimiä. Tarkastellaan työajanseurantajärjestelmää, johon tallennetaan tietoa työntekijöiden ajankäytöstä projekteittain. Työntekijän (tietokannan employees-taulu) työpäivä koostuu erillisistä tehtävistä (assignments), joista jokainen kuuluu tiettyyn projektiin (projects). Tehtävä koostuu työntekijän (eid) ja projektin tunnisteista (projid), työpäivästä (workdate) ja tehtävään varatuista tunneista (hours). Tietokannassa vallitsee eheysrajoite, joka rajaa työntekijän työpäivän kokonaiskeston 8 tuntiin. Historiassa esiintyvä operaatio pr tarkoittaa predikaattiin kohdistuvaa lukua. Historiassa H 3 : pr 1 [P, ] w 1 [y 1 = ( e1234, 2, , 5)] pr 2 [P, ] w 2 [z 2 = ( e1234, 3, , 5)] c 1 c 2 predikaatti P määrittelee luvun kohdistuvan tietueisiin, joille eid= e1234 ja workdate= Tällaisia tietueita ei tietokannassa vielä ole, joten transaktiot T 1 ja T 2 lukevat tyhjän tulosjoukon. Tämän perusteella molemmat transaktiot päättelevät työntekijälle olevan mahdollista lisätä vielä 5 tunnin mittaisen tehtävän. Koska transaktiot T 1 ja T 2 eivät päivitä samaa tietoalkiota, ensimmäinen sitoutuja voittaa -käytäntö ei estä tilannetta. Sarjallisesti suoritettuna tilanne ei olisi mahdollinen, sillä jälkimmäisen transaktion kohdalla eheysrajoite estäisi työtehtävän lisäyksen [BBG + 95]. Anomalia on oleellisilta osiltaan esitetty seuraavien SQL-lauseiden avulla.

12 10 SQL> /* T1 */ SQL> select sum(hours) from assignments where eid = e1234 and workdate = ; SUM(HOURS) SQL> /* Alle 8 tuntia, lisätään! */ SQL> insert into assignment (eid, projid, workdate, hours) values ( e1234, 2, , 5); 1 row created. SQL> /* T2 */ SQL> select sum(hours) from assignments where eid= e1234 and workdate= ; SUM(HOURS) SQL> /* Alle 8 tuntia, lisätään! */ SQL> insert into assignment (eid, projid, workdate, hours) values ( e1234, 3, , 5); 1 row created. Anomalia johtuu selvästi eri tietoalkiohin kohdistuvista päivityksistä aivan kuten kirjoitusvääristymäkin. Kyseessä on kuitenkin erillinen anomalia, sillä tässä tapauksessa select for update -lauseella ei voida korjata tilannetta. Koko taulun lukitseminen estäisi anomalian, mutta rajoittaisi rinnakkaisuutta tarpeettomasti. Anomalia on kuitenkin mahdollista välttää lisäämällä tietokantaan työntekijän työpäivän kes-

13 toa kuvaava taulu (total work hours). Transaktioiden on päivitettävä tämän taulun työntekijä/päivä -parin yksilöimää riviä aina lisättyään uuden tehtävän työntekijälle. Nyt transaktioiden välille aiheutuu konflikti tämän taulun päivityksestä ja jälkimmäisenä sitoutumista (päivitystä) yrittävä transaktio peruutetaan Lukutransaktioita koskeva anomalia Tilannevedoseristyvyyden ajateltiin pitkään olevan sarjallistuva lukutransaktioiden suhteen. Kyselyiden ei koskaan tarvitse odottaa tai peruuntua päivitystransaktioiden takia, vaan ne lukevat tietokannan tilanteen tietyllä ajanhetkellä. Koska tietyn ajanhetken tilanne sisältää vain sitoutuneiden transaktioiden kirjoittamaa tietoa, ajateltiin tämän olevan implisiittinen tae kyselyiden sarjallistuvuudesta. Artikkelissaan Fekete ja kumppanit esittelevät kuitenkin kyselyitä koskevan anomalian, joka esiintyy nimenomaisesti tilannevedoseristyvyydessä [FOO04]. Kyselyitä koskeva anomalia on esitelty seuraavassa. Oletetaan jälleen, että x ja y esittävät pankkitilejä, mutta tällä kertaa molempien saldo on alussa 0. Jälleen tietokannassa on voimassa tilien yhteissummaa koskeva rajoite. Rajoite määrää, että mikäli tililtä noston seurauksena summa x + y < 0, tililtä veloitetaan ylimääräisenä sakkona 1 yksikkö. Historiassa esiintyvä transaktio T 1 tallettaa 20 tilille y, transaktio T 2 nostaa 10 tililtä x ja kysely T 3 hakee tilien saldot tulostusta varten. Tilannevedoseristyvyydessä transaktiot voivat tuottaa historian H 4 : r 2 [x 0 = 0] r 2 [y 0 = 0] r 1 [y 0 = 0] w 1 [y 1 = 20] c 1 r 3 [x 0 = 0] r 3 [y 1 = 20] c 3 w 2 [x 2 = 11] c 2. Historia H 4 tuottaa anomalian, jossa kyselytransaktio T 3 näkee tilien arvot 0 ja 20, vaikka tietokannassa arvot ovat transaktioiden suorituksen jälkeen -11 ja 20. Ongelma on siinä, että kysely T 3 näkee tilannevedoseristyvyydessä sitoutuneen transaktion T 1 lopputuloksen, mutta ei samanaikaisen transaktion T 2 tuloksia. Kuitenkin tietokannassa esiintyvän lopputuloksen kannalta päivitystransaktiot tulisi sarjallisesti suorittaa järjestyksessä T 2, T 1. Tilannevedoseristyvyydessä siis sitoutumisjärjestys voi olla jokin muu kuin sarjallisesti transaktiot suoritettaessa [FOO04]. Artikkelissaan Fekete ja kumppanit eivät käsittele anomalian esiintymistä käytännön tietokantajärjestelmissä. Anomalian estämisen tarkastelua varten tällainen tarkastelu on kuitenkin hyödyllistä. Seuraavassa historian H 4 luvut ja kirjoitukset on muunnettu Oraclen SQL-lauseiksi.

14 12 A BALANCE x 0 y 0 SQL> /* T1 */ SQL> select balance from accounts where accid= y ; BALANCE SQL> update accounts set balance=20 where accid= y ; 1 row updated. SQL> /* T2 */ SQL> select accid, balance from accounts where accid in ( x, y ); SQL> /* T3 */ SQL> select accid, balance from accounts where accid in ( x, y ); SQL> update accounts set balance=-11 where accid= x ; 1 row updated. A BALANCE x 0 y 20

15 Oraclessa suoritus tuotti saman anomalian kuin historiassa H 4. Lukutransaktioita koskevan anomalian estäminen ei ole yhtä suoraviivaista kuin kirjoitustransaktioita koskevien transaktioiden tapauksessa. Ensimmäinen ratkaisuehdotus on kyselytransaktion T 3 muuttaminen käyttämään select for update -lausetta. Lopputulos näkyy seuraavassa. Tilan säästämiseksi suorituksesta näytetään vain muuttuneet osat. 13 SQL> /* T2 */... SQL> /* T3 */ SQL> select accid, balance from accounts where accid in ( x, y ) for update; SQL> update accounts set balance=-11 where accid= x ; ERROR at line 1: ORA-08177: can t serialize access for this transaction A BALANCE x 0 y 20 Select for update -lause transaktiossa T 3 aiheutti sarjallistuvuusvirheen transaktion T 2 päivitykseen. Kun transaktio T 2 käynnistetään uudelleen, se lukee alussa T 1 :n päivityksen ja asettaa tilin y saldoksi -10. Transaktiot sarjallistuivat nyt järjestyksessä T 1, T 2. Lisäksi transaktio T 3 luki tietokannasta eheän, transaktion T 1 suorituksen jälkeen vallinneen, tilan. Ratkaisun ongelma on kuitenkin kyselytransaktion toiselle transaktiolle aiheuttama sarjallistuvuusvirhe, joka voidaan tulkita tilannevedoseristyvyyden periaatteiden vastaiseksi. Parempi ratkaisuehdotus voisi olla select for update -lauseen käyttö transaktioiden T 1 ja T 2 suorituksessa. Tarkastellaan tämän ratkaisuvaihtoehdon vaikutuksia.

16 14 SQL> /* T2 */ SQL> select accid, balance from accounts where accid in ( x, y ) for update; SQL> /* T1 */ SQL> select balance from accounts where accid= y for update; A BALANCE x 0 y 0 SQL> update accounts set balance=-11 where accid= x ; 1 row updated. ERROR at line 1: ORA-08177: can t serialize access for this transaction Tämä ratkaisu toimii paremmin, sillä nyt select for update -lause pakottaa jälkimmäisen päivitystransaktion jäämään odottamaan kirjoituslukkoa tiliin. Kun lukko saadaan, huomataan heti sarjallistuvuusvirhe. Tässä vaiheessa transaktio voidaan aloittaa uudelleen. Näin ollen transaktiot itse asiassa suoritetaan sarjallisesti järjestyksessä T 2, T 1, kuten tietokannassa näkyvä lopputulos vaatiikin. Edelliseen esimerkkiin ei ole merkitty näkyviin transaktiota T 3, mutta on helppoa nähdä, että sijoitettiinpa se mihin väliin tahansa, se ei voi enää nähdä ainoastaan transaktion T 1 lopputulosta. Ratkaisun ongelma on luonnollisesti päivitystransaktioiden suorituskyvyn heikkeneminen. Tilannevedoseristyvyyden oleellisin hyöty eli lukutransaktioiden suoritus kirjoitustransaktioista riippumatta säilyy kuitenkin entisellään.

17 5 Yhteenveto 15 Edellä esitettyjen anomalioiden valossa on selvää, että tilannevedoseristyvyys ei välttämättä tuota sarjallistuvia historioita. Tästä syystä sarjallistuvia historioita tuottavaa kaksivaihelukitusta voitaisiin pitää parempana samanaikaisuuden hallinnan menetelmänä. Transaktioiden sarjallistuvuuden varmistaminen rajoittaa kuitenkin järjestelmän suorituskykyä. Tämän takia kaikkien suurten tietokantavalmistajien kaksivaihelukitukseen perustuvat tietokantajärjestelmät toimivat oletuksena sarjallistuvuutta matalammalla eristyvyystasolla. Tästä näkökulmasta katsottuna tilannevedoseristyvyys tarjoaakin kilpailukykyisen kompromissin suorituskyvyn ja eristyvyyden suhteen. Monet tilannevedoseristyvyydessä esiintyvät anomaliat ovat korjattavissa kohtuullisen helposti tässäkin esityksessä kuvatuilla tavoilla. Tietokantasovelluksen oikean toiminnan kannalta onkin oleellista huomioida myös samanaikaisuudenhallinnan mekanismi transaktioita ohjelmoitaessa. Lähteet BBG + 95 BHG87 FLO + 05 FOO04 IBM02 ISO03 JBD + 95 Berenson, H., Bernstein, P., Gray, J., Melton, J., O Neil, E. ja O Neil, P., A critique of ANSI SQL isolation levels. SIGMOD 95: Proceedings of the 1995 ACM SIGMOD International Conference on Management of Data, New York, NY, USA, 1995, ACM Press, sivut Bernstein, P. A., Hadzilacos, V. ja Goodman, N., Concurrency Control and Recovery in Database Systems. Addison-Wesley Longman Publishing Co., Inc., Boston, MA, USA, Fekete, A., Liarokapis, D., O Neil, E., O Neil, P. ja Shasha, D., Making snapshot isolation serializable. ACM Trans. Database Syst., 30,2(2005), sivut Fekete, A., O Neil, E. ja O Neil, P., A read-only transaction anomaly under snapshot isolation. SIGMOD Rec., 33,3(2004), sivut IBM Software Group Toronto Laboratory, A technical discussion of multi version read consistency, August ftp://ftp.software. ibm.com/software/data/pubs/papers/readconsistency.pdf. [ ] ISO, ISO/IEC :2003 Information technology Database languages SQL Part 2: Foundation (SQL/Foundation), http: // [ ] Jacobs, K., Bamford, R., Doherty, G., Haas, K., Holt, M., Putzolu, F. ja Quigley, B., Concurrency control: transaction isolation and serializabi-

18 lity in SQL92 and Oracle7. Oracle White Paper A33745, Oracle Corp., July Ora05 Oracle Corp., Oracle Database Concepts 10g Release 2 (10.2). Oracle Corp., June 2005.

Samanaikaisuuden hallinta Snapshot Isolationin avulla

Samanaikaisuuden hallinta Snapshot Isolationin avulla hyväksymispäivä arvosana arvostelija Samanaikaisuuden hallinta Snapshot Isolationin avulla Olli Korhonen Helsinki 4.3.2009 Seminaarityö HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos HELSINGIN YLIOPISTO

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

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

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

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 (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

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

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

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

5.2 Samanaikaisuuden hallinta

5.2 Samanaikaisuuden hallinta Tietokannan hallinta 29 5. Tapahtumien hallinta Tietokannan hallinta 30 5. Tapahtumien hallinta 5.2 Samanaikaisuuden hallinta Tietokannalla on tyypillisesti useita samanaikaisia käyttäjiä (ohjelmia/ihmisiä).

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

D B. Transaktionhallinta - samanaikaisuus

D B. 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

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

Transaktiot - kertausta

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

Lisätiedot

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

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

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

Web-palveluiden transaktionaalinen koostaminen

Web-palveluiden transaktionaalinen koostaminen hyväksymispäivä arvosana arvostelija Web-palveluiden transaktionaalinen koostaminen Tobias Rask Helsinki 18.11.2013 HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos HELSINGIN YLIOPISTO HELSINGFORS UNIVERSITET

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

5.2 Samanaikaisuuden hallinta

5.2 Samanaikaisuuden hallinta Tietokannan hallinta 29 5. Tapahtumien hallinta Tietokannan hallinta 30 5. Tapahtumien hallinta 5.2 Samanaikaisuuden hallinta Tietokannalla on tyypillisesti useita samanaikaisia käyttäjiä (ohjelmia/ihmisiä).

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

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

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

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

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

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

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

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

CS-A1150 Tietokannat CS-A1150 Tietokannat / 47

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

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

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

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

SELECT-lauseen perusmuoto

SELECT-lauseen perusmuoto SQL: Tiedonhaku SELECT-lauseen perusmuoto SELECT FROM WHERE ; määrittää ne sarakkeet, joiden halutaan näkyvän kyselyn vastauksessa sisältää

Lisätiedot

Rinnakkaisuuden hyväksikäyttö peleissä. Paula Kemppi

Rinnakkaisuuden hyväksikäyttö peleissä. Paula Kemppi Rinnakkaisuuden hyväksikäyttö peleissä Paula Kemppi 24.4.2008 Esityksen rakenne Johdantoa Rinnakkaisuus Pelimoottorien rinnakkaisuuden mallit Funktionaalisen rinnakkaisuuden malli Rinnakkaisen tiedon malli

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

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

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

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

Transaktionhallinta. Transaktionhallinta. Transaktionhallinta. R & G Chapter 17

Transaktionhallinta. Transaktionhallinta. Transaktionhallinta. R & G Chapter 17 R & G Chapter 17 ~ 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

Lisätiedot

Samanaikaisuuden hallinta MySQLtietokannanhallintajärjestelmässä. Vesa Tähkävuori

Samanaikaisuuden hallinta MySQLtietokannanhallintajärjestelmässä. Vesa Tähkävuori Samanaikaisuuden hallinta MySQLtietokannanhallintajärjestelmässä käyttäen InnoDBtietokantamoottoria Vesa Tähkävuori Opinnäytetyö Tietojenkäsittelyn koulutusohjelma 2010 Tiivistelmä 16.11.2010 Tietojenkäsittelyn

Lisätiedot

Keskusmuistitietokantojen samanaikaisuuden hallinta

Keskusmuistitietokantojen samanaikaisuuden hallinta Keskusmuistitietokantojen samanaikaisuuden hallinta Ilkka Pullinen Helsinki 09.03.2012 HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos HELSINGIN YLIOPISTO HELSINGFORS UNIVERSITET UNIVERSITY OF HELSINKI

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

Proseduurit, funktiot ja herättimet - esimerkkeinä Oracle, SQL Server, MySQL ja OCELOT. Jouni Huotari S2008

Proseduurit, funktiot ja herättimet - esimerkkeinä Oracle, SQL Server, MySQL ja OCELOT. Jouni Huotari S2008 Proseduurit, funktiot ja herättimet - esimerkkeinä Oracle, SQL Server, MySQL ja OCELOT Jouni Huotari S2008 2 Proseduurit Ohjelmamoduuleita, jotka voidaan tallettaa tietokantaan (DBMS:n tietohakemistoon)

Lisätiedot

PROSEDUURIT, FUNKTIOT JA HERÄTTIMET - ESIMERKKEINÄ ORACLE, SQL SERVER, MYSQL JA OCELOT JOUNI HUOTARI K2009

PROSEDUURIT, FUNKTIOT JA HERÄTTIMET - ESIMERKKEINÄ ORACLE, SQL SERVER, MYSQL JA OCELOT JOUNI HUOTARI K2009 PROSEDUURIT, FUNKTIOT JA HERÄTTIMET - ESIMERKKEINÄ ORACLE, SQL SERVER, MYSQL JA OCELOT JOUNI HUOTARI K2009 PROSEDUURIT Ohjelmamoduuleita, jotka voidaan tallettaa tietokantaan (DBMS:n tietohakemistoon)

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

Action Request System

Action Request System Action Request System Manu Karjalainen Ohjelmistotuotantovälineet seminaari HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos 25.10.2000 Action Request System (ARS) Manu Karjalainen Ohjelmistotuotantovälineet

Lisätiedot

Konsensusongelma hajautetuissa järjestelmissä. Niko Välimäki Hajautetut algoritmit -seminaari

Konsensusongelma hajautetuissa järjestelmissä. Niko Välimäki Hajautetut algoritmit -seminaari Konsensusongelma hajautetuissa järjestelmissä Niko Välimäki 30.11.2007 Hajautetut algoritmit -seminaari Konsensusongelma Päätöksen muodostaminen hajautetussa järjestelmässä Prosessien välinen viestintä

Lisätiedot

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

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

Lisätiedot

Yhtälönratkaisusta. Johanna Rämö, Helsingin yliopisto. 22. syyskuuta 2014

Yhtälönratkaisusta. Johanna Rämö, Helsingin yliopisto. 22. syyskuuta 2014 Yhtälönratkaisusta Johanna Rämö, Helsingin yliopisto 22. syyskuuta 2014 Yhtälönratkaisu on koulusta tuttua, mutta usein sitä tehdään mekaanisesti sen kummempia ajattelematta. Jotta pystytään ratkaisemaan

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

Concurrency - Rinnakkaisuus. Group: 9 Joni Laine Juho Vähätalo

Concurrency - Rinnakkaisuus. Group: 9 Joni Laine Juho Vähätalo Concurrency - Rinnakkaisuus Group: 9 Joni Laine Juho Vähätalo Sisällysluettelo 1. Johdanto... 3 2. C++ thread... 4 3. Python multiprocessing... 6 4. Java ExecutorService... 8 5. Yhteenveto... 9 6. Lähteet...

Lisätiedot

Java ja tietokannan käsittely (JDBC)

Java ja tietokannan käsittely (JDBC) Java ja tietokannan käsittely (JDBC) Javan tietokannan käsittely luokat (java.sql.*) Yhteys tietokantaan Tietokannan yhteyden sulkeminen Tiedon haku tietokannasta Tiedon päivitys tietokantaan Transaktio

Lisätiedot

FinFamily PostgreSQL installation ( ) FinFamily PostgreSQL

FinFamily PostgreSQL installation ( ) FinFamily PostgreSQL FinFamily PostgreSQL 1 Sisällys / Contents FinFamily PostgreSQL... 1 1. Asenna PostgreSQL tietokanta / Install PostgreSQL database... 3 1.1. PostgreSQL tietokannasta / About the PostgreSQL database...

Lisätiedot

HELIA TIKO-05 1 (17) ICT03D Tieto ja tiedon varastointi Räty, Virkki

HELIA TIKO-05 1 (17) ICT03D Tieto ja tiedon varastointi Räty, Virkki HELIA TIKO-05 1 (17) SQL / DML 4 Alikyselyt...2 Joukko-operaatiot...7 Yhdiste, unioni...8 Leikkaus...9 Erotus... 10 Tietokannan datan muokkaus... 11 Lisäys... 11 Yhden rivin lisääminen... 12 Useamman rivin

Lisätiedot

HOJ Haja-aiheita. Ville Leppänen. HOJ, c Ville Leppänen, IT, Turun yliopisto, 2012 p.1/10

HOJ Haja-aiheita. Ville Leppänen. HOJ, c Ville Leppänen, IT, Turun yliopisto, 2012 p.1/10 HOJ Haja-aiheita Ville Leppänen HOJ, c Ville Leppänen, IT, Turun yliopisto, 2012 p.1/10 Missä mennään... 1. Johdanto (1h) 2. Säikeet (2h) 3. Samanaikaisuudesta (2h) 4. Hajautetuista sovelluksista (1h)

Lisätiedot

HAAGA-HELIA Heti-09 1 (12) ICT05 Tiedonhallinta ja Tietokannat O.Virkki Näkymät

HAAGA-HELIA Heti-09 1 (12) ICT05 Tiedonhallinta ja Tietokannat O.Virkki Näkymät HAAGA-HELIA Heti-09 1 (12) Näkymät Näkymät... 2 Eri tyyppisiä relaatioita... 2 Taulu - Tallennettu relaatio... 2 Tulosrelaatio - Kyselyn tulos... 2 Näkymä - Virtuaalirelaatio... 2 Näkymien määrittely...

Lisätiedot

TIEDONHALLINTA - SYKSY Luento 8. Saapumisryhmä: Pasi Ranne /9/13 Helsinki Metropolia University of Applied Sciences

TIEDONHALLINTA - SYKSY Luento 8. Saapumisryhmä: Pasi Ranne /9/13 Helsinki Metropolia University of Applied Sciences TIEDONHALLINTA - SYKSY 2011 Kurssikoodi: Saapumisryhmä: Luento 8 XX00AA79-3013 TU12S2 Pasi Ranne 25.9.2013 25/9/13 Helsinki Metropolia University of Applied Sciences 1 Harjoitustyö Harjoitustöiden tilanne

Lisätiedot

Helsingin yliopisto Tietojenkäsittelytieteen laitos (H.Laine) Tietokantojen perusteet. Liitteenä: Tiivistelmä SQL-syntaksista

Helsingin yliopisto Tietojenkäsittelytieteen laitos (H.Laine) Tietokantojen perusteet. Liitteenä: Tiivistelmä SQL-syntaksista Helsingin yliopisto Tietojenkäsittelytieteen laitos 26.2.2014 (H.Laine) Tietokantojen perusteet Liitteenä: Tiivistelmä SQL-syntaksista Kirjoita jokaiseen erilliseen vastausarkkiin kurssin nimi, tenttipäivä,

Lisätiedot

TIETOKANNAT: MYSQL & POSTGRESQL Seminaarityö

TIETOKANNAT: MYSQL & POSTGRESQL Seminaarityö TIETOKANNAT: MYSQL & POSTGRESQL Seminaarityö Tekijät: Eemeli Honkonen Joni Metsälä Työ palautettu: SISÄLLYSLUETTELO: 1 SEMINAARITYÖN KUVAUS... 3 2 TIETOKANTA... 3 2.1 MITÄ TIETOKANNAT SITTEN OVAT?... 3

Lisätiedot

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

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

Lisätiedot

Rekursiolause. Laskennan teorian opintopiiri. Sebastian Björkqvist. 23. helmikuuta Tiivistelmä

Rekursiolause. Laskennan teorian opintopiiri. Sebastian Björkqvist. 23. helmikuuta Tiivistelmä Rekursiolause Laskennan teorian opintopiiri Sebastian Björkqvist 23. helmikuuta 2014 Tiivistelmä Työssä käydään läpi itsereplikoituvien ohjelmien toimintaa sekä esitetään ja todistetaan rekursiolause,

Lisätiedot

811120P Diskreetit rakenteet

811120P Diskreetit rakenteet 811120P Diskreetit rakenteet 2018-2019 1. Algoritmeista 1.1 Algoritmin käsite Algoritmi keskeinen laskennassa Määrittelee prosessin, joka suorittaa annetun tehtävän Esimerkiksi Nimien järjestäminen aakkosjärjestykseen

Lisätiedot

Käyttöjärjestelmät: poissulkeminen ja synkronointi

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

Lisätiedot

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

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

Lisätiedot

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

HELIA 1 (14) Outi Virkki Tiedonhallinta

HELIA 1 (14) Outi Virkki Tiedonhallinta HELIA 1 (14) Luento Näkymät... 2 Relaatiotyypit... 2 Taulu - Tallennettu relaatio... 3 Näkymä - Virtuaalirelaatio... 3 Tulosrelaatio - Kyselyn tulos... 3 Otetaulut - Tauluun tallennettu kyselyn tulos...

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

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

SYÖTTÖPOHJA LUKUJEN SYÖTTÖÖN ERI TARKOITUKSIIN

SYÖTTÖPOHJA LUKUJEN SYÖTTÖÖN ERI TARKOITUKSIIN SYÖTTÖPOHJA LUKUJEN SYÖTTÖÖN ERI TARKOITUKSIIN Usein tarvitaan käyttäjän käsin syöttämiä lukuja eri tarkoituksiin. Tällaisia ovat mm. budjetti-, ennuste-, tavoite- ym. luvut. Lukuja syötetään eri kohteille,

Lisätiedot

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

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

Lisätiedot

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

Kirjoita oma versio funktioista strcpy ja strcat, jotka saavat parametrinaan kaksi merkkiosoitinta.

Kirjoita oma versio funktioista strcpy ja strcat, jotka saavat parametrinaan kaksi merkkiosoitinta. Tehtävä 63. Kirjoita oma versio funktiosta strcmp(),joka saa parametrinaan kaksi merkkiosoitinta. Tee ohjelma, jossa luetaan kaksi merkkijonoa, joita sitten verrataan ko. funktiolla. Tehtävä 64. Kirjoita

Lisätiedot

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

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

Lisätiedot

SQL Buddy JAMK Labranet Wiki

SQL Buddy JAMK Labranet Wiki Page 1 of 9 SQL Buddy JAMK Labranet Wiki Sisällysluettelo Yleistä SQL Buddy:sta kotisivu :http://sqlbuddy.com/ SQL Buddy on kevyt hallintatyökalu MySQL-tietokannalle. Järjestelmävaatimukset Serverin vaatimukset

Lisätiedot

Yhdiste, leikkaus, erotus ym.

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

Lisätiedot

OPI-Maksut - Käyttötapaukset

OPI-Maksut - Käyttötapaukset OPIMaksut Käyttötapaukset Toiminnallisuudet ja käyttötapaukset: maksupalvelutoiminnot Toimeksiannon lisääminen Palveluväylä toiminto: Toimeksiannon lisääminen Yleiskuvaus Palveluväylään sallitut asiointisovellukset

Lisätiedot

Maastotietokannan torrent-jakelun shapefile-tiedostojen purkaminen zip-arkistoista Windows-komentojonoilla

Maastotietokannan torrent-jakelun shapefile-tiedostojen purkaminen zip-arkistoista Windows-komentojonoilla Maastotietokannan torrent-jakelun shapefile-tiedostojen purkaminen zip-arkistoista Windows-komentojonoilla Viimeksi muokattu 5. toukokuuta 2012 Maastotietokannan torrent-jakeluun sisältyy yli 5000 zip-arkistoa,

Lisätiedot

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

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

Lisätiedot

Ohjelmistojen mallintamisen ja tietokantojen perusteiden yhteys

Ohjelmistojen mallintamisen ja tietokantojen perusteiden yhteys Ohjelmistojen mallintamisen ja tietokantojen perusteiden yhteys Tällä kurssilla on tutustuttu ohjelmistojen mallintamiseen oliomenetelmiä ja UML:ää käyttäen Samaan aikaan järjestetyllä kurssilla on käsitelty

Lisätiedot

Arkkitehtuurikuvaus. Ratkaisu ohjelmistotuotelinjan monikielisyyden hallintaan Innofactor Oy. Ryhmä 14

Arkkitehtuurikuvaus. Ratkaisu ohjelmistotuotelinjan monikielisyyden hallintaan Innofactor Oy. Ryhmä 14 Arkkitehtuurikuvaus Ratkaisu ohjelmistotuotelinjan monikielisyyden hallintaan Innofactor Oy Ryhmä 14 Muutoshistoria Versio Pvm Päivittäjä Muutos 0.4 1.11.2007 Matti Eerola 0.3 18.10.2007 Matti Eerola 0.2

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

FYYSINEN SUUNNITTELU

FYYSINEN SUUNNITTELU IIO30100 TIETOKANTOJEN SUUNNITTELU JA IIO30200 TIETOKANNAN HALLINTA FYYSINEN SUUNNITTELU KIRJAN HOVI, HUOTARI, LAHDENMÄKI: TIETOKANTOJEN SUUNNITTELU & INDEKSOINTI, DOCENDO (2003, 2005), LUKU 9 JOUNI HUOTARI,

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

Sisältö. Tosiaikajärjestelmät Luento 11: Tosiaikatietokannat. Abstrakti tietokantamalli. Tietoalkio ACID. Transaktion tilat. Abstrakti tietokantamalli

Sisältö. Tosiaikajärjestelmät Luento 11: Tosiaikatietokannat. Abstrakti tietokantamalli. Tietoalkio ACID. Transaktion tilat. Abstrakti tietokantamalli Tosiaikajärjestelmät Luento 11: Tosiaikatietokannat Tiina Niklander Perustuu Jan Lindströmin materiaalin S2002 ja artikkeliin: Ramamritham, Son & DiPippo: Real-Time Databases and Data Services. Real-Time

Lisätiedot

Tosiaikajärjestelmät Luento 11: Tosiaikatietokannat

Tosiaikajärjestelmät Luento 11: Tosiaikatietokannat Tosiaikajärjestelmät Luento 11: Tosiaikatietokannat Tiina Niklander Perustuu Jan Lindströmin materiaalin S2002 ja artikkeliin: Ramamritham, Son & DiPippo: Real-Time Databases and Data Services. Real-Time

Lisätiedot

815338A Ohjelmointikielten periaatteet Harjoitus 3 vastaukset

815338A Ohjelmointikielten periaatteet Harjoitus 3 vastaukset 815338A Ohjelmointikielten periaatteet 2015-2016. Harjoitus 3 vastaukset Harjoituksen aiheena ovat imperatiivisten kielten muuttujiin liittyvät kysymykset. Tehtävä 1. Määritä muuttujien max_num, lista,

Lisätiedot

Matematiikan tukikurssi, kurssikerta 3

Matematiikan tukikurssi, kurssikerta 3 Matematiikan tukikurssi, kurssikerta 3 1 Epäyhtälöitä Aivan aluksi lienee syytä esittää luvun itseisarvon määritelmä: { x kun x 0 x = x kun x < 0 Siispä esimerkiksi 10 = 10 ja 10 = 10. Seuraavaksi listaus

Lisätiedot

Windows Server 2012 asentaminen ja käyttöönotto, Serverin pyörittämisen takia tarvitaan

Windows Server 2012 asentaminen ja käyttöönotto, Serverin pyörittämisen takia tarvitaan Aram Abdulla Hassan Windows Server 2012 asentaminen ja käyttö 1 Windows Server 2012 asentaminen ja käyttöönotto, Serverin pyörittämisen takia tarvitaan Hyper-V ohjelma. Riipu minkälaista Serveria yritämme

Lisätiedot

Lineaariset kongruenssiyhtälöryhmät

Lineaariset kongruenssiyhtälöryhmät Lineaariset kongruenssiyhtälöryhmät LuK-tutkielma Jesse Salo 2309369 Matemaattisten tieteiden laitos Oulun yliopisto Sisältö Johdanto 2 1 Kongruensseista 3 1.1 Kongruenssin ominaisuuksia...................

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

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

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

Lisätiedot

811312A Tietorakenteet ja algoritmit , Harjoitus 2 ratkaisu

811312A Tietorakenteet ja algoritmit , Harjoitus 2 ratkaisu 811312A Tietorakenteet ja algoritmit 2017-2018, Harjoitus 2 ratkaisu Harjoituksen aiheena on algoritmien oikeellisuus. Tehtävä 2.1 Kahvipurkkiongelma. Kahvipurkissa P on valkoisia ja mustia kahvipapuja,

Lisätiedot

Kyselyn yleisrakenne:

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

Lisätiedot

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

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

Lisätiedot

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

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

Ohjelmoinnin perusteet Y Python

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

Lisätiedot

Testidatan generointi

Testidatan generointi Testidatan generointi Anu Ahonen Kevät 2008 Tämä työ on tehty Creative Commons -lisenssin alla Työn tarkasti 9.4.2008 Jouni Huotari (JAMK/IT) 1 SISÄLTÖ 1 TYÖN LÄHTÖKOHDAT JA TOTEUTUS...2 2 TESTIDATAN GENEROINTI

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

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