Say Hello to the Data Cloud
Am letzten Dienstag, den 02.06.2020, hat Snowflake die neue Data Cloud präsentiert und während eines Online-Auftrittes vorgestellt. Während dieser Präsentation wurden neue Features angekündigt, welche in den nächsten Wochen und Monaten veröffentlicht werden sollen.
Vom leichten Schneesturm zum Blizzard
Snowflake hat in den letzten Jahren ein unglaubliches Wachstum erlebt und ist an den aktuellen Entwicklungen im Bereich des Data Warehousing stark beteiligt. Workloads sind von einer Größenordnung von einigen Terabyte auf Petabyte gewachsen und Cloudanbieter wie Snowflake haben es möglich gemacht, dass Jobs, welche in einem on-premise System mehrere Stunden benötigten, nun in wenigen Minuten in der Cloud erledigt sind.
Zurzeit umfasst Snowflake eigenen Angaben nach mehr als 4.000 aktive Accounts, wovon allein im letzten Jahr 2.000 hinzugekommen sind. In diesen 4.000 Accounts arbeiten jeden Monat mehr als 100.000 aktive Nutzer, welche über 450.000.000 (450 Millionen) Jobs pro Tag ausführen. Um diesem Ansturm gerecht zu werden, wird Snowflake immer weiter verbessert und um sinnvolle Funktionen ergänzt.
Die Data Cloud
Während der Präsentation wurde die Data Cloud von Snowflake vorgestellt. Die Data Cloud soll eine neue Art des Denkens anstoßen. Durch die früheren Entwicklungen im Bereich Data Warehousing, haben sich viele Datenbanken zu sogenannten Data Silos entwickelt, welche es nur schwer ermöglichen, neue Jobs zu implementieren oder neue Daten zu integrieren (geschweige denn Daten aus diesem Silo zu lesen), weswegen sie auch den Spitznamen Data Bunker erhalten haben. Die Vision von Snowflake ist dem entgegengesetzt: Jeder Snowflake-Account ist mit einem Silo vergleichbar. Im Gegensatz zu den älteren Silos besitzt aber jeder Snowflake-Account die Möglichkeit, seine Daten zu teilen und anderen Snowflake-Nutzern Zugriff zu gewähren. Prinzipiell ist dies auch in älteren Systemen wie Hadoop oder SQL Server zumindest intern möglich. Da in Snowflake alle Kunden, abgesehen von Virtual Private Snowflake Kunden, auf derselben Infrastruktur laufen, ist das Datasharing in Snowflake auch mit Externen in Sekunden möglich.
Sharing ist in Snowflake sowohl in einem Verhältnis von einem Produzenten und einem Konsumenten möglich, aber auch mehrere Konsumenten können die Daten eines Produzenten erhalten beziehungsweise vice versa mehrere Produzenten einen Konsumenten mit Daten beliefern. Dies geschieht natürlich alles mit den nötigen Sicherheitsmaßnahmen, welche von Snowflake getroffen werden und von dem Produzenten reguliert werden können. Während des Shares werden keine Daten kopiert, sodass das Sharing lediglich auf einer virtuellen Ebene geschieht. Änderungen an dem ursprünglichen Datensatz werden hierbei ohne Verzögerungen in dem Account des Konsumenten erfasst und eingearbeitet, sodass Konsumenten immer mit dem aktuellsten Datensatz arbeiten können. Dies ermöglicht ein flexibleres Verarbeiten der Daten, welches mit klassischen Data Silos nicht möglich wäre. Während der Arbeit mit Daten ist die Aktualität eben dieser von höchster Relevanz, denn nur so können Data Scientists aktuelle Modelle entwickeln, welche die Qualität der Geschäftsentscheidungen erhöht. Basierend auf diesem Konzept hat Snowflake den Data Marketplace erschaffen. Hier können Daten von Unternehmen angefragt werden, um diese weiter zu verarbeiten und auch in ihre eigene Datenbank einzuflechten zu können. Ein beliebter Anbieter hiervon ist Starschema. Starschema stellt Daten zur Ausbreitung des Covid-19 Virus bereit. Diese Datensätze können, wie oben erwähnt, in die eigenen Datensätze integriert, weiterverarbeitet und analysiert werden. So ist zum Beispiel eine Analyse des eigenen Geschäfts hinsichtlich der Auswirkungen, die das Coronavirus hatte, möglich. Summa Summarum lässt sich die Data Cloud als Denkansatz verstehen, in welchem Daten nicht fest und ungreifbar, sondern flexibel und leicht nutzbar sind. Weiterhin sollen Daten sich einfach in Jobs integrieren lassen und leicht abrufbar sein. Dies wird in der Data Cloud mit einem hohen Maß an Sicherheit und einer, durch die freie Skalierbarkeit von Snowflake gegebenen, hohen Wirtschaftlichkeit gepaart.
Neue Features
Neben der Data Cloud wurden in der Präsentation auch einige neue Features vorgestellt, welche die sechs „Key-Workloads“, Data Engineering, Data Lake, Data Warehouse, Data Science, Data Application, Data Exchange, weiter verbessern und vernetzen soll. Diese neuen Features werden von Snowflake in drei grundsätzliche Kategorien aufgeteilt: „Core Platform Leadership“, „Extensible Data Pipelines“ und „Data Cloud Content“.
Snowsight
In den Bereich der „Core Platform Leadership“ fällt beispielsweise das Feature Snowsight. Snowsight soll, zusätzlich zu einem grafisch aufbereiteten Interface, die Arbeit von Data Analysts und Engineers leichter machen. Features, die in Snowsight enthalten sind, sind beispielsweise eine Auto-complete Funktion und die Möglichkeit Schemata gezielt zu durchsuchen, was das Schreiben von Queries vereinfachen soll. Des weiteren werden Charts und Dashboards hinzugefügt, welche die visuelle Analyse der Daten in Snowflake selbst ermöglicht und einen leichteren Zugang zu den Daten gewährt.
Transparent Materialized View Usage
Ein Materialized View in Snowflake ist ein Datensatz, auf welchen bereits eine Query angewandt und dessen Resultat gespeichert wurde. Sie wurden eingeführt, um die Performance von anknüpfenden Queries zu erhöhen, da sich so die Notwendigkeit des Ausführens der ursprünglichen Query erübrigt und somit sowohl Zeit als auch Compute-Ressourcen gespart werden können. In Snowflake war es allerdings bisher so, dass wenn man eine Materialized View verwenden wollte, diese explizit in der Query genannt werden musste. Dies soll sich ändern: In Zukunft soll Snowflake automatisch erkennen können, ob eine Materialized View einer Tabelle existiert, welche die Geschwindigkeit der Query erhöht und verwendet diese dann automatisch. Dies bewirkt, dass Datenmodelle und Queries bei der Analyse nicht geändert werden müssen, wenn man sich dazu entscheidet, zur Verbesserung der allgemeinen Performance eine Materialized View zu verwenden.
Search Optimization Service
Search Optimization Service ist ein neues Feature in Snowflake, welches die Performance von Filter-Abfragen verbessern soll. Dies war bisher in Snowflake nur über Clustering möglich, was die Anordnung der Micropartitions verändert hat und somit die Performance auf Queries die den Clustering-Key beinhaltet hat, stark verbesserte. Das Einführen eines Clustering-Keys wurde von Snowflake allerdings erst ab einer Größenordnung von über 1TB empfohlen und war mit zusätzlichen Kosten verbunden. Search Optimization Service soll eine Alternative zum Clustering-Key darstellen. Dieses Feature muss explizit für Tabellen aktiviert werden. Search Optimization Service stellt pre-computed Informationen zu einer Tabelle bereit, ähnlich wie es Materialized Views tun, und erhöht so die Performance von Filter-Abfragen. Diese vorbereiteten Informationen werden bei Aktualisierung der Daten ebenfalls geupdated. Während einer Demonstration des Services wurde in einer Tabelle mit 28 Milliarden Reihen nach einer E‑Mail-Adresse gefiltert. Zum Vergleich wurde die Query einmal auf einem XXLARGE Warehouse ohne Search Optimization ausgeführt und einmal auf einem XSMALL Warehouse, allerdings mit Search Optimization. Obwohl die Abfrage mit Search Optimization mit einem deutlich kleineren Warehouse stattfand, hat die Query lediglich 3,9 Sekunden gedauert. Auf dem 32-mal größeren XXLARGE Warehouse ohne Search Optimization benötigte die Query ganze 37 Sekunden und hat somit ungefähr 9,5‑mal so lange gedauert. Diese Zeit-und-Ressourcenersparnis resultiert in einer Kostenersparnis für den Kunden. Es wird allerdings nicht explizit genannt, welche zusätzlichen Kosten durch die Verwendung der Search Optimization entstehen. Snowflake empfiehlt die Verwendung des Search Optimization Services ab einer Tabellengröße von 100GB und einer Menge von mindestens 100.000 bis 200.000 verschiedenen Werten.
Stärken werden weiter ausgebaut
Eine von Snowflakes großen Stärken ist der Einsatz von SQL-Code. Snowflake unterstützt bereits eine Vielzahl von SQL-Befehlen und wird sein Repertoire in Zukunft weiter vergrößern. Weiterhin sollen zusätzliche Datentypen, wie beispielsweise der Geography Datatype, neue Windowfunctions und neue Operatoren hinzugefügt werden. Außerdem möchte Snowflake seine Fähigkeit zur Migration von einer bereits bestehenden Plattform verbessern. Dies ist ein weiterer Grund, einen Umzug nach Snowflake in Erwägung zu ziehen, welcher die in dem Blogbeitrag „Why migrate to Snowflake?“ bereits vorgestellten Gründe ergänzt. Weiterhin soll in den nächsten Monaten „SQL Stored Procedures“ zu Snowflake hinzugefügt werden, was die Automatisierung von Prozessen innerhalb von Snowflake weiter vorantreibt. Der Unterschied zu den bisherigen Stored Procedures liegt hierbei in der Sprache. Stored Procedures in Snowflake waren bisher nur in JavaScript möglich, sodass die SQL-Befehle in JavaScript eingebettet werden mussten. Dieser Umweg wird nun bei zukünftigen Projekten nicht mehr nötig sein.
Dynamic Data Masking
Data Governance lässt sich in zwei Teile aufteilen: Der eine Teil beinhaltet die Kenntnis über seine Daten und der andere Teil das Management eben jener. Zur Verbesserung des eigenen Data Managements und zur Erhöhung der Sicherheit der Daten, hat Snowflake das „Dynamic Data Masking“ eingeführt. Mittels dieses neuen Features kann man einzelnen Spalten einer Tabelle eine spezielle Policy hinzufügen, welche die Anzeige dieser Spalte beeinflusst. Dies erlaubt es die Daten in dieser Spalte für gewissen Personengruppen unkenntlich zu machen. Ein Beispiel hierfür wären E‑Mail-Adressen oder Telefondaten von Kunden, welche für den Vertriebsbereich einer Firma von Relevanz sind, allerdings beispielsweise für das Data Science Team nicht sichtbar sein dürfen. Mittels des neuen Data Maskings kann man dem Vertrieb die nötigen Rechte gewähren beziehungsweise dem Data Science Bereich diese entziehen, ohne eine Kopie der Tabelle vorzunehmen und somit höhere Speicherkosten zu generieren. Hierbei muss man anmerken, dass wenn eine Policy für die Anonymisierung von Daten getroffen wird, die darunter liegenden Daten entweder vollständig sichtbar, teilweise maskiert oder ganz maskiert sind. Der Default-Wert hierbei ist vollständig maskiert, sodass die Sichtbarkeit beziehungsweise die partielle Sichtbarkeit der Daten explizit den einzelnen Rollen zugewiesen werden muss. Die Policy wird automatisch auf Klone der Tabelle angewandt, sodass das Data Masking nicht mittels Zero-Copy-Cloning umgangen werden kann. Außerdem kann das Masking auch auf Snowflakes Variant Datatype angewandt werden und in Data Shares integriert werden.
Beispiel für ein SELECT * Statement auf eine Tabelle mit anonymisierten Spalten im neuen User Interface. Hierbei ist zu sehen, dass der Rolle „Analyst“ (rechts oben) die Sicht auf die Spalten LAST_NAME und STREETADRESS vollständig verwehrt bleibt. Die Spalte EMAIL hingegen ist nur teilweise für diese Rolle anonymisiert.*
Externe Funktionen und Programmiersprachen
Neben der Integration von SQL Stored Procedures hat Snowflake angekündigt, weitere Programmiersprachen für UDFs zu unterstützen. So soll beispielsweise Java als Möglichkeit angeboten werden. Außerdem soll das Importieren externer Funktionen ermöglicht werden. Dies erlaubt es, Funktionen, die beispielsweise in AWS Lambda mit Python geschrieben worden sind, nach Snowflake zu migrieren und dort zu benutzen. Snowflake arbeitet außerdem daran, Module aus bekannten Programmiersprachen zukünftig in Snowflake nutzbar zu machen. Dies lässt erahnen, dass zukünftig Module wie Python Pandas in Snowflake ausführbar sind und deren Funktionsumfang genutzt werden kann. Allgemein eröffnet dies die Möglichkeit, bereits vorhandenes Know-How in Java oder Python nach Snowflake zu transportieren und dort auszunutzen, was ein höheres Maß an Flexibilität mit sich bringt.
Fazit
Wie eingangs erwähnt, werden die vorgestellten Features in den nächsten Wochen beziehungsweise Monaten veröffentlicht. Die meisten Features befinden sich derzeit noch in einer internen Testphase (beispielweise das Data Masking), einige andere sind allerdings bereits verfügbar, wie zum Beispiel der Data Marketplace oder befinden sich in einer öffentlichen Preview. Insgesamt sieht man, dass die Entwicklung von Snowflake noch längst nicht stagniert und bisherige Schwächen, wie beispielsweise die bisherige Verwendung der Materialized Views und die fehlende Auto-Vervollständigung in der WebUI, auf welche wir von saracus Consulting auch während unserer Seminare zum Thema Snowflake angesprochen wurden, zukünftig ausgebessert und die bereits vorhandenen Stärken weiter ausgebaut werden. Neben den Neuerungen in Snowflake selbst wird es interessant sein, die Veränderungen in den verschiedenen Partner-Tools wie beispielsweise Matillion zu beobachten, da diese die Funktionalität von Snowflake ausnutzen und somit auch von den Neuerungen profitieren können.