Snowflake – das cloud-basierte Data Warehouse – eine Einführung

IT-Logix AG ist seit Ende September 2019 Snowflake-Partner. Ich, Dominik Leu, Senior Consultant Business Intelligence, befasse mich seitens IT-Logix vertieft mit dem Thema und habe verschiedene Tests mit Snowflake umgesetzt, eine volle Schulungswoche mit Snowflake in den Niederlanden absolviert sowie Demonstrationsmaterial und interne Best-Practices erarbeitet. Ich versuche an dieser Stelle, einen kurzen Überblick zu geben,

  • was Snowflake eigentlich überhaupt ist
  • was die Stärken von Snowflake sind
  • wie Snowflake aufgebaut ist
  • wie mein erstes, persönliches Fazit bezüglich der Leistungsversprechen von Snowflake ausschaut (nach Schulung und Sammeln von Erfahrungen)

Was ist Snowflake eigentlich überhaupt?

«Snowflake? Das ist doch ein Modellierungsart in einem Data Warehouse!». Wenn BI-Interessierte oder BI-Professionals an das Wort Snowflake denken, dann dürfte dieser Gedanke im Vordergrund stehen. Aber dieser Artikel beschreibt nicht das erwähnte Modellierungsart – das wäre ja fast schon zu einfach. Wir reden hier über die Firma und das Produkt «Snowflake», eine sehr spannende cloud-basierte Data Warehouse-Lösung. Snowflake ist eine echte Alternative für klassische inhouse Data Warehouses auf der eigenen Hardware.

Snowflake’s Cloud Data Warehouse Lösung ist eine Software-as-a-Service (SaaS) Lösung. Man muss keine Hardware (virtuell oder physisch) sowie Software auswählen, installieren, konfigurieren oder managen. Die Wartung, das Management der Hard- und Software sowie die Optimierungen werden direkt von Snowflake übernommen. Die Optimierungen zum Beispiel der Queryabfragen werden von einer durchdachten Engine unterstützt. Man kann sich also als Snowflake-Kunde teures hochqualifiziertes Personal für dieses Thema sparen.

Das Prinzip von Snowflake ist relativ simpel: Daten nach Snowflake laden und direkt mit der Analyse beginnen. Diese Analysen können direkt in Snowflake erfolgen oder aber mit einem externen BI Tool wie z.B. Power BI angegangen werden.

Der Anspruch von Snowflake: das Data Warehouse für die Cloud.

Stärken von Snowflake

Gemäss Snowflake zeichnet sich ihr cloud-basiertes Data Warehouse durch folgende Stärken aus.

  • Man bezahlt nur das, was man effektiv nutzt – Ein gutes «old-school» Data Warehouse «on- premise» kostet den Kunden immer noch Geld, auch wenn man es gerade nicht aktiv nutzt. Beispiele dafür sind die Wartungskosten oder Überwachung der Prozesse.
  • Snowflake wurde für hohe Leistungsanforderungen konzipiert. Die patentierte Architektur trennt Rechenkapazitäten von Speicherkapazitäten. Man kann die Komponenten jederzeit anpassen, damit man die aktuell gewünschte Leistung bekommt. Die Daten können mit einer hohen Geschwindigkeit nach Snowflake geladen werden und gleichzeitig Analysen durchgeführt werden.
  • Alle ihre Daten gemeinsam verfügbar – Die Lösung kann mit strukturierten und semi-strukturierte Daten wie z.B. XML oder JSON umgehen. Diese können im gleichen Warehouse ausgewertet werden.
  • Es handelt sich um ein komplettes SQL Data Warehouse – Man ist in der Lage auch semi-strukturierte Daten mit SQL abzufragen.
  • Concurrency als grosse Stärke – mehrere User oder Gruppen können gleichzeitig auf Daten zugreifen ohne die Leistung der Abfragen zu reduzieren.
  • Daten können mit Dritten geteilt werden – Warehouse Daten können intern oder sogar mit Dritten, z.B. einem Lieferanten, geteilt werden. Die Kosten bei Dritten fallen dann auch bei den Dritten an.
  • Time-Travel als innovatives Feature – Stellen Sie sich vor, dass Sie als Datenbankadministrator versehentlich gerade eine wichtige Tabelle oder sogar eine ganze Datenbank gelöscht haben. In der heutigen Praxis müssten Sie vermutlich aufwendig mit Backups und Wiederherstellungen arbeiten. Snowflake erlaubt es dem Benutzer, umgehend in die «Vergangenheit» zurückzugehen und einen alten Datenbestand zu holen. So kann man seinen Fehler rückgängig machen. Snowflake kennt an dieser Stelle auch den Befehl undrop.

Meine bisherigen Erfahrungen und Tests lassen den Rückschluss zu, dass die oben unter «Stärken» genannten Punkte auch tatsächlich so zutreffen. In einem späteren Blog möchte ich dann beleuchten, ob sich diese Stärken auch in der Projekt-Praxis wirklich bewähren.

Wie ist die Snowflake-Lösung aufgebaut

Ich stelle die Architektur von Snowflake kurz vor, damit die Funktionsweise von Snowflake besser verständlich wird.

In der folgenden Grafik ist eine Beispielsystemlandschaft abgebildet, wie diese mit Snowflake aussehen kann: Snowflake spricht hier von einer «modernen Datenlandschaft». In diesem Beispiel arbeitet Snowflake im Zusammenspiel mit der DataWarehouse Automation Lösung von WhereScape (Blog über Wherescape). Man kann Daten (via UI, Azure General Storage oder kontinuierliche Daten via «Snowpipe» (mehr zu Snowpipes)) aber auch direkt nach Snowflake laden und braucht keinen Umweg via WhereScape oder anderen ETL Lösungen.

Snowflake Architektur

Die nachfolgende Grafik zeigt das Innenleben von Snowflake in detaillierterer Form. Viele herkömmliche Architekturen verknüpfen Speicher und Rechenleistung miteinander. Snowflake trennt jedoch diese voneinander und ermöglicht dadurch ein automatisches, schnelles und einfaches Scaling des Speichers, Analysen oder Ressourcen für jeden Job.

Die bewusste Trennung von Speicher, Rechenleistung und Services sind unten kurz erläutert:

Database Storage Layer: Der Speicherplatz der Datenbanken ist physisch von der Rechenleistung getrennt. Maximale Skalierbarkeit, Anpassungsfähigkeit und Kapazitätsleistung für das Data Warehousing und Analytics sind so sichergestellt, da der Database Storage Layer so entwickelt wurde, dass er komplett unabhängig skalierbar von der Rechenleistung ist. Das führt dazu, dass Snowflake einzigartig Fähigkeiten hat wie die zum Beispiel Daten zu laden oder zu entladen ohne die laufenden Abfragen oder andere Workloads zu behindern.

Query Processing Layer: Die Rechenleistung kann je nach Szenario entsprechend skaliert werden. Die Daten stehen allen Warehouses direkt zur Verfügung. Ein Warehouse für einfache Abfragen kann klein (z.B. 1 Prozessor) skaliert werden. Auf der anderen Seite kann ein Warehouse z.B. für einen Data Scientist mit mehr Leistung (z.B. 16 Prozessoren) versehen werden.

Cloud Service Layer: Auf der obersten Schicht sind die Cloud-Services angelegt. Snowflake bietet unterschiedliche Komponenten wie Security, Optimizer von SQL Code, einen Transaction Manager, welcher sogar Transaktionen von BI Tools anzeigt sowie ein Authentifizierungs- bzw. Zugriffs-Management-System. Als interessantes Beispiel bezüglich des Cloud Service Layers möchte ich den Optimizer hervorheben. Beim Laden von Daten legt der Optimizer Datenprofile an und nutzt diese für die Ausführung und Optimierung von Queries. Zum Beispiel werden für jede Tabelle immer automatisch die Min- und Max-Werte der Daten abgespeichert. Wenn ein Analyst jetzt einen Max-Wert benötigt, dann braucht die Abfrage weniger Zeit und kostet auch keine Credits. Dies innerhalb von Snowflake als auch z.B. in Power BI. Die Services sind optimiert für die Verwendung in einer Cloud-Service Umgebung.

Ein genauerer Blick auf: Analyse von semi-strukturierten Daten

Eine der grossen Stärken von Snowflake ist die Analyse von semi-strukturierten Daten. Man kann semi-strukturierte Daten direkt und unverändert nach Snowflake laden.

Klassische Warehouses wurden nicht für semi-strukturierten Daten ausgelegt. In Snowflake kann man sie direkt neben strukturierten Daten lagern. Ein weiterer grosser Vorteil ist, dass man hier die semi-strukturierten Daten direkt mit SQL auswerten kann. Es braucht keine speziellen Zusätze oder Fähigkeiten: SQL-Kenntnisse und ein wenig Grundverständnis für die semi-strukturierten Daten reichen komplett aus.

Zudem kann man die Daten sehr einfach mit den strukturierten Daten kombinieren. Dies ermöglicht eine einfache Auswertung unter Einbezug beider Datenwelten.

Wie funktioniert das Bezahlmodell von Snowflake?

Es gibt zwei bezahl-Wege um den Snowflake Dienst zu nutzen.

  • Man kann den Dienst nach dem «On Demand» Prinzip bezahlen.
  • Die Alternative nennt sich «pre-paid Capacity».

Die beiden Varianten unterscheiden sich einerseits bei den Storage Kosten.

  • On-Demand zahlt man pro Terabyte 40 US Dollar pro Monat.
  • Bei der Variante «pre-paid Capacity» bezahlt man zum Beispiel in der Azure Zone West Europa 23 Dollar pro Terabyte. Die Preise unterscheiden sich nach Zone. Der Storage kann in der Architektur auf der Stufe Database Storage angesiedelt werden.

Das Ausführen von Queries wird über sogenannte Credits verrechnet. Die Preise gehen von 2.5 Dollar bis zu 5 Dollar pro Credit. Auch hier gibt es Unterschiede bezüglich der Varianten «pre-paid Capacity» und On-Demand.

  • In der «Pre-paid Capacity» wird der Preis der Credits zum Zeitpunkt der Bestellung berechnet. Dieser ist abhängig von der Grösse des gesamten Kaufs. Je grösser das gekaufte Credit-Volumen, desto billiger werden die einzelnen Credits. Verbindliche Preis-Aussagen kann nur ein Verkäufer von Snowflake geben.

In einem späteren Blogeintrag werde ich berichten, welche Transaktionen in Snowflake wieviele Credits kosten und welche gratis sind. Zudem werd ich auch weitere interessante Fakten und Zusammenhänge zu Credits aufzeigen.

Snowflake und Microsoft

Microsoft Power BI Desktop ist ohne grossen zusätzlichen Aufwand in der Lage, Daten aus einen Snowflake Data Warehouse auszuwerten. Microsoft Power BI Desktop stellt bereits einen Connector zur Snowflake Datenbank zur Verfügung.

Anschliessend kann man die Daten anziehen und Auswertungen sowie Analysen ausführen. In den Tests war die Performance gut, jedoch hat die Lösung einen Nachteil. Fast jeder Refresh / jede Abfrage gegen Snowflake verursacht compute und das kostet Credits. Es fehlen mir aktuell jedoch noch Praxiserfahrungen, wie viele Kosten daraus entstehen.

Fazit

Snowflake ist eine spannende Lösung mit einem sehr grossen Potenzial. Die Lösung ist seit 2015 auf dem Markt und damit noch relativ jung. Aktuell gibt es 12 neue Funktionen in einem Vorschaumodus. Dies bedeutet, dass die Lösung hier in einer stetigen Weiterentwicklung ist. Die Unabhängigkeit von einem eigenen Rechencenter machen die Lösung sehr attraktiv. Man muss wie oben bereits erwähnt keine Hardware kaufen bzw. zur Verfügung stellen. Zudem kann man so die Implementationszeit eines Data Warehouse Projektes verkürzen. Folgende weitere Fazits können nach der ersten Phase auch bereits schon gemacht werden.

  • Die Performance während der Arbeit mit den Testdaten von Snowflake war unglaublich beeindruckend. Man kann hier die kritische Frage stellen, ob diese Performance auch in der Projekt-Praxis erreicht wird. Wir sind hier aber vorsichtig optimistisch. Abschliessend beurteilen kann man das erst nach einschlägigen Praxiserfahrungen.
  • Die Administration bzw. Aufbau der Lösung könnten komplett unabhängig von einem SQL Entwickler geschehen. Snowflake bietet diverse Wizards, welche zum Beispiel einem User erlauben Daten hochzuladen oder neue Personen für Snowflake zu berechtigen. Dies ermöglicht auch technisch nicht so versierten Personen, den Einstieg in die Lösung zu finden. Das volle Potenzial der Lösung kommt aber erst mit SQL zum Tragen.
  • Die Datenvisualisierung mit Microsoft Power BI kann nur mittels einem Import Modus bzw. Direct Query geschehen. Wenn man von einer Big Data Lösung spricht, dann scheint die maximal-Kapazität von 1 Million Zeilen des Resultsets seitens Power BI (bei einer Power BI Pro Lizenz) für eine Direct Query Abfrage relativ knapp bemessen. Auch wenn man grosse Datenmengen via Import Modus ins Modell importiert, kann die Kapazitätsgrenze von 1 GB sehr schnell erreicht werden. In einem Proof of Concept waren wir aber bereits in der Lage, Microsoft Azure Analysis Services als Schicht zwischen Snowflake und Power BI zu implementieren. Dies ergibt neue Möglichkeiten.
  • Die Dokumentation besagt, dass man Snowflake selber als ETL Werkzeug einsetzen kann. In einem POC haben wir WheresScape und Snowflake verbunden. Dies war mit einem vernünftigen Aufwand relativ einfach realisierbar. Daher können wir zwei unserer strategischen Produkte miteinander verbinden.
  • Die Dokumentation ist sehr umfangreich. Man kann generell alles finden. Die Doku wird auch noch von einem sehr guten technischen Blog sowie Schulungsvideos unterstützt.

IT-Logix bleibt am Ball und hält Sie via weitere Blogs und Erfahrungsberichte auf dem Laufenden. Für Fragen stehen wir Ihnen sehr gerne zur Verfügung.

4 Kommentare zu “Snowflake – das cloud-basierte Data Warehouse – eine Einführung

  1. Danke für den Beitrag.
    Die Aussage betr. Limitierung auf 1 Mio. Zeilen ist jedoch falsch.
    Die Limitierung bezieht sich auf 1 Mio. Zeilen des Resultsets, nicht des Datasets.

    1. Hallo Robi

      danke für den korrekten Hinweis. Danke fürs genaue Lesen.
      Ich haben den Fehler entsprechend korrigiert.

      Beste Grüsse

      Dominik

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert