Tietokannat ja sovelluskehitys QASW Summit 5.11.2015
Pasi Parkkonen Ruuvari kourassa 80-luvulla C64, Amiga, Atari, Spectrum, MSX2+, kymmenien PC tietokoneiden kasausta Yliopisto-opintoja ja intti 90-luvulla Kehittäjätausta 680x0 assembler, skriptaus, monia ohjelmointikieliä, html 1994-, cgi-bin 1995- Sekalaisia tietokantakokeiluja 80-luvun lopulta alkaen Paradox, Superbase, Ingres... Ensimmäinen tietokantapohjainen tuotantojärjestelmä 1992-1993 Vesikunnan talojohtokortisto, Superbase 4, tuotantokäytössä yllättävän pitkään Paljon Oraclea 1995 eteenpäin Kouluttajana Oracle Universityssä 1999 - Relaatiokantojen sekakäyttöä, suorituskykytuunausta Oracle, SQL Server, MySQL, DB2, PostgreSQL... Vahvemmat aineet: pilveä, big dataa ja nosql välineitä Azure, Amazon Oracle, Redshift, Handlersocket, Hadoop, MongoDB, TokuMX... Pasi Parkkonen, COO, Senior Consultant pasi.parkkonen@advance.fi 040-5905307
Advance tietokantapalvelut Tietokantojen ylläpitopalvelu Tietokantojen tietoturva DB ajoympäristöjen parantaminen
Miksi tarvitaan tietokantoja?
Datan tulee sijaita jossain
Tietokannat tarjoavat tukun ominaisuuksia Monimutkaiset käsittelyvaatimukset Nopeus Eheys Yhtäaikainen käyttö Tuki isoille datamäärille Jatkuvuusvaatimukset Lukitukset, yhteiskäyttö Backupit Palautukset
Tietokannat sovelluskehityksessä välttämättömiä järjestelmien data sijaitsee ~aina tietokannassa mahdollistajia tarjoavat monenlaisia kyvykkyyksiä sovelluskehittäjä voi ottaa niitä käyttöön tai keksiä pyörää uudelleen vuodesta toiseen mahdollisuus pärjätä myös suurten datamäärien kanssa (teratavut, petatavut) erilaisia eläimiä tietokantojen kanssa pärjääminen on oma taiteenlajinsa tietokanta-arkkitehtuuri tulee suunnitella huolella Ylläpito ja datan & järjestelmän elinkaaren hallinta tulee ottaa huomioon
Esimerkkejä tietokannan sisäänrakennetuista ominaisuuksista Behold and Oracle will answer thee
Testitaulu SQL> desc testi Name Null? Type ----------------------------------------- -------- ------------------- NUMERO NUMBER TEKSTI VARCHAR2(20) PAIVAYS DATE
Päivämääräkäsittelyä 1 - syntymäpäivä Minä viikonpäivänä synnyin? select TO_CHAR(paivays,'DAY') from testi where numero=0;
Päivämääräkäsittelyä 2 juhlien järjestäminen Olisi mukava varata 50v juhliin hyvä juhlapaikka ajoissa! => mikähän päiväys mahtaa olla synttäreiden jälkeinen seuraava perjantai/lauantai? select NEXT_DAY(paivays, FRIDAY') from testi where numero=50; select NEXT_DAY(paivays, SATURDAY') from testi where numero=50;
Päivämääräkäsittelyä 3 perhesuunnittelu Haluaisin suunnitella tulevien lapsieni syntymäpäivät select ADD_MONTHS(sysdate,9) SYNTTÄRIT from dual; select TO_CHAR(ADD_MONTHS(sysdate,9), DD.MM.YYYY ) SYNTTÄRIT from dual;
Tietokantojen ominaisuuksien hyödyntäminen tietokannoista löytyy ominaisuuksia, joita harva osaa hyödyntää näillä ominaisuuksilla voi oikeasti ratkaista monia ongelmia esim. tietotyypit tietotyypit vaikkapa laina-aikojen käsittelyyn 3 vuotta, 6kk, 7 päivää Kaikki kuviteltavissa olevat aikavyöhykekäsittelyt muunnoksineen (lokaali / globaali) funktiot ja proseduurit Karkausvuosi Tilastolliset funktiot datalle oikea käyttötapa mitä tehdä tietokannassa, mitä sovelluskoodissa? milloin on hyvä suorittaa koodia tietokannassa? mitä tietoa kannattaa siirtää sovelluskerrokselle? Milloin se ei kannata? arkkitehtuurivalinnat oikeiden välineiden valinta tärkeää hyvän lopputuloksen varmistamiseksi
Tietokantojen lyhyt historia
Markkinatilanne 10/2015
3:s alusta asettaa kovia vaatimuksia tietokannalle: globaalisti HA datan volyymi strukturoimaton data transactiomäärät latenssi Millään yksittäisellä arkkitehtuurilla ei voida täyttää kaikkia vaatimuksia.
Asiakkaan vaatimus (2015) - yhteen tauluun tulee 200-250 miljardia riviä - tietokannan koko n.23 teratavua - nopeat full text haut - paljon päivityksiä jatkuvasti - pystyttävä palvelemaan globaalisti asiakkaita - open source teknologiat - mielellään AWS ajoalusta
Tyypillinen scale-out konfiguraatio Web palvelimet Memcached palvelimet Master / Read Write kerros Tietokantapalvelimet Slave / Read Only kerros Shard (A-F) Shard (G-O) Shard (P-Z)
Tiukimmat vaatimukset? Millaisia vaatimuksia tällä hetkellä esitetään?
Mitä kannattaa tehdä milläkin tasolla? Datan siirtonopeus vs. käsiteltävän datan määrä vs. suorituskyky vs. tietoturva
Järjestelmän ominaisuudet: Kaman lataus Kaman tulostus Käytön logitus Sisäsiisti toiminta Käyttöjärjestelmät: Windows Me Minix OS/2 Warp
Käytön logitus Millä tasolla logitus tapahtuu? Voiko sen sen ohittaa?
Tyypillinen järjestelmäarkkitehtuuri Järjestelmien käyttö
Sovelluslogiikka Logiikka, kuten järjestelmän lokitukset rakennetaan sovelluspalvelintasolle
Järjestelmän tiedot Järjestelmän tiedot tallennetaan tietokantaan
Hyökkäys suoraan tietokantaan? Sovellustason lokiin ei jää jälkiä. Tietokantaloki voi tallentaa nämä Admin voi muuttaa lokien sisällön, esim. Oraclen AUD$ audit
DEMO Normaali auditointi, hyökkäys suoraan tietokantaan Pasi = Järjestelmän loppukäyttäjä. Auditoidaan kannan käyttöä. Admin = Tietokannan admin käyttäjä. Audit = Audit käyttäjä, valvoo kannan käyttöä.
Tietokantojen tietoturva? Pian voimaan astuva EU:n tietosuoja-asetus pakottaa suojaamaan henkilödatan. Tiedot tulee suojata tietokantatasolla.
Tietokantoihin liittyvät uhat Käyttäjät Webbipalvelin Sovelluspalvelin Tuotantotietokanta DB verkkoliikenteen nauhoitus Oikeuksien väärinkäyttö Epäilyttävä aktiviteetti SQL Injection hyökkäykset Testijärjestelmä todellisella datalla Backup Levyjärjestelmä / nauhat Testikopio Tuotannon levyjärjestelmä
Mitä asialle voidaan tehdä?
Tarvitaan oikeanlainen aseistus
Todellinen data kuuluu vain tuotantotietokantoihin - Testidata pitää maskata ja sen luonti automatisoida
Testidatan generointi voidaan muuttaa samalla itsepalveluksi Number one bottleneck in application development is supplying development and QA environments - Gene Kim, author on The Phoenix Project
Datasisältö ja kannan liikenne voidaan salata reaaliajassa: - tietokannassa - datatiedostot levyllä - backupit levyllä - verkkoliikenne
Tietokantojen tietoturva = Olemassa olevien järjestelmien tietoturvaominaisuuksien parantamista
Hyvin menee kuha tekee fiksuja valintoja
Q & A Sana on vapaa
Kiitos! Lisätietoja Advancen kavereilta ja allekirjoittaneelta. Yhteystiedot: pasi.parkkonen@advance.fi 040-5905307