Mitä tietokantoihin tulee, olen taustaltani entinen Larry Ellisonin paras kaveri. Osaan ulkoa tablespace -kasvatuksen komentosarjat ja olen säätänyt aivan liian monta kertaa SGA- ja PGA -arvoja lisätehojen toivossa. Tiedän, että Redmondin tuotteissa ensimmäisenä säädettävä arvo on max server memory, jollei myöhemmin halua ihmetellä sitä, mihin kaikki vapaana oleva RAM-muisti hävisi. Varmistusten ylläpitämisestä ja RMANin sielunelämästä en välittäisi puhua. Snowflake on Data Warehouse -ratkaisu, joka on lumonnut minut jo nyt omalla yksinkertaisuudellaan. Kerron nyt miksi.
Näiden osalle ihmisistä kryptisten asioiden osaaminen ei ole pilvitarjoajien myötä kuitenkaan menettänyt arvoaan. Usein mainostetaan pilven skaalautuvuutta ja miten elastisuus vähentää ylläpidettävään työhön kuluvaa aikaa. Totuus kuitenkin on, että oli kyseessä tietovarasto- tai operaationaalinen tietokanta, joudut ennen pitkää tutustumaan valitsemasi pilvipalvelutarjoajan tietokannan parametrointiin saavuttaaksesi optimaalisen suorituskyvyn tai vain lisäämään joko CPU -tai levytilakapasiteettia.
Vaatimukset pilvelle ja siten myös pilvitietokannoille ovat kasvaneet
Kallion Harrin mainitseman perinteisten tietokantojen ylläpitokustannushaasteiden ja kasvaneen datamäärän myötä vaatimukset pilvelle – ja siten myös pilvitietokannoille – ovat kasvaneet. Erillistä tietokannan ylläpitäjää ei tulisi tarvita ja tietokannan tulisi olla entistä automaattisempi. Samaan aikaan kuitenkin pitäisi tarjota mahdollisuus joustavasti tallentaa historiadataa ja reagoida erilaisiin kapasiteettimuutoksiin entistä nopeammin.
Olemassa olevien kolmen suuren pilvitoimijan osalta Amazon täydensi jo palvelutarjontaansa julkaisemalla Redshift Spectrum -palvelun, joka ratkaisee kasvavien datamäärien aiheuttamat ongelmat mahdollisuudella kysellä dataa suoraan heidän S3 -palvelustaan.
Spectrum on loistava lisä Redshiftin kylkeen, mutta vielä pidemmälle S3 -palvelun hyödyntämisessä on mennyt täysin uusi toimija. Entisten Oracle, Microsoft ja Vectorwise -työntekijöiden perustama yritys Snowflake tarjoaa skaalautuvaa tietovarastoa palveluna pilvestä. Myyntivalttina heillä on tietokannan levykapasiteetin ja CPU -suorituskyvyn erottaminen kustannustehokkaaseen hintaan. Maksat vain siitä kapasiteetista ja suorituskyvystä mitä käytät.
”Valehtelevat” – ajattelin ensimmäiseksi, kun tämän kuulin
Käytettyäni Snowflaken palvelua nyt parissa projektissa, voin kuitenkin sanoa myyntipuheiden pitävän paikkansa. Voin oikeasti luoda vain kannan, tarvittavat käyttäjät, schemat ja aloittaa tämän jälkeen kannan populoinnin datalla. Kapasiteetti ei lopu kesken. Totta puhuen, minulta ei koskaan edes kysytä paljon kapasiteettia tarvitsen. Enkä oikeastaan välitä, koska se on halpaa. Aivan liian halpaa.
Mitä suorituskykyyn tulee, niin se tapahtuu luomalla virtuaalinen tietovarasto haluamallani koolla. Yksinkertaisuuden nimissä nämäkin tulevat tutuissa t-paitakooissa. Halutessani voin tietenkin vaihtaa milloin vain lennossa t-paidan kokoa isompaa tai pienempään.
Ennen kyselyn suorittamista virtuaalinen tietovarasto voi myös olla nukkumistilassa, joten se käynnistetään vain silloin kun sitä tarvitaan. Kyselytehtävien loppuessa virtuaalinen tietovarasto sammuu, jos olet sen näin määrittänyt. Kustannukset määräytyvät käytettyjen virtuaalisten tietovarastojen päälläoloajasta ja käytetystä levykapasiteetista.
Miten Snowflake oikeasti toimii?
Vastaan: ”Yksinkertaista, rakas Watson”. Data säilytetään mikropartitioituna, kompressoituna ja salatussa muodossa AWS:n S3 -palvelussa ja siihen otetaan yhteys virtuaalisten tietovarastojen kautta. Virtuaaliset tietovarastot hakevat datan itselleen, käyvät datan läpi ja palauttavat tulosjoukon käyttäjälle. Virtuaalisten tietovarastojen tekniikka on Snowflaken IPR:ää, mutta käytännössä ne ovat isoilla muistimäärillä varustettuja tilattomia EC2 -instansseja Auto Scaling -groupissa mahdollistaen ison datamassan sijoittamisen välimuistiin prosessointia varten.
Snowflake käytännössä hyödyntää AWS:n parhaita käytäntöjä ja on luonut näiden päälle hyvin kustannustehokkaan ja skaalautuvan palvelun. S3 -palvelu on halpa, stabiili ja skaalautuva suurien datamäärien tallentamiseen ja tilattomien EC2 -instanssien käynnistäminen tarpeen mukaan mahdollistaa ”maksat vain mitä käytät” -mallin.
Jaetun datan arkkitehtuuri mahdollistaa samalla myös erilaisten tarpeiden tyydyttämisen virtuaalisia tietovarastoja hyödyntämällä. Data Science -kaverisi tarvitsee isojen datamassojen käsittelyyn oman, tehokkaan tietovaraston mutta pelkäät että hän käyttää kaiken kapasiteetin ETL -ajoilta? Ei hätää, sillä Snowflakessa voi luoda erillisiä virtuaalisia tietovarastoja eri kokoluokilla kuitenkin niin, että kaikki virtuaaliset tietovarastot lukevat samaa datasettiä toisiaan häiritsemättä ja noudattavat kuitenkin ACID -periaatetta.
Lisäksi, täysin huomaamatta tässä on myös ratkaisu tietovaraston käytöstä aiheutuvien kustannusten jakamiseen. Snowflaken omassa UI:ssa on mahdollisuus eritellä käytetyt krediitit per virtuaalinen tietovarasto ja näin ollen jakaa lopullinen krediittikustannus suoraan tekemättä lisälaskentaa.
Krediittien perusyksikköhinta määräytyy käytetyn Snowflake-version mukaan, mikä lähtee perus Standard-versiosta, nousten Enterprise Edition for Sensitive Data -versioon asti.
Merkittävimpinä eroina näistä voidaan mainita Premiumista saatava 24/7-tuki, EE -versioiden mukaan tuomat AD-tuki ja mahdollisuus salata data joko Snowflaken ylläpitämillä tai omilla avaimilla. Käytännössä perusominaisuuksia ei ole kuitenkaan rajoitettu versioiden mukaan, ainoastaan kyselyn hinta nousee. Tämä mahdollistaa myös sen että kustannuksia voidaan rajoittaa hankkimalla erillinen, karsitumpi versio kehitystä varten halvemmalla krediittihinnalla ja käyttää 24/7 -tuen takana olevaa versiota tuotantokäyttöä varten.
Snowflake lumoaa jo omalla yksinkertaisuudellaan
Tähän päälle Snowflake täyttää vielä korkean käyttävyyden kriteerit ja tarjoaa mahdollisuuden tehdä yksinkertaisella tavalla kyselyjä vanhaan dataan. Kehityskantojen luonti onnistuu sekunneissa levyjärjestelmä-maailmasta tutulla snapshot -teknologialla. Saat hetkessä testikannan käyttöösi ilman tunteja kestävää uuden ympäristön luontiharjoituksia. Laskutus on sekunti-pohjainen ja JSON -tuki on toimiva. Lista Snowflaken ominaisuuksia aivan liian pitkä tässä läpikäytäväksi, jonka takia suosittelenkin tutustumaan tähän postaukseen.
Onko se tuotantovalmista kamaa?
On. Yhdysvaltain kahdeksanneksi suurin pankki siirtyi juuri käyttämään Snowflakea ja päätti samalla sijoittaa rahaa yritykseen huomattuaan tuotteen potentiaalin. Tämän lisäksi useat eri toimittajat, lähtien Microsoftin PowerBI:stä ja Tableausta ovat rakentaneet tuen Snowflakelle.
Myös me Solitalla uskomme palveluun ja olemmekin luoneet Snowflake-tuen omaan Agile Data Engine -ohjelmistoomme. Kehitysversiosta valmiiseen tuotantomalliin kehittäminen tapahtuu Agile Data Enginellä entistä nopeammin, kun kehittäjä voi vaan luoda kannan ja ruveta luomaan tietomallia latauksineen ilman levykapasiteetti- tai suorituskykymurheita. Käytännössä Agile Data Enginen käyttöönotosta pääsee halutessaan muutamassa minuutissa jo julkaisemaan ensimmäisiä stage-tauluja ja niistä tehtäviä latauksia.
Mika Heino työskentelee Solitalla Data-tiimissä. DevOps –kulttuurin nimissä hän on alati innokas etsimään teknologisia ratkaisuja jotka helpottavat ihmisten elämää ja vapauttavat heidät miettimään isompia kokonaisuuksia. Esittelyn loppu-osaa kun ei voida automatisoida, käyttääkin hän sen sijaan loppukappaleen haastaakseen Ilkka Suomaan kertomaan blogimuodossa millainen on myyntimiehen viikko Solitalla.