run java in sql server€¦ · java extensibility sdk for microsoft sql server...

29
Nellie Gustafsson – Senior Program Manager Run Java in SQL Server

Upload: others

Post on 29-Jul-2020

57 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Run Java in SQL Server€¦ · Java Extensibility SDK for Microsoft SQL Server mssql-java-lang-extension.jar API: Extensibility Framework for Microsoft SQL Server import com.microsoft.sqlserver.javalangextension

Nellie Gustafsson – Senior Program Manager

Run Java in SQL Server

Page 2: Run Java in SQL Server€¦ · Java Extensibility SDK for Microsoft SQL Server mssql-java-lang-extension.jar API: Extensibility Framework for Microsoft SQL Server import com.microsoft.sqlserver.javalangextension

SQL Server

2016

SQL Server external language integrations

SQL Server

2017

SQL Server

2019

PythonR

SQL Server Language Extensibility

R-Services

SQL Server Machine Learning Services

Page 3: Run Java in SQL Server€¦ · Java Extensibility SDK for Microsoft SQL Server mssql-java-lang-extension.jar API: Extensibility Framework for Microsoft SQL Server import com.microsoft.sqlserver.javalangextension

Why Java?

Source: Stack Overflow survey 2018 Tiobe programming language index

Page 4: Run Java in SQL Server€¦ · Java Extensibility SDK for Microsoft SQL Server mssql-java-lang-extension.jar API: Extensibility Framework for Microsoft SQL Server import com.microsoft.sqlserver.javalangextension

Java - Example use cases

• Move middle-tier (application server) logic closer to the data

• Oracle Java Procs migration

• Regular expressions (Regex)

• Natural language processing

• Machine Learning

Page 5: Run Java in SQL Server€¦ · Java Extensibility SDK for Microsoft SQL Server mssql-java-lang-extension.jar API: Extensibility Framework for Microsoft SQL Server import com.microsoft.sqlserver.javalangextension

SQL Server Java extension

Java Extensibility SDK for

Microsoft SQL Server

mssql-java-lang-extension.jar

API: Extensibility Framework for

Microsoft SQL Server

import com.microsoft.sqlserver.javalangextension

public PrimitiveDataset execute(…) {

//JAVA CODE

javaextension.dll/.so

SQL Server

2019

EXEC sp_execute_external_script@language = N'Java'

, @script = N'packageName.ClassName', @input_data_1 = N'SELECT id, text FROM testdata', @params = N'@parameter nvarchar(40)', @parameter = @parameterwith result sets ((column1 int, column2 nvarchar(30)))

CREATE EXTERNAL LIBRARY

CREATE EXTERNAL LANGUAGE

Page 6: Run Java in SQL Server€¦ · Java Extensibility SDK for Microsoft SQL Server mssql-java-lang-extension.jar API: Extensibility Framework for Microsoft SQL Server import com.microsoft.sqlserver.javalangextension

Architecture

Page 7: Run Java in SQL Server€¦ · Java Extensibility SDK for Microsoft SQL Server mssql-java-lang-extension.jar API: Extensibility Framework for Microsoft SQL Server import com.microsoft.sqlserver.javalangextension

3rd Party Extensibility Architecture

sp_execute_external_script

@language = ‘Java’

MSSQLSERVER Service

MSSQLLAUNCHPAD Service

sqlsatellite.dll

/satellite.so

“extension” process exthost

JVM

1

2

3

JNI

extension.dll

/extension.so

Page 8: Run Java in SQL Server€¦ · Java Extensibility SDK for Microsoft SQL Server mssql-java-lang-extension.jar API: Extensibility Framework for Microsoft SQL Server import com.microsoft.sqlserver.javalangextension

Security and Governance

• Reduced surface area and isolation

• Script execution requires explicit permission

• External language processes have limited privileges

• Built-in Resource Governance

Page 9: Run Java in SQL Server€¦ · Java Extensibility SDK for Microsoft SQL Server mssql-java-lang-extension.jar API: Extensibility Framework for Microsoft SQL Server import com.microsoft.sqlserver.javalangextension

CREATE EXTERNAL LANGUAGE JavaFROM(CONTENT=‘<sql server install path>\MSSQL\Binn\javaextension.zip', FILE_NAME=N’javaextension.dll’,PLATFORM=WINDOWS,

ENVIRONMENT_VARIABLES= 'JRE_HOME=

<server path>\Zulu\zulu-8\jre\;DEBUG=0;')

CREATE EXTERNAL LANGUAGE JavaFROM(CONTENT=‘/opt/mssql/lib/extensibility/java-lang-extension.tar.gz', FILE_NAME=N’javaextension.so’,PLATFORM=LINUX,

ENVIRONMENT_VARIABLES= 'JRE_HOME=

<server path>\Zulu\zulu-8\jre\;DEBUG=0;')

External Language – New DDL

Page 10: Run Java in SQL Server€¦ · Java Extensibility SDK for Microsoft SQL Server mssql-java-lang-extension.jar API: Extensibility Framework for Microsoft SQL Server import com.microsoft.sqlserver.javalangextension

External Libraries

No need to set permissions to CLASSPATH if you use external libraries.

CREATE EXTERNAL LIBRARY myJarFROM (CONTENT = ‘<path to .jar file or .zip file>') WITH (LANGUAGE = ‘Java'); GO

Page 11: Run Java in SQL Server€¦ · Java Extensibility SDK for Microsoft SQL Server mssql-java-lang-extension.jar API: Extensibility Framework for Microsoft SQL Server import com.microsoft.sqlserver.javalangextension

EXEC sp_execute_external_script

@language = N’ Java'

, @script = N'packageName.ClassName'

, @input_data_1 = N'SELECT id, text FROM testdata'

, @params = N'@parameter nvarchar(40)'

, @parameter = @parameter

with result sets ((column1 int, column2 nvarchar(30)))

Call external language from SQL Server

Page 12: Run Java in SQL Server€¦ · Java Extensibility SDK for Microsoft SQL Server mssql-java-lang-extension.jar API: Extensibility Framework for Microsoft SQL Server import com.microsoft.sqlserver.javalangextension

Demo - Regex

Page 13: Run Java in SQL Server€¦ · Java Extensibility SDK for Microsoft SQL Server mssql-java-lang-extension.jar API: Extensibility Framework for Microsoft SQL Server import com.microsoft.sqlserver.javalangextension

• GitHub Microsoft Open Source Repository:

aka.ms/mssql-java-lang-extension

• Host the source code for Java SDK, Java extension and Extension API on GitHub• This means that the community can build 3rd party language extensions and use Java as

example

• Sub folders for language extension in repository that we support

• Under Releases on GitHub: Signed SDK jar & Source.zip/tar.gz

SQL Server Setup• Installs signed SDK jar file & Extension .dll/.so

• In future: Supported Java distribution

Release of SDK and Extension API

Page 14: Run Java in SQL Server€¦ · Java Extensibility SDK for Microsoft SQL Server mssql-java-lang-extension.jar API: Extensibility Framework for Microsoft SQL Server import com.microsoft.sqlserver.javalangextension

Questions?

Page 15: Run Java in SQL Server€¦ · Java Extensibility SDK for Microsoft SQL Server mssql-java-lang-extension.jar API: Extensibility Framework for Microsoft SQL Server import com.microsoft.sqlserver.javalangextension

Thank you.

Page 16: Run Java in SQL Server€¦ · Java Extensibility SDK for Microsoft SQL Server mssql-java-lang-extension.jar API: Extensibility Framework for Microsoft SQL Server import com.microsoft.sqlserver.javalangextension
Page 17: Run Java in SQL Server€¦ · Java Extensibility SDK for Microsoft SQL Server mssql-java-lang-extension.jar API: Extensibility Framework for Microsoft SQL Server import com.microsoft.sqlserver.javalangextension
Page 18: Run Java in SQL Server€¦ · Java Extensibility SDK for Microsoft SQL Server mssql-java-lang-extension.jar API: Extensibility Framework for Microsoft SQL Server import com.microsoft.sqlserver.javalangextension
Page 19: Run Java in SQL Server€¦ · Java Extensibility SDK for Microsoft SQL Server mssql-java-lang-extension.jar API: Extensibility Framework for Microsoft SQL Server import com.microsoft.sqlserver.javalangextension
Page 20: Run Java in SQL Server€¦ · Java Extensibility SDK for Microsoft SQL Server mssql-java-lang-extension.jar API: Extensibility Framework for Microsoft SQL Server import com.microsoft.sqlserver.javalangextension
Page 21: Run Java in SQL Server€¦ · Java Extensibility SDK for Microsoft SQL Server mssql-java-lang-extension.jar API: Extensibility Framework for Microsoft SQL Server import com.microsoft.sqlserver.javalangextension
Page 22: Run Java in SQL Server€¦ · Java Extensibility SDK for Microsoft SQL Server mssql-java-lang-extension.jar API: Extensibility Framework for Microsoft SQL Server import com.microsoft.sqlserver.javalangextension
Page 23: Run Java in SQL Server€¦ · Java Extensibility SDK for Microsoft SQL Server mssql-java-lang-extension.jar API: Extensibility Framework for Microsoft SQL Server import com.microsoft.sqlserver.javalangextension
Page 24: Run Java in SQL Server€¦ · Java Extensibility SDK for Microsoft SQL Server mssql-java-lang-extension.jar API: Extensibility Framework for Microsoft SQL Server import com.microsoft.sqlserver.javalangextension
Page 25: Run Java in SQL Server€¦ · Java Extensibility SDK for Microsoft SQL Server mssql-java-lang-extension.jar API: Extensibility Framework for Microsoft SQL Server import com.microsoft.sqlserver.javalangextension
Page 26: Run Java in SQL Server€¦ · Java Extensibility SDK for Microsoft SQL Server mssql-java-lang-extension.jar API: Extensibility Framework for Microsoft SQL Server import com.microsoft.sqlserver.javalangextension
Page 27: Run Java in SQL Server€¦ · Java Extensibility SDK for Microsoft SQL Server mssql-java-lang-extension.jar API: Extensibility Framework for Microsoft SQL Server import com.microsoft.sqlserver.javalangextension
Page 28: Run Java in SQL Server€¦ · Java Extensibility SDK for Microsoft SQL Server mssql-java-lang-extension.jar API: Extensibility Framework for Microsoft SQL Server import com.microsoft.sqlserver.javalangextension

Thank you.

Page 29: Run Java in SQL Server€¦ · Java Extensibility SDK for Microsoft SQL Server mssql-java-lang-extension.jar API: Extensibility Framework for Microsoft SQL Server import com.microsoft.sqlserver.javalangextension

© Copyright Microsoft Corporation. All rights reserved.