MySQL:n perustajien Mårten Mickosin ja Monty Wideniuksen eroaminen Sunilta on saanut minut taas pohtimaan MySQL:n ja sitä myötä yleensäkin koko SQL-tietokantojen tulevaisuutta. Olen jo ennenkin ennustanut SQL:n kuolemaa.

Viime aikoina olen tutustunut entistä tiiviimmin sekä Googlen Datastoreen että CouchDB:hen. Näiden uudenlaisten tietokanta-alustojen samankaltaisuus on mielestäni selvä merkki siitä, että jotain suurta on tapahtumassa ja uusi paradigma syntymässä.

Perinteinen SQL:hän toimii niin, että käyttäjä kertoo tietokannalle, minkälaisen tulosjoukon haluaisi saada. Sitten tietokannan pitäisi salamannopeasti päätellä, mikä on paras tapa saavuttaa kyseinen tulosjoukko. Apuna toimivat käyttäjän määrittelemät indeksit ja taulujen rivimäärätilastot. Joskus tietokanta sitten päätyy tekemään näiden pohjalta äärimmäisen epäoptimaalisia operaatioita, jotka kestävät useita sekunteja tai minuutteja, ja jumittavat webbipalvelun.

Google Datastore ja CouchDB ovat hylänneet optimointiajattelun kokonaan. Niiden lähtökohtana on, että jokainen tietokantakysely on määritelty etukäteen. Jokaisen kyselyn on myös vastattava jotain tiettyä indeksiä. Näin varmistetaan, että sovellus ei koskaan jää jumiin ja toimii aina johdonmukaisesti, vaikka taulun rivimäärä esimerkiksi kasvaisi sadasta sataan tuhanteen. Indeksejä ei tarvitse myöskään lisäillä tai poistaa taikauskon varassa kuten SQL:ssä on joskus tapana: ne vastaavat suoraan oikeasti tehtäviä tietokantakyselyitä.

Tällä tavoin saavutettava yksinkertaisuus ja tiukempi kontrolli tietokantamoottorin toimintaan helpottaa sovelluskehitystä paljon. Se tekee myös hajauttamisesta, replikoinnista ja klusteroinnista paljon yksinkertaisempaa kuin SQL-tietokannoissa. SQL mahdollistaa niin monia erilaisia (turhia) temppuja, että niiden tukeminen kaikissa tilanteissa klusteroidussa ympäristössä on kovin monimutkaista.

Datastoren ja CouchDB:n edut eivät rajoitu tehokkuuteen. Niillä on myös mukavampaa rakentaa palveluita, koska objekteja ei tarvitse manuaalisesti ripotella monimutkaisiin SQL-tauluihin ja relaatioihin. Sen sijaan objektit voi tallentaa suoraan kantaan ja määritellä indeksit luonnollisesti niiden propertyjä käyttäen. Googlen tapauksessa mallina toimivat Python-objektit, CouchDB taas käsittelee tietoa JSON-objekteina. Molemmat taipuvat helposti minkä tahansa objektiorientoituneen tiedon tallentamiseen kielestä riippumatta.

SQL jää toki elämään samaan tapaan kuin COBOL ja Java. Sillä on rakennettu niin paljon järjestelmiä, että SQL-osaajilla riittää hommia loppuelämäksi. Väitän kuitenkin, että uusien ja mielenkiintoisten järjestelmien--ainakin webbipalveluiden--arkkitehtuuri tulee hiljalleen siirtymään pois SQL:stä. Uutta kun on helpompaa, tehokkaampaa ja yksinkertaisempaa rakentaa paremmille, nykyaikaisille alustoille.

Published 7.2.2009