Datatuotteet voidaan usein jaotella lähtökohdiltaan kahteen eri kategoriaan: tietovarastolähtöisiin (data warehouse) ja tietoallaslähtöisiin (data lake). Mitkä ovat eri lähtökohtien edut ja haitat?
Kukin taho luonnollisesti korostaa omaa rooliaan analytiikkakokonaisuudessa. Usein kuuleekin eri tuotteiden tarjoavan "kokonaisvaltaisen analytiikkaratkaisun". Ymmärrettävästi tämä tuo sekaannusta, kun tarkoituksena on eri ratkaisujen vertailu.
Perinteisesti pilvien analytiikka-alustat jaetaan kahteen kategoriaan: data lake (suomeksi tietoallas) ja data warehouse (suomeksi tietovarasto). Kummallakin lähestymistavalla on omat vahvuutensa ja niitä käytetään hieman eri tarkoituksiin.
Nykyään on kuitenkin tyypillistä, että ratkaisuissa on kummankin kategorian elementtejä. Tuotteissa silti edelleen näkyvät niiden alkuperäisen kategorian tai lähestymistavan piirteet. Näiden ymmärtäminen helpottaa kokonaisuuksien hahmottamista.
Tässä blogiartikkelissa pureudumme siihen, minkälaisia ovat näiden kategorioiden luonteet ja erot.
Datan analytiikka-alustat jaetaan yleensä komponentteihin eri vaiheiden mukaan. Kuvassa on esitetty tyypillinen eräajopohjainen analytiikka-alusta. Sopivilla ratkaisuilla arkkitehtuuri soveltuu myös reaaliaikaisuuteen. Alustan komponentteja voidaan jaotella joko prosessoinnin (kuvassa vihreällä) tai tallennuksen (sinisellä) näkökulmasta. Tuotteiden jana vastaa työkalun soveltumista eri vaiheisiin. Esimerkiksi Databricks on prosessointityökalu, Delta datan tallennukseen liittyvä ratkaisu ja Snowflake sisältää sekä prosessointia että tallennusta.
Prosessoinnin (vihreä) näkökulmasta analytiikka-alustan vaiheet ovat:
Toisaalta datan tallennuksen nykyinen trendi on datan tallentaminen kerroksittain sen käsittelytason perusteella. Datan tallennuksen (sininen) kerroksia ovat mm.:
Tarkka rajoittelu kerrosten välillä vaihtelee lähteittäin, mutta yksityiskohdilla ei tässä ole merkitystä. On kuitenkin tärkeä tiedostaa, että erityisesti hopea- ja kultakerroksiin data voidaan tallentaa useampaan kertaan. Esimerkiksi kultakerroksessa on tyypillisesti tarjolla useampia eri dataversioita eri käyttötarkoituksiin.
Perinteisesti analytiikka-alustat ovat ratkaisu yrityksen raportointitarpeisiin. Tällöin tarvetta on lähestytty relaatiotietokantaan perustuva tietovarasto (data warehouse) edellä. Perinteiset tietovarastoratkaisut eivät kuitenkaan soveltuneet big data -tyyppisen datan käsittelyyn mm. datamäärien, reaaliaikavaatimusten ja datan monimuotoisuuden vuoksi. Tämän vuoksi viimeisen vuosikymmenen aikana rinnalle ovat tulleet tietoallaspohjaiset (data lake) ratkaisut.
Hyvin lavean määritelmän (Wikipedia) mukaan tietoallas tarkoittaa ratkaisua, jonne data voidaan tallentaa alkuperäisessä muodossaan. Yleensä tämä tarkoittaa potentiaalisesti ääretöntä tallennuskapasiteettia mille tahansa tiedostomuodolle. Käytännössä termiin kuitenkin yleensä liitetään myös eri työkalut, joilla suuriakin määriä dataa voidaan käsitellä.
Markkinoilla on taipumusta esitellä kutakin tuotetta "kokonaisvaltaisena tietoallastyökaluna." Periaatteessa pilvitietoallasratkaisuksi riittäisikin suurikokoinen kovalevy ja virtuaalikone, jolla näppärä ohjelmoija toteuttaa datan käsittelyn. Tällainen minimalistinen määritelmä ei tietenkään ole mielekäs.
Mielekkäämpää on pohtia tietovarasto- ja tietoallaspohjaisten ratkaisujen lähtökohtien eroja.
Tietovaraston lähtökohtana on keskitetty tuote, jonka avulla data on tallennettu organisoiduksi hierarkkiseksi rakenteeksi kuten tietokannan tauluiksi. Tähän ratkaisuun on sisällytetty mm. taulujen välisiä vierasavainsuhteita, salaustietoja ja hyvinkin yksityiskohtaista käyttäjien pääsynhallintaa. Pääsy dataan hoidetaan lähtökohtaisesti kyseisen tietovarastotuotteen kautta ja tyypillisesti SQL-kielen avulla.
Tietovarastolähtöisen ratkaisun etuna on mahdollisuus rajoittaa mitä dataa käyttäjälle tarjotaan. Yleensä data onkin tarjolla melko valmiissa ja jalostetussa muodossa, erityisesti kultamuodossa. Näin voidaan taata mm. datan puhtaus ja virheettömyys. Lisäksi vaikkapa datan lähdejärjestelmän vaihtuminen ja datan muutokset voidaan ainakin jollain tasolla piilottaa datan käyttäjältä.
Rajoitteena tietovarastolähtöisissä ratkaisuissa on erityisesti riippuvuus yhdestä palveluntarjoajasta. Esimerkiksi datan hakeminen tietovarastoratkaisusta on mahdollista vain tuotteen tukemissa muodoissa ja datan hakeminen maksaa tavalla tai toisella. Tietovarastoratkaisu saattaa myös toimia resurssipullonkaulana datan käsittelylle, mutta tätä ongelmaa on viime vuosina ratkaistu merkittävästi.
Tietoallaspohjaisen ratkaisun lähtökohta on vastuun hajauttaminen. Valtavalla valikoimalla eri työkaluja kuka tahansa, pääsynhallinnan rajoissa, voi hyödyntää mitä tahansa dataa mistä tahansa datakerroksesta. Datan organisointia ja esimerkiksi taulujen suhteita on mahdollista tehdä, mutta yleensä niiden käyttöä ei ole pakotettu ja dataa voi käsitellä niiden ohi.
Tietoallaslähtöisen ratkaisun etuina on sekä laskennan että käsittelytyökalujen hajauttaminen. Data scientist voi tehdä kuva-analyysiä pronssikerroksen datalle omalta koneeltaan Python-kielellä, datainsinööri datan muokkausta Apache Spark -työkalulla hopeakerroksessa ja analyytikko hyödyntää kultakerroksen dataa raportointityökalulla. Usein myös SQL-pohjainen haku on mahdollista, mutta se on vain yksi ratkaisu monien joukossa. Laskenta on oletusarvoisesti hajautettu, eikä yhteistä pullonkaulaa käytännössä ole. Datan hyödyntäminen on riippuvainen vain pilvipalveluntarjoajan tallennusratkaisusta. Tämä riippuvuus ja sen hinta on mitätön tietovarastoratkaisuun verrattuna.
Tietoallaslähtöisen ratkaisun heikkoutena on mm. keskitetyn dataorganisoinnin puuttuminen. Jos dataan tehdään muutoksia, esimerkiksi virheiden korjaamiseksi tai datarakenteen muuttumisen vuoksi, saattaa olla äärimmäisen vaikea selvittää mihin kaikkialle muutos vaikuttaa. Datan virheettömyyttä ja rakennetta esimerkiksi pronssikerroksessa ei voida myöskään taata. Ongelmaan on myös laajenevassa määrin saatavilla metadatahallintatyökaluja, mutta kehitysprosessit on erikseen pakotettava sen käyttöön. Teknologia ei sitä yleensä vaadi. Seuraavaksi palaamme kahden aluksi mainitun työkalun, Databricksin ja Snowflaken, tarkasteluun. Karkeasti voimme jaotella, että Databricks on tietoallaslähtöinen työkalu ja Snowflake tietovarastolähtöinen.
Databricks on lähtökohtaisesti Apache Spark -pohjainen prosessointityökalu, joka tarjoaa mm. ohjelmointiympäristön ja automaattisesti erittäin skaalautuvan laskentakapasiteetin. Apache Spark taas on de facto -standardityökalu ohjelmointipohjaiseen big data -prosessointiin.
Databricksin laskutus on pääasiassa laskentakapasiteettipohjainen. Näin ollen Databricks soveltuu erityisen hyvin datan prosessointiin pilven datapalvelussa pronssidatasta hopeadataksi ja lopulta kultadataksi. Sen sijaan Databricksin vahvuus ei ole datan tarjoaminen esimerkiksi raportointityökaluille.
Databricks on kuitenkin laajentanut ominaisuuksiaan perinteisen tietovaraston suuntaan. Databricks tarjoaa nykyään valmiin SQL-kyselyrajapinnan ja kevyen visualisointikerroksen. Lisäksi Databricks tarjoaa tietokantatyyppisen taulurakenteen. Tietokantatyyppisen toiminnallisuuden keskiössä on lisäksi yrityksen Delta-tiedostomuodon hyödyntäminen.
Delta-tiedostomuoto on Databricksin tapa tuoda tietokantamaailman vahvuuksia tietoaltaisiin. Delta tuo mukaan mm. dataskeeman osittaisen versioinnin ja tietokantatyyppisen ACID-käsittelytavan. Tietoallasparadigman mukaisesti tiedostomuoto on avoin ja sitä voi hyödyntää periaatteessa millä tahansa työkalulla. Databricks-työkalu tuo toki käyttöön optimointietuja. Tämän ratkaisun pohjalle Databricks pyrkiikin lanseeraamaan uuden Data lakehouse -paradigman, joka olisi tietoaltaan (data lake) ja tietovaraston (data warehouse) hybridi.
Snowflake on lähtökohtaisesti erityisesti pilvipalveluun kehitetty skaalautuva tietovarastoratkaisu. Snowflake tallentaa datan pilven tallennustilaan omassa suljetussa tiedostomuodossaan. Data on siis saatavilla vain Snowflake-tuotteen kautta tietovarastoparadigman mukaisesti.
Snowflake muutti kuitenkin tietovarastomarkkinaa muutama vuosi sitten tarjoamalla erittäin hajautetun, osittain automaattisesti skaalautuvan laskentakapasiteetin. Lisäksi sen avulla on jossain määrin mahdollista käsitellä myös tietovaraston ulkopuolista, data-altaassa olevaa dataa. Myös Snowflake laajentaa siis ratkaisuaan perinteisen tietoallasajattelun suuntaan. Nykyään se tarjoaa mm. työkaluja reaaliaikaiseen datan tuomiseen.
On tuskin liioittelua väittää, että Snowflaken menestys muutama vuosi sitten aiheutti kriisin niin Amazonin Redshift-tietovaraston kuin Azure Data Warehouse -tietovarastonkin kehityksessä. Näiden ratkaisujen skaalautuvuus oli nimittäin huomattavasti rajoittuneempaa: Jos halusi välttää suuria jatkuvia kustannuksia, oli valittava joko pieni tallennuskapasiteetti tai hidas prosessointi. Hyvin usein sopivaa yhdistelmää oli vaikea löytää. Nämä tuotteet ovatkin viime vuosina kiihdyttäneet kehitystä Snowflake-vaikutteiden suuntaan.
Kävimme läpi tietovarastojen (data warehouse) ja tietoaltaiden (data lake) lähtökohtien eroja. Tietovarastolähtöiset ratkaisut ovat työkalujen ja käytön suhteen keskitettyjä, kun taas tietoallaslähtöiset hajautettuja. Kummankin kategorian tuotteiden ominaisuuksia kuitenkin laajennetaan jatkuvasti toistensa suuntaan. Tämän vuoksi ero on viime vuosina hämärtynyt. Kategorisoinnin hahmottaminen kuitenkin auttaa ymmärtämään tuoteperheiden vahvuuksia.
Periaatteessa pilvipalvelun analytiikka-alustan voi rakentaa kokonaisuudessaan joko Databricksin tai Snowflaken päälle. Olen törmännyt täysin toimiviin ratkaisuihin, jotka perustuvat pelkästään Databricksiin tukeutuvaan tietoallaslähtöiseen ajatteluun. Näissä tieto saatetaan tarjoilla ilman tietovarastoa eri tietokannoista. Toisaalta on olemassa menestyviä ratkaisuja, joissa koko alusta on rakennettu Snowflake-tuotteen päälle. Oman kokemukseni perusteella arvelisin, että Snowflake-pohjaiset ratkaisut ovat yleisempiä, ehkäpä johtuen Databricksin tuoreudesta.
Erilaisten vahvuuksien vuoksi vain toiseen työkaluun perustuva lähestymistapa ei kuitenkaan välttämättä ole järkevää. Tuotteiden perusfilosofiat ovat erilaiset ja lähestyvät analytiikka-alustaa eri suunnista. Saattaa olla järkevää hyödyntää tietoallaspohjaista lähestymistapaa data-alustan alkuvaiheessa ja tallentaa data tietovarastoon organisointia ja tarjoamista varten. Näin kaikki data on toisaalta käytettävissä raakamuodossa nopeisiin kokeiluihin ja uusiin käyttötarkoituksiin, mutta myös rakenteisessa muodossa tuotannolliseen raportointiin.
Tällaisella ratkaisulla hyödynnämme kummankin työkalun vahvuusalueita.
Lue myös: The Fundamentals of Cloud Data Platforms
Oletko kiinnostunut analytiikkaratkaisuista? Ota yhteyttä!
Timo is a cloud data expert (PhD) with over a decade of experience in modern data solutions. He enjoys trying out new technologies and is particularly interested in technologies of storing, organizing and querying data efficiently in cloud environments. He has worked in data roles both as a consultant and in-house.