IHTE-1900 Seittiviestintä Tietokannat 15.11. Päivän aiheet Tietokantojen perusteita Mihin tietokantoja voidaan käyttää? Mitä hyötyä tietokannoista on? Esimerkkejä tietokantojen käytöstä Mihin tietokantoja tarvitaan? Monien seittisovellusten toteuttaminen olisi muuten vaikeata, esim. - verkkolehdet (StudiaMedia, MTV3 ) - verkkokaupat (kirjat, levyt, tietokoneet ) - lipunmyyntijärjestelmät (Finnair, VR ) - pankkipalvelut - mitkä tahansa todella laajat sivustot (Yahoo, TTY:n Haavi, Tutka ja julkiset sivut) - sivustot joiden sisältö usein muuttuvaa (esim. OINFOn sivut kaikille käyttäjille erilaiset) 1
Tiedostoihin perustuvat järjestelmät Myynnin järjestelmä Suunnittelu Laskutus asiakkaat tilaukset asiakkaat hinnat lähetetyt laskut Tiedostoihin perustuvat järjestelmät Myynnin järjestelmä Suunnittelu Laskutus asiakkaat tilaukset asiakkaat lähetetyt laskut 2
Tiedostoihin perustuvat järjestelmät Myynnin järjestelmä Suunnittelu Laskutus tilaukset asiakkaat lähetetyt laskut Tiedostoihin perustuvat järjestelmät Jokainen sovellus määrittelee itse tarvitsemansa tiedot ja määrittelee niitä Ongelmia ja rajoitteita: - tietojen eriytyminen ja eristyminen - tiedon monistuminen - tiedon riippuvuus sovelluksesta - yhteensopimattomat tiedostomuodot - tiedonhaun joustamattomuus sovelluksissa Tietokantajärjestelmät Myynnin järjestelmä Suunnittelu Laskutus Tietokannanhallintajärjestelmä (TKHJ) lähetetyt tilaukset laskut asiakkaat 3
Tietokanta Tietokokoelma - muodostaa hallinnollisen kokonaisuuden Tiedon oletetaan olevan suhteellisen pysyvää - tietoja voidaan haluta säilyttää jopa useiden (kymmenien) vuosien ajan Tietokannanhallintajärjestelmällä (TKHJ) hallitaan joukkoa loogisesti toisiinsa liittyvää tietoa Tietokannanhallintajärjestelmä TKHJ on yleensä ainoa sallittu tapa käsitellä tietokantaa TKHJ tarjoaa rajapinnat tietokannan käsittelyyn: - työkalut suurten tietomäärien käsittelyyn - tietojen tallennus ja hakeminen - tietojen suojaaminen luvattomalta käytöltä ja vahingoilta - useiden käyttäjien hallittu yhtäaikainen tiedonkäsittely Tietokantakieli Käyttäjä voi luoda tietokannan ja määritellä sen loogisen tietorakenteen - DDL: data definition language Tiedonhaku- ja käsittelyoperaatiot määritellään omalla kielellään - DML: data manipulation language - query language 4
Metatieto Tietoa tiedosta (vrt. HTML:n metadata) Mitä informaatiota tietyissä tallennetuissa tiedoissa on ja kuinka tiedot on tallennettu Esim. tietoa - käyttäjistä - käyttöoikeuksista - omistajista - tilastotiedoista - sallituista arvoista Tallennettu TKHJ:n tietohakemistoon Tietokantojen käytön etuja Tietojen - Monistumisen ja oikeellisuuden hallinta sekä yhdenmukaisuus - Jakaminen - Parempi saatavuus ja vastaavuus Enemmän informaatiota samassa tietomäärässä Skaalaedut Yhtenäistää käytäntöjä Tuottavuuden nousu Ylläpito helpottuu - Varmuuskopioinnin yms. Keskittäminen - Paremmat suojaukset ja turvallisuus Tietokantojen käytön ongelmia Monimutkaisuus Koko TKHJ:n hinta (peruskustannukset) Mahdollisesti tarvittava lisälaitteisto Suorituskyky (esim. reaaliaikajärjestelmissä) Vakavan vian sattuessa suurempi vaikutus 5
Tietokantoihin liittyviä rooleja Loppukäyttäjät - Yleensä erillisten sovellusten kautta Sovellusten tekijät, tietokantasuunnittelijat Tietokannan hoitaja - Takaa tietokannan toimivuuden - Käyttöoikeudet, suorituskyky, konfigurointi, tk-suunnittelu, konsultointi, käyytötuki, käytön seuranta, varmistukset, levytila jne Lisäksi ehkä esim. operaattorit, työkalukehittäjät jne Tietokantojen jaottelua Henkilökohtaiset tietokannat - henkilökohtaisella koneella, yksi käyttäjä, yksi käyttötarkoitus Työryhmätietokannat - paikallisverkko, yleensä < 25 henkilöä, yksi käyttötarkoitus Osasto/pienyritystietokannat - paikallisverkko, yleensä < 100 henkilöä, useita käyttötarkoituksia Yritystason tietokannat - koko organisaation päätöksentekoa tulevia, suuria Ensimmäiset tietokannat Ensimmäiset kaupalliset TKHJ:t 1960-luvulla - kehitetty tiedostojärjestelmien pohjalta Eivät tukeneet korkean tason kyselykieliä Täytetyt tietomallit kuvastivat tiedon talletusrakenteita Talletettu tieto muodostui useista pienistä tietoalkioista ja tietoihin kohdistuvat kyselyt ja päivitykset yleisiä Esim. lentoyhtiön paikkavarausjärjestelmään talletettiin tietoalkioina paikkavaraukset, lentoaikataulut ja hinnasto 6
Tietokantojen rakenne Yleisimmät tietomallit - Hierarkkinen tietomalli - Verkkomalli - Relaatiomalli - Oliomalli - Olio-relaatiomalli Esimerkit Johdatus tietokantajärjestelmiin -kurssin materiaalista (Jari Peltonen, TTY) 90% nykyisistä tietokannoista relaatiomallin mukaisia - lähtökohtana 1970-luvulla kirjoitettu artikkeli A relational model for large shared data banks (Codd) - ideana esittää tieto käyttäjälle tauluina (relaatioina): varsinainen tiedon talletusrakenne peitetään käyttäjältä Hierarkkinen tietomalli Y1 Oy Aikon Ab Tampere T1 Känny A 100 anaani 50 Green Spiece ltd. Temmes T1 anaani 30 Päärynä 40 T3 Omena 50 Verkkomalli Y 1 Oy Aikon Ab Tampere Y1 Y1 T1 T1 Känny anaani Y 2 Green-spiece ltd. Temmes T3 T4 T3 T4 Päärynä Omena 7
Relaatiomalli Valmistus TuoteID YritysID Määrä T1 Y1 100 Tuotteet TuoteID T1 T_nimi Känny Ryhmä A Y1 50 30 anaani T3 40 T3 Päärynä T4 50 T4 Omena Yritys YritysID Y_nimi Kaupunki Y1 Oy Aikon Ab Tampere Greenspiece ltd Temmes SQL Yleisesti käytetty relaatiomalliin perustuva standardoitu kyselykieli (Structured Query Language) Lähes kaikki relaatiotietokannat ymmärtävät SQL:ää Esim. SELECT Y_nimi FROM Yritys WHERE Kaupunki = Tampere Tietokantaliitynnät Valikko/lomakepohjaiset, graafiset, viivakoodi, luonnollinen kieli, seittiliitynnät jne Avoimet ja yhtenäiset rajapinnat (API) Hajautus: - tietojen ja/tai tietojenkäsittelyn teknistä hajauttamista Asiakas-palvelin arkkitehtuuri - tietovarastojen ja käyttäjäosuuden toisistaan erottaminen 8
Asiakas-palvelin arkkitehtuuri Tietokantajärjestelmissä voidaan asiakas-palvelin arkkitehtuuria soveltaa usealla tavalla Miten tehtävät jaetaan asiakkaan ja palvelimen välillä: - koko TKHJ on palvelin, mutta ainoastaan käyttöliittymä on asiakas. Käyttöliittymä kommunikoi käyttäjän ja palvelimen kanssa (yksinkertaisin tapa) Miten tehtävät jaetaan asiakkaan ja palvelimen välillä: - asiakkaan tehtävien lisääminen tasoittaa järjestelmän kuormitusta, koska kuormituksen kasvaessa palvelimista tulee pullonkauloja - pullonkauloja pyritään poistamaan esim. valmiiksi tallennetuilla proseduureilla Tapahtumankäsittely OLTP, OnLine Transaction Processing Tarkoituksena estää yhteisen tietokannan samanaikaisesta käytöstä aiheutuvat ongelmat OLTP-järjestelmät sisältävät paljon lyhyitä tapahtumia joissa käsitellään aina ajantasaista tietoa Tyypillisiä OLTP-järjestelmiä esim. pankkijärjestelmät ja suuret varausjärjestelmät: yhtäaikaisia käyttäjiä saattaa olla kymmeniä tuhansia Asiakkaiden ja palvelinten välillä toimii tapahtumankäsittelymonitori Tietovarastotekniikka Yksi tapa toteuttaa suorituskyvyltään hyviä päätöksentekojärjestelmiä suurissa ympäristöissä Käytetään nykyisen toiminnan pohjana tulevan toiminnan ennustamiseksi Keskeisenä tavoitteena liiketoiminnan kehittäminen, kannattavuuden parantaminen - kerätään yhteen tiedot, jotka erityisesti tukevat päätöksentekoa - laitetaan tiedot tehokkaaseen TKHJ:ään - tarjotaan helppo käyttömahdollisuus 9
Nykyajan vaatimuksia Yhä nopeammin vaihtuvia tieto- ja raportointitarpeita Organisaatiotasoinen tietojen käyttö ja analysointi - eri järjestelmien tietojen yhdistäminen Tieto pitää olla saatavilla kaikkialla Yhä pienempiä järjestelmiä Yhä suurempia järjestelmiä - Enemmän käyttäjiä - Suurempia tietomääriä Tietokannat seitissä: etuja Uusi graafinen, helposti muokattava käyttöliittymä - yleinen, helposti lähestyttävä - riippumaton verkkojärjestelmistä, laitteistosta, käyttöjärjestelmästä - voidaan kutsua myös muita verkossa ajettavia sovelluksia - eri tietotyyppien esitystavat ratkaistu valmiiksi - voi säästää kehitystyötä Uusi jakelukanava tietokantojen tiedoille Seitin suosio Saatavilla mistä vaan, koska vaan Edulliset asennus- ja käyttökustannukset Helppo tapa C/S-toteutuksiin Tietokannat seitissä: ongelmia Luotettavuus: esim. meneekö tieto perille? Turvallisuus: käyttäjätunnistus, turvattu tiedonsiirto Kustannukset: monimuotoisten sivujen ylläpito Järjestelmän skaalautuvuus HTML:n rajoitukset ja keskeneräinen kehitystyö Yhteyden tilattomuus Kaistanleveys Tehokkuus/suorituskyky Tietokantaosaamisen lisäksi perustamisessa tarvitaan TCP/IP-toteutusosaamista Ei yhdenmukainen perinteisten C/S toteutusten kanssa 10
Tietokannat seitissä: miksi? Dynaamisesti rakennettavat sivustot - sisältö aina ajan tasalla, ylläpito vähenee erityisesti suurissa sivustoissa Sisällön ja ulkoasun erottaminen Helppo laajennettavuus Vuorovaikutteisuuden lisääminen Kompleksisuuden hallinta Loppukäyttäjän ei osattava HTML-kieltä WSamanaikaiset käyttäjät Tietokannat seitissä: miten? Seittiohjelmointi avuksi, esim. - CGI: yleinen, yksinkertainen, kieliriippumaton, palvelinriippumaton - Perl, Python jne - Piparit: pyrkimys eroon tilattomuudesta - Server API: laajennuksia palvelimiin - JAVA: appletit, servletit - Javascript - Active Srves Pages (ASP) - jne Tehtävä 8 viikko 45 Esimerkin mukainen www-lomake, jossa on - Valintanappeja (radiobutton) - Tarkistusruutuja (checkbox) - Tekstikenttiä - Painikkeita Oppimispäiväkirja, n. 1500 merkkiä Dedis torstaina 22.11. klo 16.00 11
Lähteet Esimerkit: - Kurssin 8102300 Johdatus tietokantajärjestelmiin luentomoniste (Jari Peltonen) Johdatus tietokantajärjestelmiin kurssin linkkisivu - http://www.cs.tut.fi/~johtika/linkit/ 12