09.10.2015

Oodi SQL-kielelle

Tiesitkö, että SQL –kieli on maailman eniten käytetty neljännen sukupolven ohjelmointikieli? SQL on ”vain” tietokannan käsittelyyn tarkoitettu kieli, mutta sellaisena todella voimakas. Varsinaiset ohjelmointikielet, kuten vaikkapa Java ja  C  ovat kolmannen sukupolven, siis alemman tason kieliä. Neljännen sukupolven kielissä riittää,  että kerrotaan mitä halutaan, järjestelmä sitten automaattisesti päättää miten työ tehdään. Kolmannen sukupolven kielissä ohjelmoija joutuu myös kirjoittamaan miten asia hoidetaan. Yhdestä SQL-lauseesta generoituu sisäisesti suuri määrä kolmannen sukupolven kieltä.

SQL-kielellä on ikää jo yli 40 vuotta ja voisi ajatella, että se on vanhentunut tai korvautumassa jollakin uudemmalla ja paremmalla. Tosiasia kuitenkin on, että SQL on suositumpi kuin koskaan eikä mitään vaihtoehtoista kieltä ole näköpiirissäkään. Uusimmissa Big Data –alueen Hadoop –toteutuksissakin käytetään SQL-kieltä, useampienkien tahojen toimittamana. Olen testannut näitä palveluja ja SQL toimii jo hyvin Hadoopin päällä.

SQL ei myöskään ole vanhentunut, päivastoin se on uudistunut matkan varrella koko ajan. ANSI – ja ISO –standarditoimikunnat ovat lisänneet tarvittavia lisäpiirteitä. Esimerkiksi kun aikanaan ilmestyi XML-kantoja, lisättiin SQL-kieleen XML-tukea. Siihen lisättiin olio-ominaisuuksia. BI-tuotteita tukemaan on syntynyt suuri joukko analyyttisiä funktioita. SQL seuraa aikaansa.

NoSQL-tietokannattuotteet saattavat tuntua tuoreilta ja moderneilta. Ne ovatkin uudempia ja niille on omat käyttöalueensa. Mielenkiintoista kyllä, yhä useampaan NoSQL-kantaan on nykyisin saatavilla SQL-liittymä. Ei vaan ole järkeä tuhlata aikaa koodaamalla raportteja Java –lapiolla, kun voimakas SQL-kaivinkonekin on tarjolla.

SQL-kielen standardointi on onnistunut käsittämättömän hyvin. Suurin osa SQL-käskyistä toimii täysin samalla tavalla Oraclessa, SQL Serverissä, DB2:ssa ja MySQL:ssa, vain suositummat kannat mainitakseni. Toki pieniä murre-eroja on, mutta tilanne on kuitenkin kerrassaan hieno verrattuna entisiin aikoihin, jolloin jokaiseen tietokantatuotteeseen oli oma kielensä.

SQL on myös varsinainen liima eri tuotteiden välillä. Relaatiokantoihin voidaan SQL:n ansiosta valita satojen BI-, raportointi- ja analysointituotteiden joukosta sopiva tai vaihtaa tarvittaessa. Tulevaisuuden vapausasteet on siis maksimoitu ja vendor-lock minimoitu.

SQL-kieltä voi käyttää monella tavalla. Kaikissa relaatiokannoissa on kätevä SQL-käyttöliittymä, jossa voi kirjoittaa SQL-käskyjä ja saada vastaukset samantien näkyville. Tämä on siis interaktiivista käyttöä. Ohjelmoijat voivat testata SQL-käskynsä ensin näin ja sitten upottaa toimivan koodin ohjelmointikieleensä.

SQL on erittäin hyvä kieli generoitavaksi. Relaatiokannathan eivät ymmärrä muuta kieltä kuin SQL-kieltä. SQL –lauseet syntyvät useinkin jonkin toisen ohjelman generoimana. Lähes kaikki BI-välineet tarjoavat näppäriä käyttöliittymiä, joissa käyttäjä navigoi hiiren avulla. Lopulta tästä generoidaan SQL-kieltä tietokantaan päin. Esimerkkejä SQL-generaattoreista ovat MS Access, Business Objects, Cognos ja Qlikview. Exceliinkin saadaan data relaatiokannasta SQL:n avulla.

Tietovarasto- ja BI-alueella toimiville SQL on jokapäiväinen työkalu. Kaikkein vaativimmissa tietovaraston latauksissa käytetään tietovarastotietokannan päässä SQL-kielellä kannan funktioita, näin saadaan paras suorituskyky (ns. ELT –tyyppinen lataus).

Joskus tuntuu, että SQL –kieltä yritetään kaikin keinoin välttää ja että se koetaan vaikeaksi. Olen kouluttanut SQL:aa yli 25 vuotta, ja voin sanoa, että kaikki oppivat perusteet kahden päivän kurssilla. Toisaalta arvelen, että hyvin moni yllättyy SQL-kielen ilmaisuvoimasta, jos päättäisi päästä syvemmälle SELECT * FROM taulu –tasosta. Kahden päivän jatkokurssillamme oppii paljon tehokkaita käskyrakenteita, jotka säästävät runsaaasti aikaa arjen työssä ja saavat aikaan ”tuottavuushypyn”.

Panostus SQL-kielen syvällisempään oppimiseen on hyvä investointi, joka tuottaa pitkälle tulevaisuuteen, myös Big Data –ajassamme. Löydät lisätietoa SQL Syventävät päivät –kurssistamme tästä.

Saattaisit olla kiinnostunut myös näistä

Ketterä kehitys

SQL perusteet

Lue lisää
Ketterä kehitys

SQL Advanced – syventävät päivät

Lue lisää