Das Cloud Data Warehouse „Snowflake“ – eine kurze Einführung

Snowflake ist im Mainstream angekommen. Das SaaS-Produkt wurde 2021 zum „Datenbankenmanagementsystem (DBMS) des Jahres“ bei DB Engines (1) gekürt. Diesen Preis gewann es, weil es innerhalb des letzten Jahres unter allen DBMS die größte Popularitätssteigerung erfahren hatte. Die Firma hinter dem beliebten DBMS – Snowflake Inc. – weist zudem solide Zahlen auf:  Snowflake wird von 223 der Fortune 500 Unternehmen (ca. 45%) genutzt und der jährliche Umsatz wächst im hohen zweistelligen bis niedrigen dreistelligen Prozentbereich (2). Snowflake ist also bereits jetzt eine echte Erfolgsstory. Deswegen möchte ich in diesem Blogbeitrag die wichtigsten Kernfunktionen vorstellen und über meine liebsten Snowflake-Features berichten.

Snowflake wirbt häufig damit, dass es vom Grund auf für die Cloud entwickelt wurde. Dies ist in der Praxis spürbar, da viele Kernfunktionen sehr modern gestaltet sind. So gibt es beispielsweise eine rollenbasierte Zugriffskontrolle für Objekte. Rechte werden nicht mehr auf Nutzerbasis, sondern nur noch auf Rollenbasis vergeben.

Ein weiteres fortschrittliches Feature ist das komplette Fehlen von Indizes (Beschleuniger für Datenbankabfragen). Diese gibt es bei Snowflake nicht, da bereits alle Abfragen, dank der Micropartitions-Architektur, schnell und performant sind. Dies gilt auch für sehr große Tabellen.

Eines der Kernfeatures – vermutlich DAS Kernfeature von Snowflake – ist die konsequente Trennung von Speicher und Rechenleistung in Snowflake. Dies bringt eine Vielzahl von Vorteilen mit sich, wie die Kostenoptimierung, das Isolieren von Workloads, den parallelen Datenzugriff ohne Performanceeinbußen und die Möglichkeit zur prozessabhängigen Kostenkontrolle. Die Trennung von Speicher und Rechenleistung funktioniert über das getrennte Abrechnen dieser beiden Komponenten. Die Rechenleistung wird über sogenannte „Warehouses“ abgerechnet. Ein „Warehouse“ ist eine definierte Einheit an Rechenleistung. Diese richtet sich nach T-Shirt-Größen von XS (kleines Warehouse) bis 6XL (größtes Warehouse). Das genutzte Warehouses wird sekundengenau abgerechnet, wobei sich die Kosten wieder nach der Größe richtet. Ich möchte aber darauf hinweisen, dass auch schon die kleinste Größe (XS) eine sehr gute Performance bietet und Workloads mit Tabellengrößen von mehreren Millionen Zeilen problemlos meistert. Der Speicher hingegen wird täglich nach der durchschnittlichen genutzten Speicher-Menge pro Tag berechnet und monatlich abgerechnet.

Eines meiner liebsten Snowflake-Features ist „Time Travel“. Snowflake speichert jeden Zustand eines Objektes für die letzten 24h (Standardedition) bis zu 90 Tage (ab Enterprise Edition). Das heißt, wenn beispielsweise eine Tabelle versehentlich gelöscht wird, kann diese einfach innerhalb von 24 Stunden über UNDROP TABLE_NAME wieder hergestellt werden. Dieses Feature hat mir gerade bei dem Arbeiten mit Steuertabellen schon sehr oft geholfen! Sollten sogar diese 24 Stunden nicht ausreichen, gibt es das Feature „Fail-Safe“. Gelöschte Objekte können damit noch sieben Tage lang vom Snowflake-Support wiederhergestellt werden. Zum Glück musste ich diese Funktion aber noch nie verwenden.

Etwas Umgewöhnung bedarf es beim Fehlen von Constraints (Einschränkungen für neue Tabelleneinträge in die Datenbank). Weil Snowflake eine verteilte Datenbank ist, wird außer NOT NULL kein Constraint durchgesetzt. Constaints können zwar erstellt werden, aber sie werden nicht von Snowflake durchgesetzt. Dennoch empfiehlt es sich in bestimmten Tabellen Primärschlüssel zu erstellen. Gerade auf Steuertabellen oder manuell gepflegten Tabellen empfiehlt sich das, da diese Primärschlüssel von Datenbanktools wie DBeaver oder Datagrip genutzt werden.

Zusammenfassend kann ich sagen: das Arbeiten mit Snowflake macht einfach Spaß! Der SQL-Dialekt von Snowflake ist sehr angenehm. Die Dokumentation ist unglaublich gut und macht durch ihre hohe Qualität das Arbeiten mit Snowflake einfacher. Es gibt viele sinnvolle Features und die Performance ist auch für kleine Warehouses sehr gut. Durch die Trennung von Speicher und Rechenleistung kann man eine Snowflake-Instanz sehr kosteneffizient betreiben. Wenn Sie also ein modernes BI in der Cloud betreiben wollen, ist Snowflake auf jeden Fall die passende Lösung für Sie!

Ist Ihr Interesse an Snowflake geweckt? Dann finden Sie auf unserer Webseite noch mehr Infos. Gerne können Sie mich auch direkt ansprechen (florian.dindorf@linkfish.eu).

 

(1) https://db-engines.com/en/blog_post/93

(2) https://www.snowflake.com/news/snowflake-reports-financial-results-for-the-third-quarter-of-fiscal-2022/

 

Florian Dindorf
Letzte Artikel von Florian Dindorf (Alle anzeigen)