Tietokanta on digitaalisessa muodossa oleva, rakenteinen tietojen kokoelma, jota yksi tai useampi tietojärjestelmä käyttää ja päivittää. Kolme yleisintä tietokantatyyppiä eroavat siinä, miten ne järjestävät tiedon:
| Tyyppi | Miten tieto on järjestetty | Mihin sopii parhaiten |
|---|---|---|
| Relaatiotietokanta | Taulukoina ja niiden välisinä yhteyksinä | Tieto, joka on valmiiksi säännönmukaista ja jossa eri asioiden väliset suhteet (esim. asiakas–tilaus) pitää pystyä yhdistämään luotettavasti |
| Dokumenttitietokanta | Yksittäisinä, usein toisistaan poikkeavina “dokumentteina” (esim. yksi tietue per asiakas, kaikki tiedot samassa paketissa) | Tieto, jonka rakenne vaihtelee tietueesta toiseen tai muuttuu usein |
| Avain-arvotietokanta | Yksinkertaisina pareina: yksi avain, yksi siihen liittyvä arvo | Nopea haku suurella määrällä yksinkertaisia hakuja, esim. käyttäjän istuntotiedot |
Kaikki kolme ovat tietokantoja siinä mielessä, että ne täyttävät saman perusmääritelmän – rakenteinen, digitaalinen tietojen kokoelma, jota ohjelmisto käyttää ja päivittää. Ero on siinä, minkä muotoiseksi tieto pakataan sisällä.
Vaikka tietokanta kuulostaa tekniseltä sanalta, käytät niitä arjessa jatkuvasti huomaamattasi: verkkopankin tilitiedot, verkkokaupan tuoteluettelo, älypuhelimen yhteystiedot ja jopa bussiaikataulun hakukone lukevat kaikki tietoa jostain tietokannasta. Sovellus, jota näet ruudulla, on vain käyttöliittymä – varsinainen tieto asuu tietokannassa sen takana.
Miksi tietoa ei vain tallenneta tiedostoihin?
Yksittäinen tekstitiedosto tai laskentataulukko riittää, kun tietoa on vähän ja sitä käyttää yksi ihminen kerrallaan. Ongelmat alkavat, kun mukaan tulee jokin näistä:
- Useampi käyttäjä muokkaa samaa tietoa yhtä aikaa. Tiedosto voi olla auki vain yhdellä kerrallaan, tai muutokset menevät päällekkäin ja katoavat. Tietokantajärjestelmä on suunniteltu nimenomaan tähän: se pitää huolen, että kaksi samanaikaista muutosta ei riko toisiaan.
- Tietoa on niin paljon, ettei sitä voi selata käsin. Tiedostosta voi etsiä Ctrl+F:llä, mutta miljoonan rivin joukosta oikean tiedon löytäminen sekunneissa vaatii tietokannan hakurakenteita.
- Eri asioiden väliset suhteet pitää pystyä takaamaan. Jos asiakas poistetaan, mitä tapahtuu hänen tilauksilleen? Tietokantajärjestelmä voi pakottaa tämän säännön, tekstitiedosto ei.
- Sama tieto ei saa olla ristiriitaisena useassa paikassa. Tiedostoissa sama asiakkaan osoite saattaa päätyä kopioituna kymmeneen eri tiedostoon, ja ne ajautuvat ajan myötä eri linjoille keskenään.
Tietokanta ei siis ole vain “iso taulukko” – se on ohjelmisto, joka valvoo näitä sääntöjä puolestasi.
Tietokannan peruskäsitteet
Näihin sanoihin törmää lähes aina, kun tietokannasta tai tietomallinnuksesta puhutaan:
| Käsite | Mitä se tarkoittaa |
|---|---|
| Taulu / kokoelma | Yhtä asiaa (esim. “asiakkaat”) vastaava kokonaisuus, johon kyseisen asian kaikki tietueet kerätään |
| Tietue / rivi | Yksi yksittäinen kokonaisuus taulussa – esimerkiksi yksi asiakas tai yksi tilaus |
| Kenttä / sarake | Yksi tietueen ominaisuus, esimerkiksi asiakkaan nimi tai sähköpostiosoite |
| Avain | Tunniste, joka erottaa yhden tietueen kaikista muista ja jonka avulla eri taulujen tietueet voidaan yhdistää toisiinsa |
| Kysely | Pyyntö, jolla tietokannasta haetaan, lisätään tai muutetaan tietoa – esimerkiksi “hae kaikki tilaukset, jotka tämä asiakas on tehnyt” |
Mikä on relaatiotietokanta?
Relaatiotietokanta on tietokanta, jossa tiedot esitetään taulukoiden ja niiden välisten yhteyksien avulla. Jokainen taulukko vastaa yhtä asiaa (esimerkiksi “asiakkaat” tai “tilaukset”), ja taulukoiden rivit liittyvät toisiinsa yhteisten tunnisteiden kautta – esimerkiksi tilausrivi tietää, mihin asiakkaaseen se kuuluu, viittaamalla asiakkaan tunnisteeseen omassa taulukossaan.
Tämä rakenne on suosittu, koska se välttää saman tiedon tallentamista moneen paikkaan: asiakkaan nimi ja osoite kirjataan kerran asiakastaulukkoon, ja jokainen tilaus vain viittaa siihen. Jos asiakas vaihtaa osoitetta, tieto päivittyy yhdestä paikasta, eikä jokaista vanhaa tilausriviä tarvitse käydä korjaamassa erikseen. Hintana on se, että tiedon hakeminen usein vaatii useamman taulukon yhdistämistä kyselyvaiheessa, mikä tekee rakenteesta jäykemmän kuin esimerkiksi dokumenttitietokannassa.
Relaatiomalli sopii parhaiten tilanteisiin, joissa tiedon rakenne on tiedossa etukäteen ja pysyy melko vakaana: laskutus, varastonhallinta, henkilöstötiedot ja muu tieto, jossa eri asioiden väliset suhteet on tärkeä pystyä varmistamaan luotettavasti.
Käytännön esimerkki: ajattele pientä kirjakauppaa. “Kirjat”-taulussa on rivi jokaiselle kirjalle: nimi, kirjailija, hinta. “Tilaukset”-taulussa on rivi jokaiselle myydylle kirjalle: mikä kirja, kuka asiakas, minä päivänä. Tilausrivi ei toista kirjan nimeä tai hintaa uudelleen – se vain viittaa kirjan tunnisteeseen kirjat-taulussa. Kun kirjan hinta muuttuu, se korjataan yhteen paikkaan, ja kaikki tulevat kyselyt näkevät heti oikean hinnan. Vanhojen, jo tehtyjen tilausten historiatietoa tämä ei muuta – ne tallennetaan yleensä sillä hinnalla, joka oli voimassa ostohetkellä.
Mitä tietomallinnus tarkoittaa?
Tietomallinnus tarkoittaa sen suunnittelua etukäteen, mitä tietoa tietokantaan tallennetaan, miten se ryhmitellään ja miten eri osat liittyvät toisiinsa – ennen kuin yhtään riviä on vielä tallennettu. Käytännössä tietomallintaja päättää esimerkiksi:
- Mitkä ovat keskeiset “asiat”, joista tietoa kerätään (esim. asiakas, tuote, tilaus) – näistä tulee tyypillisesti taulukoita tai dokumenttikokoelmia.
- Mitä ominaisuuksia kullakin asialla on (asiakkaalla nimi, sähköposti, rekisteröitymispäivä).
- Miten asiat liittyvät toisiinsa (yhdellä asiakkaalla voi olla monta tilausta, mutta yksi tilaus kuuluu vain yhdelle asiakkaalle).
Huono tietomallinnus näkyy myöhemmin käytännössä: samaa tietoa toistetaan turhaan, haut hidastuvat, tai järjestelmään tallennetaan ristiriitaista tietoa (sama asiakas kahdella eri nimellä). Hyvä tietomallinnus tehdään ennen ohjelmointia, ei sen jälkeen – malliin tehdyt korjaukset ovat aina helpompia paperilla kuin valmiissa, käytössä olevassa järjestelmässä, jossa on jo dataa.
Tietomallinnuksen ei tarvitse olla monimutkaista pienessä projektissa. Riittää, että ennen tietokannan rakentamista piirtää edes karkean listan: mitkä ovat tärkeimmät asiat, mitä tietoa kustakin tallennetaan, ja mitkä niistä liittyvät toisiinsa. Tämä yksinkertainen harjoitus paljastaa yleensä suurimmat sudenkuopat jo etukäteen – esimerkiksi sen, että “asiakkaan osoite” pitääkin itse asiassa olla oma taulunsa, koska yhdellä asiakkaalla voi olla sekä laskutus- että toimitusosoite.
Mikä ero on SQL:llä ja NoSQL:llä?
SQL ja NoSQL eivät ole kaksi tuotetta, vaan kaksi eri lähestymistapaa tietokannan rakenteeseen:
- SQL-tietokannat ovat relaatiotietokantoja, joita hallitaan kyselykielellä, joka on suunniteltu nimenomaan taulukoiden ja niiden yhteyksien käsittelyyn. Rakenne (mitä sarakkeita taulukossa on) päätetään yleensä etukäteen, ja sitä on hankalampi muuttaa lennossa.
- NoSQL on kattonimitys joukolle tietokantatyyppejä, jotka eivät perustu relaatiomalliin – muun muassa dokumentti- ja avain-arvotietokannat kuuluvat tähän ryhmään. Rakenne voi olla joustavampi ja vaihdella tietueesta toiseen, mikä sopii nopeasti muuttuvaan tai epäsäännölliseen tietoon.
Kumpikaan ei ole yksiselitteisesti “parempi” – valinta riippuu siitä, kuinka säännönmukaista tallennettava tieto on ja kuinka tärkeää on pystyä yhdistämään sitä luotettavasti muun tiedon kanssa. Moni järjestelmä käyttää nykyään molempia rinnakkain eri käyttötarkoituksiin: esimerkiksi verkkokaupan tilaus- ja maksutiedot relaatiotietokannassa, mutta tuotesivujen käyttäjäarvostelut tai sivuston lokitiedot dokumenttitietokannassa, koska niiden rakenne vaihtelee tapauksesta toiseen enemmän.
Termien alkuperä selittää osan hämmennyksestä: “SQL” viittaa alun perin kyselykieleen, ei mihinkään yksittäiseen valmistajaan – aivan kuten “HTML” ei tarkoita yhtä tiettyä nettisivua. “NoSQL” taas ei tarkoita “ei koskaan SQL:ää”, vaan pikemminkin “ei pelkästään SQL:ää” – termi syntyi kuvaamaan kaikkea sitä, mikä ei mahtunut perinteisen relaatiomallin muottiin.
Kumpi tietokantatyyppi kannattaa valita?
- Jos tieto on säännönmukaista ja eri osien väliset suhteet pitää pystyä takaamaan (esim. rahasumma ei saa kadota kesken siirron): relaatiotietokanta.
- Jos tallennettavan tiedon muoto vaihtelee tietueesta toiseen tai muuttuu usein: dokumenttitietokanta.
- Jos tarve on hakea valtava määrä yksinkertaisia arvoja mahdollisimman nopeasti: avain-arvotietokanta.
- Jos et ole varma: aloita relaatiotietokannasta ja tietomallinnuksesta – se on vanhin ja parhaiten dokumentoitu lähestymistapa, ja sitä on helpoin oppia ensin.
Tietokannat ovat myös se pohja, jolta data-analytiikka ja big data -ilmiöt lähtevät liikkeelle: analytiikka tarvitsee aina jostain tietokannasta tai tietovarastosta haettua dataa käsiteltäväkseen. Organisaation laajempi näkökulma tiedon hallintaan löytyy sivulta tiedonhallinta.
Lähteet
Usein kysyttyä
Onko taulukkolaskentaohjelma sama asia kuin tietokanta?
Ei ihan. Taulukkolaskentaohjelma tallentaa tietoa, mutta ei valvo tiedon rakennetta tai eri taulukoiden välisiä yhteyksiä yhtä tiukasti kuin tietokantajärjestelmä. Kun tietoa on paljon, useampi käyttäjä muokkaa sitä yhtä aikaa, tai eri tietojen väliset suhteet pitää pystyä takaamaan luotettavasti, tietokanta korvaa taulukkolaskennan.
Tarvitseeko pieni yritys omaa tietokantaa?
Riippuu tarpeesta. Moni pieni yritys pärjää valmiilla ohjelmistoilla, kuten kirjanpito- tai asiakkuudenhallintaohjelmalla, joiden sisällä on jo oma tietokantansa – oman tietokannan rakentaminen tulee ajankohtaiseksi yleensä vasta, kun valmiit ohjelmistot eivät enää taivu yrityksen tarpeisiin.
Voiko tietokannassa olla sekä relaatio- että dokumenttirakennetta?
Kyllä. Moni nykyaikainen järjestelmä yhdistää useita tietokantatyyppejä: esimerkiksi säännönmukainen ydintieto relaatiotietokannassa ja vaihtelevammin rakentunut tieto, kuten lokidata, dokumenttitietokannassa.