koko_kurssin_luentomateriaali_2015
Transcription
koko_kurssin_luentomateriaali_2015
Tietokannat Kevät 2015 1 Kurssin järjestelyt 2 Luennot, Erja Mustonen-Ollila Harjoitukset, Erja Mustonen-Ollila Harjoitustyön ohjaus, Erja Mustonen-Ollila SQLViope verkkokurssi, Erja Mustonen-Ollila Luentomateriaali, Lasse Lehtimäki Uusi 2015 luentomateriaali, Erja Mustonen-Ollila Kurssimoniste, Erja Mustonen-Ollila Aikataulu 3. periodilla 1. 2. 3. 4. 5. 8. 9. 10. 11. 12. 13. 3 Johdanto Tietokannan suunnittelun vaiheet Käsitemalli ja sen muuntaminen relaatiomalliksi Relaatiomallin muuntaminen tietuekuvauksiksi SQL ja sulautettu SQL Tietokannan turvallisuus Tietokannan tapahtumakäsittely Hajautetut tietokannat Oliotietokannat ja Object Query Language (OQL) Tietokannat ja tietoverkot Tietovarastointi (DW) Aikataulu 3. periodilla 6. 7. 8. 9. 10. 11. 12. 4 Tietokannan suojaaminen Tapahtumakäsittely Varmuuskopiointi ja palautus Tietokantojen hajauttaminen Katsaus oliotietokantoihin Tietojen varastointi Uutta 2015: Hajautetut tietokannat Tietovarastointi Tietokannat ja tietoturva Ohjelmistojen turvallisuus Tietokantojen uhat PHP ja MySQL Kurssin kirjallisuus Luennot – Kurssimateriaali Nopasta Kirjoja – – – 5 Connolly, Thomas and Begg, Carolyn : Database Systems, A Practical Approach to Design, Implementation, and Management, 2nd Edition Date, C.J. : An Introduction to Database Systems, 7th Edition Elmasri, R. and Navathe, S.B. : Fundamentals of Database Systems, 3rd Edition Tietokantojen historiaa 6 Juuret juontuvat 1950-luvun lopulle ja 1960-luvun alkuun. Ensimmäiset "tietokannat" olivat yksinkertaisia tiedostojärjestelmiä, joista puuttui keskitetty hallinta. Ensimmäiset varsinaiset tietokannat olivat hierarkisia tietokantasysteemejä, kuten esim. IMS ja System 2000. 1960 -luvun lopulla ja 1970 -luvun alussa tulivat verkkotietokannat, kuten esim. Codasyl. Näissä oli vielä paljon puutteita, esim. tiedon etsiminen vaati monimutkaisten puumaisten rakenteiden läpikäyntiä. Suuri mullistus oli E.F. Codd:in julkistama relaatiomalli 1972. Käyttäjän kannalta relaatiomallin edut ovat sen yksinkertaisuus ja helppokäyttöisyys. Relaatiotietokannoissa on käytössä hakukieli, jolla ilmaistaan mitä tietoa halutaan, eikä miten tiedon löytää. 1970-luvun jälkeen on syntynyt monia kaupallisia relaatiotietokantoja, esim. Oracle, Sybase ja DB2. Historiasta tähän päivään Viime vuosikymmeninä on perinteisten kaupallisten sovellusalueiden lisäksi tietokantojen hallintajärjestelmät vallanneet alaa uusilta sovellusalueilta, kuten esim. – – – – – Näille sovelluksille tyypillisiä piirteitä ovat esim. tiedon monimutkaisuus ja monimuotoisuus, tiedon suuri määrä sekä tietokantaoperaatioiden monimuotoisuus. – Sisältävät kuvaa, ääntä ja tekstimuotoista tietoa. Näille uusille sovellusalueille uusia tietomalleja ovat semanttiset tietomallit ja oliotietokannat. Relaatiotietokantojen jälkeen on alkanut kiinnostus siirtyä seuraaviin: – – 7 CAD/CAM CASE Paikkatietojärjestelmät (GIS, Geographical Information Systems) Lääketieteen informaatiojärjestelmät Multimedia Oliotietokannat Älykkäät tietokannat Johdatus tiedonhallintaan Esimerkki yksinkertaisesta tietokannasta ID 1 2 3 4 5 6 7 8 MERKKI BMW BMW Citroen Ford Ford Ford Ford MALLI 316i Bavaria 320i BX 16 TRS Escort 1.8i CLX STW Mondeo 2.0i GLX Sierra 2.0i S Transit 100L Van GL Dsl KORI S4 S4 S4 F5 S4 S4 PA MOOTTORI 1,6 2,0 1,6 1,8 2,0 2,0 VM. 1991 1989 1988 1992 1995 1992 1989 ML. 135000 215000 185000 126000 98000 155000 219000 HINTA 76 50,00 € 59 50,00 € 22 80,00 € 66 80,00 € 109 90,00 € 66 90,00 € 49 80,00 € Mikä on tiedonhallintajärjestelmä? Tietokanta on paikka, johon talletetaan käyttökelpoista tietoa. Tiedonhallintajärjestelmä (THJ, DBMS, Database Management System) on joukko ohjelmia, jotka mahdollistavat tietokannan keskitetyn luonnin ja ylläpidon. Tietokannan määrittelyprosessissa määritellään, minkä tyyppistä tietoa tietokantaan talletetaan. Tietokannan rakentamisprosessissa tehdään varsinainen tietokanta. Tietokannan käsittelyprosessissa tietoa päivitetään ja haetaan. Esimerkki edellä autoliikkeestä, jossa erilaisia vaihtoautoja. Operaatiot, joita tarvitaan tietokantaan: – – – – 9 uusien tiedostojen lisäys uusien automerkkien lisäys olemassa olevan tiedon päivitys: muutos, lisäys ja poisto erilaisten kriteerien mukaisen tiedon haku tiedostosta Mitä tiedonhallintajärjestelmässä on? Tiedonhallintajärjestelmä voi olla yksi- tai monikäyttöjärjestelmä. Tieto tietokannassa voi olla sekä integroitua että jaettua. – – Käyttäjät näkevät tietokannan eri tavoin käyttötarpeesta riippuen (näkymät, views). Tiedonhallintajärjestelmä koostuu: – – – – 10 Integroitu tieto: tietokanta koostuu erillisistä tiedostoista, joissa päällekkäisyys (redundancy) on osittain tai kokonaan eliminoitu. Jaettu tieto: usea käyttäjä voi käyttää samoja tietoja eri tarkoituksiin, käyttö voi olla samanaikaista (concurrency). tiedosta (integroitu, jaettu) ohjelmista (DBMS) raudasta (levyt) käyttäjistä (sovellusohjelmoija, loppukäyttäjä, tietokannan hoitaja) Kuka tarvitsee tiedonhallintaa? Tyypillisiä käyttäjiä – Tyypillistä tietoa: – Tuotantoyritys, pankki, sairaala, yliopisto ja valtion virasto Tuotteisiin liittyvä tieto, tilitiedot, potilastiedot, opiskelijatiedot ja suunnittelua tukevat tiedot Tiedon muoto ja erilaiset tietotyypit: – "Perinteinen" tieto on merkkityyppistä tietoa. – Uusia sovellusalueita, jotka sisältävät lisäksi esim. 11 Se koostuu perustietotyypeistä, kuten luvuista ja merkeistä. kuvaa ääntä Uusia vaatimuksia tietomallille ja tiedonhallintajärjestelmälle Joitakin käsitteitä 12 Käsitemalli (entity-relationship model) on perustana tiedon käsitteistämisessä. Käyttötieto koostuu käsitteistä ja niiden välisistä suhteista (relationships). Käsitteitä ovat esim. tuottaja ja työntekijä yrityksessä. Käsitteiden ominaisuuksia ovat esim. työntekijän nimi ja ikä. Käsitteiden väliset suhteita ovat: 1:1, 1:M, M:N. Tietokantasysteemin etuja 13 Tiedon keskitetty hallinta. Tietojen päällekkäisyys vähenee tai on hallittua. Tiedon ristiriitaisuus (inconsistency) voidaan välttää. Useampi käyttäjä voi käyttää tietoa, myös samanaikaisesti. Standardointi on helpompaa. Tietojen käyttöoikeudet voidaan varmistaa. Tietojen luotettavuus ja oikeellisuus on parempi. Järjestelmää rakennettaessa voidaan ottaa eri käyttötarpeet huomioon. Uusien sovellusten käyttöönotto helpompaa. Tarjoaa tiedon varmistukseen ja toipumiseen mekanismit. Tietokantojen haittoja 14 Kalleus lyhyellä tähtäimellä THJ:t melko raskaita ja joskus jopa monimutkaisia Toiminnan riippuvuus tietokannasta (esim. lehtiyhtiö) Käytä tiedostoratkaisua seuraavissa Tietokanta ja sovellukset yksinkertaisia, hyvin määriteltyjä ja melko muuttumattomia. – Aikavaatimus on suuri. – Järjestelmä yksinkertainen, jolloin tietokannan rakentaminen vie enemmän aikaa kuin tiedostoratkaisu. Tietoon ei tarvita useamman käyttäjän pääsyä. – – 15 Esimerkiksi hyvin yksinkertainen kortisto, jossa tietokantaan tulisi vain yksi taulu. Ei tarvita monen käyttäjän ympäristöä. Tietojen oltava kuitenkin yksinkertaisia, jotka eivät sisällä monimutkaisia relaatioita. Tiedonhallintajärjestelmän arkkitehtuuri Suosituin tapa kuvata THJ-arkkitehtuuria on ns. ANSI/SPARC -ehdotus standardiksi (vuonna 1978). – – Arkkitehtuuri jakautuu kolmeen tasoon: – – – 16 ANSI = American National Standards Institute SPARC = Standards Planning and Requirements Committee Sisäinen taso (Internal level) Käsitteellinen taso (Conceptual level) Ulkoinen taso (External level) Kuvaukset tasojen välillä Käsitetaso Sisäinen taso – – – Ulkoinen taso Käsitetaso – – 17 Esittää käsitetason ja sisäisen tason tietueiden vastaavuudet Kertoo, kuinka käsitetason tietueet talletetaan sisäisellä tasolla Jos sisäinen taso muuttuu, tulee kuvausta muuttaa Eri käyttäjillä näkemyksiä -> erilaisia kuvauksia tasojen välillä Tietojen esitystapojen muunnokset DBA (Database Administrator, tietokannan hoitaja) Päättää tietokannan sisällöstä Päättää talletustavasta ja käsittelystrategiasta Valtuuttaa käyttäjät Määrittää turvallisuusasiat Toipuminen ja palautus Suorituskyvyn tarkkailu ja tarvittavien muutosten tekeminen Työkaluja: – – – – – Tietohakemisto (Data Dictionary) – – – 18 tietokannan luonti dump/restore tiedon uudelleenjärjestely tietokannassa tilastolliset rutiinit esim. tiedostojen koko analyysirutiinit "Data about data", "metadata" sisältää talletettuna kaaviot ja kuvaukset tiedon ohjelmista, käyttäjistä Tietomalleja Käyttäjän ei tarvitse tietää tiedon fyysisiä talletusrakenteita, vaan hänellä on ulkoinen näkemys (external view) talletettuun tietoon. THJ:n on tuettava tätä näkemystä sovelluksesta toiseen (ns. tietoriippumattomuus, data independence) Tietomalleja Relaatiomalli Semattiset tietomallit: – – 19 ER-malli Oliopohjainen tietomalli Relaatiomalli 20 Relaatiomalliin liittyviä termejä: Suom. käsite Eng. käsite Selite taulu, taulukko, relaatio relation attribuutti attribute sarake, ominaisuus rivi, monikko tuple rivi arvoalue, arvojoukko domain perusavain, primääriavain primary key avainehdokas candidate key viiteavain, vierasavain foreign key taulun aste table degree sarakkeiden lkm taulun koko cardinality rivien lkm skeema schema malli näkymä view käyttäjän näkemys pääavain Relaatiotietokannat 21 Tietokanta on loogisesti yhtenäinen kokoelma tietoa, jolla on jotain sille ominaisesti kuuluva tarkoitus. Tietokanta on suunniteltu, rakennettu ja täytetty tiedoilla tiettyä tarkoitusta varten. Käyttäjäryhmät ovat tiedossa, samoin sovellukset. Esittää osaa reaalimaailmasta. Tietokannalla on tietomalli, joka esittää miten tieto näkyy käyttäjälle (ANSI/SPARC arkkitehtuurin ulkoinen taso). Relaatiotietokanta on tietokanta, joka näkyy käyttäjälle kokoelmana tauluja (ja ainoastaan tauluja). Codd esitti relaatiomallin 1970 –luvulla. Relaatioiden välinen yhteys, tiedonkäsittely Relaatio-operaatiot kohdistuvat tauluihin. Relaatioalgebran operaatioita ovat: yhdiste, leikkaus, erotus, tulo, valinta, projektio, liitos ja jako. Relaatiokalkkyyli määrittelee formalismin, jonka mukaan operaatiot suoritetaan (perustuu predikaattilogiikkaan). Tiedon käsittelykieliä (query languages), jotka toteuttavat ralaatioalgebran ja relaatiokalkkyylin, ovat esim. – – – – – – 22 SQL - Structured Query Language QUEL – Ingres QBE - Query By Example, IBM DB2 QBF - Query By Form Focus - 4 GL OLE - On-Line-English Tiedon eheys Eheys tarkoittaa tiedon ristiriidattomuutta ja oikeellisuutta. Tavoitteena on estää tietokannan tietojen sellainen käsittely, joka johtaa ristiriitaisuuksiin tietokannan tietosisällössä. Eheyssäännöt määritellään tietokannan skeemassa. On olemassa neljänlaisia eheyssääntöjä, joista kolme ensimmäistä liittyy pääavaimeen ja viiteavaimeen: – – – – 23 Avaineheys: avainehdokkaiden tulee olla yksikäsitteisiä jokaiselle riville. Käsitteellinen eheys: pääavaimen arvo ei saa olla NULL. Yhteyseheys: viittauksen toisesta relaatiosta toiseen relaatioon täytyy olla viittaus olemassaolevaan tietoon. Semanttiset eheyssäännöt, esim. työntekijän palkka ei saa olla suurempi kuin hänen esimiehensä palkka. THJ ylläpitää eheyssääntöjä. Perusavain (Primary key) 24 Relaation perusavain on yksikäsitteinen tunniste kyseiselle relaatiolle. Perusavain voi olla yhdiste useammasta relaation ominaisuudesta (kuitenkin harvinainen). Perusavainehdokkaita voi olla useampia, mutta lopulta tehtävä valinta, mistä tehdään perusavain ja muut ehdokkaat ovat nk. toissijaisia avaimia. Viiteavain (Vierasavain, Foreign key) 25 Viiteavaimella kuvataan viittauksia toisesta relaatiosta toiseen eli relaatiotietokannan taulujen välisiä yhteyksiä (yhden suhde yhteen, yhden suhde moneen ja monen suhde moneen). Viiteavain on taulun R2 ominaisuus tai ominaisuusyhdistelmä, jonka arvot ovat samat kuin pääavaimella relaatiossa R1. R1 ja R2 voivat olla yksi ja sama taulu. Näkymä (View) Sovellusohjelmilla ja käyttäjillä on tarve nähdä relaatio hieman erilaisena kuin se todellisuudessa on. He voivat katsella relaatiota johdettujen (laskettujen) relaatioiden, eräänlaisten virtuaalirelaatioiden kautta. – – Näkymä ei ole pysyvästi talletettu tietokantaan, vaan THJ tallentaa kuvauksen, jolla näkymä on tehty. – Näkymien päivitys normaalirelaatioiden päivityksen yhteydessä ja toisinpäin ? Ongelmaksi muodostuu tilanne, jolloin ko. ominaisuutta ei kaikista näkymistä löydykään. Kaksi mahdollisuutta ratkaista ongelma: – – 26 Joku käyttäjä ei voi nähdä joitakin relaation ominaisuuksia esim. työntekijän palkkaa. Käyttäjän tarve tietoon on vain osa-alue koko organisaation tarpeesta. Hylätään operaatiot ei määritellyille ominaisuuksille. Korvataan null-arvot: kaikki vertailut, joiden tuloksena null –arvo katsotaan epätosiksi. Coddin säännöt Codd E.F., 1985 “12 sääntöä tietokannoille” 1. 2. 3. 4. 5. Relaatiotietokannan THJ:n tulee pystyä hallitsemaan tietokanta käyttämällä vain relaatio-ominaisuuksia. Relaatiotietokannan kaikki tieto esitetään loogisella tasolla ja arvoina tauluissa. Kaikki atomiset arvot löytyvät taulun nimen, perusavaimen ja sarakkeen perusteella. NULL -arvot esitetään kuvaamaan puuttuvia tietoja systemaattisesti, riippumatta tietotyypistä. Tietokannan kuvaus tehdään samaan tapaan kuin muunkin tiedon kuvaus. Tiedon määrittely, luonti ja haku (DDL, DML) on muodostettava yksi DSL, joka käsittää seuraavat toimet: 1. 2. 3. 4. 5. 6. 27 tiedon määritys näkymien määritys tiedon käsittely eheyden käsittely valtuutukset tiedonsiirron rajoitukset (pysyvä tieto vai ei) Coddin säännöt Codd E.F., 1985 “12 sääntöä tietokannoille” 6. 7. 8. 9. 10. 11. 12. 28 Näkymien päivitys oltava mahdollista (Näkymien päivitys) Haun lisäksi tulee tauluun voida kohdistaa toiminnot lisäys, päivitys ja poisto (Korkean tason tiedon lisäys, muutos ja poisto). Päätetyöskentely tai sovellusohjelmat eivät muutu vaikka tiedon fyysinen esitystapa muuttuu (Fyysisen tiedon riippumattomuus). Päätetyöskentely tai sovellusohjelmat eivät muutu vaikka tiedonsäilyttäviä muutoksia tehdään tietokannan tauluihin (Loogisen tiedon riippumattomuus). Eheysrajoitteet määritetään DSL:ssä ja talletetaan tietokannan tauluihin (Eheysriippumattomuus). Tiedon käsittely on samanlaista olipa tieto keskitetty tai hajautettu (Hajautusriippumattomuus). Alemman tason tiedonkäsittely ei voi kiertää ylemmän tason määrityksiä. Tietokannan suunnittelun eri vaiheet Tietokannan suunnittelu on osa systeemityötä. Tietokannan suunnittelu painottaa enemmän tietojen suunnittelua kuin sovellusten ja niiden toimintojen suunnittelua => tietokeskeinen näkökulma. Suunnitellaan yhden tai useamman tietokannan looginen ja fyysinen rakenne, joilla toteutetaan organisaation henkilöiden tietotarpeet tiettyjä sovelluksia käyttäen. Tietokannan suunnittelun tavoitteet ovat moninaiset: – – – 29 tietosisältö käyttäjien ja sovellusohjelmien kannalta tiedon esittämistapa tiedon käsittelyn vaatimukset: vasteaika, prosessointiaika, tilantarve Tietokannan turvallisuus Suojautumista tahallista tai tahatonta hyökkäystä vastaan käyttäen joko teknisiä (esim. ohjelmallisia) keinoja tai ei-teknisiä keinoja Turvallisuuteen vaikuttavia tekijöitä – Varkaus ja huijaus – Salassapitovelvollisuus ja sen menetys – Tietokannan yhtenäisyyden murentuessa tietoihin ei voida enää luottaa Voi olla vakavia vaikutuksia yrityksen liiketoimintaan Tietojen saatavuus ja saatavuuden rajoittuminen 30 Voi johtaa oikeustoimiin Yhtenäisyys ja sen rakoileminen – Voi heikentää kilpailukykyä Yksityisyys ja sen menetys – Ei liity pelkästään tietokantoihin, vaan koko yritykseen Tietojen käyttökatkot voivat vaikeuttaa yrityksen toiminnan ylläpitämistä Tietojen saatavuuteen vaikuttaa sekä tietokantajärjestelmän toimivuus että käytettävän ympäristön (käyttöjärjestelmä, lähiverkko tms.) pysyminen käyttökunnossa Tietokannan turvallisuus Uhkatekijät – – – – – – 31 Mikä tahansa tilanne tai tapahtuma, tahallinen tai tahaton, joka vaikuttaa epäsuotuisasti tietojärjestelmään ja sitä kautta koko yritykseen Laitteiden ja järjestelmien käytettävyys Milloin viimeisin varmuuskopiointi on otettu? Aika, joka tarvitaan järjestelmän palauttamiseen Voidaanko kadotetut tiedot saada jotenkin takaisin? Uhkataulukon tekeminen Turvallisuus Vastatoimet – järjestelmään pohjautuvat Valtuutukset – – – Luodaan sellaiset oikeudet ja käyttömahdollisuudet, jotka oikeuttavat järjestelmän tai sen osan käyttöön siinä määrin kuin se on välttämätöntä On pyrittävä luomaan sellainen mekanismi, jolla käyttäjä voidaan tunnistaa oikeaksi käyttäjäksi Oikeuksien periytyminen – Käyttäjien ja käyttäjäryhmien oikeuksista tehdään taulukko Näkymät – – 32 Kun käyttäjälle annetaan oikeudet tietokantaan (luodaan käyttäjätunnus ja salasana), mitä muita oikeuksia käyttäjä saa? Voi olla tarpeen luoda käyttäjälle kaikki tarvittavat oikeudet tunnuksen luomisen jälkeen tai rajoittaa automaattisesti luotuja käyttöoikeuksia Omistajan oikeudet ja muiden oikeudet Näkymät ovat yhden tai useamman relaation dynaaminen liitos Näkymien avulla voidaan ”piilottaa” käyttäjälle tarpeettomat tiedot tietokannasta Turvallisuus Vastatoimet – järjestelmään pohjautuvat Varmuuskopiointi ja niiden palautus – – – – – – – 33 Varmuuskopioinnilla tarkoitetaan tietyin väliajoin otettavaa kopiota tietokannasta ja sen lokitiedostoista Varmuuskopioon otetaan mahdollisesti myös ohjelmat (loppukäyttäjän ohjelmat) Varmuuskopio otetaan sellaiselle tallennusvälineelle, jota ei voi käyttää aktiivisesti ja joka talletetaan turvalliseen paikkaan (esim. kassakaappi) Varmuuskopioiden lisäksi otetaan lokitiedostot talteen sopivin väliajoin, jolloin tietokannan palautus käyttökatkon jälkeen voi onnistua nopeammin ilman varsinaisen varmuuskopion palautusta Tarkistuspisteiden käyttö, jolloin tietokannan ja lokitiedostojen tiedot synkronoidaan Varmuuskopioiden palautuksen tulisi olla sellainen, että järjestelmä saadaan varmuuskopion ottamista edeltävään tilaan Palautuksen yhteydessä tietokantaan ei pitäisi päästä eheysrikkomuksia tms. Turvallisuus Vastatoimet – järjestelmään pohjautuvat Yhtenäisyys (eheys) – – Tästä on ollut puhetta jo aikaisemmin Eheys liittyy turvallisuuteen siinä mielessä, että eheyden ollessa kunnossa, tietokantaan ei voida tallentaa sellaisia tietoja, jotka esim. saattavat tietokannan tiedot yritykselle epäedulliseen tilaan Salaus (salaus) – – – Suojauksella tiedot muunnetaan erityisellä algoritmilla niitä siirrettäessä Tiedot ovat luettavissa vain käyttämällä suojauksen purkuavainta Suojaukseen tarvitaan 34 Suojausavain Suojausalgoritmi Suojauksen purkuavain Suojauksen purkualgoritmi Yhdistetyt aliohjelmat Turvallisuus Vastatoimet – järjestelmästä riippumattomat Turvallisuuspolitiikka ja varasuunnitelma – – – – – – – Liiketoiminnan osa (alue), jota turvallisuuspolitiikka koskee Työntekijöiden vastuut ja velvollisuudet Mitä toimenpiteitä vaaditaan turvallisuuspolitiikan ylläpitämiseen? Toimintasuunnitelmat, joita täytyy noudattaa Ketkä ovat avainhenkilöitä ja miten heidät tavoittaa? Mitä henkilökunnalta vaaditaan? Mistä voidaan saada ulkopuolista apua tarvittaessa? Henkilökohtainen kontrolli Sijoittaminen ja varastointi – Mihin sijoitetaan esim. tulostimet, jotka tulostavat arkaluonteista tietoa 35 Lukittuja huoneita (kaappeja tms.) pitää olla sopivasti Turvallisuus Vastatoimet – järjestelmästä riippumattomat PC turvallisuus – – Tiedonhallintajärjestelmät ja tietoverkko – – – – Proxy –palvelimet Palomuurit Digitaalinen allekirjoitus Suojattujen protokollien käyttö (SSL, SHTTP) Riskianalyysi – 36 Yksi suuri epäkohta, mikäli työasemiin jätetään esim. lounasajaksi tietokantasovelluksia aktiivisiksi Virukset Riskianalyysin tekemiseen kannattaa perustaa ”turvallisuusryhmä”, joka perehtyy yrityksen tarvitsemiin suojautumiskeinoihin Tapahtumäkäsittely Mitä tapahtumilla tarkoitetaan? (1/2) Tapahtuma on toimenpide tai toimenpidesarja, jonka yksittäinen käyttäjä tai ohjelma käskee suorittamaan ja joka hakee tai päivittää tietokannan sisältöä Tapahtuma on siis looginen kokonaisuus tietokannassa tapahtuvia toimenpiteitä, jotka liittyvät toisiinsa Esimerkki tapahtumasta, jossa käytetään relaatiota Staff (Sno, Fname, Lname, Address, Tel_No, Position, Sex, DOB, Salary, NIN, Bno) – 37 read(Sno = x, salary) salary = salary * 1.1 write(Sno = x, new_salary) Esimerkki kasvattaa henkilön palkkaa 10%:lla Tapahtumalle annetaan henkilön tunniste (x, joka on perusavain) ja haetaan sekä tunniste että palkka Palkan korottamisen jälkeen muuttuneet tiedot kirjoitetaan takaisin tietokantaan Tapahtumakäsittely Mitä tapahtumilla tarkoitetaan? (2/2) Esimerkki, jossa käytetään em. relaation lisäksi relaatiota Property_for_Rent (Pno, Street, Area, City, Pcode, Type, Rooms, Rent, Ono, Sno, Bno) – 38 delete(Sno = x) for all Property_for_Rent records, pno begin read(Pno = pno, sno ) if (sno = x) then begin sno = new_sno write (Pno = pno, sno) end end Esimerkissä poistetaan työntekijä ja päivitetään viittaukset relaatiossa, jossa viiteavaimena on poistetut työntekijän tunnus Lopputuloksena tapahtuman tulee saattaa tietokanta sallittuun tilaan (eheäksi) Tapahtumäkäsittely Kaikkien tapahtumien pitäisi sisältää seuraavat neljä ominaisuutta (ACID) – – – – 39 Atomicity: jokainen tapahtuma on jakamaton, joka suoritetaan joko kokonaan tai ei ollenkaan Consistency: jokainen tapahtuma on johdonmukainen ja saattaa tietokannan jostakin sallitusta (eheästä) tilasta toiseen tällaiseen tilaan Isolation: jokainen tapahtuma on erillinen (riippumaton) muista tapahtumista; toisin sanoen tapahtuman, joka koostuu useasta eri toimenpiteestä, näkyvyys toiselle tapahtumalle on koko tapahtuma tai ei mitään, tapahtuman sisällä olevat toimenpiteet eivät näy toiselle tapahtumalle erillisinä Durability: loppuun saatetun tapahtuman (annettu commit) vaikutus tallennetaan tietokantaan lopullisena tapahtumana eikä tätä hävitetä, jotta myöhemmin ei tulisi virheitä (esim. eheydestä johtuvia) Tapahtumakäsittely Samanaikaisten prosessien (tapahtumien) hoitaminen niin, etteivät ne sekoita toisiaan tai aiheuta sekaannusta tietokantaan Samanaikaisuuden hallintaa tarvitaan silloin, kun tietokantaan kohdistuu useamman kuin yhden käyttäjän toimenpiteitä koskien samoja tietokannan tietoja (relaatioita) Samanaikaisuuden hallintaa tarvitaan myös silloin, kun useampi kuin yksi ohjelma tekee päivityksiä tai hakuja tietokantaan samoihin tietoihin (relaatioihin) Kaksi tapahtumaa voivat toimia yksinäisinä tapahtumien moitteettomasti, mutta niiden samanaikainen suorittaminen voi tuottaa ongelmia – – – 40 Päivityksen menetys Riippuvuus keskeneräisestä tapahtumasta Ristiriitaisuuden ongelma Tapahtumakäsittely Yhden käyttäjän / ohjelman tekemä päivitys voidaan menettää, kun toinen käyttäjä / ohjelma tekee päivityksen ensimmäisen päivityksen jälkeen käyttäen kuitenkin alkuarvonaan tietokannassa ollutta arvoa ennen ensimmäistä päivitystä Aika-akselilla kuvattuna tapahtumat ja niiden vaikutus voisi olla vaikka seuraava Aika t1 t2 T2 begin_transaction begin_transaction read(balx ) balx 100 100 t3 read(balx ) balx = balx + 100 100 t4 balx = balx - 10 write(balx ) 200 t5 t6 41 T1 write(balx ) commit commit 90 90 Tapahtumakäsittely Riippuvuus keskeneräisestä tapahtumasta Tapahtuman tuottamien tulosten näkyminen toiselle tapahtumalle ennen kuin koko tapahtuma on suoritettu loppuun voi tuottaa ongelmia Em. esimerkistä tapahtumien suoritus hieman toisessa järjestyksessä muutamalla lisäyksellä voi tuottaa esim. seuraavan tuloksen Aika t1 t2 T3 t3 t4 t5 read(balx ) t6 balx = balx - 10 t7 t8 42 begin_transaction write(balx ) commit T4 begin_transaction read(balx ) balx 100 100 balx = balx + 100 100 write(balx ) 200 … 200 rollback 100 190 190 Tapahtumakäsittely Ristiriitaisuuden ongelma Em. esimerkit olivat sellaisia, joissa tietokannan tietoja päivitettiin ja siitä syntyi ei-toivottu tilanne tietokantaan Tapahtuman, joka pelkästään lukee tietokantaan, lopputuloksena voi myös tulla eitoivottuja tuloksia, jos tapahtuman sallitaan lukea toisen päättymättömän tapahtuman tietoja Aika t1 t2 t3 begin_transaction read(balx ) T6 begin_transaction sum = 0 read(balx ) balx 100 100 100 baly 50 50 50 balz 25 25 25 sum 100 50 25 100 90 50 25 100 90 50 25 150 0 0 t4 balx = balx - 10 sum = sum + balx t5 write(balx ) read(baly ) t6 read(balz) t7 balz = balz + 10 90 50 25 150 t8 write(balz) 90 50 35 150 90 50 35 150 90 90 50 50 35 35 185 185 t9 43 T5 t10 t11 commit sum = sum + baly read(balz) sum = sum + balz commit Tapahtumakäsittely Sarjoittaminen ja palauttaminen (1/3) 44 Tapahtumien sarjoittamisella pyritään siihen, että tapahtumien suorittaminen ei aiheuttaisi odottamattomia tai ei-toivottuja tilanteita tietokantaan Yksinkertainen ratkaisu ongelmaan olisi se, että sallitaan vain yksi tapahtuma kerrallaan tietokantaan, jolloin tapahtuman suorittamisen jälkeen (commit) voi toinen tapahtuma alkaa Monen käyttäjän järjestelmän tavoitteena on usein yhtäaikaisen käytön salliminen maksimaalisesti, joten tapahtumien suorittaminen vain peräkkäin on huono vaihtoehto Niiden tapahtumien, jotka käsittelevät eri osia (relaatioita) tietokannasta, suhteen ei ole tarpeen rajoittaa suoritusjärjestystä tai samanaikaista suorittamista Tapahtumat, jotka käsittelevät samoja tietoja (relaatioita), täytyy hallita niin, ettei edellä mainittuja tilanteita pääse tapahtumaan Tapahtumakäsittely Sarjoittaminen ja palauttaminen (2/3) Jos kaksi tapahtumaa vain lukee samoja tietoja (relaatioita), niiden suorituksessa ei ole sekaannuksen vaaraa ja järjestyksellä ei ole väliä Jos kaksi tapahtumaa lukee ja kirjoittaa eri tietoja (relaatioita), niiden suorituksessa ei ole sekaannuksen vaaraa ja järjestyksellä ei ole väliä Jos yksi tapahtuma kirjoittaa samoja tietoja (relaatioita) kuin toinen tapahtuma lukee tai kirjoittaa, niin tulee suorittaa tietyssä järjestyksessä T7 T8 begin_transaction read(balx ) write(balx ) T7 T8 begin_transaction read(balx ) write(balx ) begin_transaction write(balx ) read(balx ) read(baly ) read(baly ) write(baly ) commit read(baly ) write(baly ) commit write(balx ) write(baly ) 45 write(balx ) begin_transaction read(balx ) T7 T8 begin_transaction read(balx ) begin_transaction read(balx ) commit write(balx ) read(baly ) read(baly ) read(baly ) write(baly ) commit write(baly ) commit write(baly ) commit Tapahtumakäsittely Sarjoittaminen ja palauttaminen (3/3) Seuraavassa esimerkki tapahtumista, joiden järjestys on tärkeä Ensimmäinen tapahtuma siirtää 100 yksikköä yhdestä tietokannan objektista (relaation ominaisuudesta) toiseen Toinen tapahtuma korottaa edellä mainittujen kummankin tietokannan objektin (relaation ominaisuuden) arvoa 10%:lla T9 begin_transaction read(balx ) T10 balx = balx + 100 write(balx ) begin_transaction read(balx ) balx = balx * 1.1 write(balx ) read(baly ) baly = baly * 1.1 write(baly ) commit read(baly ) baly = baly - 100 46 write(baly ) commit Tapahtumakäsittely Lukitukset (1/6) Lukitusta käytetään tapahtumien toimenpiteiden kontrollointiin tietojen hakujen / päivitysten saattamiseksi loogisiksi – – Read lock – 47 Jos tapahtumalla on lukulukko, se voi lukea tietoa mutta ei kirjoittaa Write lock – Kun yksi tapahtuma päivittää jotain tietokannan objektia (relaatiota), muut tapahtumat eivät pääse muuttamaan tätä objektia, ennen kuin lukitus on ensimmäinen tapahtuma on vapauttanut objektin Lukitus voi olla luku- tai kirjoituslukko Jos tapahtumalla on kirjoituslukko, se voi sekä lukea että kirjoittaa Lukulukko ei voi saada sekaannusta aikaan, joten useammalla tapahtumalla voi olla lukulukko samaan objektiin (relaatioon) Tapahtumakäsittely Lukitukset (2/6) Lukituksia käytetään seuraavasti: – – – – 48 Tapahtuma, joka haluaa käyttöön jonkin tietokannan objektin (relaation), lukitsee ko. objektin käyttöönsä sen mukaan, tarvitseeko sen lukea vai kirjoittaa tietoa Jos tietokannan objekti (relaatio) ei ole ennestään lukittu minkään toisen tapahtuman toimesta, lukitus onnistuu Jos tietokannan objekti (relaatio) on jo lukittu toisen tapahtuman toimesta, tietokanta tarkistaa, voiko uuden lukituspyynnön toteuttaa; kirjoituslukko estää toisen tapahtuman saamasta edes lukulukkoa toteutumaan Tapahtuma pitää tietokannan objektin (relaation) lukitusta itsellään, kunnes se joko vapauttaa lukituksen tai tapahtuman suoritus päättyy (commit); kun kirjoituslukko vapautuu, muut tapahtumat voivat nähdä muuttuneen tiedon Yksinkertaisella lukituksella ei vielä päästä eroon sekaannuksista Tapahtumakäsittely Lukitukset (3/6) S = {write_lock(T9, balx), read(T9, balx), write(T9, balx), unlock(T9, balx), write_lock(T10, balx), read(T10, balx), write(T10, balx), unlock(T10, balx), write_lock(T10, baly), read(T10, baly), write(T10, baly), unlock(T10, baly), commit(T10), write_lock(T9, baly), read(T9, baly), write(T9, baly), unlock(T9, baly), commit(T9)} T9 begin_transaction read(balx ) T10 balx = balx + 100 write(balx ) begin_transaction read(balx ) balx = balx * 1.1 write(balx ) read(baly ) baly = baly * 1.1 write(baly ) commit read(baly ) baly = baly - 100 write(baly ) commit 49 Tapahtumakäsittely Lukitukset (4/6) Kaksivaiheinen lukitus (two-phase locking, 2PL) – – Kun tapahtuma noudattaa kaksivaiheista lukitusta, kaikki lukitusoperaatiot edeltävät kaikkia lukituksien vapautusoperaatioita Kun tapahtuma vapauttaa jonkin lukon, se ei voi enää lukita mitään tietokannan objektia (relaatiota) Aika t1 t2 50 T1 begin_transaction T2 begin_transaction write_lock(balx ) balx 100 100 t3 write_lock(balx ) read(balx ) 100 t4 WAIT balx = balx + 100 100 t5 WAIT write(balx ) 200 t6 WAIT t7 read(balx ) 200 t8 balx = balx - 10 200 t9 write(balx ) 190 t10 commit / unlock(balx ) commit / unlock(balx) 200 190 Tapahtumakäsittely Lukitukset (5/6) Aika t1 t2 T3 T4 begin_transaction write_lock(balx ) t3 read(balx ) 100 balx = balx + 100 100 write(balx ) 200 t4 begin_transaction t5 write_lock(balx ) t6 WAIT t7 read(balx ) 100 t8 balx = balx - 10 100 t9 write(balx ) t10 51 balx 100 100 rollback / unlock(bal commit / unlock(balx ) 100 90 90 Tapahtumakäsittely Lukitukset (6/6) Aika t1 t2 t3 begin_transaction write_lock(balx ) T6 begin_transaction sum = 0 balx 100 100 100 baly 50 50 50 balz 25 25 25 sum 0 0 t4 read(balx ) read_lock(balx ) 100 50 25 0 t5 balx = balx - 10 WAIT 100 50 25 0 t6 write(balx ) WAIT 90 50 25 0 t7 write_lock(balz) WAIT 90 50 25 0 t8 read(balz) WAIT 90 50 25 0 t9 balz = balz + 10 WAIT 90 50 25 0 t10 write(balz) WAIT 90 50 35 0 WAIT 90 50 35 0 t12 read(balx ) 90 50 35 0 t13 sum = sum + balx 90 50 35 90 t14 read_lock(baly ) 90 50 35 90 t15 read(baly ) 90 50 35 90 t16 sum = sum + baly 90 50 35 140 t17 read_lock(balz) 90 50 35 140 t18 read(balz) 90 50 35 140 t19 sum = sum + balz 90 50 35 175 90 50 35 175 t11 52 T5 t20 commit / unlock(balx , balz) commit / unlock(balx , baly , balz) Tapahtumakäsittely Lukkotilanne (deadlock) Lukkotilanne syntyy silloin, kun kaksi tai useampi tapahtuma jää odottamaan toisen / toisien tapahtumien lukkojen vapautusta – Lukkotilanteesta päästään vai yhdellä tavalla eroon: keskeyttämällä yksi tai useampi tapahtuma, jolloin tämän tapahtuman lukitukset vapautuvat Aika t1 t2 53 T1 begin_transaction write_lock(balx ) T2 begin_transaction t3 read(balx ) write_lock(baly ) t4 balx = balx - 10 read(baly ) t5 write(balx ) baly = baly + 100 t6 write_lock(baly ) write(baly ) t7 t8 t9 t10 t11 WAIT WAIT WAIT … … write_lock(balx ) WAIT WAIT WAIT … Tapahtumakäsittely Lukitustasot Tietokanta Tiedosto1 Tiedosto2 Tiedosto3 Sivu1 Sivu2 Sivu3 Tietue2 Tietue1 Kenttä1 54 Kenttä2 Tietokannan palautus Tietokannan palautuksella tarkoitetaan sitä prosessia, jossa tietokanta saatetaan eheään ja toimivaan tilaan sen jälkeen, kun se on syystä tai toisesta joutunut epäsuotuisaan tilaan tai kaatunut Milloin tietokannan palautusta tarvitaan? – – – – – – 55 Järjestelmä kaatuu ohjelmistosta tai laitteista johtuneeseen virheeseen ja menetetään muistinvaraiset operaatiot Median toimimattomuus: media (esim. kiintolevy), joka on osa järjestelmää, tuhoutuu Sovellusohjelman virhe aiheuttaa loogisen virheen, kun jokin tai jotkin tapahtumat toimivat virheellisesti Luonnonkatastrofi tms. (tulipalo, sähkökatkos) Huolimattomuus (käyttäjät, ylläpitäjät) Ilkivalta, joka voi kohdistua järjestelmään, ohjelmistoon, laitteisiin tms. Tapahtumat ja niiden palautus 56 Tapahtumat ovat perusyksikköjä palautettaessa järjestelmää Palautuksen hoitajan tulee tarkistaa, että kaikki tapahtuman vaikutukset (toiminnot) ovat lopullisesti tallennettu tietokantaan tai ei mitään tapahtuman toimintoa Asiasta tekee mutkikkaan se, että tapahtuman hyväksymisen (commit) jälkeen tapahtumatietoja ei välttämättä ole ehditty kirjoittaa tietokantaan ennen kuin virhe ilmaantuu Mitä tapahtumassa oikein tapahtuu Esimerkki palkankorotuksesta Lukuoperaatio – – – Kirjoitusoperaatio – – – – 57 Etsitään levyosoite, jossa haettavan rivin tiedot sijaitsevat (perusavaimen mukaan haetaan) Siirretään levyltä tiedot (lohko, sivu) tietokannan puskuriin muistiin Kopioidaan palkka tietokannan puskurista muuttujaan Etsitään levyosoite, jossa päivitettävän rivin tiedot sijaitsevat (perusavaimen mukaan etsitään) Siirretään levyltä tiedot (lohko, sivu) tietokannan puskuriin muistiin Kopioidaan palkka muuttujasta tietokannan puskuriin Kirjoitetaan tietokannan puskurin sisältö levylle Virhetilanne Virhetilanne voi tulla kesken mitä tahansa em. toimintoa Jos virhe tulee silloin, kun tapahtuma on suoritettu loppuun, mutta kirjoitus tietokantaan ei ole valmis, niin palautuksessa tämä on otettava huomioon – 58 Palautuksen hoitaja voi suorittaa kesken jääneet toiminnot loppuun (rollforward) tai hylätä tapahtuman (undo,rollback) Jos vain yksittäinen tapahtuma joudutaan hylkäämään, on kyseessä osittainen hylkääminen (partial undo) Jos taas kaikki tapahtumat, jotka ovat jääneet kesken, joudutaan hylkäämään, kyseessä on kokonaisvaltainen hylkääminen (global undo) Tapahtumat ja virhetilanne T1 T2 T3 T4 T5 T6 t0 59 t1 t2 t3 t4 tc t5 t6 t7 t8 Kuvassa yllä on havainnollistettu tapahtumien T1-T6 kulkua Tapahtumat alkavat ajanhetkellä t0 ja ajanhetkellä tf tapahtuu virhetilanne Tapahtumat T1 ja T6 jäävät kesken virhetilanteen sattuessa (nämä täytyy peruuttaa palautuksen yhteydessä) Mitä tehdään tapahtumille T2 – T5 tf Palautuksen mahdollisuudet 60 Varmuuskopioinnin mahdollisuus, joka tapahtuu säännöllisesti tietyn ajanjakson välein Lokitiedostojen olemassaolo, jotka huolehtivat tietokannan tapahtumien nykytilan muutosten tallennukset Tarkistuspisteiden olemassaolo, jolloin tietokannan tietojen kirjoitus varsinaiseen tietokantaan tapahtuu Palautuksen hoitaja, joka mahdollistaa tietokannan palautuksen johonkin virhettä edeltäneeseen sallittuun tilaan Lokitiedosto Tiedonhallintajärjestelmä käyttää lokitiedostoa tallentaakseen tietokantaan tehtävät päivitykset ennen niiden kirjaamista varsinaiseen tietokantaan Tapahtumatiedot (transaction records) – – – – – – 61 Tapahtuman tunniste Tapahtumatiedon tyyppi (aloitus, lisäys, päivitys, poisto, kumous, commit) Tietoalkioiden (tietueiden) tunnistetiedot Kuvaus ennen tapahtumaa Kuvaus tapahtumien jälkeen Tiedot esim. edellisestä ja seuraavasta tapahtumasta Tarkistuspisteen tiedot (checkpoint records) Lokitiedostoa käytetään moneen muuhunkin tarkoitukseen kuin tietokannan tietojen palautukseen, mutta näistä ei tässä vaiheessa enempää Tarkistuspiste Tarkistuspisteitä (check point) käytetään synkronoimaan tietokannan ja lokitiedoston Tarkistuspisteessä suoritetaan: – – – 62 Kirjoitetaan kaikki lokitiedot tietokantaan Kirjoitetaan tietokantapuskureissa olevat tiedot tietokantaan Kirjoitetaan tarkistuspisteen tiedot lokitiedostoon, joka sisältää mm. tiedot loppuun suorittamattomista tapahtumista Edellä esimerkissä tc oli tarkistuspiste, jolloin ym. toimenpiteet suoritetaan Palautus helpottuu, koska vain tapahtumat T4 ja T5 täytyy kirjoittaa tietokantaan sekä peruuttaa tapahtumat T1 ja T6 Hajautetut tietokannat Johdantoa 1 63 Loogisesti yhteenkuuluva jaettu tietokokoelma (ja kuvaus tästä tiedosta), joka on fyysisesti hajautettu tietoverkon yli Hajautettu tiedonhallintajärjestelmä tarkoittaa järjestelmää, joka huolehtii hajautettujen tietokantojen hoitamisesta niin, että ne ovat läpinäkyviä käyttäjille (käyttäjien ei tarvitse tietää, että tietokanta on hajautettu) Hajautettu tiedonhallintajärjestelmä koostuu yksittäisistä loogisesti toimivista tiedonhallintajärjestelmistä, jotka kukin hoitaa yhtä osaa hajautetusta tietokannasta Jokainen yksittäinen tietokanta on yhdellä (tai useammalla) palvelimella, joka on yhdistetty yhteiseen tietoverkkoon Jokainen yksittäinen tiedonhallintajärjestelmä toimii itsenäisesti palvellen ”omia” käyttäjiään, jotka ovat kytkeytyneet paikalliseen tietokantaan Käyttäjät käyttävät tietokantaa sovellusohjelmilla Hajautetut tietokannat Johdantoa 2 Käyttäjillä on kahdenlaisia sovellusohjelmia: – – – 64 Paikallisia, jotka operoivat vain paikallisen tietokannan kanssa Globaaleja, jotka operoivat sekä paikallisen että etätietokannan kanssa Vaatimuksena on, että vähintään yksi sovellusohjelma on globaali Käyttäjillä ei tarvitse välttämättä olla paikallista tietokantaa ollenkaan, jolloin operoidaan ainoastaan etätietokantojen kanssa Hajautettu tiedonhallintajärjestelmä Palvelin 1 Tietokanta Palvelin 4 Tietoverkko Palvelin 2 Tietokanta Palvelin 3 Tietokanta Hajautetut tietokannat Johdantoa 3 Hajautettujen tietokantojen kohdalla on tehtävä ero hajautettuun tiedonkäsittelyyn – 65 Hajautetulla tiedonkäsittelyllä tarkoitetaan keskitettyä tietokantaa, johon otetaan yhteys tietoverkossa olevilta työasemilta Oleellinen näkökohta hajautettujen tietokantojen kohdalla on se, että tiedot (tietokannoissa) on hajautettu fyysisesti verkossa Jos tietokanta on keskitetysti jossakin (palvelimella) kyseessä on hajautettu tiedonkäsittely, vaikka työasemat olisivat verkotettuna Hajautettu tiedonkäsittely Palvelin 1 Palvelin 4 Tietoverkko Palvelin 2 Palvelin 3 Tietokanta Hajautetut tietokannat Johdantoa 4 Tietokantojen hajauttamisessa on tehtävä ero rinnakkaisten tiedonhallintajärjestelmien osalta – Tiedonhallintajärjestelmä toimii usean prosessorin ja levyn järjestelmässä, joka on suunniteltu suorittamaan operaatiot rinnakkaisesti mikäli mahdollista Kolme pääarkkitehtuuria rinnakkaisissa tiedonhallintajärjestelmissä – Jaettu muisti – Jaettu levytila – Esimerkki Ei mitään jaettua 66 Esimerkki Esimerkki Hajautetut tietokannat Katsaus verkkoihin Tietoverkko – Hajautetut tiedonhallintajärjestelmät ovat rakennettu niin, että käyttäjä ei näe tietoverkkoa, vaan ainoastaan käyttää sitä (tietämättään) Tietojen siirtoon vaikuttaa käytössä oleva tietoverkko LAN – – Local area network – paikallisverkko Siirtonopeus 10 – 100 Mb/s WAN – – – 67 Itsenäisistä tietokoneista yhdistetty kokonaisuus, jossa eri komponentit voivat vaihtaa tietoja Wide area network – laaja-alainen verkko Siirtonopeus 2 – 2000 kb/s Koostuu usein useammasta LAN -verkosta Hajautetut tietokannat Funktiot ja arkkitehtuuri Toimiakseen hajautettujen tiedonhallintajärjestelmien on – – – – – 68 Laajennettu yhteyspalvelu etäpalvelimilta ja mahdollisuus hakujen ja tiedon siirtoon palvelinten välillä Laajennettu järjestelmähakemisto, jossa tiedot yksityiskohtaisesti hajautetuista tiedoista Hajautettu hakujen käsittely sisältäen hakujen optimoinnin ja etäkäytön Laajennettu samanaikaisuuden hallinta toistetun tiedon yhtenäisyyden säilyttämiseen Laajennettu palautusmekanismi yksittäisessä tiedonhallintajärjestelmässä ja tietoverkossa sattuvien virheiden varalta Hajautetut tietokannat Hajautetun relaatiotietokannan suunnittelu Paloittelu (fragmentation) – – – Jakautuminen – Jokainen pala (fragment) on talletettu palvelimelle optimaalisesti hajautettuna Toistaminen – 69 Relaatio voidaan jakaa lukuisiin alirelaatioihin, jotka ovat hajautettuja Horisontaalinen paloittelu jakaa relaation rivit Vertikaalinen paloittelu jakaa relaation ominaisuudet (attribuutit, sarakkeet) Hajautettu tiedonhallintajärjestelmä voi sisältää kopion palasta (fragment) toisella palvelimella Hajautetut tietokannat Hajautetun relaatiotietokannan suunnittelu Miksi suunnitella hajautettu tietokanta? – Käyttö – Tehokkuus – Tiedot, joita ei tarvita jossakin tietyssä paikassa, eivät myöskään ole siellä ja näin niiden väärinkäyttö on vaikeampaa Haittoja – – 70 Hakujen jako alihakuihin, jotka käsittelevät paloja (fragments), mahdollistaa hakujen rinnakkaisuuden ja näin parantaa vasteaikaa Turvallisuus Tiedot on tallennettu lähelle käyttäjää ja näin ei tarvita hidasta tietojen siirtoa palvelimelta toiselle Rinnakkaisuus – Sovellukset käyttävät näkymiä eivätkä suoraan relaatioita, jolloin näkymän tiedot ovat yksi hajautuksen osa Suorituskyky sovelluksilla, jotka käyttävät tietoja eri palvelimilta, laskee Yhtenäisyyden hallinta on mutkikkaampaa Hajautetut tietokannat Läpinäkyvyys Perusajatus tiedonhallintajärjestelmän hajauttamisessa on se, ettei käyttäjän tarvitse tietää hajauttamisesta mitään Myöskään käyttäjän ei tuli nähdä hajautusta millään tavalla käyttäessään sovelluksia Läpinäkyvyys voidaan jakaa neljään alueeseen – Hajautuksen läpinäkyvyys – Tapahtumien läpinäkyvyys – Käyttäjän ei tulisi huomata suorituskyvyssä eroa keskitettyyn tietokantaan Tiedonhallintajärjestelmän läpinäkyvyys 71 Tapahtumat jaetaan alitapahtumiin, jotka ohjataan oikealle palvelimelle Käyttäjälle tapahtuman tulokset näkyvät kuin ne tulisivat keskitetystä tietokannasta Suorituskyvyn läpinäkyvyys – Käyttäjä näkee tietokannan yhtenäisenä kokonaisuutena Käyttäjän ei tarvitse tietää eri tiedonhallintajärjestelmien eroja, mikäli käytössä on eri järjestelmät eri palvelimilla Hajautetut tietokannat Sääntöjä Perusperiaate – Paikallinen itsenäisyys – – – – Käyttäjän tulee päästä mistä tahansa tietoverkossa haluttuun tietoon käsiksi Paloitteluriippumattomuus – 72 Ei ole tarvetta järjestelmän alasajoon, kun yksi palvelin poistetaan käytöstä Palvelimiin voidaan lisätä tai poistaa dynaamisesti paloja (fragments) Paikkariippumattomuus – Paikallinen tieto on paikallisen ylläpitäjän omistama ja ylläpitämä Paikalliset toiminnot ovat puhtaasti paikallisia Kaikki tietyn palvelimen toiminnot ovat ko. palvelimen hallinnoimia Käytön jatkuminen – Käyttäjälle hajautettu tiedonhallintajärjestelmä tulisi näyttää samanlaiselta kuin keskitetty tiedonhallintajärjestelmä Käyttäjä pääsee tarvitsemiinsa tietoihin käsiksi, oli ne miten tahansa paloiteltuja Hajautetut tietokannat Sääntöjä 2 Toistoriippumattomuus – Hajautettu hakujen käsittely – Järjestelmä ei ole riippuvainen tietoverkon rakenteesta Tietokantariippumattomuus – 73 Järjestelmä ei ole riippuvainen tietystä käyttöjärjestelmästä Tietoverkkoriippumattomuus – Järjestelmä ei ole riippuvainen tietystä arkkitehtuurista Käyttöjärjestelmäriippumattomuus – Tapahtumat käsitellään jakamattomina yksiköinä (palautuksessa) Rautariippumattomuus – Järjestelmän osaa käsitellä hakuja, jotka kohdistuvat eri palvelimille Hajautettu tapahtumien käsittely – Käyttäjän ei tule tietää tietojen kopioimisesta palvelimelta toiselle Eri palvelimilla voi olla erilainen tietokanta Hajautetut tietokannat Tapahtumien käsittely Globaalin tapahtuman hoitaminen tapahtuu seuraavasti: – – – 74 Hajautettu tapahtumienkäsittely Tapahtumien koordinoija (transaction coordinator, TC) TC1 palvelimella S1 jakaa tapahtuman Tiedonvälitys palvelut (S3) alitapahtumiin käyttäen hyväkseen globaalia Tapahtumien järjestelmäluetteloa (system koordinoija (TC3) catalog) Tiedonvälityspalvelu palvelimella S1 lähettää alitapahtumat muille Paikallinen tapahtumien palvelimille (S2, S3, …) käsittely Tapahtumien koordinoijat palvelimilla S2, S3, … käsittelevät saamansa tapahtumat ja tulokset lähetetään takaisin lähettävälle tapahtumien käsittelijälle TC1 Tiedonvälitys palvelut (S1) Tiedonvälitys palvelut (S2) Tapahtumien koordinoija (TC1) Tapahtumien koordinoija (TC2) Paikallinen tapahtumien käsittely Paikallinen tapahtumien käsittely Hajautetut tietokannat Lukitukset Keskitetty kaksivaiheinen lukitus – Tapahtumien koordinaattori palvelimella S1 jakaa tapahtuman alitapahtumiin, jotka lähetetään eteenpäin – – Paikallinen tapahtumien hoitaja, joka on osa globaalia tapahtumien kutsua, hoitaa pakallisesti lukitusten vapauttamisen normaalin kaksivaiheisen lukitustavan mukaisesti Keskitetty lukitusten hoitaja tarkistaa, että lukituspyynnöt ovat yhdenmukaiset olemassa olevien lukitusten kanssa 75 Jos päivitettävästä tiedosta on kopioita eri palvelimilla, nämä täytyy huomioida Ensin asetetaan kirjoituslukko kaikkiin kopioihin ja sitten vasta tehdään päivitys Jos kaikki on kunnossa, lähtee alkuperäiselle tapahtumien koordinaattorille palaute onnistuneesta lukituksesta Muussa tapauksessa lukituspyynnöt laitetaan odottamaan Hajautetut tietokannat Lukkotilanne Lukkotilanne syntyy seuraavasti: – – – Tapahtuma T1 käynnistyy palvelimella S1 ja pyytää kirjoituslukkoa palvelimelle T2 Tapahtuma T2 käynnistyy samaan aikaan palvelimella S2 ja pyytää kirjoituslukkoa palvelimelle T3 Tapahtuma T3 käynnistyy edellisten tapahtumien kanssa samanaikaisesti ja pyytää kirjoituslukkoa palvelimelle T1 T1 T2 T3 76 Hajautetut tietokannat Palautus Virhetilanteita hajautetussa tietojärjestelmässä – – – – Asiasta tekee monimutkaisemman se, ettei tiedonvälityslinkki tai palvelin toimi halutussa ajassa (ja näin ollen pyynnöstä tulee virhe), koska – – – 77 Viestin menetys Tiedonvälityslinkissä on jokin vika Jokin palvelin ei vastaa pyyntöihin Tietoverkon jaossa on vikaa Palvelin on pois käytöstä Tiedonvälityslinkki ei toimi Palvelin on niin kuormitettu, ettei se pysty vastaamaan pyyntöön vaaditussa ajassa Oliotietokannat Johdantoa Perinteisiä tietokantasovelluksia ovat – Olemassa olevat relaatiotietokannat eivät ole riittäviä perinteisiä kaupallisia sovelluksia vaativampiin sovellusalueisiin – – – – – – 78 Kaupalliset sovellukset, kuten tilausten käsittely, inventaarioiden hallinta, pankkitoiminta ja lentokoneiden varausjärjestelmä Tietokoneavusteinen suunnittelu (CAD) Tietokoneavusteinen tuotanto (CAM) Tietokoneavusteinen ohjelmistotuotanto (CASE) Toimistojen tietojärjestelmät (OIS) Digitaalinen kustannustoiminta Maantieteelliset tietojärjestelmät (GIS) Oliotietokannat Relaatiotietokantojen heikkoudet (1/2) Reaalimaailman olioiden puutteellinen kuvausmahdollisuus – Merkitysten liikakuormittaminen – – Kaikki relaation rivit sisältävät samat ominaisuudet, vaikka niitä ei tarvittaisi Tietyn ominaisuuden arvot kaikilla riveillä ovat peräisin samasta arvojoukosta Rajoitetut operaatiot – – – 79 Kaikki kaupalliset järjestelmät eivät toteuta SQL:n mukaisia rajoitteita ja osa näistä joudutaan rakentamaan sovelluksiin Yhtenäinen tietorakenne – Kahden relaation välille voidaan luoda vain relaatiomallissa kuvattu yhteys Puutteellinen tuki rajoituksille ja yhtenäisyyden muodostamiselle – Normalisoinnissa oliot (relaatiot) muuntuvat ei-reaalisiksi Relaatio-operaatiot perustuvat joukko ja rivi operaatioihin Johdettujen operaatioiden mahdollisuutta ei ole Joillekin reaalimaailman olioille ei ole operaatioita ollenkaan (esim. pisteiden, viivojen, monikulmioiden operaatiot) Oliotietokannat Relaatiotietokantojen heikkoudet (2/2) Hankalasti hallittavat sisäkkäiset haut – – Näennäinen yhdistäminen – – 80 Ominaisuuksien jakamattomuus tarkoittaa sitä, ettei ryhmäominaisuuksia sallita Tämä tuottaa ongelmia sisäkkäisissä hakutarpeissa, esimerkiksi haetaan kaikki esimiehet tietylle työntekijälle: SELECT manager_id FROM staff WHERE staff_id = ’S1’ UNION SELECT manager_id FROM staff WHERE staff_id = (SELECT manager_id FROM staff WHERE staff_id = ’S1’) SQL –standardin puutteita on paikattu eri tuotteissa eri tavoilla Tietotyyppimuunnokset SQL:n ja sovellusohjelman välillä Oliotietokannat Oliokeskeiset käsitteet Ennen kuin saamme käsitystä oliomallista, tarvitaan taustatietoa joistakin käsitteistä – Abstraktio (abstraction) – Kapselointi (encapsulation) – Kapseloinnilla tarkoitetaan sitä, että olion sisältämät tiedot ja niiden muokkaamiseen tarkoitetut operaatiot on koottu olion sisälle Tiedon piilottaminen (information hiding) 81 Abstraktiolla tarkoitetaan prosessia, jossa identifioidaan olion tärkeät piirteet Unohdetaan vähemmän tärkeät ominaisuudet Ensin suunnitellaan, mikä olio on ja mitä se tekee, sen jälkeen kuinka se toteutetaan Tiedon piilottamisella tarkoitetaan sitä, että olio sisältää sellaisia ominaisuuksia, joita ei ulkomaailma (olion ulkopuolinen) näe Piilotettuihin tietoihin pääsee käsiksi vain olioon liitettyjen operaatioiden avulla Oliotietokannat Oliot ja ominaisuudet Useat oliosuuntautuneet käsitteet on johdettu Simula –ohjelmointikielestä, joka suunniteltiin Norjassa 1960 –luvun puolivälissä Vasta SmallTalk –ohjelmointikieli toi olio-ohjelmoinnin todella näkyville 1980 –luvulla Olio on yksikäsitteisesti identifioitu kokonaisuus, joka sisältää sekä ominaisuudet, jotka kuvaavat sen ilmentymää todellisessa maailmassa, että operaatiot, jotka ovat yhdistetty siihen Työntekijä Ominaisuudet Nimi 82 Osotie Operaatiot Syntymäaika Laske ikä Oliotietokannat Olioiden yksilöinti Olion määrittelyn avainasioihin kuuluu yksikäsitteinen tunnistaminen Oliosuuntautuneissa järjestelmissä jokainen olio sisältää tunnisteen (OID, Object Identifier), joka on – Järjestelmän generoima – Yksikäsitteinen jokaiselle oliolle – – 83 Riippumatta siitä, minkä tyyppinen olio on Invariantti eli olion elinkaaren aikana sitä ei voi muuttaa – Numeerinen, jolloin vie vähän tilaa ja nopea käsitellä Ei muodostu useasta ominaisuudesta, kuten relaatioissa on mahdollista Kahdella eri tyyppisellä oliolla ei ole samaa tunnistetta Järjestelmä ei generoi ”puuttuvia” tunnisteita uudestaan Riippumaton olion sisältämistä ominaisuuksista Käyttäjälle näkymätön (ideaalitapauksessa) Oliotietokannat Jäsenfunktiot ja viestit 84 Olioon on kapseloituna sekä olion sisältämä tieto että näiden tietojen käsittelyyn tarvittavat funktiot, joita kutsutaan jäsenfunktioiksi (metodit) Jäsenfunktio voi olla esim. method void update_salary(float increment) { salary = saraly + increment; } Jäsenfunktio koostuu nimestä ja funktion rungosta Jäsenfunktioon voidaan tehdä tarkistukset, joiden perusteella päivitys hyväksytään tai hylätään Viesteillä objektit kommunikoivat keskenään, ts. objekti lähettää toiselle objektille viestin ”päivitä palkka 1000 mk:lla”, jolloin viestin saavan objektin jäsenfunktio päivittää ko. tiedon Esim. staff_object.update_salary(1000) Oliotietokannat Luokat Luokka –käsitteellä voidaan määritellä samanlaiset oliot Oliot, joilla on samat ominaisuudet ja jotka vastaavat samanlaisiin viesteihin, ryhmitellään saman luokan olioiksi Ominaisuudet ja jäsenfunktiot määritellään vain luokalle, joten niitä ei tarvitse määritellä jokaiselle oliolle erikseen – Luokan olioita kutsutaan myös luokan ilmentymiksi (instance) Joissakin oliosuuntautuneissa järjestelmissä luokka voidaan käsittää myös jonkinlaiseksi olioksi, jolla on omat luokkaominaisuudet ja luokan jäsenfunktiot – 85 Kuitenkin jokaisella oliolla on omat arvonsa olion sisältämille ominaisuuksille Nämä luokan ominaisuudet ovat samoja kaikille luokan ilmentymille (olioille) Oliotietokannat Luokan ilmentymät Luokan määrittely --- Luokan ilmentymät 86 Branch bno = B5 street = 22 Deer St city = Sidcup Ominaisuudet bno street city bno = B7 street = 16 Argyll St city = Dyce Jäsenfunktiot print update_tel_no number_of_staff bno = B3 street = 163 Main St city = Partick Oliotietokannat Alaluokat, yliluokat ja perintä 87 Jotkin oliot voivat olla hyvin samankaltaisia, mutta eivät kuitenkaan niin samanlaisia, että ne voisivat olla saman luokan ilmentymiä Jos suuri osa ominaisuuksista ja jäsenfunktioista ovat samanlaisia, ei ole järkevää tehdä täysin erillistä luokkaa, vaan hyödyntää olemassa olevan luokan ominaisuuksia ja jäsenfunktioita Perintä mahdollistaa jonkin luokan määrittelyn samankaltaiseksi kuin olemassa oleva luokka, mutta kuitenkin ko. luokalla voi olla omat lisäominaisuutensa ja jäsenfunktionsa Toisesta luokasta määritelty luokka on aliluokka (subclass) ja luokka, josta tämä on peritty on yliluokka (superclass) Etsittäessä useasta luokasta samoja ominaisuuksia ja tekemällä näille yhteinen yliluokka kyseessä on yleistys (generalization) Määrittelemällä jollekin luokalle erikoistapaus (aliluokka) kyseessä on erikoistuminen (specialization) Oliotietokannat Perintä Perintä Person Staff Sales_Staff 88 Manager Oliotietokannat Ylikirjoittaminen 89 Joskus yliluokassa on sellainen ominaisuus tai jäsenfunktio, jota tarvitaan aliluokassa, mutta ominaisuudet ovat erilaiset Tällaisessa tilanteessa yliluokan jäsenfunktio ylikirjoitetaan aliluokassa niin, että aliluokassa käytetään omaa jäsenfunktiota, vaikka yliluokassa on samanlainen jäsenfunktio Esim. yliluokassa method void give_commission(float branch_profit) { salary = salary + 0.002 * branch_profit; } Ja aliluokassa method void give_commission(float branch_profit) { salary = salary + 0.05 * branch_profit; } Oliotietokannat Ylikuormittaminen 90 Joskus jäsenfunktiot voivat olla hyvin samankaltaisia, mutta kuitenkin toisessa jäsenfunktiossa tarvitaan useampi parametri kuin toisessa Tällaiset jäsenfunktiot voidaan kirjoittaa täysin toisistaan erillisiksi jäsenfunktioiksi, mutta tällöin tehdään turhaan samankaltaisia määrittelyjä Ylikuormittamalla jäsenfunktio voidaan tehdä useampi saman niminen jäsenfunktio, jotka eroavat toisistaan parametriensa suhteen Oliolle tuleva viesti määrää, mitä jäsenfunktiota käytetään, koska viestin mukana tulevat parametrit sopivat vain yhteen jäsenfunktioon Jäsenfunktiot voidaan rakentaa niin, että ne kutsuvat toisiaan, jolloin samaa määritystä ei tarvitse kirjoittaa useaan kertaan Tietoverkot ja tietokannat Tähän uutta: Mikä on tietoverkko (internet)? – – – Maailmanlaajuinen kokoelma toisiinsa liitettyjä tietokoneverkkoja Liitetyt tietoverkot eivät ole välttämättä samanlaisia arkkitehtuuriltaan Internet sisältämiin palveluihin kuuluu mm. sähköposti Lyhenteitä – TCP/IP (Transmission Control Protocol and Internet Protocol) – FTP (File Transfer Protocol) – – 91 Sähköpostitietojen välittämiseen Telnet (Telecommunication Network) – Käytetään tiedostojen siirtoon SMTP (Simple Mail Transfer Protocol) – Tietojen välitykseen tietokoneiden välillä oikein ja oikeaa osoitteeseen Pääteyhteys DNS (Domain Name Service) POP (Post Office Protocol) Tietoverkot ja tietokannat Intranet – Extranet – Dokumenttien tekoon tarkoitettu kuvauskieli Uniform Resource Locator URL – 92 Dokumenttien siirtoon tarkoitettu internet protokolla HyperText Markup Language (HTML) – Hypermediapohjainen järjestelmä, joka mahdollistaa yksinkertaisten ’osoita ja napsauta’ hyperlinkkien olemassaolon dokumenteissa HyperText Transfer Protocol (HTTP) – Tietoverkon osa, joka on tietyn organisaation käytettävissä ja siihen on pääsy myös ulkopuolelta tietyille käyttäjille The World Wide Web – Tietoverkon osa, joka on tietyn organisaation käytettävissä eikä siihen ole pääsyä ulkopuolelta Merkkijono tai numeerinen osoite internet-resurssiin Tietoverkot ja tietokannat Staattiset sivut – – Dynaamiset sivut – – – 93 HTML dokumentti on staattinen, jos se on tallennettu sellaisessa muodossa, että se näkyy jokaisella katselukerralla samanlaisena Sivu sisältää vain muotoiluun liittyviä HTML määrittelyjä HTML dokumentti on dynaaminen, jos se generoidaan jokaisella katselukerralla erikseen, jolloin dokumentti voi näyttää hyvinkin erilaiselta eri kerroilla Käyttäjän antamien syötteiden perusteella voidaan generoida sivu; esimerkiksi käyttäjä täyttää lomakkeen ja syötettyjen tietojen perusteella vastauksen Käyttäjäkohtaisesti voidaan näyttää jokin sivu erilaisena eri käyttäjille esimerkiksi käyttäjän aikaisempien käyntikertojen perusteella luodun profiilin avulla Tiedonhallintajärjestelmien kannalta ollaan kiinnostuneita lähinnä dynaamisten sivujen käytöstä, jolloin sivun sisältöön vaikuttaa esim. tietokannasta saatu hakutulos Tietoverkot ja tietokannat Tietoverkko tietokantasovelluksen alustana (1/3) Perinteinen kaksitasoinen työasemapalvelin ratkaisu ei kelpaa enää tietoverkkojen kanssa Kaksitasoisessa ratkaisussa tietokantapalvelimeen on kytkeytyneenä työasemia, joilta lähtevät tietokantapyynnöt menevät suoraan tietokantapalvelimelle suoritettavaksi Työasema – – – 94 Tietokantapalvelin Käyttäjän liittymä Tiedonkäsittelylogiikka Tietokantapalvelin – Työasema Palvelimen vahvistus operaatioille Tietokantaoperaatiot Tietokantapalvelin Tietokanta Tietoverkot ja tietokannat Tietoverkko tietokantasovelluksen alustana (2/3) Mitä vaatimuksia tietoverkko asettaa tietokantasovelluksille? Mahdollisuus päästä yrityksen tietoihin suojatulla tavalla Mahdollisuus valita tietokantaratkaisu Riippumaton käytettävästä selaimesta ja verkkopalvelimesta Ratkaisun täytyy ottaa huomioon kaikki yrityksen tietokannan eri piirteet Avoin arkkitehtuuri – – 95 Toimii erilaisilla verkkopalvelimilla Riippumaton käytettävästä protokollasta Ratkaisun tulee olla kannattava, jota voi laajentaa ja muuttaa tarpeiden mukaan Useamman HTTP –pyynnön hallinta Sovellus ja istuntokohtainen tunnistaminen Pääkäyttäjän tarpeen minimoiminen Korkean tason työkaluja sovellusten suunnitteluun ja rakentamiseen Tietoverkot ja tietokannat Tietoverkko tietokantasovelluksen alustana (3/3) Kaksitasoisen ratkaisun ongelmia – – Työaseman suorituskyky Pääkäyttäjän tarve Työasema Kolmetasoisessa ratkaisussa on edelliseen seuraavat edut – – – – Yksinkertainen työasema Tiedonhallintalogiikka ei ole hajautettu työasemille vaan on keskitetysti hallittavissa Parempi mahdollisuus korvata jokin komponentti toisella Kuormittavuuden tasapainottaminen helpompaa, kun tasoille on jaettu sopivasti tehtäviä Sovelluspalvelin Tietokantapalvelin Tietokanta 96 Tietoverkot ja tietokannat Yhdyskäytävä (Common Gateway Interface, CGI) Määritelmä tiedon siirtoon verkkopalvelimen ja CGI –sovelluksen välille HTTP - TCP/IP Työasema HTTP - TCP/IP Internet Verkkopalvelin Yhdyskäytävä Muita tiedon lähteitä 97 HTML HTML Tietokanta Tietoverkot ja tietokannat Server-Side Includes, SSI 98 Miten SSI liittyy tietokantasovelluksiin? Normaalisti verkkopalvelin ei tutki HTML –tiedostoja, jotka se lähettää työasemalle (selaimelle) Verkkopalvelimeen on kuitenkin (usein) mahdollista määritellä, että tietyn tyyppiset sivut täytyy parsia ennen niiden lähettämistä työasemalle Parsinnassa HTML –dokumenttiin lisätään lähdetiedostossa olevien määritysten mukaisesti esim. dokumentin muutosaika tai lisätään jokin toinen tiedosto HTML –dokumentissa voi olla määritelty sellainen SSI –elementti, joka suoritetaan CGI –ohjelmana ja ohjelman tulokset lähetetään dokumentin osana Käyttäjä ei näe saamastaan dokumentista, että se on parsittu ja että siinä on esim. tietokannasta tulleita tietoja muuten kuin hakemalla dokumentin uudestaan, jolloin dokumentin sisältö voi olla erilainen Tietoverkot ja tietokannat HTTP:n keksit (Cookies) 99 Kekseihin voidaan tallentaa erilaista tietoa käyttäjästä tai hänen valinnoistaan Keksit talletetaan käyttäjän työasemaan, mikäli käyttäjä on tämän sallinut Voidaan käyttää esimerkiksi ostoskoria, johon kerätään palvelusta tietoja sen mukaan, kun käyttäjä on tehnyt valintoja Lopuksi käyttäjä lähettää ostoksensa, jolloin ostoskorin sisältö lähetetään palvelimelle Keksejä voidaan käyttää myös tietokantojen käyttäjätunnusten ja salasanojen tallentamiseen, jolloin käyttäjä tunnistetaan automaattisesti, kun hän vierailee uudestaan samalla sivulla / käyttää samaa sovellusta Tietoverot ja tietokannat Mitä Java tuo tietokantasovelluksiin? CGI –ohjelmat ajetaan palvelimella, joten suorittaakseen jonkin toimenpiteen käyttäjä lähettää pyynnön palvelimelle, joka lähettää vastauksen – Tiedonsiirto voi muodostua pullonkaulaksi Javalla tehty sovellus (applet) toimii työasemassa (selaimessa), joten tiedonsiirtoa ei tarvita samassa mittakaavassa kuin CGI -ohjelmilla Java lähdetiedosto .java Java kääntäjä Java tavu- Luokkien lataus Tavukoodin tarkistus Java tulkki Reaaliaikakääntäjä Java Virtual Ajettava järjestelmä koodi .class Käyttöjärjestelmä 10 0 Java luokkakirjastot Laitteisto Machine Tietoverkot ja tietokannat JDBC Java sovellus Java sovellus JDBC API JDBC API JDBC ajurien hallinta JDBC ajurien hallinta JDBC ajuri JDBC - ODBC silta-ajuri JDBC ajuri DBMS middleware 10 1 Osittainen Java JDBC ajuri ODBC DBMS työasemakirjasto DBMS työasemakirjasto Tietoverkot ja tietokannat Turvallisuus 10 2 Mitä turvallisuusnäkökohtia liittyy tietoverkkoympäristöön? Turvallisuusnäkökohdat liittyvät lähinnä tietojen siirtoon Tietoon saa koskea vain lähettäjä ja vastaanottaja Tietoa ei ole muutettu lähetyksen aikana Vastaanottaja voi luottaa siihen, että tieto tulee lähettäjältä Lähettäjä voi luottaa siihen, että vastaanottaja on aito Lähettäjä ei voi kieltää lähettäneensä tietoa Tietovarastointi (Data warehousing) Johdantoa Mitä tarkoitetaan tietojen varastoinnilla? – – – – Haittoja – – 10 3 Yrityksessä käytettävä tietojärjestelmä, jonka avulla tehdään pieniä muutoksia yrityksen tietokantaan päivittäisessä työskentelyssä, on ns. online transaction processing (OLTP) Päivittäisessä käytössä olevan tietokannan koko voi olla pieni (muutama MB), keskikokoinen (muutama GB) tai suuri (muutamasta TB:stä muutamaan PB:hen) Yrityksen päätöksentekijöillä on joskus tarve saada päivittäisten tietojen lisäksi käyttöönsä historiallista tietoa järjestelmässä olleista tiedoista, jolloin aktiivisista tietokannoista saatu tieto ei ole riittävä Tietojen varastointi (Data Warehousing) on syntynyt em. tarpeesta saada yrityksen historiallista tietoa käyttöön – – Tiedon löytäminen Näkymättömät ongelmat esim. tiedon eheydessä nykyiseen järjestelmään Tiedon suojaus / omistus Varastointiprojektin pituus Tietovarastointi Arkkitehtuuri Mitä komponentteja liittyy tietojen varastointiarkkitehtuuriin? OD1 Reporting query, application development Meta LM OD2 QM Summarized OLAP Detailed OD3 WM DM 10 4 Arc/BU Seuraavat luennot ovat uutta vuodelle 2015 10 5 Hajautetut tietokannat Tietovarastointi Tietokannat ja tietoturva Ohjelmistojen turvallisuus Tietokantojen uhat Php ja MySQL Tietokannat ja tietoturva 10 6 ”Tietoturvallisuus (tietoturva) on tietojen, järjestelmien ja palveluiden asianmukaista suojaamista sekä normaali- että poikkeusoloissa lainsäädännön ja muiden toimenpiteiden avulla. Tietojen luottamuksellisuutta, eheyttä ja käytettävyyttä suojataan laitteisto- ja ohjelmistovikojen, luonnontapahtumien tai tahallisten, tuottamuksellisten ja tapaturmaisten inhimillisten tekojen aiheuttamilta uhkilta ja vahingoilta.” Tietoturvallisuus 10 7 Saatavuus: (käytettävyys): Järjestelmien tiedot ovat tarvittaessa niihin oikeutettujen käytettävissä. Eheys: Tiedot ja järjestelmät ovat luotettavia, oikeellisia ja ajantasaisia, eivätkä ne ole laitteisto- ja ohjelmistovikojen, luonnontapahtumien tai oikeudettoman inhimillisen toiminnan seurauksena muuttuneet virheellisiksi. Luottamuksellisuus: Tiedot ovat vain niiden käyttöön oikeutettujen saatavissa eikä niitä paljasteta tai muuten saateta sivullisten käyttöön. Aitous: Ominaisuus, joka ilmentää tiedon eheyttä ja sitä, että tiedon alkuperäinen lähde on se, joka sen väitetään olevan. Alkuperäisyyssanaa käytetään toisinaan samassa merkityksessä kuin aitous-termiä. Tietoaineistojen turvallisuus 10 8 Suomen Automaatioseura 2010 Ohjelmistojen turvallisuus 10 9 Tietokantojen huolellisen suunnittelun lisäksi myös tietokantoja käyttävien sovellusten suunnittelun eri vaiheissa on kartoitettava mahdolliset tietoturvariskit ja keinot joilla riskejä ehkäistään (Laine 2010) Saatavuus 11 0 Tietokantojen suorituskyky takaa omalta osaltaan sen että tietokantojen tiedot ovat nopeasti ja tehokkaasti niiden käyttäjien saatavilla, joilla on oikeus tietoja käyttää. – tietokannan suunnittelu tehokkaaksi (viritys) – Tietokantaa käyttävän sovelluksen optimointi Käytettävällä levyjärjestelmällä voidaan myös vaikuttaa nopeuteen ja vikasietoisuuteen. – RAID-levyjärjestelmää (Redundant Array of Inexpensive Disks). Suorituskykyyn vaikuttaa myös – tietokantapalvelimen prosessoriteho – muistin määrä – käytettävä yhteys Tietojen varmuuskopiointi Eheys 11 1 Tietojen eheys saattaa vaarantua jos tietueita poistetaan tai lisätään ilman että tiedetään mitä ollaan tekemässä, tai tiedetään jos Muutoksia halutaan tehdä vahingoittamistarkoituksella! Laite -ja ohjelmaviat tai sähkökatkokset voivat aiheuttaa sen että tiedot eivät ole enää eheitä tai ristiriidattomia. Eheys 11 2 Käyttöoikeuksilla voidaan osittain estää normikäyttäjien tekemät virheet tietokantojen rakenteiden muuttamisessa. Varmuuskopioinnilla, lokitiedostoilla sekä mahdollisuudella tehtyjen muutosten peruuttamiseen voidaan tarvittaessa palauttaa tietokanta takaisin ehjään tilaan (lähtötilanteeseen). Yleisesti käytetty eheysmekanismi on kaksivaiheinen päivitys: aikomus ja päätös ('intent & commitment'). Luottamuksellisuus Autentikointi (todennus) varmistaa, että vain sallitut käyttäjät pääsevät järjestelmään. Käyttöoikeuksia voidaan myöntää suoraan joillekin henkilöille tai oikeudet voivat liittyä rooliin (Role-based Access Control). – – Tiedon luokittelu – Tiedon tärkeys, arkaluontoisuus ja kriittisyys liiketoiminnalle. Tiedon salaus – 11 3 Rooliin sisältyy ne käyttöoikeudet joita käyttäjät tehtävässä tarvitsevat. Helpompaa ja nopeampaa myöntää käyttöoikeuksia tietyille käyttäjäryhmille kuin yksittäisille käyttäjille. Syö resursseja ja voi aiheuttaa uusia ongelmia Tietokantojen uhat (Imperva 2014) 11 4 Tietokantojen uhat Liiallisten (liian vahvojen) käyttöoikeuksien väärinkäyttö on yleisin tietokantojen uhka. Vaikka käyttöoikeudet olisivat oikein määriteltyjä, voidaan oikeuksia käyttää tarkoituksella tai vahingossa väärin. – – 11 5 tallettaa tietoa omalle koneelle helpottamaan tiedon jatkokäyttöä. myydään tietoa SQL-injektiossa hyökkääjä antaa tietokantapalvelimelle muutettuja SQLkomentoja. Tietokantarajapinnassa tapahtuvan tiedon vääränlaisesta käsittelyn vuoksi Riskikartoitus omien uhkien sisäistämiseksi Luettavaa 11 6 Handbook of Database, Security Applications and Trends (edited by Michael Gertz & Sushil Jajodia. 2008) http://www.cse.hcmut.edu.vn/~ttqnguyet/Downloads/SIS/3_Handbook%20of%2 0Database%20Security%20-%20Applications%20&%20Trends%20(2008).pdf Oracle, 2014 Database Security Guide http://docs.oracle.com/cd/B19306_01/server.102/b14220/security.htm Imperva. Top Ten Database Threats.The Most Significant Risks and How to Mitigate Them. http://www.imperva.com/docs/WP_TopTen_Database_Threats.pdf Suomen Automaatioseura ry. 2010 Turvallisuusjaosto. Tietoturvan hallinnan periaatteet. https://www.cert.fi/attachments/cip/5na1SblCp/SAS29_TeollisuusautomaationTi etoturva.pdf Tietokannat ja tietoverkot 11 7 Tietokoneet ovat nykyisin lähes poikkeuksetta yhteydessä jonkinlaiseen tietoverkkoon. Sisäisen verkon tietokantojen käyttöopiskelijat hakevat tietoa kirjaston omista elektronisista aineistoista kuten erilaisista tietokannoista. Yliopiston verkon ulkopuolelta voidaan hakea ja etäkäyttää aineistoa. Avoimen verkon tiedonhaku tarkoitetaan hakua Internetistä Tietokantojen etäkäyttö Yliopistolla on ssl-vpn palvelin, johon otetaan yhteys selaimella tai VPN (Virtual Private Network)asiakasohjelmalla. SSL-protokolla (Secure Sockets Layer) salaa tietokoneen ja internetsivun palvelimen välisen liikenteen sisällön. Yliopiston verkon ja asiakkaan laitteen välille syntyy salattu VPN-tunneli, jota pitkin kaikki verkkoliikenne kulkee. – 11 8 Muualta katsottaessa näyttää siltä kuin asiakkaan laite olisi kytkettynä yliopiston verkkoon Tietoturva 11 9 Koska lähiverkojen kautta ollaan usein yhteydessä Internettiin, nousee yrityksen tai organisaation tietoihin kohdistuva tietoturvariski huomattavasti verrattuna vain pelkän oman sisäisen verkon riskiin. Tietoverkkoihin kytkettyjen laitteiden suojaaminen ulkopuolisista, kuin myös mahdollisesti omasta verkosta tulevilta hyökkäyksiltä, on tärkeä osa tietoverkkojen turvallisuutta. Tietoverkkojen ja tietokantojen rajapinnat 12 0 ODBC (Open Database Connectivity) on Microsoftin kehittämä ohjelmointirajapinta jonka avulla muodostetaan yhteys tietokantaan. Mahdollistavat tietokantakyselyjen välittämisen tietoverkon yli ODBC:tä käytettäessä ei tarvitse tietää onko se kytkeytynyt Access-tietokantaan vai esimerkiksi SQL Serveriin (Kuva: OpenLink Software 2014) PHP Ja MySQL PHP on suosittu erityisesti dynaamisten web-sivujen toteutukseen tarkoitettu ohjelmointikieli. – MySQL on suosittu etenkin www-sivujen yhteydessä käytetty relaatiotietokantaohjelma. – 12 1 Dynaamisuus tarkoittaa sitä että nettisivut voivat muuttua sen mukaan miten esimerkiksi käyttäjä hakee sivulle tietoa Tietokannassa voi olla esimerkiksi verkkokaupan tuotetiedot. PHP Ja MySQL 12 2 Dynaaminen sivu luodaan vasta, kun selain sitä pyytää. Selaimen hakupyyntö käynnistää palvelinkoneella toimintoja, joiden tuloksena syntyy uusi verkkosivu. Kuva: Tuikka 2007 Hajautetut tietokannat Komplikaatiot 12 3 Suunnittelu – Miten tietokanta ositetaan sirpaleiksi, miten nämä sirpaleet hajautetaan optimaalisesti? Hakemistojen hallinta – Sisältää esim. paikkatietoa tai kuvailua. Ongelmana sirpaloinnin optimointi Kyselyjen prosessointi – Strategian mukainen kustannustehokkuuden optimointi Samanaikaisuuden hallinta – Perusratkaisut: lukitus & aikaleimaus Umpikujan hallinta – Deadlock Tietokannan luotettavuus – Johdonmukaisuus, virheiden havaitseminen ja niistä toipuminen Toistuvuus – Monistetussa tietokannassa kopioiden saatava samat arvot Tietovarastointi Yleinen arkkitehtuuri: tarkoitus 12 4 Tietovarastointi perustuu laajalti käytössä olevaan tietovarastointiarkkitehtuuriin. Siinä informaatio, joka tulee useista hajautetuista ja heterogeenisista varastointijärjestelmistä, integroidaan keskusvarastoon jota kutsutaan tietovarastoksi (data warehouse). Tyypillisesti tietovarastoissa käytetään moniulotteista tietomallia. Siinä analysoitu informaatioon ja kerättyihin faktoihin viitataan monilla ulottuvuuksilla, jotka luovat kontekstin analyysille. Tätä integroitua informaatiota analysoidaan (On-Line Analytical Processing OLAP, kyselyt ja datan louhintasovellukset) Tarkoituksena – Analysoida liiketoiminnan toimenpiteiden tehokkuutta – Löytää ja analysoida trendejä – Löytää anomalioita ja käyttäytymismalleja – Löytää riippuvuuksia – Ennustaa trendejä ja simuloida liiketoiminnan ratkaisuja Käyttö mm. myyntiliiketoiminta, pankkialalla, pörssimarkkinoilla, tieteessä Tietovarastointi Yleinen arkkitehtuuri: haasteet Teknisessä mielessä tietovarasto on suuri tietokanta. Tietovaraston suuri koko, OLAPkyselyiden ja datanlouhinta-algoritmien monimutkaisuus sekä informaation heterogeeninen luonne aiheuttavat suuria haasteita. Näihin haasteisiin kuuluu muun muassa: – – – – – – – – – 12 5 Tietovaraston konseptuaalinen mallinnus ja loogiset tietomallit Tietovaraston lataus (päivitys) OLAP-kyselyiden ja datanlouhinta-algoritmien tehokkaan suorittamisen varmistaminen Materialisoituneiden näkymien hoitaminen Datan analysointitekniikat Metadatan käsittely Tietovaraston kehittymisen hallinta Striimit, reaaliaikaiset ja aktiiviset tietovarastot Monimutkaisen informaation varastonti (XML, objekti, multimedia) Tietovarastointi Tietovaraston avainominaisuudet 1. 2. 3. 12 6 Subjektiorientoitunut: Tietovaraston tieto on organisoitu pääsubjektien, kuten asiakkaan, toimittajan tai myynnin mukaan ja se keskittyy mallintamaan tietoa päätöksentekoa varten. Integraatio: Tietovarasto on rakennettu integroimalla monia heterogeenisiä lähteitä, kuten RDBMS, flat-tiedostoja tai OLTP-tallenteita. Aikariippuvainen: Tieto on varastoitu tuottamaan tietoa historiallisesta perspektiivistä. Tietovarastointi Uudet trendit 12 7 Tietovarastoinnista on tullut erittäin suosittua monissa yrityksissä, mutta sitä on pystytty hyödyntämään vain melko yksinkertaisen tyyppisen informaation kanssa. Jotta voitaisiin laajentaa tietovarastoinnin etuja, on selvitettävä viisi haastetta: 1. Fyysisen maailman tiedon tallentaminen 2. Strukturoidun, semi-strukturoidun ja strukturoimattoman datan integroiminen tietovarastossa 3. Menneen, nykyhetken ja tulevaisuuden integroiminen 4. Epätäydellisen tiedon varastointi 5. Yksityisyyden varmistaminen tietovarastoissa Nykyisten teknologioiden ongelmana on, ettei tämäntyyppisten tiedostojen/mallien integroiminen ja analysoiminen ole johdonmukaisesti mahdollista. Sen sijaan sovelluksiin pitää kehittää ad-hoc sovelluksia integroimiseen ja analysointiin, joka puolestaan on kallista ja virheherkkää. Tavoitteena datamalli, joka perustuu moniulotteiseen ja semistrukturoituun dataan, mutta joka tukisi paljon laajempaa datamuotojen skaalaa. Erityisesti tuen tulisi olla paikkatietoihin, sensoridataan, striimeihin, semistrukturoituun ja strukturoimattomaan dataan ja epätäydelliseen dataan.