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.