Einführung
Snowflake ist eine Cloud-basierte Software-as-a-Service (SaaS) Lösung der Snowflake Inc. aus San Mateo in Kalifornien, Amerika. Das Unternehmen wurde 2012 gegründet und verfolgt das Ziel eine innovative Cloud-Datenplattform bereitzustellen. Diese legt den Fokus auf die vier in der nachfolgenden Grafik sichtbaren und für den Nutzer optimalen Ziele.
Insbesondere im Hinblick auf ältere On-Premises Lösungen, offeriert die Snowflake Inc. eine grundlegend neuartige und anwenderfreundliche Option. Bei der Ersteren war noch die Anschaffung und Wartung der Hard- und Software notwendig, was in zusätzlichen Ausgaben für diese und zugehöriges Personal resultiert. Hier setzt die Idee des Cloud Computings an und offeriert dem Interessenten eine Lösung welche sich an dessen zentralem Bedarf, dem Speichern und Bereitstellen der Daten, orientiert. Dabei ermöglicht die Snowflake Plattform, bei einer singulären Kopie der gespeicherten Daten, das Verarbeiten von multiplen Abfragen. Darüber hinaus steht dem Nutzer hinsichtlich der Speicher- als auch Rechenkapazität eine nahezu unbegrenzte Skalierbarkeit zur Verfügung. Dies wird insbesondere zukünftigen Ansprüchen gerecht. Ebenfalls wird seitens des Anbieters für die Verschlüsselung und somit eine sichere Aufbewahrung der Daten gesorgt. Snowflake nutzt mit seiner Software konkret, abhängig von der Wahl des Nutzers, die Hardware von Microsoft Azure, Google Cloud oder Amazon AWS.
Architektur
Die Architektur der Snowflake Cloud lässt sich prinzipiell in drei eher abstrakt zu sehende Schichten einteilen. Die Abgrenzung untereinander findet in erster Linie auf funktionaler Ebene und weniger auf Hardwareebene statt. Dabei existieren, sichtbar in Abbildung 2, Data Storage Layer, Compute Layer und Cloud Services Layer. Auf diese wird im Folgenden nun genauer eingegangen.
Cloud Services Layer
Der Cloud Services Layer ist die übergeordnete Schicht, welche sich um multiple ganzheitliche Funktionen kümmert. Dazu zählt unter anderem die Authentifizierung des Benutzers und die Zugriffsverwaltung für Benutzer und Roles. Dies fällt in der Snowflake unter die Begriffe Authentication & Access Control. Weiterhin findet in diesem Layer die Verwaltung der Ressourcen, respektive der von Snowflake genutzten Hardware statt. Der Kern für das Interagieren mit der Datenbank ist die Datenbankabfragesprache SQL. Auch die Snowflake beinhaltet diesbezüglich einen Optimizer, welcher vom Nutzer eingegebene Queries zerlegt und vor der Ausführung optimiert. Darüber hinaus findet das Metadaten-Management ebenso im Cloud Services Layer statt. In der Snowflake spielen Metadaten eine zentrale Rolle. Diese beinhalten Informationen auf Tabellenebene als auch auf der Ebene der Micro Partitions, auf die im letzten Abschnitt genauer eingegangen wird. Im Hinblick auf die Tabellen selbst beinhalten die Metadaten beispielsweise die Anzahl der Zeilen und die Tabellengröße in Bytes. Mittels der Gesamtheit der Metadaten wird unter anderem die Time Travel Funktion ermöglicht, mit der der Nutzer auf ältere Stände der Datenbank zugreifen kann.
Compute Layer
Der zweite Layer, respektive Compute Layer dient zum Ausführen der Queries selbst. Hierfür werden durch die Snowflake sogenannte Virtual Warehouses bereitgestellt. Der Terminus ist eine proprietäre Snowflake Bezeichnung, welche ein Cluster von Servern mit dedizierter Hardware umfasst. Diese beinhaltet die CPU, Memory und permanenten Speicherplatz. Warehouses können vom Benutzer selbst in ihrer Größe alterniert werden. Dies ist prinzipiell in zwei Dimensionen möglich, der Warehouse Size und dem Cluster Count. Ersteres erhöht die Performance komplexer Queries und wird Scale Up genannt. Letzteres verbessert das Rechnen mehrerer paralleler Queries und wird mit Scale Out bezeichnet. Die Warehouses starten mit der Größe extra small (XS) und einem Server pro Cluster. Mit jedem Schritt verdoppelt sich dessen Größe. Neben der verbesserten Leistung steigen die berechneten Kosten selbstverständlich proportional. Der große Vorteil des Warehouse Ansatzes für den Nutzer ist sowohl die angesprochene Skalierbarkeit in zwei Richtungen als auch die Option die Instanzen zu pausieren. So entstehen beispielweise keine Kosten, solange ein Warehouse inaktiv ist. Währenddessen können selbstverständlich auch keine Queries ausgeführt werden. Des Weiteren teilen sich Virtual Warehouses keine Ressourcen. Folglich beeinflussen diese sich nicht gegenseitig im Hinblick auf ihre Performance.
Database Storage Layer
Daten werden durch die Snowflake ebenfalls permanent in der Cloud gespeichert. Auch hierüber braucht sich der Anwender keine konkreten Gedanken machen, da dies automatisch durch die Software geschieht. Technisch gesehen sind die Daten selbstverständlich auf der zugrundeliegenden vom Nutzer gewählten Cloud gespeichert. Dabei sind alle Daten, sowohl in Bewegung als auch in Ruhe, permanent verschlüsselt. Auch dies übernimmt die Software und geschieht vollständig automatisch. Informationstechnisch sind die Daten weiterhin im Snowflake eigenen kolumnaren Format gespeichert. Hierbei greift die Software auf das Konzept der Micropartitions zu. Diese haben im unkomprimierten Fall eine Größe von 50–500 MB und umfassen komprimiert maximal 16 MB. Darüber hinaus sind Micropartitions unveränderbar. Das heißt dessen Inhalt bleibt bestehen und wird auch beim Alternieren der Datenbank nicht verändert. Der Nutzer selbst hat bedingten Einfluss auf die Partitionierung der Daten während des erstmaligen Ladens in die Cloud. Dabei wird die Ordnung der Daten in der Reihenfolge, in welcher sie in die Snowflake geladen werden, beibehalten. Auch auf der Ebene der Micropartitions werden Metadaten erhoben, um die Query Performance signifikant zu verbessern. Diese umfassen dessen Range, die Anzahl verschiedener Werte und die Anzahl von Null Einträgen. Der Optimizer nutzt diese Metadaten geschickt, um für eine spezifische Query irrelevante Micropartitions direkt auszuschließen und somit die Laufzeit signifikant zu verbessern. Dies wird in der Snowflake als Pruning bezeichnet.
Fazit
Ganzheitlich gesehen baut die Snowflake entsprechend auf einer grundlegend neuen Architektur auf, welche die teure Anschaffung einer On-Premises Lösung überflüssig macht und nahezu alle damit verbundenen technischen und administrativen Fragen übernimmt. Dadurch ergibt sich eine günstige, skalierbare Cloud-Plattform, welche ausschließlich Kosten bei Benutzung verursacht.