Was ist eine SQL Server Language Extension?

Bei Language Extensions handelt es sich um ein Feature von SQL Server, welches den Benutzer bei der Ausführung von externem Code unterstützt.

Mit der Einführung von SQL Server 2019 wird nun auch, standardmäßig mit Zulu Open JRE als Laufzeitumgebung, die Programmiersprache Java unterstützt. Es können jedoch auch andere Java Laufzeitumgebungen verwendet werden.

Wie können Language Extensions verwendet werden?

Um externen Code auszuführen, verwendet die Languange Extension das sogenannte Erweiterungsframework. Hierbei findet die Codeausführung komplett isoliert von allen Kernprozessen des Moduls statt, ist jedoch vollständig in die SQL Server-Abfrageausführung integriert. So müssen keine Daten über das Netzwerk abgerufen werden, da der Code, in welchem sich die Daten befinden, auf diese direkten Zugriff hat.

Als Schnittstelle zum Ausführen von externem Code dient die vom System gespeicherte Prozedur sp_execute_external_script. Externe Sprachen werden mit CREATE EXTERNAL LANGUAGE definiert.

Eine neue Sprache wird mithilfe des CREATE EXTERNAL LANGUAGE Befehls wie folgt definiert:

USE master
CREATE EXTERNAL LIBRARY sdk
FROM (CONTENT = '<path-content>')
WITH (LANGUAGE = 'MyLanguage')
GO

Wobei CONTENT in Zeile 2, abhängig von der gewählten Programmiersprache, die nötigen Ressourcen zum Einfügen bereit stellt. Im Falle Java währe es beispielsweise:

USE master
FROM (CONTENT = '/mssql-java-lang-extension.jar')

Es gibt vielerlei Vorteile die Language Extension mit sich bringen.

  • Durch das näherbringen einer externen Ausführung einer Sprache näher an die Datenquelle selbst, kann eine unsichere und uneffiziente Verschiebung der Daten verhindert werden.
  • Zusammenfassungen und Aggregationen können dank Memory-Tabellen sehr schnell durchgeführt werden und sind eine optimale Ergänzung zu Data Science.
  • SQL Server ist der zentrale Betriebspunkt für viele andere Datenverwaltungsaufgaben- und anwedungen. Indem Daten verwendet werden, die sich in der Datenbank befinden, kann sicher gestellt werden, dass die von Java verwendetet Daten konsistent und aktuell sind.

Schreibe einen Kommentar