Toimivan tietovarasto- ja raportointiratkaisun avulla optimoit liiketoimintaasi tehokkaasti. Laitoimme Azure DW:n ja Snowflaken tekniset ominaisuudet tositestiin tuhansien mittauspisteiden lämpölaitosympäristössä.
Kuluneen vuoden aikana olemme toteuttaneet lämpölaitosten operatiivisen toiminnan seurantaan liittyvää tietovarasto- ja raportointiratkaisua. Tavoitteena oli saada mittaustiedot käyttäjälle näkyviin mahdollisimman ajantasaisesti ja koeponnistaa teknisiä kyvykkyyksiä.
Valintakriteereinä olivat suorituskyky, skaalattavuus, kustannukset ja soveltuvuus laajan tietovaraston alustaksi. Toteutuksessa käytettiin ympäristön automaatiojärjestelmän mittaustietoja, joita tallennetaan 10 sekunnin välein. Vaikka mukana oli vain osa laitoksista, tarkoitti se 20 000 yksittäistä mittauspistettä. Tapahtumarivejä syntyi siis noin 1,2 miljoonaa tunnissa, 28,5 miljoonaa päivässä, 11 miljardia vuodessa…
Dataa oli siis ”ihan hyvä” määrä, mutta IoT-tyyppiselle tietolähteelle ei mitenkään mahdottomasti. Lähdimmekin selvittämään, millaisella ratkaisulla näinkin isoa datamäärää voidaan hallita ja hyödyntää kestävästi.
Azure DW vs. Snowflake – tekniset ominaisuudet vertailussa
Aloitimme toteutuksella Microsoftin Azure DW:n kanssa keväällä 2017 ja jatkoimme Snowflaken parissa keväällä 2018. Vertailimme niiden teknisiä ominaisuuksia kyseisen käyttötarkoituksen näkökulmasta.
Ensimmäinenkin ratkaisu toimi periaatteessa hyvin, mutta vaihtoehdon etsimiseen johtivat palveluiden jatkuvat kustannukset sekä puutteet suorituskyvyssä. Pilviympäristöön kehitetyn Snowflaken valitsimme, koska sen kehuttiin olevan erittäin suorituskykyinen, skaalautuva ja kustannustehokas. Alla olevassa listassa vertailussa ovat eri alustojen tekniset ominaisuudet.
1. Toteutuksen komponentit
Mitä enemmän komponentteja, sitä enemmän hallittavaa ja mahdollisia lisäkustannuksia. Azure DW -ratkaisussa käytössä olivat Azure DW, Azure DB, Azure Blob Storage, Azure VM ja PowerBI. Snowflake-toteutuksessa pääsi vähän vähemmällä, kun neljä komponenttia olivat Snowflake, Azure DB, Azure Blob Storage ja PowerBI.
2. XML-tiedostojen tuki
Azure DW:stä puuttuva tuki edellytti toteuttamaan C#-ohjelman, jolla XML-tiedostot muunnetaan CSV-muotoon. Niiden lukeminen on tehokasta, mutta muunnosvaiheeseen menee aikaa, mistä muodostuu ylimääräisiä kustannuksia ja ajantasaisuus kärsii.
Snowflaken natiivi tuki mahdollistaa XML-tiedostojen suoran lataamisen kantaan Azure Blob Storagesta. Suorituskyky on kerrassaan mahtava, kun tietoja kysellään kannan omilla funktioilla. Esimerkiksi 20 000 tuntitason tiedoston muuntaminen sarakemuotoon kestää viitisen sekuntia. Ei paha!
3. Skaalattavuus
Azure DW skaalautui helposti sekä ylös että alas. Mainiosti toimivaa ylös-skaalausta hyödynsimme esim. historialatauksissa, kun toimme kuukausittaiset datat kerralla sisään. Skaalaus tosin keskeyttää palvelun käytön, ja voi kestää minuutteja tai enemmän – joskus jopa useita tunteja.
Skaalaus osoitti, että Snowflake on todella kehitetty pilviympäristöön. Kantaoperaatiot ajetaan ns. virtuaalivarastojen (Virtual Warehouse) kautta, joita voi skaalata portaittain ylös ja alas. Palvelu ei keskeydy, vaan seuraava operaatio ajetaan heti perään. Lisäksi samaan ympäristöön voi perustaa useita varastoja, mikä tuo huomattavaa joustoa alustan skaalaukseen ja optimointiin.
4. Kehittäminen ja kannan hallinta
Azure DW:n kehittämisen ja hallinnan välineet ovat tuttuja. Kehittäminen tapahtuu samantyyppisesti kuin on-premise SQL Server -ympäristössä, mutta kannan hallintaan liittyy valitettavan paljon manuaalista työtä (esim. MPP Distribution key -määrittäminen, indeksien ja statistiikkojen suunnittelu). Levytilan hallinta tapahtuu sentään automaattisesti.
Snowflakessa kehittäminen onnistuu omassa web-käyttöliittymässä, eikä kannan hallintaa juurikaan tarvitse tehdä automatiikan ansiosta. Suurien taulujen kohdalla pitää ymmärtää, miten Snowflaken automatiikka toimii ja jossain tapauksessa määrittää klusterointi manuaalisesti tai järjestää data ennen tauluun kirjoitusta. Ei indeksejä, ei statistiikkoja, ei levytilan hallintaa – voit keskittyä olennaiseen!
5. Suorituskyky minimiasetuksilla
Kumpikin alusta pystyy prosessoimaan valtavan määrän dataa, kun skaalataan riittävästi ja tietorakenteet ovat soveltuvia. Tässä toteutuksessa mahdollisimman kustannustehokkaan ratkaisun kehittäminen edellytti kuitenkin minimiasetusten käyttämistä.
Azure DW:n minimitaso ei tarjoa kummoista suorituskykyä. Ajastetut lataukset päätyvät usein ”out of memory” -virheeseen, kun tarjolle tuleekin useamman tunnin lähdedata. Historiadataa ladattaessa oli käytännössä pakko skaalata palvelua reilusti ylös ja tehdä SQL Server -temppuja.
Snowflaken minimitaso on hämmentävän tehokas. Historiadata ladattiin kuukausittaisissa erissä suoraan kohdetauluun. Tyhjään tauluun ladattaessa nopeus oli yli 2 miljoonaa riviä sekunnissa, täyteen tauluun ladattaessa nopeus hiipui hieman, mutta pysyi kuitenkin yli 200 000 rivissä per sekunti.
6. Ajantasainen PowerBI-raportointi
Ratkaisussa luotiin Power BI -raporttinäkymiä operatiivisen toiminnan seurantaan. Ajantasaisuuden varmistamiseksi tiedot piti lukea suoraan kannasta.
Azure DW:ssa kyselyt vievät aikaa – pienetkin kestävät useita sekunteja, isommat minuutteja. Jouduimme toteuttamaan erillisen nopeamman Data Mart -kannan raportoinnin alustaksi, mistä seurasi lisää kustannuksia ja heikensi tiedon ajantasaisuutta selvästi.
Snowflakessa pienet kyselyt toimivat nopeasti ja isommatkin, jos hakutekijät sopivat tietorakenteeseen oikealla tavalla. Tarvittaessa ratkaisu mahdollistaa Data Mart -kannan toteutuksen samalle alustalle, jolloin tietojen päivittäminen on nopeaa, eikä ajantasaisuus kärsi.
7. Käyttökustannukset
Azure DW:n hinta määräytyy tunneittain skaalaustason mukaan. Tasoa ilmaistaan DWU-mittayksiköllä (Data Warehouse Unit), jonka alhaisin taso tarkoittaa n. 855 euron kuluja kuukaudessa. Palvelun voi toki laittaa pause-tilaan, jolloin kustannuksia ei kerry. Emme voineet hyödyntää ominaisuutta muuten kuin kehitysympäristössä, koska ratkaisussamme lataukset tehtiin kerran tunnissa, . Kuukausikustannukset nousivatkin lopulta noin 1300 euroon.
Snowflakessa kustannukset perustuvat virtuaalivarastojen tasoon ja käyttöön. Tätä mitataan sekunneittain. Mahdollisuus automatisoida käynnistyminen ja pysähtyminen helpottaa ylläpitoa ja optimoi kustannuksia. Pienin XS-tason virtuaalivarasto kuluttaa noin 720 credittiä kuukaudessa, mikä tarkoittaisi Enterprise-tasolla Frankfurtin hinnoilla noin 2448 euroa kuukaudessa. Ratkaisussamme tarvittiin kuitenkin keskimäärin vain 12,5 prosenttia yhden XS-varaston ajasta, joten kuukausikustannuksia kertyi vain noin 306 euroa.
Ja voittaja on…
Tässä tapauksessa Snowflake soveltui selvästi parhaiten ratkaisun alustaksi. Pilviympäristön edut tulivat hienosti esille. Pystyimme tarjoamaan tiedot eteenpäin aiempaa nopeammin ja onnistuimme pienentämään kustannuksia merkittävästi. Lisäksi alustaa voi laajentaa joustavasti. Suosittelen kokeilemaan Snowflaken kokeiltavien palveluiden listalle.
Tietovarasto- ja raportointiratkaisun ominaisuuksia kannattaa tietysti aina selvittää omien tarpeiden mukaan. Erityisen tärkeää on testata palvelun soveltuvuutta omassa ympäristössä omilla haasteilla. Näin saat datasi hallintaan ja hyötykäyttöön.