Microsoft bietet eine breite Palette von Produkten für den Einsatz im Bereich Business Intelligence und Datenanalyse, die ich in mehreren Beiträgen gerne vorstellen möchten. Eines der mächtigsten Tools ist Microsoft SQL Server, den ich heute im Detail anschaue. Wir haben die 2017 eingeführte Version nun bereits seit einiger Zeit für verschiedene Projekte im Bereich Datenanalyse im Einsatz.
Einleitend sei gesagt, dass der SQL Server 2017 eine Weiterentwicklung des SQL Servers 2016 ist, mit dem sich Microsoft endlich von der Strategie einer einzigen Plattform (Windows) verabschiedet und den Weg zur Multiplattform nun auch für SQL Server eingeschlagen hat. Während die Verantwortlichen bei Microsoft Anfang des Jahr 2000 Linux noch für ein „Krebsgeschwür“ hielten, ist der SQL Server für Linux heutzutage das erfolgreichste Server Produkt.
Der SQL Server 2017 ermöglicht die Entwicklung in verschiedenen Entwicklungssprachen, was besonders für Machine Learning und Künstliche Intelligenz eine notwendige Voraussetzung ist. Weiterhin ist es möglich, den SQL Server entweder lokal oder in der Cloud auszuführen. Als Betriebssysteme können Windows-basierte sowie Linux und Linux-basierte Docker-Container eingesetzt werden.
Nun werden wir uns die Neuigkeiten der einzelne Komponente des SQL Server ein bisschen näher anschauen, dabei legen wir den Fokus auf folgende Punkte:
- Datenbank Engine
- Integration Services
- Analysis Services
- Reporting Services
- Maschine Learning Services
Datenbank Engine
Die wichtigste und grundlegendste Änderung befindet sich in der Datenbank Engine und es handelt sich um einen Sicherheits-Feature. Dabei geht es um die Sicherheit der sogenannten „CLR Assemblies“. CLR (Common Language Runtime) Assemblies sind Programme, die der Benutzer in .NET schreibt und der SQL Server ausführt. Bevor andere Sprachen wie Python oder R direkt in SQL Server integriert wurden, war das die einzige Möglichkeit, um spezielle Berechnungen oder Aktionen durch SQL Server durchführen zu lassen. Jedes Programm das auf dem Computer ausgeführt wird, wird von einer Autorität überwacht und muss bestimmte Sicherheitsbedingungen erfüllen.
Als CLR in den SQL Server integriert wurde, hat diese Rolle die sogenannte CAS (Code Access Security) übernommen und war damit für die Sicherheit (Zugriffsrechte) der „CLR Assemblies“ verantwortlich.
Ab dem SQL Server 2017 wird die sogenannte „CLR strict security“ eingeführt und in Standard Einstellungen aktiviert. Die „strict security“ bedeutet, dass alle CLR Assemblies als UNSAFE behandelt werden und somit weniger Zugrifstrechte bekommen. Das erhöht die Sicherheit der Assemblies deutlich. Ohne aktive „strict security“ kann eine Assembly sogar sysadmin-Rechte bekommen, was Angreifer nutzen könnten, um über den SQL Server das komplette System zu kompromittieren.
Nachdem „strict security“ aktiviert wurde, können nur signierte Assemblies geladen werden. Signierte Assemblies sind deswegen wichtig, weil Sie mit einem Zertifikat geschützt sind und nur der Inhaber des Zertifikats sie ändern kann. So wird gewährleistet, dass der Angreifer sie nicht manipulieren oder austauschen kann.
Bei weiteren Verbesserungen der Engine geht es hauptsächlich um Performance Steigerung. Ein Beispiel ist die fortsetzbare Online-Index-Neuerstellung. Bei großen Tabellen kann eine Index -Erstellung (wird durchgeführt zur verbesserten Performance bei Suchanfragen) sehr lange dauern und wenn ein Fehler passiert und der Prozess abgebrochen wird, musste bis jetzt der ganze Prozess erneut durchgeführt werden. Ab dem SQL Server 2017 wird der Vorgang dort fortgesetzt, wo er nach dem Fehler aufgehört hat.
Weitere Verbesserungen wie adaptive Abfrageverarbeitung, Adaptive Joins und Feedback zur Speicherzuweisung im Batchmodus bringen Performance Steigerungen bei den Abfragen.
Die automatische Datenbankoptimierung überwacht und analysiert fortlaufend die Datenbank, lernt (Maschinen Learning) und identifiziert potenzielle Verbesserungen oder künftige Probleme. Dieser Prozess sucht nach optimalen Ausführungsplänen und überwacht nach jeder Änderung fortlaufend die Leistung.
Weitere Verbesserungen erfolgten im Bereich Massenzugriff wie SELECT INTO und BULK INSERT. Bei SELECT INTO ist es jetzt möglich, eine explizite Dateigruppe als Standard Dateigruppe bei der Abfrage festzulegen.
Integration Services
Bei den SQL Server Integration Services sind die wichtigsten Neurungen – neben der bereits erwähnten Linux-Integration – die Scale-Out Funktion und die Unterstützung von OData-Datenquellen.
Die Scale-Out Funktion ermöglicht die Ausführung von SSIS Paketen über mehrere Knoten (Cluster). So ist es möglich, die Beladung parallel über mehrere Server zu verteilen. Die Ausführung wird von einem Master Server überwacht. Einen ähnlichen Ansatz findet man im Bereich Big Data bei Hadoop Clustern, wenn die Verarbeitung von einem Map-Reduce Job über mehrere (auch tausende) Cluster verteilt wird.
Außerdem ist es nun möglich, in SSIS einen OData Feed von Microsoft Dynamics AX und CRM als Konnektor zu verwenden.
Analysis Services
Wie wir schon im Beitrag zu multidimensionalen vs tabellarische Datenbank-Modellen beschrieben, war das multidimensionale Modell bis zum SQL Server 2016 Standard. Ab dem SQL Server 2017 ist die Standardinstallationsoption für Analysis Services der tabellarische Modus. Das ist auch meiner Meinung nach die Zukunft der Datenanalyse. Künftig werden DAX und M-Abfragen, die zum tabellarischem Modus gehören, mehr unterstützt und der DAX-Editor ist jetzt in den SQL Server 2017 Data Tools fest integriert.
Außerdem unterstützen die Analysis Services jetzt den Kompatibilitätsgrad 1400 für tabellarische Modelle.
Reporting Services
Reporting Services sind nicht mehr Bestandteil des SQL Server Installationspakets und müssen separat runtergeladen und installiert werden. Diese Änderung geht mit der Bereitstellung des Power BI Report Servers einher. Somit erhält der Anwender die Möglichkeit, sowohl den Report Server oder aber auch den Power BI Report Server losgelöst vom SQL Server und somit auch von der verwendeten SQL Server Version zu nutzen.
Machine Learning Services
Machine Learning gewinnt immer mehr an Bedeutung. Es hängt mit der Entwicklung von künstlicher Intelligenz (KI) zusammen. Wie bereits erwähnt ist es nun möglich, CLR (.NET) Assemblies im SQL Server auszuführen. Dies war der erste Schritt zur Ausführung komplizierter Berechnungen im SQL Server. Bei KI und Machine Learning haben sich aber R oder Python als Standard durchgesetzt.
Python ist eine universelle Programmiersprache und für die meisten Betriebssysteme (Linux, Windows, Mobile Applikationen …) frei einsetzbar. Sie findet Einsatz in Webanwendungen (z.B. Odoo), in Geräten wie 100 Dollar Laptop oder, wegen der großen Anzahl an guten Bibliotheken, auch in der Wissenschaft.
R ist ebenfalls eine freie Software und wurde von Anfang an für statistische Berechnungen konzipiert. Da Machine Learning hauptsächlich statistische Methoden wie Regression oder Klassifizierung anwendet, ist R bei Maschinen Learning ein wichtiger Bestandteil.
Außerdem hat Microsoft im Jahr 2015 die Firma Revolution Analytics gekauft, die Schöpfer der Analyse Plattform Revolution R. Neben Microsoft setzen auch weitere namhafte Hersteller wie Oracle, SAP, Hewlett-Packard und andere auf R.
Im SQL Server 2017 ist jetzt neben R (seit Version 2016) auch Python fest integriert. Beide Sprachen müssen aber separat als SQL Server – Maschine Learning Dienste installiert werden. Im Gegensatz zu den Reporting Services ist die Installationsroutine aber mit der des SQL Servers verknüpft. Daneben ist es auch möglich, einen eigenständigen Machine Learning-Server, ohne Datenbank Engine Nutzung von Python und R, zu nutzen. Mit den Machine Learning Diensten werden R- und Python-Bibliotheken installiert, mit denen die verschiedene Maschinen Learning Algorithmen wie Regressionen und Klassifizierungen durchgeführt werden können. Außerdem ist es möglich, auch direkt in T-SQL eine Predict Funktion auszuführen.
Fazit
Mit dem SQL Server 2017 zeigt Microsoft endgültig, dass nicht nur Produkte wie Office, sondern auch Produkte im Server-Umfeld zur Multiplattform dazugehören. Der Benutzer hat die Wahl zwischen verschiedenen Betriebssystemen, der Cloud oder der Ausführung in einem Docker Container.
Die zentralen Themen sind Sicherheit und Maschinen Learning, nicht nur in der Azure Cloud, sondern auch in der On Premise Lösungen. Machine Learning ist jetzt auch in der Datenbank Engine integriert und überwacht den Server im Hinblick auf optimale Leistung und Problem-Vorhersage oder -Vermeidung.