Snowflake – Data Warehousing in der Cloud

Die bekannten großen Data Warehouse-Systeme von namhaften Herstellern wie Oracle, IBM oder Microsoft sind zu einer Zeit entstanden als noch nicht einmal im Ansatz über Cloud-Lösungen nachgedacht wurde. Diese folgen traditionellen Systemarchitekturen, die das Potential der Cloud nicht ausschöpfen können. Bei Snowflake ist das anders! Da die plus-IT GmbH dieses Jahr Partner von Snowflake geworden ist, möchten wir hier die Technologie vorstellen.

Snowflake existiert bereits seit 2012 und wurde von ehemaligen Mitarbeitern von Oracle gegründet. 2015 ging das Unternehmen nach einer Testphase mit ausgewählten Kunden an die Öffentlichkeit und hat seitdem mehrere Tausend Kunden wie etwa Electronic Arts, Capital One und Adobe für sich gewinnen können. In ihrem Bericht „Magic Quadrant for Data Management Solutions for Analytics“ von Januar 2019 identifizierte Gartner Snowflake als Technologieführer – unseres Erachtens nach zu Recht.

Im Gegensatz zu herkömmlichen Data Warehouse-Systemen wurde Snowflake im Hinblick auf die Cloud entwickelt und ist auf den gängigen Cloud-Plattformen verfügbar. Es ist als klassisches SaaS-Produkt konzipiert, welches dem Kunden sämtliche Aufgaben von der Bereitstellung der Infrastruktur, über die Installation bzw. die Wartung bis hin zur dynamischen Skalierung des Systems abnimmt.
Bei klassischen Data Warehouse-Systemen ist es üblich, eine Infrastruktur vorzuhalten, die in der Lage ist, die benötigten Leistungsanforderungen zu erbringen. Doch wird diese Kapazität selten permanent gebraucht. Bezahlen muss man die Infrastruktur, auch wenn gerade kaum Last auf dem System ist. Bei Snowflake entfallen diese Kosten und man hat die Flexibilität Leistungskapazitäten hinzuzunehmen, wenn sie benötigt werden.

Konventionelle Architekturen bei Data Warehouse-Clustern teilen sich entweder einen gemeinsamen Speicher oder jeder Knoten des Clusters besitzt seinen eigenen Speicher. Der erste Ansatz lässt sich zwar in Punkto Rechenleistung leicht skalieren, macht aber den Speicherzugriff zum Flaschenhals. Der zweite Ansatz löst dieses Problem zwar, doch kann hier die Rechenleistung nur Hand in Hand mit dem Speicher skalieren und umgekehrt.

Die Architektur von Snowflake ist in drei völlig separate Stufen getrennt, die sich unabhängig voneinander skalieren lassen – Speicher, Rechenressourcen und Services.

Speicher:
Auf dieser Ebene macht sich Snowflake die Skalierbarkeit und Elastizität des Cloud-Blob-Speicher zu Nutze. Hierbei kommen Mikropartitionen, die spaltenweise komprimiert und verschlüsselt werden, zum Einsatz. Dadurch ist eine Beladung des Systems möglich ohne, dass eine Beeinträchtigung der Abfragen der Nutzer damit einhergeht. Dies führt bei klassischen Data Warehouse-Systemen nicht selten zu Problemen.

Rechenressourcen:
Das Laden von Daten, die Berechnung von Kennzahlen oder Abfragen durch Nutzer – all diese Operationen benötigen Rechenkapazität, die auf dieser Ebene der Architektur angesiedelt ist. Da Snowflake gemäß dem ACID-Paradigma konform ist, sind Leseoperationen konsistent und behindern gleichzeitig niemals Schreiboperationen.

Services:
Verwaltung, Sicherheit, Optimierung, Koordination von Transaktionen, Datenaustausch sowie die Handhabung von Metadaten erfolgt auf dieser Stufe. Es ist damit die Steuerungsebene, die das Zusammenspiel der einzelnen Systemkomponenten koordiniert und den Zugriff bis hin zur Rechteverwaltung der Nutzer regelt. Die aus den Micropartitionen der Speicherebene extrahierten Metadaten werden herangezogen, um die benötigten Spalten bei Abfragen zu ermitteln.

Über den von der Architektur her verschiedenen Ansatz hinaus bringt die Plattform Funktionen mit sich, die deutlich über das Funktionsset konventioneller Data Warehouse-Systeme hinaus gehen. Dazu gehören Klonen ohne Kopie, Datenfreigabe und sogar Zeitreisen. Klonen ohne Kopie erzeugt eine logische Instanz einer Datenbank, bei der lediglich die Änderungen, die vom Original abweichen gespeichert werden. Daten können auf Snowflake an Nutzer sogar außerhalb der eigenen Organisation bis auf Zeilenebene freigegeben werden. Dafür ist kein SFTP, ETL oder ähnliches notwendig. Mit Zeitreisen ist eine Änderungsdatenerfassung gemeint, die es ermöglicht im Zeitraum von bis zu 90 Tagen gelöschte Tabellen wiederherzustellen, den Inhalt einer Tabelle zu einem bestimmten Zeitpunkt abzufragen und Änderung sowie Nutzung von Daten in einem Zeitraum zu analysieren.

Besonders charmant bei der Nutzung von Snowflake ist die Sprache: Standard-SQL. Dadurch können Kunden bereits im Unternehmen aufgebautes Wissen nutzen, um von den Vorteilen dieser Plattform zu profitieren.

Fazit
Wie leicht zu sehen ist, setzt Snowflake an Punkten an, die in klassischen Data Warehouse-Systemen immer wieder zu Schwierigkeiten geführt haben. Gleichzeitig liefert das Unternehmen genau dafür Lösungen und geht dabei noch einen Schritt weiter. Es bringt Funktionen an den Start, die deutlich darüber hinausgehen. Aber es ermöglicht durch die Verwendung von Standard-SQL und einer intuitiven Steuerung einen leichten Einstieg in diese Umgebung. Insofern ist es wenig verwunderlich, dass Gartner Snowflake als Technologieführer einstuft.

Machine Learning in 6 Schritten – So sieht die Prozesskette aus

Nachdem wir uns bereits mit den Grundlagen und Beispielen zu Machine Learning sowie den Lerntypen beschäftigt, haben, wollen wir uns heute den Prozess als solches ansehen. Die Prozesskette für einen Machine Learning Prozess – egal ob in Hadoop, AWS, Azure, einer anderen Cloud oder „on Premise“ – kann in den folgenden sechs Schritten abgebildet werden.

1. Datenimport
Bevor wir Daten analysieren und ein Model trainieren, müssen wir die Daten in das System importieren. Machine Learning Studio bietet die Möglichkeit, Daten aus verschiedenen Quellen zu ziehen, wie AZURE Blob Storage, Azure DB, DWH, Hadoop, OData, On Premise SQL Server, aus dem Web (http) und per manueller Eingabe. Daten werden intern in sogenannten Datasets gespeichert und zur weiteren Verarbeitung zu Verfügung gestellt.

2. Datenaufbereitung (Preprocess)
In diesen Schritt werden Daten für den Machine Learning Algorithmus vorbereitet. In diesem Schritt werden Daten normalisiert, partitioniert, gefiltert oder transformiert. Es können neu berechnete Spalten hinzugefügt werden, eine Datenkonvertierung durchgeführt werden usw.. Wenn die Daten im Quellsystem vorbereitet wurden, ist dieser Schritt nicht zwingend notwendig. Wenn aber z.B. rohe Daten eingelesen werden, können wir in diesem Schritt die notwendigen Aktionen durchführen.
Prozess des Machine Learning
3. Datenaufteilung (Split Data)
Jeder Machine Learning Algorithmus funktioniert so, dass die Daten in Training und Score (Auswertungs-) Daten aufgeteilt werden müssen.
Wie das funktioniert? Wir haben z.B. historische Daten eins Internetportals aus den letzten drei Jahren. Produkte die verkaufte wurden und entsprechende Klassifizierungen z.B. nach Datum, Kunden (Eigenschaften wie Mann, Frau, Vielkäufer, Sparfuchs), Orte und sonstige Daten wie z.B. Wetterdaten. Die Daten werden dann z.B. 70% für Training und 30% für die Auswertung geteilt.

4. Machine Learning Algorithmus
Es existieren zwei unterschiedliche Algorithmus Typen: Klassifikation und Regression.
a. Klassifikation
Dieser Typ des Machine Learning Algorithmus wird dazu verwendet, unbekannte Daten zu klassifizieren, oder zu kategorisieren. Dieser Typ wird oft bei der Bildererkennung oder OCR (Texterkennung) verwendet. Beispielsweise unterteilt das System in Bilder mit Katzen, Hunden oder Personen. Als Ergebnis wir immer ein Ja, oder Nein geliefert. Ist es eine Katze, ist es Buchstabe „A“ usw.

b. Regression
Regression-Algorithmen liefern immer eine Zahl. Zum Beispiel die Temperatur in den nächsten Tagen, Aktienwerte oder die Anzahl der verkauften Produkte. Es gibt viele Regression Algorithmen:

• Lineare Regression
• Bayesian Regression
• Decision Tree/ Forest
• Neural Network Regression
• Poison Regression

5. Modell-Training
Training-Modelle verwenden als Input-Parameter Training Daten und einen ausgewählten Algorithmus, um das Model zu trainieren. Es werden Attribute definiert und das System probiert anschließend, die Zusammenhänge zwischen den Attributen zu erkennen und Ergebnisse zu ermitteln. Ein Beispiel: Mit den Input-Attribute Geschlecht (Mann, Frau), Kaufverhalten (Vielkäufer, Sparfuchs), Ort und Wetterdaten kann das Ergebnis die erwartete Anzahl verkaufter Produkte sein.

6. Modellauswertung (Scorer Model)
Nach dem das Modell trainiert wurde, werden Ergebnisse mit den bereits existierenden Daten verglichen, um die Genauigkeit der Vorhersage des Modells zu bewerten.

Ein Beispiel des Ausgangs beim Score-Model.
WettererscheinungID, Temperature und ProductCount sind bekannte Parameter (bei bestimmte Temperatur und Wettererscheinug wurde eine bestimmte Anzahl Produkte (ProductCount) verkauft). Scored Labels ist die Zahl, die vom Machine Learning Algorithmus vorhergesagt wurde.
Wenn wir die ProductCount und Scored Labels vergleichen, sehen wir, dass es Unterschiede gibt zwischen dem, was tatsächlich verkauft wurde und dem, was vorhergesagt wurde. Es gibt aber auch gute Treffer.

Machine Learning Daten

 

Die Genauigkeit der Vorhersage ist durch den Machine Learning Algorithmus bestimmt. Manche Algorithmen sind für spezielle Vorhersagen gut oder schlecht geeignet. Es ist auch möglich, das Verhalten der Algorithmen durch verschiedene Parameter zu steuern.
Wie das genau funktioniert, werden wir uns im nächsten Teil anschauen.