Tietokanta on järjestelmä, johon tallennetaan ja jossa säilytetään tietoja (mitä tahansa tietoa).

Tietokantamoottori voi lajitella, muuttaa tai tarjota tietokannassa olevia tietoja. Itse tiedot voidaan tallentaa monin eri tavoin; ennen digitaalisia tietokoneita käytettiin kortistoja, painettuja kirjoja ja muita menetelmiä. Nykyään suurin osa tiedoista säilytetään tietokonetiedostoissa.

Tietokantajärjestelmä on tietokoneohjelma sähköisten tietokantojen hallintaa varten. Hyvin yksinkertainen esimerkki tietokantajärjestelmästä on sähköinen osoitekirja.

Tietokannan tiedot on järjestetty jollakin tavalla. Ennen tietokoneiden käyttöönottoa työntekijätietoja säilytettiin usein arkistokaapeissa. Kullekin työntekijälle oli yleensä yksi kortti. Kortista löytyi tietoja, kuten työntekijän syntymäaika tai nimi. Myös tietokannassa on tällaisia "kortteja". Käyttäjän silmissä kortti näyttää samalta kuin ennen vanhaan, mutta tällä kertaa se on näytöllä. Tietokoneelle kortin tiedot voidaan tallentaa eri tavoin. Jokainen näistä tavoista tunnetaan tietokantamallina. Yleisimmin käytettyä tietokantamallia kutsutaan relaatiotietokantamalliksi. Se käyttää relaatioita ja joukkoja tietojen tallentamiseen. Tavalliset käyttäjät, jotka puhuvat tietokantamallista, eivät puhu relaatioista, vaan tietokantataulukoista.




 

Peruskäsitteet

Tietokanta on järjestetty kokoelma tietoa, jota hallinnoi tietokantajärjestelmä (DBMS). Tietokanta voi olla pieni, paikallinen tiedosto tai suuri hajautettu järjestelmä, joka palvelee miljoonia käyttäjiä.

  • Taulu (table): relaatiomallissa tieto tallennetaan tauluihin, jotka koostuvat riveistä ja sarakkeista.
  • Rivi (record/row): yksittäinen tietoyksikkö, usein vastaava "kortin" kanssa.
  • Sarake (field/column): yksittäinen attribuutti, esim. nimi tai syntymäaika.
  • Pääavain (primary key): sarake tai sarakkeiden yhdistelmä, joka yksilöi rivin taulukossa.
  • Viiteavain (foreign key): yhteys kahden taulun välillä, jolla varmistetaan tietojen eheys.

Tietokantajärjestelmät (DBMS)

Tietokantajärjestelmä on ohjelmisto, joka tarjoaa rajapinnan tietojen tallennukseen, hakuun, muokkaamiseen ja hallintaan. DBMS vastaa myös tietoturvasta, varmuuskopioinnista ja rinnakkaisuudesta.

  • Suosittuja relaatiotietokantoja: MySQL, PostgreSQL, SQLite, Microsoft SQL Server, Oracle Database.
  • NoSQL-järjestelmät: dokumenttipohjaiset (esim. MongoDB), avain-arvo -tietokannat (Redis), sarakenimikiset (Cassandra) ja graafitietokannat (Neo4j).

Tietokantamallit lyhyesti

  • Relaatiomalli: taulukoihin perustuva, käyttää SQL-kieltä tietojen käsittelyyn. Hyvä rakenne, vahvat relaatiot ja eheystarkastukset.
  • Hierarkinen ja verkkomalli: vanhempi malli, jossa tietorakenne muistuttaa puuta tai verkkoa; käytettiin esimerkiksi päätejärjestelmissä.
  • NoSQL-mallit: joustavampia skeeman suhteen, sopivat suurille datamäärille ja hajautetuille järjestelmille.
  • Objektitietokannat: tallentavat ohjelmisto-objekteja suoremmin, käytetään joissain erityissovelluksissa.

Relaatiotietokannat ja taulukot

Relaatiotietokannassa tieto järjestetään taulukoiksi, joissa jokainen rivi on tietue ja sarakkeet kuvaavat tietueen ominaisuuksia. Relaatiot mahdollistavat tietojen liittämisen taulukoiden välillä yhteyksien avulla (foreign keys).

Kyselyt ja SQL

Tietokannoista kysytään tietoja kyselykieliä käyttäen. Relaatiotietokannoissa yleisin on SQL (Structured Query Language), jolla suoritetaan esimerkiksi:

  • valinta: SELECT
  • lisäys: INSERT
  • päivitys: UPDATE
  • poisto: DELETE
  • rakenteen muokkaus: CREATE TABLE, ALTER TABLE

SQL mahdollistaa monimutkaiset liitokset (JOIN), ryhmittelyt (GROUP BY) ja suodattamisen (WHERE).

Transaktiot ja ACID

Monissa tietokannoissa on tuki transaktioille: joukko operaatioita suoritetaan kokonaisuutena. Tärkeä käsite on ACID:

  • Atomicity (atomisuus) — kaikki transaktion operaatiot tehdään kokonaan tai ei lainkaan.
  • Consistency (eheys) — transaktio vie tietokannan aina hyväksyttävään tilaan.
  • Isolation (eristävyys) — samanaikaiset transaktiot eivät vaikuta toistensa tuloksiin.
  • Durability (kestävyys) — suoritettujen transaktioiden tulokset säilyvät myös virhetilanteissa.

Tietomallinnus ja normalisointi

Hyvä tietokantasuunnittelu alkaa tietomallista (esim. ER-kaavio), jossa määritellään entiteetit ja niiden väliset suhteet. Normalisointi on prosessi, jossa taulukot järjestellään siten, että redundanssi vähenee ja tietojen eheys paranee. Liiallinen normalisointi voi kuitenkin heikentää suorituskykyä tietyissä operaatioissa, jolloin tehdään harkittuja optimointeja (denormalisointi).

Suorituskyky, indeksointi ja skaalautuvuus

  • Indeksit nopeuttavat hakuja, mutta vievät tilaa ja hidastavat kirjoituksia.
  • Pystysuora ja vaakasuora skaalautuvuus: pystysuora (vertical scaling) tarkoittaa tehokkaampia koneita; vaakasuora (horizontal scaling) lisää solmuja hajautetussa järjestelmässä.
  • Replikointi (kopiointi) ja sharding (datapirstoutus) auttavat käsittelemään suuria kuormituksia ja tarjoamaan korkean käytettävyyden.

Tietoturva ja varmuuskopiointi

Tietokannan suojaaminen on kriittistä: käyttöoikeuksien hallinta, salaus (levyllä ja siirrossa), auditointi ja säännöllinen varmuuskopiointi ovat perusvaatimuksia. Varmuuskopioista tulee testata palautusprosessi, jotta palautus todellisuudessa toimii.

Käyttötapaukset

Tietokantoja käytetään lähes kaikissa moderneissa järjestelmissä:

  • yrityksen liiketoimintajärjestelmät (asiakkaat, laskutus)
  • verkkopalvelut ja sovellukset (käyttäjätilit, sisältö)
  • analytiikka ja raportointi (data warehouses, data lakes)
  • IoT- ja reaaliaikajärjestelmät (sensori- ja lokitiedot)

Pilvi- ja hallinnoidut tietokantapalvelut

Yhä useampi käyttää pilvipohjaisia tietokantapalveluja (esim. hallinnoidut DBaaS-palvelut), jotka tarjoavat varmuuskopioinnit, päivitykset, automaattisen skaalauksen ja korkean käytettävyyden ilman, että käyttäjän tarvitsee hallita infratason yksityiskohtia.

Yhteenveto

Tietokanta on järjestetty tapa tallentaa ja hakea tietoa. Tietokantajärjestelmät tarjoavat välineet tiedon hallintaan, suojaamiseen ja skaalaukseen. Relaatiomallit ja SQL ovat yleisiä ja sopivat moniin käyttötarkoituksiin, mutta NoSQL- ja pilviratkaisut tarjoavat vaihtoehtoja suurten ja hajautettujen datamassojen käsittelyyn. Hyvä suunnittelu, indeksointi, varmuuskopiointi ja tietoturva ovat avainasemassa toimivan tietokantajärjestelmän rakentamisessa.