8.1 Oliosuuntautunut 8.2 Oliorelaationaalinen 8.3 NoSQL Luku 8 Tietokantaparadigmat ITKA204 kevät 2016 1
8.1 Oliosuuntautunut Kohti uusia tietomalleja 1960 1970 1980 1990 2000 2010 flat file hierarkkinen verkko relaationaalinen oliosuuntautunut oliorelaationaalinen NoSQL NewSQL ITKA204 kevät 2016 Toni Taipalus Jyväskylän yliopisto 2
8.1 Oliosuuntautunut Olio-relaatioyhteensopimattomuus RDBMS Levyllä sijaitsevien taulurivien yhteen liittäminen muistissa sijaitseviin olioihin voi olla ongelmallista. Tunnistetusta, potentiaalisten ongelmien joukosta käytetään nimitystä olio-relaatioyhteensopimattomuus (object-relational impedance mismatch). Kapselointi: vaikutus rajapinnan kautta Natiivikyselyt ja SQL sekä tapahtumat Näkyvyysalueet ja käyttöoikeudet Perintä Olion identiteetti ja perusavain (olio-rivi) Suhteet sekä kootut ja moniarvoiset attribuutit (olio-rivi) Käytös Tietotyypit ITKA204 kevät 2016 Toni Taipalus Jyväskylän yliopisto 3
8.1 Oliosuuntautunut Oliotietokannanhallintajärjestelmät Oliotietokannanhallintajärjestelmät (object-oriented database management system, OODBMS) ovat mahdollinen ratkaisu yhteensopimattomuuden poistamiseen: ei käytetä relaatioita lainkaan. Oliosuuntautunut tietokantaparadigma perustuu oliosuuntautuneen ohjelmoinnin perusperiaatteisiin. OODBMS:t tarjoavat mahdollisuuden ainakin yksinkertaisten operaatioiden (nouda, tallenna, poista) suorittamiseen. Keskeinen käsite on olion pysyvyys (persistence): muistissa oleva olio on lyhytkestoinen (volatile) levylle tallennettu olio on pysyvä (persistent). Oliotietokantojen heikkoon yleistymiseen on vaikuttanut standardoinnin epäonnistuminen ja heikko suosio yritysmaailmassa. Käytännön käyttökohteet ovat tällä hetkellä spesifisiä, esim. hiukkaskiihdyttimet. Tunnetuimpia tuotteita ovat mm. db4o, Perst ja ObjectDB. ITKA204 kevät 2016 Toni Taipalus Jyväskylän yliopisto 4
8.1 Oliosuuntautunut ORM-työkalut generoi SQL:n Sovellusohjelma (isäntäkieli) ORM-kirjasto ORM-työkalut (object relational mapper) ovat tavallisesti isäntäkielen lisäkirjastoja. ORM:n metodeilla generoidaan SQL:ää, joka lähetetään RDBMS:lle. Niiden hyötynä ja tarkoituksena on Olio-relaatioyhteensopimattomuuden minimoiminen. Yksinkertaisten kyselyiden tekemiseen ei tarvitse opetella SQL:ää. Yksinkertaisen kyselyiden tekemiseen ei tarvitse upottaa SQL:ää isäntäkieleen. Sovelluskehityksen, erityisesti sen alkuvaiheen vauhdittuminen. tietokanta-ajuri data SQL RDBMS ORM-työkalujen heikkouksia voivat olla esim. Lisäkirjastojen metodien ilmaisuvoima ei välttämättä ole SQL:n tasolla. Isäntäkielen vaihtuessa voidaan joutua opettelemaan uusi ORM-työkalu. Generoitu SQL voi olla huonosti optimoitua. ITKA204 kevät 2016 Toni Taipalus Jyväskylän yliopisto 5
8.2 Oliorelaationaalinen Oliorelaationaaliset tietokannanhallintajärjestelmät Nyt on esitelty kaksi tapaa varautua oliorelaatioyhteensopimattomuuteen: OODBMS ja ORM. Kolmas tapa on suunnitella tietokantajärjestelmä relaatiotietokannan ehdoilla. Tietokannan loogisen suunnittelun ei tarvitse ottaa suuresti kantaa tietotarpeisiin. SQL laajennoksineen on niin ilmaisuvoimainen, että lähes mihin tahansa tietotarpeeseen voidaan vastata. Tämä tapa asettaa rajoitteita sovellusohjelman suunnittelulle: monimutkaiset rakenteet kuten suunnittelumallit. Neljäs tapa ovat ns. oliorelaationaaliset tietokannanhallintajärjestelmät (object-relational database management system, ORDBMS). ORDBMS on tavallisesti RDBMS, johon on lisätty oliosuuntautunutta toiminnallisuutta. Olio-relaationaalisia ominaisuuksia on lisätty myös SQL-standardiin (SQL-99). Tuotteet toteuttavat ominaisuuksia yleisesti heikosti. Tunnettuja tuotteita ovat mm. PostgreSQL, Oracle ja Greenplum. ITKA204 kevät 2016 Toni Taipalus Jyväskylän yliopisto 6
8.2 Oliorelaationaalinen Oliorelaationaalinen tietomalli Oliorelaationaalisen tietomallin voidaan katsoa olevan SQL:n laajennos. Tärkeimmät lisäykset SQL:ään: 1) Mukautetut tietotyypit (user-defined type, UDT). Mahdollista määrittää uusia tietotyyppejä. Tyyppi voidaan periä jo olemassa olevasta tietotyypistä tai määrittää kokonaan uusi. Mahdollistaa mm. kootut attribuutit. Vastaavat olio-relaatioyhteensopimattomuuden tietotyyppi- ja rivi-olio ongelmiin. 2) UDT-tasoiset metodit Mukautetulle tietotyypille voidaan määrittää metodeja. Vastaavat olio-relaatioyhteensopimattomuuden oliokäytösongelmaan. 3) Taulutasoinen perintä Taulu voi periä ylitaulunsa sarakkeet. Vastaa olio-relaatioyhteensopimattomuuden perintäongelmaan. ITKA204 kevät 2016 Toni Taipalus Jyväskylän yliopisto 7
Taustaa NoSQL is a set of concepts that allows the rapid and efficient processing of data sets with a focus on performance, reliability and agility (McCreary & Kelly 2014). NoSQL-ilmiön (not only SQL) taustalla on Web 2.0 ja sisällön räjähdysmäinen kasvu. Syntynyt tarve massiivisten tietomäärien varastointiin ja käsittelyyn. Tämä edellytti hyvin tehokasta, skaalautuvaa ja äärimmilleen hajautettua arkkitehtuuriratkaisua. Tämän kurssin näkökulmasta NoSQL on tietokantaparadigmaperhe. Sen tarkoituksena on vastata RDBMS:ien heikkouksiin: RDBMS:t eivät skaalaudu tehokkaasti suuriin määriin dataa. RDBMS:t eivät skaalaudu tehokkaasti suuriin määriin käyttäjiä. RDBMS:ien hajautus on työlästä. ITKA204 kevät 2016 Toni Taipalus Jyväskylän yliopisto 8
Mikä on ajanut muutosta? Suunnannäyttäjinä ovat toimineet yritykset, joiden käyttäjämäärä on erittäin suuri: Google, Facebook, Twitter, Amazon, Reddit. Vuoteen 2009 mennessä käyttäjät olivat ladanneet Facebookiin yli 15 mrd valokuvaa (n. 1,5 Pb levytilaa). Facebookilla on arviolta yli 100 000 palvelinta. (Gruener 2012). Twitter tallensi yli 12 Tb tietoa päivittäin vuonna 2009, Facebook yli 500 Tb päivittäin vuonna 2012. (Constine 2012) Vuonna 2013 Twitterissä julkaistiin keskimäärin 5 700 viestiä sekunnissa. Määrä nousi 2013 elokuussa hetkellisesti yli 140 000 viestiin sekunnissa. (Krikorian 2013) Instagram sirpaloi tietokannan ennen käyttöönottoa 5 000 virtuaaliseen PostgreSQL-palvelimeen. Reddit-palvelussa tapahtui huhtikuussa 2015 n. 7,5 mrd sivulatausta. (Reddit 2015) Erään arvion mukaan yksistään vuonna 2015 luotiin 8 Yb dataa. Twitterin kautta julkaistu yht. yli 300 mrd viestiä vuoteen 2013 mennessä. ITKA204 kevät 2016 Toni Taipalus Jyväskylän yliopisto 9
Taustaa NoSQL-tuotteiden ominaispiirteitä, erityisesti RDBMS:iin verrattuna (McCreary & Kelly 2014): NoSQL-kannat soveltuvat erityisen hyvin hajautettuihin ympäristöihin. NoSQL-kannat tukevat horisontaalista skaalautuvuutta. Tietoa tallennetaan ja käsitellään monimuotoisilla rakenteilla. Tietojen yhdistäminen ei perustu liitosoperaatioon. NoSQL-kannat ovat usein skeemattomia, ts. niitä varten ei tarvita ennalta määriteltyjä tietokantakaavoja. Usein open source tuotteita. Kehitetty 2000-luvulla (rajaa pois IMS:n ja muut 1960-1970 -lukujen tuotteet). Lisäksi: ACID-ominaisuuksia voidaan jättää toteuttamatta tai löyhentää. Käyttökohteet vaihtelevat tuotteen mukaan yleiskäyttöisistä spesifisiin kohdealueisiin. Kyselykielet ovat SQL:ään verrattuna yksinkertaisia. ITKA204 kevät 2016 Toni Taipalus Jyväskylän yliopisto 10
BASE-oikeellisuusmalli NoSQL-tuotteille on tyypillistä, että ACID-ominaisuuksia ei toteuteta ainakaan kokonaisuudessaan. Tuotteita tarkastellaan ACID-ominaisuuksien ja normalisoinnin suhteen eri näkökulmasta: Datan toisteisuutta siedetään tai jopa suositaan. Toisteisuudesta johtuvia poikkeamia siedetään. Nopeutta, vikasietoisuutta ja saatavuutta arvostetaan tavallisesti enemmän kuin oikeellista dataa. Laskennan vähentämistä suositaan, uudet kohdealueet ja tekniikat siirtävät laskentaa asiakkaan laitteelle. NoSQL:n yhteydessä käytetäänkin ACID:n sijaan ns. BASE-oikeellisuusmallia: Basically Available (periaatteessa käytettävissä): dataa on aina saatavilla. Esim. vaikka jokin solmu menetetään, tai toisintaminen on viiveellistä. Soft state (ei aina oikeellinen): data ei ole aina yhdenmukaista solmujen kesken. Esim. toisintamisen seuraksena. Eventually consistent (lopulta oikeellinen): data on lopulta yhdenmukaista. Esim. kun kirjoitusoperaatiot / sekunti vähenevät, solmujen data on lopulta yhdenmukainen. ITKA204 kevät 2016 Toni Taipalus Jyväskylän yliopisto 11
CAP-teoreema A CAP-teoreema (ts. Brewerin teoreema) on näkökulma hajautettuihin järjestelmiin. Teoreeman mukaan järjestelmä voi toteuttaa kolmesta vaatimuksesta korkeintaan kaksi: Consistency (eheys tai ristiriidattomuus): järjestelmä sisältää yhden ja vain yhden version datasta. Availability (saatavuus): jokainen aktiivinen solmu suorittaa tapahtumia. Partition tolerance (osioinnin sietokyky): siedetään osiointia. C P CA CP AP data data data data S1 S1 S2 S1 S2 Keskitetty tietokanta. Atomiset operaatiot koko hajautetussa tietokannassa. Jatkuva toiminta ristiriidoista huolimatta. ITKA204 kevät 2016 Toni Taipalus Jyväskylän yliopisto 12
datan määrä 8.3 NoSQL Tietomallit NoSQL-paradigmaperhe jaetaan neljään luokkaan tietomallien mukaisesti: Avain-arvoparitietokannat (key-value store) Dokumenttitietokannat (document-oriented database) Sarakeperhetietokannat (column-family tai wide column store) Graafitietokannat (graph database) KV CF Näiden neljän pääluokan sisällä on alaluokkia. Tuotteella voi olla piirteitä useammastakin pääluokasta. Tuotteiden kenttä ja tietomallit elävät jatkuvassa muutoksessa. relaationaalinen DO GR tietomallin monimutkaisuus ITKA204 kevät 2016 Toni Taipalus Jyväskylän yliopisto 13
Avain-arvopari Avain-arvoparitietomallin mukaisesti tietue koostuu avaimesta ja avaimen arvosta. Avain yksilöi arvonsa kuten esim. hajautustaulu (hash table) tai loogisen tason tiedostojärjestelmä. Jotkin tuotteet sallivat avaimen arvoksi monimutkaisetkin tietotyypit. avain 61 76 61 69 6e Avain Arvo arvo nimi : Aatami Rastas osoite : Välikatu 10 /var/usr/01.png http://www.a.fi BLOB HTML-tiedosto tilaukset 617661696e Muista vehnäjauhot! tuote : leivänpaahdin määrä : 1 view-person?personid=12345&format=x ml <person id= 12345 > <name>aatami</name> </person> tuote : kiharrin määrä : 4 ITKA204 kevät 2016 Toni Taipalus Jyväskylän yliopisto 14
Avain-arvopari Tietokannan rakenne on äärimmäisen yksinkertainen. Tietokannan loogisessa suunnittelussa tietotarpeet korostuvat: Kyselykielet rajoittuvat tavallisesti yksinkertaisiin operaatioihin (get, put, delete). Kaikki haluttu data pyritään noutamaan yhdellä yksinkertaisella kyselyllä. Tuotteille on ollut tyypillistä, että DBMS ei osaa käsitellä avaimen arvon osia, vaan avain on DBMS:lle atominen (ts. läpinäkymätön) kokonaisuus. Tämä piirre on kuitenkin vähitellen häviämässä. Liitosten tekeminen tehdään tavallisesti sovellusohjelman tasolla. ITKA204 kevät 2016 Toni Taipalus Jyväskylän yliopisto 15
Avain-arvopari Tietomallin tai tuotteiden ominaispiirteitä: Jotkin tuotteet voivat pitää tietokantaa kokonaisuudessaan muistissa (ns. in-memory database). Haku- ja indeksointitoiminnot perustuvat keinoavaimeen. Rakenne voi sisältää toisistaan paljonkin eroavia tietotyyppejä. Sopivat kohdealueisiin, jotka eivät vaadi monimutkaisia tapahtumia tai tietokantakyselyitä, ja joissa nopeus on erityisen tärkeää. Tietoa toistetaan. Tunnistettuja käyttökohteita ovat esim. Sanakirjat, valokuva- ja muut dokumenttiarkistot. Session data, asetukset, käyttäjäprofiilit, ostoskorit. Suosittuja tuotteita vuonna 2016: Riak, Redis ja memcached. ITKA204 kevät 2016 Toni Taipalus Jyväskylän yliopisto 16
Dokumentti Dokumenttitietomalli muistuttaa avain-arvoparitietomallia: dokumenteilla on tunniste ja sisältö. Dokumentit ovat kuitenkin DBMS:lle läpinäkyviä: se pystyy erottelemaan dokumentin osia toisistaan. tunniste dokumentti ObjectID(64 6f 6b 75 6d 65) etunimi : Aatami sukunimi : Rastas osoite : Välikatu 10 A tilaukset : tilaus : tilausnro : 1001 tuotenimi : paahdin määrä : 1 tilaus: tilausnro : 1002 tunniste: 68 6f 6b 70 6d 65 avain arvo etunimi Bertta sukunimi Hukari ikä 25 ITKA204 kevät 2016 Toni Taipalus Jyväskylän yliopisto 17
Dokumentti Dokumentit tallennetaan tavallisesti joko XML- (Extensible Markup Language), JSON- (JavaScript Object Notation) tai BSON-formaatissa (Binary JSON). Tietomallin ja tuotteiden ominaispiirteitä: Avain-arvoparitietomallin kaltainen skeemattomuus. Dokumentit voivat poiketa rakenteeltaan huomattavasti toisistaan. Haku voi perustua tunnisteen lisäksi arvoihin (avain-arvoparituotteita monipuolisemmat kyselykielet). Tietoa toistetaan. Tunnistettuja käyttökohteita ovat esim. Sisällönhallintajärjestelmät, blogit, joustavia skeemoja vaativat kohdealueet. Suosittuja tuotteina vuonna 2016: MongoDB ja CouchDB. ITKA204 kevät 2016 Toni Taipalus Jyväskylän yliopisto 18
Sarakeperhe Sarakeperhetietomallin nimeämiskäytännöt ovat tuotesidonnaisia. Haluttu arvo tunnistetaan rivitunnisteen (row id) ja (sarake)avaimen yhdistelmästä. nimiavaruus asiakkaat sarakeperhe taloudet avain : arvo supersarake nimi : Aatami perhe rivitunniste avain : arvo 73 61 72 nimi : Bertta avain : arvo nimi : Cecilia rivitunniste avain : arvo avain : arvo 73 60 70 nimi : Daavid email : da@vid.fi ITKA204 kevät 2016 Toni Taipalus Jyväskylän yliopisto 19
Sarakeperhe Tietomallin tai tuotteiden ominaispiirteitä: Aikaleimat: tietueista voidaan tallentaa useita eri versioita. Moniosaiset tietueiden tunnisteet: rivi- ja sarakeavainten lisäksi myös aikaleimat. Tietokanta ei ole täysin skeematon: sarakeperheen rivit voivat olla rakenteeltaan erilaisia ja tyhjäarvoja voi esiintyä runsaastikin. Tunnistettuja käyttökohteita ovat esim. Massiivisten datamäärien reaaliaikainen analysointi (esim. hakurobotit, lisätty todellisuus). Laajat ja harvat (sparse) taulukot. Suuriinkin rakenteellisiin muutoksiin varautuvat järjestelmät. Suosittuja tuotteina vuonna 2016: Apache Cassandra, HBase ja Hypertable. ITKA204 kevät 2016 Toni Taipalus Jyväskylän yliopisto 20
Graafi Graafitietomalli (tai verkko-) perustuu osittain verkkoteoriaan: tietokanta nähdään solmuina (node) eli kohteina ominaisuuksineen ja suunnattuina kaarina (edge) eli suhteina ominaisuuksineen. Ominaisuus muodostuu avaimesta ja avaimen arvosta. Solmu ominaisuus Solmu nimi : Aatami tyyppi : henkilö sukulaisuus : isä nimi : Cecilia tyyppi : henkilö ominaisuus ominaisuus ominaisuus ominaisuus avio : 2000 rekrytoitu : 2006 tykkää : true titteli : CFO Solmu ominaisuus Solmu nimi : Bertta tyyppi : henkilö rekrytoitu : 2005 nimi : Facebook tyyppi : yritys ITKA204 kevät 2016 Toni Taipalus Jyväskylän yliopisto 21
Graafi Tietomallin tai tuotteiden ominaispiirteitä: Liitoksia ei tehdä loogisten viittauksien avulla (kuten RDBMS), vaan fyysisten. Skeemattomuus: ominaisuuksia voidaan lisätä vaivattomasti sekä solmuihin että kaariin. Kyselyt poikkeavat muiden tietomallien kyselyistä, esim. Mitkä ovat lähimmät solmut? Mikä on lyhin polku kahden annetun solmun välillä? Millä solmuilla on lähisolmuja samoilla arvoilla? Miten samanlaisia ovat kahden annetun solmun naapurisolmut? Tunnistettuja käyttökohteita ovat esim. Sosiaaliset verkostot, vahvasti toisiinsa liittyvä paikkatieto, reititys. Suhdeanalyysi, erilaiset suosituksia tarjoavat järjestelmät. Suosittuja tuotteina vuonna 2016: Neo4J, OrientDB ja Infinite Graph. ITKA204 kevät 2016 Toni Taipalus Jyväskylän yliopisto 22
Monikielisyys Vuonna 2016 näyttää, että NoSQL-tuotteet ovat tulleet jäädäkseen. Paradigmojen yhteentörmäyksestä näyttää jääneen jäljelle ns. monikielisyys (polyglot persistence). Sen mukaan tietokantajärjestelmässä ei käytetä vain yhtä tietokantaparadigmaa, vaan sovelletaan eri paradigmojen tuotteita niille sopiviin järjestelmän osa-alueisiin. Osa-alue Kriittistä osa-alueessa Tietomalli Huudot Nopeus Avain-arvopari Maksutapahtumat Datan oikeellisuus Relaationaalinen Tuotesuositukset Nopeat liitokset Graafi Käyttäjien suhteet Nopeat liitokset Graafi Raportointi Monipuoliset raportointiominaisuudet Relaationaalinen Analysointi Suurten datamäärien reaaliaikainen analysointi Sarakeperhe ITKA204 kevät 2016 Toni Taipalus Jyväskylän yliopisto 23
Tulevaisuus Yritykset haluttomia luopumaan RDBMS:stä SQL:n ja ACID:n vuoksi (Venkatesh & Nirmala 2012). Tunnistettu ongelma NoSQL-tietomallissa on sovelluskehityksen haastavuus. Syntyi uusi suuntaus nimeltä NewSQL. Tietomalleja luonnehditaan sanalla semi-relational. Solmun suorituskyky on RDBMS:n solmua parempi. Kyselykieli on SQL ja tuotteesta riippuen lisäksi muitakin. ACID-ominaisuudet toteutetaan, ja rinnakkaisuudenhallinta toteutetaan muuten kuin lukituksella. Hyödyntävät NoSQL-perheen piirteitä, kuten täysin muistissa toimivia tietokantoja ja sirpalointitoimintoja. Tukevat horisontaalista skaalautuvuutta, täysin erillinen arkkitehtuuria ja hajautusta. Oliosuuntautunut Oliorelaationaalinen Relaationaalinen NewSQL NoSQL ITKA204 kevät 2016 Toni Taipalus Jyväskylän yliopisto 24
Osaamistavoitteet Ymmärtää mitä olio-relaatioyhteensopimattomuudella tarkoitetaan ja miten sitä voidaan välttää. Osaa kuvailla BASE-oikeellisuusmallia ja tietää mitä CAP-teoreemalla tarkoitetaan. Osaa kuvailla erilaisia NoSQL-tietomalleja ja tietää niiden erot relaationaaliseen tietomalliin. Ymmärtää monikielisyyden perusperiaatteen. Esim. Mitä tarkoitetaan olio-relaatioyhteensopimattomuudella? Mitä tarkoitetaan BASE-oikeellisuusmallilla? Kuvaile lyhyesti kutakin NoSQL-tietomallia. Kuvaile NoSQL-tuotteiden tyypillisiä eroja relaationaalisiin tuotteisiin. ITKA204 kevät 2016 Toni Taipalus Jyväskylän yliopisto 25