Hoe DWAAS zijn we als we Snowflake negeren?

April 2019
Tijdens een recente Nippur Night heeft Snowflake een mooie inkijk gegeven in hun product.

Vanuit Nippur zijn we altijd geïnteresseerd in nieuwe datawarehouse oplossingen. Gezien de beloftes van Snowflake op hun site en bij events, waren we uiteraard zeer benieuwd naar de visie en mogelijkheden van Snowflake. Allereerst wilden we het vergelijken met ‘cloud-datawarehouses’ van andere leveranciers, maar we wilden ook ontdekken hoe we Snowflake goed in zouden kunnen passen in het landschap van datawarehouse-architectuur en het ontwerp van data-oplossingen.

Deze blog is gericht op de positionering van Snowflake in het grotere geheel van mogelijke oplossingen.

Wat is Snowflake?
Snowflake presenteert zich als het eerste en, vooralsnog, enige datawarehouse gebouwd voor de cloud. In tegenstelling tot vrijwel alle andere datawarehouse leveranciers, levert Snowflake geen cloudoplossing die voortborduurt op al bestaande technologie, maar juist een omgeving die specifiek ontwikkeld is voor de cloud. Een Snowflake datawarehouse kun je dan ook niet ‘on-premises’ realiseren.

Snowflake is daarmee een zogenaamde ‘datawarehouse-as-a-service’ oplossing, (ook wel DAAS of DWAAS). Ik wil een paar zaken uitlichten voor de rest van het verhaal:
  • Snowflake is een volledig relationeel ANSI SQL datawarehouse en biedt ondersteuning voor zowel gestructureerde data, zoals CSV bestanden en tabellen, als semi-gestructureerde data, waaronder JSON, Avro, Parquet, etc.
  • Snowflake heeft een unieke datawarehouse architectuur, waarbij opslag (storage), verwerking (compute) en cloud diensten (cloud services) losgekoppeld zijn en onafhankelijk van elkaar op- en afgeschaald kunnen worden.
  • Verwerking van metadata verloopt automatisch en heeft geen impact op de ‘normale’ gegevensverwerking van het datawarehouse en staat dus los van ‘compute’, omdat het onderdeel is van de cloud diensten.
  • Snowflake biedt daarmee vrijwel lineaire schaalbaarheid, omdat het geen last heeft van de koppeling tussen ‘storage’ en ‘compute’ die je wel ziet bij andere leveranciers.
  • De onderliggende database is een column store database.
  • Het is een ‘zero-management’ omgeving, alles wordt geregeld door/binnen Snowflake.
  • Een opvallende mogelijkheid is het ‘zero-copy’ klonen van databases, waarna vervolgens (data) aanpassingen, zoals inserts en deletes, kunnen worden gedaan op de kloon. Dit wordt volledig afgehandeld in de metadata en meegenomen bij het bevragen van de kloon.
  • Snowflake draait op zowel AWS als Azure.

  • Iedereen wil een cloud datawarehouse…
    Cloud en cloudification zijn buzzwords die het momenteel goed doen. Steeds meer bedrijven zijn bezig met een cloudstrategie en overwegen om hun traditionele software-oplossingen als een dienst (SAAS) af te nemen. Ook komen er - naast Snowflake als best-of-breed leverancier - steeds meer mogelijkheden voor een datawarehouse in de cloud.

    Bij de 3 grootste cloudleveranciers van het moment gaat het dan om:
  • Amazon Redshift
  • Azure SQL Data Warehouse
  • Google BigQuery

  • Dit is toevallig niet alleen alfabetische volgorde, het komt ook overeen met de grootte van het cloud marktaandeel van respectievelijk Amazon Web Services, Microsoft Azure en Google Cloud Platform. (Zie bv Datamation en Synergy Research Group) Alle deze leveranciers noemen hun oplossing een cloud datawarehouse.

    Bij zowel Amazon als Azure zijn 'storage' en 'compute' gekoppeld, in tegenstelling tot bij Snowflake. Bij het op- of afschalen worden dus altijd beide componenten meegenomen, ook in de prijs. Bovendien is de nieuwe ‘size’ niet direct na vergroten/verkleinen te gebruiken zoals bij Snowflake.

    Voor BigQuery was mij wat minder duidelijk hoe de koppeling is tussen 'storage' en 'compute'. Google zelf zegt er dit over; BigQuery is feitelijk 'the service'. Een (wat gedateerde) vergelijking tussen Snowflake en BigQuery vind je hier (let op: betreft één gebruiker die aangeeft aan naar beide gekeken te hebben). Bij deze vergelijking wordt database cloning genoemd als voordeel van Snowflake ten opzichte van BigQuery.

    Maar er zijn dus ook een aantal overeenkomsten, waaronder ontkoppeling van 'storage' en 'compute', het standaard zijn van column storage en het kunnen koppelen met semi-gestructureerde data.

    …maar welke kies je dan?
    Waarom zou je dan bijvoorbeeld Snowflake verkiezen boven één van de drie andere leveranciers? Kijkend naar het onderscheidende vermogen van Snowflake op dit moment, gaat het onder andere om deze zaken (dit is geen poging compleet te zijn):
  • Geen vendor lock-in op één cloudplatform (al draait Snowflake nog niet op GCP)
  • Onafhankelijke schaalbaarheid van storage, compute en cloud services (wel bij BigQuery)
  • Standaard column storage
  • Zero management
  • Metadata gecontroleerde data-aanpassingen
  • Zero-copy database cloning

  • Het lijkt erop dat met name metadata gecontroleerde data-aanpassingen en database cloning écht uniek zijn ten opzichte van de andere drie leveranciers. En al hebben de andere leveranciers verder niet allen een eigen variant van onderscheidende Snowflake opties, dat is waarschijnlijk vooral een kwestie van tijd. Wel is het zo dat AWS en Azure nu (nog) geen mogelijkheden bieden voor onafhankelijk schalen van 'storage' en 'compute'. Verder valt op dat Google BigQuery en Snowflake al redelijk vergelijkbare opties hebben.

    Best-of-breed versus platformoplossing?
    Feitelijk moeten we ook bij cloud oplossingen een afweging maken tussen best-of-breed en complete (platform) oplossingen, zoals we dat eerder ook al deden bij BI front-end tools en ETL tools. Als we daar iets van kunnen leren, is het dat de grote leveranciers uiteindelijk de benodigde functionaliteit in hun producten krijgen door de nichespelers over te nemen, of deze op termijn simpelweg voorbij te streven. Alleen ging dat in het verleden veel minder snel dan we nu wel zien…

    In de cloud is het heel gebruikelijk om veel regelmatiger dan ooit updates te doen. En al zijn daarmee de spelregels van de keuze voor een datawarehouse misschien wat gewijzigd, het principe om op basis van goede argumenten een keuze te maken is nog steeds hetzelfde. Alleen zou het wel dwaas zijn om Snowflake dan niet mee te nemen in zo'n keuze.