Vad är Snowflake?

27 september 2017

Intro till ett datalager i molnet – som det borde vara

I rollen som Head of Future Technologies på Sparks får jag möjlighet att träffa och utvärdera många olika leverantörer som försöker lösa våra kunders problem. Då och då hittar vi guldkorn som verkligen gör jobbet. Jag har under en tid ägnat mig åt att leda en utvärdering för att hitta den bästa molnplattformen för data warehousing. Mål(n)et var att hitta en plattform som våra kunder kan växa med på ett enkelt, skalbart och kostnadseffektivt sätt.

Nu har vi hittat den och vill inget hellre än att visa varför. Hej Snowflake!

Snowflake är ett data warehouse byggt från grunden för att dra nytta av alla fördelar med molnet. Där ”the secret sauce” är att det i arkitekturen är en tydlig uppdelning mellan lagring och beräkning vilket gör att dessa delar kan växa och skala oberoende av varandra, och eftersom vi är i molnet finns nästan ingen gräns för hur mycket. Det gör att Snowflake är en produkt som kan växa tillsammans med dina data- och analysbehov.

I den här bloggposten kommer jag gå igenom hur du snabbt kan komma igång med Snowflake för att se vad det handlar om och varför vi är så exalterade. Ok – det är en databas, så lite warehouse-nördig behöver du vara för att bli lika imponerad som mig och mina kollegor. Men det här är bra på så många nivåer. Jag visar hur du kan hantera de olika delarna i produkten. Till exempel tittar vi på hur enkelt det är öka på prestandan för den där analysfrågan som bara måste bli klar.

I kommande bloggposter kommer jag gå in på fler delar där jag tycker Snowflake briljerar och löser utmaningar på ett mycket enklare och bättre sätt än andra lösningar jag jobbat med. Håll utkik efter inlägget om hur man kombinerar strukturerad och semi-strukturerad data som t ex JSON. Det är grymt! Sen kommer vi såklart visa hur du använder Snowflake med våra favoritverktyg för analys och ETL.

Komma igång

Lika bra att bli hands-on på en gång så du får känna på grejorna.

Att komma igång med Snowflake är enkelt. Första steget är att gå in på https://www.snowflake.net/free-trial/ och följa registreringsstegen, här rekommenderar jag att välja Frankfurt som region där ditt data kommer att lagras och hanteras samt Enterprise som version, mer om skillnaderna i kommande inlägg.

När du sedan fått ett konfirmationsmail om att ditt konto är skapat är det bara köra igång. Klicka på länken i mailet och logga in med dina kontouppgifter. Det kommer förladdat med 400 dollar vilket räcker långt för att utvärdera produkten.

När man loggar på sitt Snowflake-konto möts man av nedan gränssnitt och vi kommer nu gå in på de olika delarna Databases, Warehouses, Worksheet, History och Help.

Help

Något jag gillar med Snowflake är den utförliga och tydliga dokumentationen med allt ifrån sql-syntax-hjälp till videos som snabbt hjälper dig igång. En bra startpunkt är därför menyn Help där du hittar länkar för att komma åt dokumentation samt nedladdningar av drivrutiner för att komma åt Snowflake med just ditt favoritanalysverktyg, t.ex. Tableau.

Databases

I denna meny hanterar du den första delen av Snowflake, lagringen. Här kan du se och hantera de databaser du skapat eller har fått åtkomst till. En databas är i Snowflake en logisk gruppering av olika objekt så som tabeller och vyer i scheman.

Eftersom Snowflake fungerar lika bra i den ”klassiska” data-warehouse världen som med big-data och moln kan en tabell likväl vara en ”vanlig” tabell som en inkapsling mot något semi-strukturerat format så som t.ex. JSON, Avro eller XML. Det viktiga är att allt fungerar lika enkelt för slutanvändaren och åtkomsten sker med standard SQL.

Från början kommer Snowflake laddad med demodata i databasen SNOWFLAKE_SAMPLE_DATA. Genom att klicka på den kommer man till vyn där man kan hantera tabeller och andra objekt som ses i bilden nedan. Du kan också se antalet rader och storlek på dina tabeller. Det finns även här enklare funktioner för att ladda upp data, men mer om det i kommande bloggposter.

Ett annat område vi också kommer återkomma till framöver är något som vi är riktigt exalterade över i Snowflake. Det finns nämligen en extremt kraftfull historik- och lagringshantering. Allt historiseras och hanteras på ett helt nytt sätt under skalet. Det möjliggör en rad funktioner som att det t.ex. går att ställa frågor mot en tabell utifrån ett historiskt datum, och se hur tabellen såg ut just vid det tillfället. Eller nya härliga kommandon så som undrop database. Det finns även möjligheter att skapa oberoende kopior av data, för t.ex. testmiljöer, utan att det tar upp någon mer lagringsplats.

Warehouses

Under menyn Warehouses hanteras den beräkningskraft som ska användas med de databaser som finns. Ett warehouse är i grund och botten ett kluster av servrar och används för allt som behöver datorkraft, så som att svara på sql frågor, ladda data och hantering av databaser.

Det är med warehouses den verkliga kraften i Snowflake och molnet kommer till sin rätt. Här har man full flexibilitet att skapa ett eller flera warehouse av olika storlek som alla kan hantera samma data men inte behöver tävla om resurser. Dessutom kostar bara ett warehouse under tiden det används. T.ex. behöver kanske ETL-processen så mycket kraft som möjligt under en timme på natten medan analytiker behöver lite mindre kraft men under hela arbetsdagen. Du får alltså full flexibilitet och allt styrs med en enkel knapptryckning.

I bilden nedan syns sidan där de warehouse som man skapat eller har access till visas. Här går det enkelt att se om de är aktiva för stunden och vilken storlek de har, dvs vilken beräkningskraft. Beräkningskraften mäts i ”t-shirt storlekar” och sträcker sig från X-small till 4X-large.

Markerar jag ett warehouse och klickar configure tas jag till nedan bild där jag enkelt kan styra storleken samt hur det ska hantera ifall det inte används. I exemplet nedan stängs warehouset av efter 1 timmes inaktivitet och kostar då ingenting. På samma sätt går det att ställa in att det automatiskt ska starta ifall någon börjar använda det. T.ex. genom att koppla upp Tableau och köra en dashboard.

Klickar jag på size får jag upp en meny där jag enkelt kan byta storleken, något som vi lite senare kommer använda när en fråga är för långsam.

Worksheet

Worksheet är en enkel webb-klient för att ställa frågor och hantera dina databaser där språket är SQL. Här väljer du enkelt vilken kombination av databas och warehouse du vill arbeta med och sedan är det bara börja analysera.

Du får även här upp estimat på hur mycket data din fråga går igenom och hur lång tid den tar. I exemplet nedan ser man en fråga som ställts mot det testdataset som ingår i Snowflake. I detta fall har vi använt oss av TPCH_SF1000 vilket är det största datasetet. För att testa har vi ställt en fråga för att räkna ut total moms per land. Frågan som går mot den största tabellen på ca 8 miljarder rader och joinar med tre andra tabeller av varierande storlek. En hyfsat stor fråga alltså.

Till en början använder vi oss av ett X-Small warehouse, men efter ca 4 minuter får vi ge upp då den inte riktigt levererar den fart vi vill ha utifrån de datavolymer vi arbetar mot. Som tidigare visats kan vi då enkelt gå in och ändra storleken på warehouset. Om vi t.ex. ändrar till storlek Large och ställer om frågan får vi ett svar redan efter 1,47 minuter. Men räcker inte det heller till, t.ex. om denna fråga ska ligga till grund för något self-service verktyg, kan man öka på ytterligare. Som ses i sista resultatet nedan har vi gått upp till 2X-large och får då ett svar redan efter 40 sekunder. Det är sedan lika lätt att ställa ned sitt warehouse till en mindre nivå när man är klar. Ett arbetssätt som varit helt omöjligt om man t.ex. arbetat on-premise med ett givet antal fysiska servrar.

History

Denna sista flik är en log över allt som händer i Snowflake. Här kan de som har access se en full audit av vad alla användare gjort. Allt ifrån de frågor som ställts till förändringar av configuration så som storlek på warehouse kan ses. I exemplet nedan ser vi tidigare exempel där testfrågorna ställts och storleken på warehouse ändrats.

Hoppas att denna bloggpost visat hur pass enkelt det är att komma igång och använda Snowflake.

Här kan du läsa mer om styrkorna med Snowflake.

Har du några frågor, funderingar eller vill utvärdera och diskutera hur Snowflake kan förenkla och spara kostnader för dig. Tveka inte att höra av dig till någon av oss på Sparks så hjälper vi dig.