Viele Unternehmen planen derzeit, ihre Reporting und Analyseplattform in die Cloud zu migrieren. Zu diesem Zweck gibt es eine Vielzahl von Entscheidungen zu treffen. Dieser Beitrag stellt Microsofts Lösung Synapse Analytics vor. Diese bietet Datenspeicher in Dedicated SQL Pools, die Datenintegrationsmöglichkeiten der Azure Data Factory sowie Transformationen im altbewährten T‑SQL sowie in Spark.
Komponenten
Das Produkt Synapse Analytics von Microsoft entstand als Erweiterung des Azure SQL Data Warehouse und integriert zusätzlich die Funktionen des Datenintegrationstool Azure Data Factory. Für Synapse gibt es einer Entwicklungsumgebung, das Synapse Studio. In diesem gibt es die Möglichkeit Pipelines zu entwickeln, Daten zu erkunden sowie Abfragen mit T‑SQL oder Apache Spark zu schreiben.
Auch das Monitoring der Synapse einzelnen Synapse Workloads kann im Synapse Studio geschehen.
SQL Pool
Das klassische Data Warehouse kann mit Synapse mit einem dedizierten SQL Pool abgebildet werden. Dieser verwendet die MPP (Massive Parallel Processing) Architektur. Es gibt einen Steuerknoten (Control Node), auf welchem die SQL Befehle ankommen und auf die Rechenknoten (Compute Nodes) verteilt werden. Es gibt abhängig von der Skalierung des Pools bis zu 60 Serverknoten, auf diesen dann die Queries ausgeführt werden. Die Abfragesprache ist klassisches T‑SQL, jedoch gilt es zu beachten, dass Synapse SQL bei weitem nicht alle Features von SQL Server beinhaltet.
Bei der Erstellung der Tabellen muss direkt der Verteilung der Daten auf die einen einzelnen Knoten bestimmt werden, dies passiert direkt im DDL.
Hier liefert Microsoft drei Varianten:
- Round Robin
- Hash
- Replicated
Bei der Round Robin Verteilung werden die Daten zufällig auf die einzelnen Compute Nodes verteilt. Diese bietet sich für Staging-Tabellen an, bei denen man den Inhalt der Daten nicht kennt und für welche keine häufigen Abfragen geplant sind. Für diese ist die Round Robin Verteilung entsprechend nicht optimiert.
Die Hash-Verteilung. Hier gibt es eine deterministische Funktion, die einzelne Datensätze (immer ganze Zeilen) einzelnen Knoten zuordnet. Diese Art der Distribution bietet sich für große Faktentabellen mit mehr als sieben Millionen Einträgen an. Den Hash-Key kann man auf Spalten setzen. Es bietet sich an, den Hash Key auf Spalten zu wählen, die viele verschiedene Einträge haben, keine oder möglichst wenige NULL ‑Einträge, sowie keine nach denen gefiltert wird.
CREATE TABLE [dbo].[Fact]
(
[key_dim1] int,
[date] datetimeoffset,
[quantity] int
)
WITH (
CLUSTERED COLUMNSTORE INDEX,
DISTRIBUTION = HASH([key_dim1])
);
Ein Datumsattribut bietet sich nicht als Key an, da viele Abfragen auf das Datum filtern und im Endeffekt nur auf einem Knoten ankommen würden.
Als dritte Alternative kann man die Daten auch auf alle Serverknoten replizieren. Dies ist natürlich die schnellste Lösung, jedoch auch diejenige, die am meisten Speicherkapazität erfordert. Diese bietet sich an für Dimensionstabellen, die häufig abgefragt werden.
Als Default wird die Round Robin Distribution verwendet. Achtung: Bei der Kopie von Tabellen mittels CREATE TABLE AS SELECT muss die Distribution explizit angegeben werden.
Skalierbarkeit
Microsoft rechnet den Preis des Dedicated Pools anhand der Data-Warehouse Einheiten (DWU), die für diesen Pool bestellt werden. Diese können skaliert werden, dadurch skalieren dann die Geschwindigkeit der Abfragen, des Datenladens aus dem Azure Blob Storage sowie das Schreiben von Daten. Auch die Anzahl der physischen Compute Nodes wird skaliert; wählt man eine Größe von weniger als 1000 DWU, so gibt es nur einen Compute Node, auf dem alle 60 Distributionen liegen; bei der maximalen Skalierung von 30000 DWU gibt es 60 Compute Nodes und nur eine Distribution pro Knoten.
Daneben gibt es Funktionen zum Workload-Management, mit dem kann auch noch für jede Abfrage die Ressourcenklasse gewählt werden, durch welche die maximale Memory Kapazität pro Query bestimmt wird. Je größer die Ressourcenklasse ist, desto größer ist die diese, jedoch verringert sich dabei auch die mögliche Anzahl an parallel laufenden Abfragen.
Integration von semistrukturellen Daten
Zum Laden von Daten aus Quellen im Data Lake Storage gibt es eine Integration mit PolyBase. Dies ist eine Technologe mithilfe derer Daten aus verschiedenen Quellen integriert werden. Gerade für schnelle Loads aus dem Data Lake biete es sich an, Polybase zu nutzen.
Für detaillierte Informationen zu PolyBase lesen Sie bitte auch unseren Blogbeitrag.
Synapse Analytics bietet auch die Möglichkeit eine Lakehouse Architektur zu modellieren.
Es ist häufig gewünscht, direkt auf semistrukturelle Daten im Data Lake zuzugreifen.
Zu diesem Behufe erstellt man externe Tabellen im Dedicated Pool. Für diese muss zuerst mit dem Befehl CREATE EXTERNAL DATA SOURCE auf eine Datenquelle im Azure Data Lake oder einem Hadoop Filesystem in Azure verweisen. Daraufhin muss mit dem Befehl CREATE EXTERNAL FILE FORMAT das Format der Dateien (im Dedicated Pool CSV oder Parquet) beschrieben werden. Der externen Tabelle muss schließlich sowohl DATA_SOURCE als auch FILE_FORMAT als Parameter mitgegeben werden.
CREATE EXTERNAL DATA SOURCE my_data_source
WITH (LOCATION = 'https://myazurestorage.blob.core.windows.net/myfolder/',
TYPE = HADOOP);
CREATE EXTERNAL FILE FORMAT my_file_format
WITH (
FORMAT_TYPE = PARQUET,
DATA_COMPRESSION = 'org.apache.io.compress.SnappyCodec');
CREATE EXTERNAL TABLE my_table
(
col1 int,
col2 varchar(100)
)
WITH ( LOCATION = '/parquet/',
DATA_SOURCE = my_data_source,
FILE_FORMAT = my_file_format);
Security und Access Management
Als Azure-Ressource ist Azure Synapse Analytics direkt mit dem Azure Active Directory integriert. Die sichere Identitäts- und Zugriffsverwaltung kann dadurch sichergestellt werden.
Serverless SQL Pool
In Azure Synapse Analytics gibt es nicht nur die Möglichkeit, dedizierte SQL Pools zu verwenden, sondern auch on-demand serverlose Infrstruktur. Mit anderen Worten Serverless SQL Pools, von denen einer bei jeder Deployment eines Synapse Analytics Workspace in Azure bereitgestellt wird. Dieser bietet die klassischen Vorteile einer serverlosen Architektur, also automatische Skalierung der Rechenressourcen sowie eine Abrechnung basierend auf der tatsächlich genutzten Menge an Daten und Compute Ressourcen.
Datenintegration und ‑transformation
Azure Synapse Analytics bietet zusätzlich noch die Azure Pipelines. Diese erinnern sehr Stark an die Data Factory und bieten Datenintegration mit zahlreichen Konnektoren zu Quellsystemen. Als Beispiele seien hier Oracle, SQL Server, Salesforce, SAP, S3 sowie die Azure Storage Angebote genannt.
Diese Datenintegration sowie Datentransformation mit Spark oder T‑SQL Stored Procedures kann in Synapse Pipelines orchestriert und geplant werden. Es besteht sowohl die Möglichkeit die Pipelines zu bestimmten Zeit laufen zu lassen, als auch Event Trigger zu verwenden.
In diesen Pipelines gibt es auch verschiedene Möglichkeiten zur Transformation der Daten: Spark-Notebooks, T‑SQL Stored Procedures sowie Mapping Data Flows.
Die bieten Transformationen in einer visuellen Oberfläche, die auf Apache Spark basieren . Es gilt jedoch zu beachten, dass für zum Debug eines Dataflows ein Cluster hochgefahren wird, welches zusätzliche Kosten verursacht.
Fazit
Azure Synapse Analytics bietet sich an, wenn man hauptsächlich oder ausschließlich im Azure Kosmos unterwegs ist. Es gibt eine gute Anbindung an Power BI sowie die Möglichkeit alte SSIS-Pakete per Lift and Shift zu migrieren.
Die Abhängigkeit an Microsoft kann jedoch auch als Nachteil aufgesfasst werden, da mit einem eventuellen Wechsel des Cloudanbieters auch große Migrationsaufwände in der Data Analytics Plattform einhergehen.
Wir bei saracus haben Erfahrungen mit Synapse Analytics sowie mit anderen Cloud Data Plattformen, bei Interesse an Beratung kommen Sie auf uns zu.
Quelle
Erfahren Sie mehr über Lösungen im Bereich DWH oder besuchen Sie eines unserer kostenlosen Webinare.