SQL Server 2019 incluye novedades a nivel de desarrollo y t-sql que nos ayudarán a la mejora en el rendimiento de nuestras aplicaciones. En esta sesión nos centraremos en las nuevas posibilidades que tenemos como desarrolladores de Bases de datos.
MAD · NOV 22-23 · 2019
Mejoras y novedades para
desarrolladores en SQL Server 2019
Enrique Catalá Bañuls
Data platform modernization team leader at SolidQ
ecatala@solidq.com | @enriquecatala
MAD · NOV 22-23 · 2019
Enrique Catalá Bañuls
Ingeniero informatico
Microsoft Data Platform MVP
DPM team leader en SolidQ
Performance tuning, HA,
∘ Modernizaciones de plataforma
∘ …
ecatala@solidq.com
@enriquecatala
MAD · NOV 22-23 · 2019
Agenda
“Sabores” SQL Server 2019
SQL Server, contenedores y novedades
Data Virtualization
Silent data truncation
Clasificacion de datos sensibles
Variables de tipo tabla
Funciones escalares
UTF8
Extensiones de lenguaje
Grafos
MAD · NOV 22-23 · 2019
Data platform modernization
SQL
SQL
MAD · NOV 22-23 · 2019
SQL Serverless: Una alternativa interesante
Solo recomendable para entornos DEV
Permite definir vCores (min,max) y que fluctúen según carga
Coste por segundos
Autopausa
Si pausado, compute cost = 0
Ideal para DevOps e integración continua
https://docs.microsoft.com/es-es/azure/sql-database/sql-database-serverless
MAD · NOV 22-23 · 2019
SQL Server 2019, Linux y contenedores
New Features for Linux
Replication
Change Data Capture
Distributed transactions
Machine Learning
Polybase
Tempdb files auto-config
Containers
Microsoft Container Registry
Red Hat Images
Non-root Containers
SQL Server on Windows
Containers (Private Preview)
MAD · NOV 22-23 · 2019
SQL Server, Linux containers and windows
1. Contenedores Linux corren ya “nativos” en W10 y WS2019 con LCOW
1. Simultaneamente si se quiere (*kubernetes todavía no)
2. Necesitamos kernel 1903 (Oct-2019)
2. SQL Server 2019 corre en contenedor non-root
1. SQL Server 2017 corre en contenedor root
MAD · NOV 22-23 · 2019
SQL Server, Linux containers and windows
1. Lanzar imagen non-root como usuario root
docker run -e "ACCEPT_EULA=Y" -e "SA_PASSWORD=MyStrongPassword" -u 0:0 -p
1433:1433 -d mcr.microsoft.com/mssql/server:2019-latest
2. Lanzar imagen non-root con usuario de tu máquina
docker run -e "ACCEPT_EULA=Y" -e "SA_PASSWORD=MyStrongPassword" --cap-add
SYS_PTRACE -u $(id -u myusername):0 -p 1433:1433 -d
mcr.microsoft.com/mssql/server:2019-latest
3. Lanzar imagen como usuario cualquiera
docker run -e "ACCEPT_EULA=Y" -e "SA_PASSWORD=MyStrongPassword" --cap-add
SYS_PTRACE -u (id -u myusername):(id -g myusername) -v /path/to/mssql:/var/opt/mssql
-p 1433:1433 -d mcr.microsoft.com/mssql/server:2019-latest
MAD · NOV 22-23 · 2019
Demo
+++++[>++[>+>+ ++>++++>++++>++++>++++++
>++++++>+++++++ ++>+++++++++<<<<<<<<<-]>>
>+>+>+> >>>+[<]< -]>> >++>-->>+>>++>+
>--<<<< <<<..... .> ....<......
...>... <<.>.... >.>>>>>.<.
<<<<.. ..<.... >..>>>>>.<
.<<<<. >>>.<<. >>>>>.<.<
<<<<< <.>...> >>>.>>>.
<<<.< <<<..>> .>>>>>.<
<.<<< <<...>> >>>.<<<
<..<. ...>... <<.>..>.
>>.<.<<...>>...<<...>>...< <....>>..
.<<<.>.>>..>.<<.......<.... .....>...
<<.>... .....>...
<...... .>>>.<<..
<<.>... .....>...<......>.>>.<.<<<
.>...... ..>>...<<....>>.....>.<..>.
• Dockerfile and compose
• Azure data studio
notebooks
• Silent data truncation
• Data classification
• Variables tipo tabla
• Funciones escalares
• UTF8
MAD · NOV 22-23 · 2019
Extensiones de lenguaje en SQL Server
SQL Server 2019 incorpora extensibilidad de lenguaje
En el marco de machine learning services
Primera implementación: JAVA
Funciona en Windows y Linux (excluidos contenedores por ahora)
MAD · NOV 22-23 · 2019
Extensiones de lenguaje en SQL Server: Input
Definido con “CREATE EXTERNAL LANGUAGE”
Por ahora solo desplegado JAVA
R y Python no son extensibles en este momento
MAD · NOV 22-23 · 2019
Extensiones de lenguaje en SQL Server: Input
InputDataCol
almacena los valores de datos de entrada por columna. N es el número de
columnas.
inputNullMap
Se utiliza para la gestión de valores nulos en la aplicación java que
desarrollemos y es rellenada por SQL Server antes de la ejecución de la
función de usuario.
MAD · NOV 22-23 · 2019
Extensiones de lenguaje en SQL Server: Output
outputDataColN
Similar a inputDataSet, para cada columna de salida que el programa de
Java envía a SQL Server, se debe declarar una variable outputDataCol
numberofOutputCols
SQL Server asigna a esta variable el número de columnas de datos de
salida que espera tener cuando finaliza la ejecución de la función de
usuario.
outputNullMap
Mapa de NULL se utiliza la extensión para indicar qué valores son
nulos. Se requiere esto, ya que los tipos primitivos no son compatibles
con null. Los valores NULL se indican mediante "true".
MAD · NOV 22-23 · 2019
Ejemplo de uso con JAVA
DECLARE @myClassPath nvarchar(50)
DECLARE @n int
SET @n = 3
SET @myClassPath = N'C:SummitpkgNgram.jar'
EXEC sp_execute_external_script
@language = N'Java'
, @script = N'pkg.Ngram.getNGrams'
, @input_data_1 = N'SELECT id, Text FROM reviews'
, @parallel = 0
, @params = N'@CLASSPATH nvarchar(30), @param1 INT'
, @classpath= @myClassPath
, @param1 = @n
with result sets ((ID int, ngram varchar(20)))
MAD · NOV 22-23 · 2019
Polybase v2
Engine de procesamiento distribuido integrado en SQL Server
Consulta el dato allá donde esté (olvída ETL)
Rendimiento distribuido y escalable de consultas
Despliegue manual con SQL Server
Auto despliegue/optimizacion con Big Data Clusters
MAD · NOV 22-23 · 2019
Polybase a hdfs, Oracle, mongodb,…
CREATE EXTERNAL DATA SOURCE mydatasource_rc
WITH (
TYPE = HADOOP,
LOCATION = 'hdfs://xxx.xxx.xxx.xxx:8020'
);
CREATE EXTERNAL FILE FORMAT myfileformat_rc
WITH (
FORMAT_TYPE = RCFILE,
SERDE_METHOD =
'org.apache.hadoop.hive.serde2.columnar.LazyBinaryColumnarSerDe'
);
CREATE EXTERNAL TABLE ClickStream_rc (
url varchar(50),
event_date date,
user_ip varchar(50)
)
WITH (
LOCATION='/webdata/employee_rc.tbl',
DATA_SOURCE = mydatasource_rc,
FILE_FORMAT = myfileformat_rc
)
;
-- Querying table
SELECT TOP 10 (url) FROM ClickStream_rc WHERE user_ip = 'xxx.xxx.xxx.xxx'
MAD · NOV 22-23 · 2019
Grafos en SQL Server 2019
Permiten por fin constraints de aristas
MAD · NOV 22-23 · 2019
Gracias!
■ “Sabores” SQL Server 2019
■ SQL Server, contenedores y novedades
■ Data Virtualization
■ Silent data truncation
■ Clasificacion de datos sensibles
■ Variables de tipo tabla
■ Funciones escalares
■ UTF8
■ Extensiones de lenguaje
■ Grafos
ecatala@solidq.com
@enriquecatala
Editor's Notes
ddddd
LCOW -> Linux containers on Windows corren contenedores hyper-v aislados
https://docs.microsoft.com/en-us/virtualization/windowscontainers/quick-start/quick-start-windows-10-Linux
SQL Server 2019
Mostrar el proyecto https://github.com/enriquecatala/mssql-server-samplesdb
Hacer un par de queries con notebooks
En el marco de extensibilidad de machine learning services
En este caso el ejemplo tira contra formato ORC
Mostrar el proyecto https://github.com/enriquecatala/mssql-server-samplesdb
Hacer un par de queries con notebooks