Python im SQL Server Ökosystem (Lesson 1)

Python zählt zu einer der weit verbreitetsten High-Level-Programmiersprachen. Dessen Designphilosophie hebt die Lesbarkeit des Codes und der Syntax hervor und reduziert (anders als bei C++ und Java) die Anzahl der Codezeilen in entsprechenden Programmierkonzepten. Python unterstützt zudem mehrere Programmierparadigmen wie zum Beispiel objektorientierte ,die aspektorientierte und die funktionale Programmierung. Weiterhin gibt es Python-basierte Bibliotheken, die verschiedene Schwerpunkte der Programmiersprache bedienen. Darunter fallen maschinelles Lernen, Unterstützung mehrdimensionaler Arrays und Matrizen, sowie die Bereitstellung ausdrucksstarker und flexibler Datenstrukturen.

Die Schnittstelle zwischen Python und SQL Server ist über SQL Server Machine Learning Services gegeben. Diese installiert eine Open-Source-Distribution (Anaconda Distribution) von Python und Microsoft, die die verteilte und parallele Verarbeitung von Daten unterstützen. Externe Python Skripts werden dank dessen Architektur in separaten Prozessen von SQL Server ausgeführt. SQL Server Machine Learning Services integriert die Python Programmiersprache und führt mit ihr Datenanalysen durch. Durch Python in Kombination mit T-SQL wird die Leistungsfähigkeit von Data Science und maschinellem Lernen auf OLTP Systemen deutlich gesteigert.

In den folgenden 5 Lektionen erläutern wir, wie Sie mittels T-SQL Python verwenden können, ohne dass Sie auf gängige BI-Methodiken zurückgreifen müssen.

Lektion 1 – Python im SQL Server Ökosystem

Mit der Einführung von SQL Server 2017 wurde die Programmiersprache Python integriert und die Arbeit mit Machine Learning Services vereinfacht. Die Machine Learning Services bieten parallelisierte Big Data Analyse-, Modellierungs-, Transformations- und Operationalisierungsfunktionen an und umfassen Python-Integrationen, die mittels T-SQL durchgeführt werden können.

Wie bereits erklärt, ist Python eine universelle Programmiersprache. Sie enthält Module, Exceptions, dynamische Typisierung, hohe Datentypen und Klassen. Der Schwerpunkt von Python liegt auf der einfacheren Lesbarkeit von Code. Der grundlegende Unterschied zu anderen Programmiersprachen ist, dass leistungsstarke Bibliotheken (auch Pakete genannt) für statistische Berechnungen, Visualisierungen und Verarbeitungen eingesetzt werden können. Es erleichtert beispielsweise die Berechnung von komplexen Statistiken. Verwendet wird Python dann mittels T-SQL Code. Da Python Skripte sich außerhalb des SQL Server Ökosystems befinden, werden diese mittels T-SQL in den Machine Learning Services ausgeführt. Zusätzlich hat SQL Server folgende Komponente eingeführt, die die Integration mit Python ermöglichen:

  • Launchpad: Das SQL Server Trusted Launchpad ist ein von SQL Server bereitgestellter Dienst zur Unterstützung der Ausführung externer Skripts, vergleichbar mit dem Volltextindizierungs- & Abfragedienst.
  • Binary Exchange Language (BXL) Server: Der BXL Server ist eine Datei, die externen Code unterstützt und wird in der Regel zur Kommunikation mit dem SQL Server von SQL Satellite ausgeführt.
  • SQL Satellite: Der SQL Satellite ist eine Erweiterbarkeits-API, die von der Datenbankengine bereitgestellt wird. Auch hier ist der Zweck der Unterstützung der Verarbeitung von externem Code. SQL Satellite wird zudem als Kommunikationsmedium zwischen BXL Server und SQL Server verwendet.

In der folgenden Infografik haben wir Ihnen die Zusammenarbeit der einzelnen Komponenten skizziert:

Infografik über die Zusammenarbeit Python und SQL Server
Infografik Zusammenarbeit Python und SQL Server

Der Regelablauf stellt sich folgendermaßen dar:

  1. Durch den Parameter @language=’Python’ wird die Anfrage für ein Python Vorgang an die Prozedur übergeben und schlussendlich an das Launchpad weitergeleitet.
  2. Der Launchpad Dienst startet den PythonLauncher und dieser wiederum startet den externen Python35-Prozess.
  3. Der BXL Server koordiniert nun in Zusammenarbeit mit der Python-Laufzeit den Datenaustausch und die Speicherung von Arbeitsergebnissen.
  4. SQL Satellite steuert und verwaltet die Kommunikation zwischen BXL Server und SQL Server. Die Ergebnisse dessen werden mittels SQL Satellite an den SQL Server übergeben.
  5. Der SQL Server ruft diese Ergebnisse ab und verwertet entsprechende Aufgaben und Prozesse.

Python mit T-SQL

Sowohl Python als auch T-SQL sind Programmiersprachen, die mit Daten arbeiten können. Beide sind so konstruiert, dass sie einzigartige Programmierfähigkeiten zum Besten geben. Wie kann man beide Vorteile vereinen und beispielsweise Python neben T-SQL verwenden?


Dafür verwendet Python Parallelverarbeitungsbibliotheken, mit denen Berechnungen gleichzeitig ausgeführt werden können. SQL Server seitig werden die Anaconda-Distributionen für die statistische und datenwissenschaftliche Datenverarbeitung verwendet. Als Ergänzung fungieren RevoScalePy-Bibliotheken, bei denen es sich um Python-Pakete handelt, die größtenteils in C oder C++ geschrieben wurden. RevoScalePy enthält eine Vielzahl von APIs, die der Datenverarbeitung und -analyse dienen. Diese APIs sind dafür da, große Berechnungen auf mehreren Kernen und Prozessoren verteilt durchzuführen. Python kann ebenfalls mit RevoScalePy arbeiten und nutzt sie in der Zusammenarbeit mit sehr großen Datensätzen, die nicht an einen lokalen Speicher gebunden sind.

Architektonisch ist es sinnvoll, T-SQL für den Umgang mit großen Datenmengen zu verwenden und Python als unabhängige Programmiersprache mit ihren individuellen Stärken passend zu ergänzen. Hier geht es vor allem um statistische Modellierung, maschinelles Lernen und predictive analytics.

Was bedeutet Python in SQL Server für DBA’s?

  • Python in SQL Server erleichtert DBAs grundsätzlich die Ressourcenüberwachung und -verwaltung.
  • Um die eigene Kompetenz in der Arbeit mit SQL Server zu erweitern, lohnt sich die Aneignung von Python für Datenbankentwickler sehr. Beispielsweise verwendet die Tabellendatenbearbeitung von Geschäftsanforderungen in Predictive Analytics Python in T-SQL.
  • Python wird ebenfalls von Azure Machine Learning verwendet.
  • Gerade im Hinblick auf die Ausweitung auf die Cloud ist es stark sinnvoll, sich entsprechende Kompetenzen von Python in T-SQL anzueignen.
  • Es empfiehlt sich die Ressourcennutzung von Python überwachen und steuern zu lassen.
  • DBAs können beispielsweise steuern, wer Python-Jobs ausführen kann und auch wer R-Pakete installieren und freigeben darf.
  • Für Datenanalysten lohnt sich Python in SQL extrem. Python unterstützt bei prädiktiven Analysen, maschinellem Lernen und dem Übertragen von Rohdaten.
  • In der Gruppe der Datenwissenschaftler wird Python als primäre Data-Science Sprache verwendet. Sollten Sie sich dazu entscheiden, diesen Berufsweg einzuschlagen, ist die Aneignung von R/Python unausweichlich.

Python Tools im SQL Server Ökosystem

In der Regel wird durch die Installation von Machine Learning Diensten die Anaconda Distribution von Python inklusive dessen Befehlszeilentools installiert. Verwenden Sie Microsoft Visual Studio 2017, können Sie ebenfalls erkennen, dass dort eine ähnliche Python-Umgebung integriert ist. Datenbankinterne Machine Learning Services werden als Erweiterung für die Ausführung von Python Skripts ausgeführt und im Normalfall mit dem SQL Server Management Studio (SSMS) verwendet. Es dient zur Entwicklung von T-SQL Skripten und zur Ausführung und Umwandlung von Python-Skripten in T-SQL.

Ausblick

Nachdem wir nun verstanden haben, wie sich Python in das SQL Server-Ökosystem einfügt, lernen wir in der nächsten Lektion, wie Sie Machine Learning Server und Dienste mit Python installieren und konfigurieren.

Lesen Sie mehr über diese und weitere spannenden Themen auf unserem Blog!