Skaalautuvan tietokannan suunnittelu ja toteutus
hankintailmoitusportaaliin.
Kari Lehtomaa / TRTKAI10
Opinnäytetyön loppuseminaari-esitys 31.10.2013
Tietojenkäsittelyn koulutusohjelma /HAMK /2013
1
Kari Lehtomaa / 2013 / HAMK
Esitys - sisältö
Työn kuvaus ja toimeksiantajan esittely
Työhön liittyvä teoria
Hankintailmoitus
NoSQL-tietokannat
Node.js-kehitysympäristö
Työn käytännön osuus
Yhteenveto
Työn tulokset
2
Kari Lehtomaa / 2013 / HAMK
Työn kuvaus
Sovelluskehitystoimeksianto
Laadullista tutkimusta
NoSQL-tietokantojen ominaisuuksia
Tekniikkaan painottunut työ
Toimeksiantaja
Seravo Oy / Tampere, http://www.seravo.fi
Avoimen lähdekoodin ohjelmistot ja palvelut
Viikottaiset palaverit työn etenemisestä
Kysymykset
NoSQL-tietokantojen keskeisimmät käsitteet ja toimintaperiaatteet,
Riakin ja Couchbasen sopivuus palvelua varten
Vaadittujen toimintojen toteutus Node.js-ympäristöllä.
3
Kari Lehtomaa / 2013 / HAMK
Työn kuvaus
Työn tehtävät
NoSQL-tietokantojen periaatteet
Perehtyminen Node.js-ohjelmointiin.
Käytännön osuuden tehtävät
Hankintailmoitusportaali
Tietokannan valitseminen, Riak / Couchbase
Noutotoiminnon toteutus
Hakutoiminnon toteutus
Ilmoitustoiminnon toteutus
Ajankohtaisuus
Uusia teknologioita
NoSQL suomessa vielä varsin tuntematon käsite
4
Kari Lehtomaa / 2013 / HAMK
Työn kuvaus / Lähdeaineisto
Pääosin Internet-lähteitä
Blogit, valmistajien kotisivut, tutkimukset
Vähän ajantasaista kirjallisuutta
Tieto muuttuu nopeasti
Oikeellisuus varmistettiin käyttämällä useita lähteitä
Vähän suomenkielistä materiaalia
Sovelluskehitysvaiheessa HILMA-portaalin
rajapintakuvaukset
5
Kari Lehtomaa / 2013 / HAMK
Teoria - Hankintailmoitus
Julkinen hankinta
Valtiollisten ja kunnallisten tahojen tekemiä hankintoja
Tehdään lainsäädännön mukaan avoimella kilpailulla ja
hankintamenettelyllä.
Tiettyä arvoa suuremmat hankinnat täytyy ilmoittaa
HILMAssa.
HILMA, virallinen portaali (http://www.hankintailmoitukset.fi)
Työ- ja elinkeinoministeriön tarjoama palvelu
Sisältää kansallisen ja EU-kynnysarvon ylittävät hankinnat.
Voimassaolevien ilmoitusten haku ja selailu
Useita eri tyyppisiä, esim.
Ennakkoilmoitus, hankintailmoitus ja suunnittelukilpailun ilmoitus, jne
6
Kari Lehtomaa / 2013 / HAMK
Teoria - Hankintailmoitus
HILMAn puutteet
Toiminnoiltaan hyvin yksinkertainen
Ei vanhojen ilmoitusten selailua
Ei ryhmätyötoimintoja, kommentointia jne.
Ei voi tilata etukäteen hälytyksiä tulevista käyttäjää
kiinnostavista ilmoituksista
Uusi portaali, HTML5
Skaalautuva tietokanta
Kehittyneet hakutoiminnot
Käyttäjäkohtaiset ilmoitukset käyttäjää kiinnostavista
hankinnoista käyttöliittymässä ja sähköpostitse
Ryhmätyöominaisuudet, kommentointi
7
Kari Lehtomaa / 2013 / HAMK
Teoria - NoSQL
Suurten tietomäärien tietokantoja
Uusi käsite, vasta vuodesta 2009
Satoja eri tuotteita, kymmenkunta aktiivista.
Määritys:
Ei-relaatio, hajautettu, horisontaalisti skaalautuva
Avoimen lähdekoodin tuotteita
Käyttö
Pilvipalvelut
Globaalit verkkosovellukset
Google, Amazon, Facebook, Paypal....
9
Kari Lehtomaa / 2013 / HAMK
Teoria - NoSQL
Eivät korvaa relaatiotietokantoja vaan täydentää
Yksinkertainen rakenne
Ei SQL:ää, ei transaktioita, ei indeksejä
Vähemmän konfigurointia
Skaalaus ja hajautus yksinkertaista
Nopea tiedon tallennus ja luku
Joustava tietorakenne
Ei kiinteää rakennetta vrt. SQL taulut
Ketterät menetelmät
10
Kari Lehtomaa / 2013 / HAMK
Teoria - NoSQL
Eri tyyppejä tiedon muodon mukaan
Avain-arvo / KV
Dokumentti
Sarake
Verkko
Tallennustavan mukaan
Levy
Muisti
Levy + muisti
11
Kari Lehtomaa / 2013 / HAMK
Teoria - NoSQL
Ominaisuudet
Joustava
Skaalautuva
Suorituskykyinen
Korkea käytettävyys
Skaalautuvuus ja hajautus
Horisontaalinen vrt. vertikaalinen
Eheysmalli BASE, vrt relaatio: ACID
Saatavuus, tietoa pitää aina pystyä lisäämään ja lukemaan.
Osituksen sietokyky, eli järjestelmä toimii, vaikka kaikki solmukoneet ei
vastaa
Tiedot eivät ole aina oikeellisia. Ne eivät ole välttämättä ajantasalla
kaikissa solmukoneissa samaan aikaan.
12
Kari Lehtomaa / 2013 / HAMK
Teoria - NoSQL
Riak
Avain-arvotietokanta
Avaimet muistissa, tieto levyllä
Haku
Map/Reduce
Lucene-haku: “nimi:Kari OR nimi:Ka*”
Couchbase
Dokumenttitietokanta
Avaimet muistissa ja tieto levyllä tai molemmat muistissa
Haku
Map/Reduce
14
Kari Lehtomaa / 2013 / HAMK
Teoria – Node.js
Google V8-javaskripti-pohjainen palvelimissa käytettävä
ohjelmointiympäristö
Asynkroninen tapahtumapohjainen toiminta
Takaisinkutsufunktiot
Kutsuva koodi ei jää odottamaan kutsutun funktion
loppumista
Nopea – tehokas - skaalautuva
Laaja lisäkirjastovalikoima
Verkko-ohjelmointi
Palvelin ja asiakas
Web-palvelin luodaan sovelluksen sisään
15
Kari Lehtomaa / 2013 / HAMK
Käytäntö
Avoimen lähdekoodin ohjelmistot
Kehitysympäristö
Ubuntu Linux
Versionhallinta Git / Github
Tietokannan valinta
Node.js tuki
JSON-tuki
Riak
Käyttö toisessa projektissa
Couchbasen Node.js-lisäkirjasto ongelma
Couchbase selkeämpi ja yksinkertaisempi
16
Kari Lehtomaa / 2013 / HAMK
Käytäntö
Noutotoiminto
Toiminta
Hankintailmoitusten lataus ja tallennus halutulla päivämäärällä
Liitetiedostojen lataus ja tallennus
Hankintailmoitusten tietojen tallennus tietokantaan.
HILMA-palvelun HTTP-rajapinta
XML raaka-aineisto, monimutkaisuus
Node.js:n liian nopea toiminta ilmoitusten latauksessa ja
tiedostojen tallennuksessa
Asynkroninen toiminta
Paljon yhtäaikaisia HTTP-latauksia ja tiedostotoimintoja
Sovelluksen kaatuminen.
Ratkaisuna rekursiiviset funktiokutsut
17
Kari Lehtomaa / 2013 / HAMK
Käytäntö
Hakutoiminto
Monimutkainen Map/Reduce-koodi
Hierarkisten toimiala- ja aluekoodien monimutkaisuus
Ilmoitustoiminto
Käyttäjä voi merkitä hakutoiminnon avulla itseään
kiinnostavia tulevia ilmoituksia.
Hälytystoiminto
käyttöliittymä ja sähköposti
Toteutus noutotoiminnossa
Uusien ilmoitusten osuvuus käyttäjän tekemään määritykseen.
Hakukoodin uudelleenkäyttö
18
Kari Lehtomaa / 2013 / HAMK
Yhteenveto - tulokset
Paljon eri teknologioita ja käsitteitä
HTML5, AJAX, XML, XPath, JSON, HTTP, REST....
Twitter bootstrap, Jquery, JqueryUI
Uutta oppia NoSQL-tietokannoista
Erittäin syvällistä teoriaa
Helppous
Saman tietomallin käyttö koodissa ja tietokannassa
Tietokanta joustaa sovelluksen mukaan
Skaalautuminen, uuden tietokantapalvelimen lisäys
Sopivuus
Eri tietokantoja eri käyttöön
20
Kari Lehtomaa / 2013 / HAMK
Yhteenveto - tulokset
Node.js
Tehokkuus
Tuttu Javaskripti
Sama kieli palvelin - selain
Periaatteessa helppoa, käytännössä ei välttämättä
Vaatii omaa ajattelutapaa
Ongelmat
Asynkronisuus - noutotoiminto
Dokumentaation puutteellisuus ja keskeneräisyys
Koodin sekavuus
21
Kari Lehtomaa / 2013 / HAMK
Yhteenveto - tulokset
Erittäin mielenkiintoinen kehitysprojekti
Tarvittavat asiat ja ongelmakohdat onnistuttiin selvittämään
Paljon uutta oppia , teoriat , käytännöt...
Vaadittu toteutus saatiin tehtyä
Bonuksena hajautuksen testaus
Työ saatiin pysymään suunnitellussa rajauksessa ja
aikataulussa
Sovellus ei ole vielä valmis tuotantoon
Hakutoiminnon optimointi
Haku liitetiedostojen sisältä
22
Kari Lehtomaa / 2013 / HAMK