Tietokantojen suunnittelun perusteita YYT-C3001 Ympäristötiedon hallinta, erikoistutkija, Luonnonvarakeskus
Luennon sisältö Johdanto: data, tieto ja tietämys Tietokantojen perusteita Tietokantojen käyttö: kyselykielet Arvauksia tulevista trendeistä Page 2
Johdanto: data, tieto, tietämys, sekä niiden käyttö ja hallinta Page 3
Peruskäsitteet: ihmisten ja organisaatioiden näkökulma Tietämyksen hallinta on toimintaa, jonka avulla pyritään pitämään kirjaa ja käyttämään organisaation tietämystä Tietämys on tietoa, jota on sovellettu tietyssä asiayhteydessä Tieto on perusteltu tosi uskomus Tietämystä käytetään parantamaan toimintaa Page 4
Tieto ja tietämys, yksinkertainen esimerkki Tieto: Lannoitteet auttavat kasveja kasvamaan Asiayhteys: Maatalous Tietämys: Lannoittaminen lisää satoa Parannus toimintaan: koska lannoittaminen maksaa k ja lisää sadon arvoa (k+m), lannoitetaan pellot Page 5
Tarkempi ja parempi tietämys mahdollistaa paremman toiminnan Pellon sisäisen satopotentiaalin ja muiden tekijän vaihtelun takia lannoitteen määrää kannattaa vaihdella pellon eri osissa parhaan hyödyn saavuttamiseksi Page 6
Peruskäsitteet: tietotekniikkanäkökulma Data on yksittäisiä symboleita ilman merkitystä, esim. numero: 20151001 Tieto on dataa, jolle on annettu merkitys, esim. 20151001 on päivämäärä muodossa YYYYMMDD; 1. lokakuuta 2015 Tietämys on tietoa, joka on asetettu asiayhteyteen, esim. tämä luento pidetään kyseisellä päivämäärällä Page 7
Data, tieto, ja tietämys, yksinkertainen esimerkki Sääasemat tuottavat säähavaintoja - Havainnot koostuvat mittauksista (data), jotka jokainen mittaavat jotain sääsuuretta (merkitys, tieto) Ilmatieteen laitos käyttää havaintoja - Tämänhetkinen säätila, sääennuste (tietämys) Ihmiset käyttävät sääennusteita - En ruiskuta viljoja nyt, koska kohta alkaa sataa Page 8
Yksityiskohtaisempi ja paremmin hyödynnetty tieto mahdollistaa kehittyneemmän päätöksenteon Koska tautipaine on koholla ja sen ennustetaan kohoavan nopeasti, kannattaa harkita kemikaaliruiskutusta sään salliessa Page 9
Data, tieto, ja tietokannat Tietoa hallitaan tietokantojen avulla Tietokanta on järjestetty ja luetteloitu joukko tietoalkioita (dataa), joilla on tietty merkitys (tieto) Tietokannan avulla tarvittava tieto on helposti käytettävissä - Tietoa haetaan, lisätään, ja poistetaan tietokannasta Page 10
Tietokannat eivät ole uusi keksintö Ennen tietokoneita tietokannoista käytettiin tyypillisesti nimeä arkisto Käyttöliittymänä toimi arkiston hoitaja Page 11
Tietokanta tiedon tallennus, ja hallintavälineenä Ohjelmisto A Ohjelmisto B Ohjelmiston A data Ohjelmiston B data Massamuisti Page 12
Tietokanta tiedon tallennus, ja hallintavälineenä Ohjelmisto A? Ohjelmisto B Ohjelmiston A data Ohjelmiston B data Massamuisti Page 13
Tietokanta tiedon tallennus, ja hallintavälineenä Ohjelmisto A Ohjelmisto B Tietokanta Massamuisti Page 14
Tietokantojen perusteita Page 15
(Erittäin) abstrakti malli tietokoneesta Prosessori laskee - Nopea, pieni muisti Keskusmuisti tallettaa työdatan - Suhteellisen nopea ja iso Muistin koko 128MB (0,1GB) 4-64GB CPU Keskusmuisti Latenssi ~CPU:n nopeus ( < 1 ns) < 10 ns Massamuisti sisältää muun datan - Hidas mutta valtava 512+ GB Kovalevyt ja muut mediat 1-10 ms (10 6 ns) Page 16
Tietokanta tietokoneessa Tietokanta ohjaa ohjelmistojen pääsyä tietoon - Ohjelmisto voi hakea, lisätä, ja poistaa tietoa Tietokanta tallettaa tiedon massamuistiin tehokkaasti - Tiedon haku ja tallennus hitaaseen massamuistiin ei aiheuta valtavaa pullonkaulaa Page 17
Tietokannan määritelmä Yleisesti: tietokanta on järjestetty joukko tietoa, jota on mahdollista käsitellä tehokkaasti Tietokantoja on monenlaisia - Relaatiotietokannat (SQL) - Dokumenttitietokannat (NoSQL) - Graafitietokannat (NoSQL) - yms. Page 18
Tietokannan rakenne Ulkoinen näkymä - Mitä tietokannan käyttäjät näkevät Looginen näkymä - Miten käyttäjät pääsevät käyttämään tietokannan dataa Fyysinen taso - Miten data tietokannassa on järjestetty, luetteloitu, ja tallennettu Users / programmers Applications Queries DBMS Query interpreter and processor Data access engine disk Data Metadata Page 19
ER-Malli (Entity-Relationship Model) Koostuu entiteeteistä, joilla on arvoja ja jotka on liitetty toisiinsa yhteyksillä - Jotkut arvoista ovat avainarvoja joiden avulla tietoa voidaan luetteloida - Erilaisia yhteyksiä ovat 1:1, 1:N, M:N ER-malli on formaali kuvaus oikean maailman ongelmasta - Helppo muuttaa (relaatio)tietokantakuvaukseksi Page 20
Esimerkki: MMORPG Page 21 Source: wikipedia
Relaatiotietokanta Koostuu tauluista (relaatiot) joissa on sarakkeita (arvoja) ja jotka sisältävät rivimuotoista dataa (tupleja, monikkoja) - Vähintään yksi arvo on avainarvo - Jos avaimia on enemmän kuin yksi, on yhden oltava ensisijainen avain - Jotkut avaimet voivat viitata muihin tauluihin Yhä yleisin tietokantatyyppi Page 22
Esimerkki relaatiotietokannasta Page 23 Source: http://info.sns.edu.pl/
Relaatiotietokantojen vahvuuksia Transaktiot ja rinnakkaisuuden hallinta - ACID-ominaisuudet takaavat tiedon säilymisen ja tietokannan pysymisen sallitussa tilassa Pitkään käytössä ollut ja hyväksi havaittu teknologia - Ohjelmistot kehittyneitä, osaajia löytyy Tukee monimutkaisia kyselyrakenteita - Kysely on tietokannalle annettu käsky Page 24
Atomicity, consistency, isolation, durability (ACID) Atomicity (atomisuus) tarkoittaa, että muutos tietokantaan tehdään joko kokonaan tai ei laisinkaan Consistency (johdonmukaisuus) tarkoittaa, että tietokanta on jokaisen operaation jälkeen sallitussa tilassa Isolation (eristäminen) tarkoittaa, että transaktion muokkaamaan tietoon ei päästä käsiksi ennen transaktion päättymistä Durability (pysyvyys) tarkoittaa, että suoritettu transaktio säilyy tietokantavirheistä huolimatta ACID on relaatiotietokantamallin kivijalka Page 25
Relaatiotietokantojen heikkouksia Sopii vain jäsennetyn datan tallennukseen - Jäsentymätön data ei tue kyselyitä Rakenne usein hyvin monimutkainen - Satoja tauluja, tuhansia arvoja Raskas rakenne voi johtaa skaalautuvuusongelmiin - Esim. valtava määrä rinnakkaisia käyttäjiä Ohjelmistot hyvin raskaita - Useimmat käyttäjät tarvitsevat murto-osaa ominaisuuksista Page 26
Esimerkki johon relaatiotietokanta ei sovellu: verkkohaku Kysely on avainsana tai avainsanojen joukko - Yksinkertainen kysely Vastaus on joukko html-sivuja - Osittain jäsennettyä dataa Valtaosa operaatioista kyselyitä, päivitykset tehdään usein massa-ajoina - Transaktioita ei oikeastaan tarvita Page 27
Avain-arvo -tietokanta Tietokanta koostuu avaimista ja niitä vastaavista arvoista - Avain-arvo avaruutta voidaan tukea esimerkiksi arvoista haetulla metatiedolla tai ontologioilla Tietojen ajantasaisuutta ei välttämättä taata - Tieto esim. päivittyy jossain vaiheessa Tyypillisesti skaalautuu erittäin hyvin Tietomalli huomattavasti relaatiomallia joustavampi Page 28
Graafitietokanta Järjestää tallennetun tiedon graafiksi - Koostuu solmuista ja niitä yhdistävistä kaarista - Sekä solmuihin että kaariin liittyy avain-arvopareja Avaimia voidaan järjestää osoiteavaruuksiin ja niihin voidaan liittää merkitys (semantiikka) - Ontologiamallit ja semanttinen verkko Relaatiotietokantaa joustavampi tietomalli, joka on helpommin muokattavissa Page 29
Graafitietokantaesimerkki Lähde: http://milicicvuk.com/blog/2011/08/10/fixing-the-rdf-model/ Page 30
Paikkatieto tietokannoissa Useimpia tietokantoja ei ole tarkoitettu ensisijaisesti paikkatiedon tallentamiseen Relaatiotietokannan data koostuu tietyn kokoisista dataalkioista - Polygonin koko vaihtelee Avain-arvo tietokanta tallentaa symbolidataa - Rasteri ei kuvaa symbolia vaan pintaa Paikkatieto on moniulotteista - Tietokannat usein olettavat datan olevan yksiulotteista Paikkatieto aiheuttaa muutoksia tietokantoihin Page 31
Vektorimuotoisen paikkatiedon jäsennysesimerkki: OGC Simple Features Page 32
Mikä on Simple Feature Simple Features standardin mukaisten elementtien tulee olla yksinkertaisia (simple) ja valideja (valid) Piste on aina validi Viiva ei saa ristetä itsensä kanssa (pl. päätepisteissä) Polygonin tapaus on monimutkaisempi Page 33
Simple Features esimerkki Page 34
Simple Features esimerkki Page 35
Paikkatieto relaatiotietokannoissa Uudet datatyypit paikkatiedolle - Vähintään piste, viiva, ja polygoni Koordinaattijärjestelmät Laajennukset kyselykieleen - <, =, > tilalla topologiset ja muut paikkatietokyselyt Paikkatiedon käyttö avainarvoina vaatii uusia jäsennysmenetelmiä - Paikkatietorakenteita fyysisellä tasolla Page 36
Paikkatiedot relaatiotietokannoissa Jos paikkatietoa täytyy päivittää käsin, voi tällainen päivitys viedä pitkän aikaa Relaatiotietokannan transaktioiden oletetaan kestävän lyhyen aikaa - Muuten ACID estäisi rinnakkaisuuden Täten paikkatietopäivitykset voidaan joutua hoitamaan erityisjärjestelyin - Ns. pitkät transaktiot Page 37
Paikkatieto muissa tietokannoissa Esitystapa riippuu tietokannasta Avain-arvo tietokannoissa avaimet oletusarvoisesti merkkijonoja - Paikka-avain vaatii muutoksia tietokantaan Graafitietokannoissa erillisia ontologioita (jäsennyksiä) paikkatiedolle - Esimerkiksi W3C:n geo-ontologia, OpenGis GeoSPARQL Käytäntö on kirjavaa Page 38
Tietokantojen käyttö: Kyselykielet Page 39
Structured Query Language (SQL) Relaatiotietokantojen käyttöön kehitetty kieli SQL:n sisältää tietokantojen ylläpitoon ja käyttöön tarvittavat komennot Kansainvälinen standardi Deklaratiivinen kieli - SQL-käsky kertoo mitä pitää tehdä, mutta ei miten Page 40
Tietomallin hallinta SQL:n avulla voidaan luoda, muokata ja poistaa tietokannan tauluja CREATE TABLE City ( name VARCHAR(20) PRIMARY_KEY, pop INT, capital CHAR(1), shape POLYGON); ALTER TABLE City ADD country VARCHAR(20); ALTER TABLE City DROP COLUMN capital; TRUNCATE TABLE City; DROP TABLE City; Page 41
Tietokantahaut SQL-kielellä SELECT * FROM City; SELECT name, pop FROM City WHERE country= Finland ORDER BY pop; SELECT Book.title, count(*) AS Authors FROM Book JOIN Book_author ON Book.isbn = Book_author.isbn GROUP BY Book.title; Page 42
Tiedon muokkaaminen SQL INSERT INTO City VALUES ( Vantaa, 200000, N, polygon, Finland ); UPDATE City SET pop=213250 WHERE name= Vantaa ; DELETE FROM City WHERE pop < 100000; DELETE FROM City; Page 43
SPARQL (SPARQL Protocol And Query Language) RDF-graafitietokantojen käyttöön kehitetty kieli - Semanttinen, graafiin tallennettu tripletti-tieto Vain datan hakua varten, päivittäminen muilla keinoin W3C:n standardi SQL:n tavoin deklaratiivinen kieli Page 44
Tietokantahaut SPARQL-kiellä PREFIX foaf: <http://xmlns.com/foaf/0.1/> SELECT?name?mbox WHERE {?x foaf:name?name.?x foaf:mbox?mbox } PREFIX foaf: <http://xmlns.com/foaf/0.1/> PREFIX org: <http://example.com/ns#> CONSTRUCT {?x foaf:name?name } WHERE {?x org:employeename?name } PREFIX foaf: <http://xmlns.com/foaf/0.1/> ASK {?x foaf:name "Alice" } Page 45
SPARQL-hakutulokset SELECT haku palauttaa tietoalkioita taulukkomuodossa - Vastaa SQL:n SELECT-hakua CONSTRUCT haku palauttaa RDFmuodossa olevaa tietoa - Voidaan käyttää esim. tiedon siirtämiseen osoiteavaruudesta toiseen ASK haku palauttaa totuusarvon Page 46
Paikkatiedon käsittely tietokannoissa Paikkatieto ei ole lähtökohtaisesti tekstimuotoista Kyselyt ovat tekstimuotoisia Kyselyissä paikkatieto on esitettävä tekstimuodossa - WKT: Well-Known Text on vektorimuotoisen paikkatiedon tekstimuotoinen esitystapa Page 47
WKT-esimerkkejä POINT(0 0) LINESTRING(0 0,1 1,1 2) POLYGON((0 0,4 0,4 4,0 4,0 0),(1 1, 2 1, 2 2, 1 2,1 1)) MULTIPOINT(0 0,1 2) MULTILINESTRING((0 0,1 1,1 2),(2 3,3 2,5 4)) MULTIPOLYGON(((0 0,4 0,4 4,0 4,0 0),(1 1,2 1,2 2,1 2,1 1)), ((-1-1,-1-2,-2-2,-2-1,-1-1))) GEOMETRYCOLLECTION(POINT(2 3),LINESTRING(2 3,3 4)) Page 48
WTK SQL-kyselyissä, esimerkkejä INSERT INTO global_points (name, location) VALUES ('Town', POINT(-110 30)); SELECT name FROM global_points WHERE Within(location, POINT(-110 29), 1000000); SELECT the_geom FROM geom_table WHERE Distance(the_geom, POINT(100000 200000)) < 100 SELECT the_geom FROM geom_table WHERE Intersect(the_geom, 'BOX(90900 190900, 100100 200100) ) AND Distance(the_geom, POINT(100000 200000)) < 100 Page 49
Nykyisiä ja tulevia trendejä Page 50
Verkko, pilvet, Big Data, ja muu hype Tietokanta harvemmin sijaitsee samalla koneella kuin sen käyttäjä - Asiakas palvelin -arkkitehtuuri Palvelinten virtualisointi on siirtänyt tietokantoja pilvipalveluihin - Laskenta- ja tallennusresursseja voidaan skaalata helposti Big Data on valtavat määrät jäsentämätöntä dataa, jota relaatiotietokannat eivät vaan kykene käsittelemään Page 51
Pilvipalvelut ja tiedonhallinta: laitteiston ja palveluiden erottaminen toisistaan Palvelu Palvelu Palvelu Palvelu Palvelu Palvelu Palvelu Palvelu Palvelu Pilviarkkitehtuuri Palvelin Palvelin Palvelin Palvelin Palvelin Page 52
Big Data: lisäarvoa suurista, jäsentämättömistä datamassoista Page 53
Tietokonearkkitehtuurin muutos Tietokonearkkitehtuurin peruspalikat ovat pysyneet aika samoina pitkän aikaa - Prosessorit laskevat - Keskusmuisti tallettaa tarvittavan datan - Massamuisti tallettaa kaiken datan Palikat ovat kuitenkin muuttuneet ja eläneet Page 54
Toinen (Erittäin) abstrakti malli tietokoneesta Prosessori laskee - Nopea, pieni muisti Keskusmuisti tallettaa työdatan - Suhteellisen nopea ja iso Muistin koko 128MB (0,1GB) 4-64GB CPU Keskusmuisti Latenssi ~CPU:n nopeus ( < 1 ns) < 10 ns Massamuisti sisältää muun datan - Hidas mutta valtava 512+ GB Flash-muisti R: 10 4 ns W: 10 6 ns Page 55
(Erittäin) abstrakti malli mahdollisesta tietokoneesta vuonna 2020 Prosessori laskee - Nopea, pieni muisti Muisti tallettaa datan - Suhteellisen nopea ja valtava - Tieto pysyy muistissa myös ilman virtaa Muistin koko 10GB 5+TB CPU Keskusmuisti Latenssi ~CPU:n nopeus ( < 1 ns) < 10 ns Tietokannat täytyy suunnitella uudelleen! - Kunhan laitteistolupaukset ensin toteutuvat Page 56
Kysymyksiä? Page 57