PolyBase – Ein technischer Überblick

Mit dem Release des SQL Servers 2016 von Microsoft wurde PolyBase als ein neues Feature eingeführt. Jedoch ist diese Funktionalität nicht neu; sie war bereits in der 2012er Version des Microsoft Analytics Platform System (APS) verfügbar.

Im Grunde genommen dient PolyBase als Brücke zwischen dem SQL Server und semi-strukturierten/nicht-strukturierten externen Datenquellen wie bspw. Hadoop oder dem Azure Blob Storage. Somit können relationale und nicht-relationale Datenbanken (NoSQL) gleichzeitig abgefragt werden. Auch das Importieren und Exportieren von Daten von und nach externen Datenbanken wird dadurch ermöglicht. Ferner können bestehende BI Tools, die bereits auf den SQL Server zurückgreifen zusätzlich auf die externen Datenquellen zugreifen.
PolyBase 1
Quelle: Microsoft 

Ein wesentlicher Vorteil besteht darin, dass PolyBase keine zusätzlichen Softwareinstallationen auf den externen Datenquellen benötigt. Außerdem können Abfragen in T-SQL im SQL Server Management Studio geschrieben und ausgeführt werden. Die Befehle werden im Hintergrund in die entsprechende Syntax der externen Datenquelle übersetzt und dort ausgeführt. Somit ist eine Einarbeitung in die jeweilige spezifische Syntax der externen Datenquelle für den Anwender nicht notwendig.

Eine mögliche Vorgehensweise der Installation von PolyBase auf dem SQL Server bietet Microsoft an.

Polybase Scale-Out Groups

Eine einfache SQL Server Instanz mit einer Polybase Engine kann zu Performance Beeinträchtigungen führen, wenn große Datenmengen aus externen Datenbanken abgefragt werden. Daher gestattet das Group Feature mehrere SQL Server Instanzen zu einem gemeinsamen Cluster zu vereinen, damit Abfragen mit großen Datenmengen aus externen Datenbanken besser skaliert werden und somit zur Performanceoptimierung beisteuern können. Die folgende Abbildung stellt hierzu die Vorgehensweise dar:
PolyBase 2
Quelle: Microsoft 

In jedem Cluster kann es nur einen Head Node und mindestens einen Compute Node geben. Diese Hierarchie entspricht der Aufteilung in Hadoop Clustern, in denen ein Name Node und mindestens ein Data Node existiert.

Der Head Node beinhaltet die SQL Server Instanz, auf der die Abfragen ausgeführt werden. Dabei werden die Bereiche der Abfrage, die externe Datenquellen beinhalten, auf die PolyBase Engine geschoben. Die Engine übersetzt die Abfrage und erzeugt Query Pläne anhand der erstellen Statistiken auf den externen Tabellen. Des Weiteren verteilt die Engine die Aufgaben an den Data Movement Service (DMS) weiter, der auch auf den Compute Nodes installiert ist.

Der Compute Node umfasst die SQL Server Instanzen, die beim Skalieren der großen Datenmengen Abfragen unterstützen sollen. Der PolyBase DMS transferiert Daten zwischen den externen Datenquellen und dem SQL Server und zwischen dem Head Node und den Compute Nodes.

Eine genaue Vorgehensweise der Konfiguration von PolyBase Server Clustern auf dem SQL Server bietet Microsoft an:

Hier ein Beispiel zum Anlegen einer externen Datenquelle mit Datenformat und Tabelle:

PolyBase 3

Die externe Tabelle kann dann mit SELECT * FROM Table_01 abgefragt werden.

Weitere Beispiele zum Erstellen von externen Datenquellen und Tabellen findet man bspw. unter:

https://www.sqlshack.com/sql-server-2016-polybase-tutorial/

https://docs.microsoft.com/en-us/sql/relational-databases/polybase/polybase-t-sql-objects

https://docs.microsoft.com/en-us/sql/relational-databases/polybase/polybase-queries

mm
Mostafa Shukoor
Mostafa Shukoor ist Diplom-Wirtschaftsinformatiker und bei arelium als Berater für den Bereich Business Intelligence tätig. Neben seinem fundierten Fachwissen im BI-Umfeld verfügt er über umfangreiche Kenntnisse in der Softwareentwicklung mit .NET (C# oder VB.NET).

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.