35
SQL Server 2012: Novedades SQL Server para desarrolladores Enrique Catalá Bañuls Mentor – Área relacional - SolidQ MCT – MS Technical Ranger – MCTS – MCITP – MAP 2010 [email protected]

Novedades SQL Server 2012 para desarrolladores

Embed Size (px)

DESCRIPTION

Sesión para PASS Latam sobre SQL Server 2012 para desarrolladores

Citation preview

Page 1: Novedades SQL Server 2012 para desarrolladores

SQL Server 2012: Novedades SQL Server para desarrolladores

Enrique Catalá Bañuls Mentor – Área relacional - SolidQ

MCT – MS Technical Ranger – MCTS – MCITP – MAP 2010

[email protected]

Page 2: Novedades SQL Server 2012 para desarrolladores

αIngeniero Informático

αMentor en SolidQ

αMicrosoft Technical Ranger

αColaborador destacado en MSDN Spain

αMicrosoft Active Professional 2010

αMicrosoft Certified Trainer

αMicrosoft Certified IT Professional β Database Developer 2008

β Database Administrator 2008

αArquitecto de entre otros

Health Check, SQL2Cloud y SCODA

Enrique Catalá

Page 3: Novedades SQL Server 2012 para desarrolladores

Objetivos de la sesión

• Especificación robusta de metadatos • Mejoras de TRY-CATCH • Nuevas funciones escalares • Mejoras en formateo de datos • Paginación • Secuencias • Mejoras

– FTS – Spatial

• CLÁUSULA OVER – Windowing – Análisis

Page 4: Novedades SQL Server 2012 para desarrolladores

Especificacion robusta de metadatos

• Podemos definir “contratos” de conjuntos de resultado

– Número de resultsets devueltos

– Tipos de datos y columnas

• Nueva cláusula WITH RESULT SETS permitida:

– T-SQL Dinámico

– Cláusulas OPENROWSET

– Procedimientos almacenados

Page 5: Novedades SQL Server 2012 para desarrolladores

TRY-CATCH y…THROW

• Por fin disponemos de operación THROW

• Si un THROW no lleva catch asociado, la sesión finaliza

• Se permite relanzar hacia arriba en CATCH o ejecución aislada

THROW [ { error_number | @local_variable }, { message | @local_variable }, { state | @local_variable } ] [ ; ]

Page 6: Novedades SQL Server 2012 para desarrolladores

Nuevas funciones

• EOMONTH(date [, months_to_add]) • DATEFROMPARTS(year, month, day) • TIMEFROMPARTS(hour, minutes, seconds, fractions, scale) • DATETIME2FROMPARTS(year, month, day, hour, minutes, seconds,

fractions, scale) • DATETIMEFROMPARTS(year, month, day,hour, minutes, seconds,

milliseconds) • SMALLDATETIMEFROMPARTS(year, month, day,hour, minutes) • TRY_CONVERT( data_type [(lenght)], expression [, style]) • FORMAT( value, format [, culture] ) • PARSE( string_value as data_type [USING culture] ) • TRY_CONVERT( string_value as data_type [,USING culture]) • IIF( boolean expr, true_value, false_value) • CHOOSE( index, val1, val2 [, valN]) • CONCAT(val1, val2…[, valN])

Page 7: Novedades SQL Server 2012 para desarrolladores

Mejoras en formateo de datos

• FORMAT()

– Formatea un valor con máxima flexibilidad

– Se pueden generar valores inválidos

• PARSE()

– Transforma el valor de entrada al tipo especificado

– Puede generar excepcion

• TRY_PARSE()

– Intenta convertir y si puede lo hace

– No genera excepciones

Page 8: Novedades SQL Server 2012 para desarrolladores

PAGINACION

• “ASYNC_NETWORK_IO”: “Occurs on network writes when the task is blocked behind the network. Verify that the client is processing data from the server.”

• “PAGEIOLATCH_SH: “Occurs when a task is waiting on a latch for a buffer that is in an I/O request. The latch request is in Shared mode. Long waits may indicate problems with the disk subsystem.”

Page 9: Novedades SQL Server 2012 para desarrolladores

PAGINACION: Antes…

• Con SQL Server 2005 aparecieron las funciones de Ranking

– Pudimos empezar a dar solución al problema de la paginación, con algo de imaginación, eso si

Page 10: Novedades SQL Server 2012 para desarrolladores

Paginación: Ahora…

• Sintaxis ANSI que puede servir a fines idénticos a TOP(n) • Muchísima mas potente • Filtro aplicado sobre la cláusula ORDER BY • OFFSET indica cuantas filas hay que saltarse • FETCH indica cuantas filas se deben devolver tras el OFFSET

• *Por ahora, mismo plan de ejecución

Page 11: Novedades SQL Server 2012 para desarrolladores

Cláusula OFFSET/FETCH

• Clara y concisa

Page 12: Novedades SQL Server 2012 para desarrolladores

Secuencias

• Una secuencia es un objeto usado para autogenerar números basados en criterios flexibles

• Es la evolución de IDENTITY • Muy flexible y con posibilidad de optimizar su rendimiento • Solo se soporta nombre de dos partes • La equivalencia lógica con IDENTITY

Page 13: Novedades SQL Server 2012 para desarrolladores

Secuencias: ¿Por qué?

• Sirven para crear valores de clave en inserciones – Permiten incluso almacenar dicho valor en variable

• NEXT VALUE FOR – Función para obtener el siguiente valor de la secuencia

• Sp_sequence_get_range – Obtiene un rango de valores de secuencia que mas

tarde podremos utilizar

Page 14: Novedades SQL Server 2012 para desarrolladores

Secuencias vs Identity

Option Identity Sequences

Obtain value before use No Yes

Table-Independent No Yes

Use in UPDATE No Yes

Used in SELECT No Yes

Control order Not in SELECT INTO

Yes in INSERT SELECT

Yes

Effected by rollback No No

Can associate/disassociate with an existing

column

No Yes

Can define minimum and maximum values No Yes

Can cycle No Yes

Can change increment No Yes

Supports defining caching No Yes

Obtain range of values No Yes

Page 15: Novedades SQL Server 2012 para desarrolladores

Secuencias: Rendimiento

• Se utiliza por defecto caché de 50 elementos – Identity utiliza cacheo

de 10

• Se puede modificar el cacheo e incluso deshabilitar

• Cuanto más caching, mas rendimiento – No linear

• Posibilidad de huecos ante caidas

Page 16: Novedades SQL Server 2012 para desarrolladores

Secuencias: Rendimiento

• Se puede obtener un aumento muy alto utilizando sp_sequence_get_range

Page 17: Novedades SQL Server 2012 para desarrolladores

Full Text Search: Mejoras

• Se puede utilizar IFilters como propiedades extendidas para hacer búsquedas en FTS

• Ahora por tanto, se puede buscar en las propiedades que exponen de forma óptima α Esto unido al

FILETABLE storage…no os da la impresión de que WinFS está dando tufillo? :)

create fulltext index on db_X.svceventinfo(file_stream)

Page 18: Novedades SQL Server 2012 para desarrolladores

Full Text Search: Motor

• Mejoras del motor entre 7-10x frente a SQL 2008 (Según internals de MS)

– Comparado con SQL 2005 más de 60x

• En el peor de los casos, tiempos de respuesta iFTS de <3ms

• Hasta 350M de documentos por almacenamiento

• Incremento de respuesta linear con el nº de CPU

Page 19: Novedades SQL Server 2012 para desarrolladores

Spatial: Mejoras indexación

• Ahora hasta 8 Niveles por defecto – Antes 4 – Hasta 256 niveles (antes 32)

• GEOGRAPHY_AUTO_GRID y GEOMETRI_AUTO_GRID • Soporte para objetos curvilíneos

– CircularString – CompoundCurve – CurvePolygon

• Nuevos métodos adaptados – STCurveToLine() – BufferWithCurves() – …

• Mayor Precisión

Page 20: Novedades SQL Server 2012 para desarrolladores

Spatial: Novedades

• Para mayor precisión, cláusula SPATIAL_WINDOW_MAX_CELL con posibilidad de llegar a 2048 celdas

• La mayoría de operadores y métodos se han optimizado • Ya es posible realizar agregaciones

– UnionAggregate – EnvelopeAggregate – CollectionAggregate – ConvexHullAggregate

• Ya es posible superar el valor de hemisferio lógico

SELECT GEOGRAPHY::UnionAggregate(geog) FROM Regions

Page 21: Novedades SQL Server 2012 para desarrolladores

Objetivos de la sesión

• Especificación robusta de metadatos • Mejoras de TRY-CATCH • Nuevas funciones escalares • Mejoras en formateo de datos • Paginación • Secuencias • Mejoras

– FTS – Spatial

• CLÁUSULA OVER – Windowing – Análisis

Page 22: Novedades SQL Server 2012 para desarrolladores

Cálculos sobre conjuntos

• Cálculos aplicados a conjuntos de filas • Resolución de problemas

– Cursores – Consultas agrupadas – Subconsultas – Joins

• Retos – Pensar en modo conjunto – Mezclar cálculos de agrupado y el nivel detalle – Complejidad – Rendimiento

Page 23: Novedades SQL Server 2012 para desarrolladores

Piensa en conjuntos

• No te desvíes de la realidad, SQL Server es un motor relacional basado en conjuntos

• ¿Entiendes realmente lo que significa conjunto?

Definición teórica por Georg Cantor: 1. Un conjunto es una reunión de objetos que cumplen con cierta propiedad

(llamados los elementos de ese conjunto) y que, por tanto, queda definido por tal propiedad.

2. Un conjunto es una sola entidad matemática, de modo que puede a su vez ser contenido por otro conjunto

3. Dos conjuntos que tengan los mismos elementos son iguales, luego un conjunto queda determinado por sus elementos

En definitiva, una reunión de objetos sin ningún orden y con una propiedad común

Page 24: Novedades SQL Server 2012 para desarrolladores

Mezcla de detalle y cálculos de conjuntos

• Las consultas agrupadas imponen condiciones

Page 25: Novedades SQL Server 2012 para desarrolladores

Piensa en conjuntos

• Subconsultas

– Demasiada información

– Cuidado con el orden de evaluación

– Cada consulta necesita su resolución independiente

Page 26: Novedades SQL Server 2012 para desarrolladores

Piensa en conjuntos

• El pensamiento tradicional produce consultas muy complejas

Page 27: Novedades SQL Server 2012 para desarrolladores

Piensa en conjuntos

• Consultas de complejidad cuadrática

Page 28: Novedades SQL Server 2012 para desarrolladores

Mejoras cláusula OVER

• Hasta SQL Server 2008 R2

• En SQL Server 2012

Page 29: Novedades SQL Server 2012 para desarrolladores

• Particionamos

• Ordenamos

• Deslizamos

Nuevas construcciones basadas en conjuntos

Page 30: Novedades SQL Server 2012 para desarrolladores

• Conceptualmente, una ventana deslizante existe simultáneamente respecto a cada fila. Debes preparar tu mente para empezar a dar soluciones eficaces

Cambia tu forma de pensar

α Pensar en una asignación numérica aislada e independiente es erróneo aunque se obtenga el resultado deseado

Page 31: Novedades SQL Server 2012 para desarrolladores

Nuevas funciones de agregado

• En SQL 2012 aparecen nuevas funciones analíticas • De offset

– LAG – LEAD – FIRST_VALUE – LAST_VALUE

• Distribución – PERCENT_RANK – PERCENTILE_CONT – PERCENTILE_DIST – CUME_DIST

Page 32: Novedades SQL Server 2012 para desarrolladores

Abre tu mente

Page 33: Novedades SQL Server 2012 para desarrolladores

Resumen de la sesión

• Especificación robusta de metadatos • Mejoras de TRY-CATCH • Nuevas funciones escalares • Mejoras en formateo de datos • Paginación • Secuencias • Mejoras

– FTS – Spatial

• CLAUSULA OVER – Windowing – Funciones de análisis

Page 34: Novedades SQL Server 2012 para desarrolladores
Page 35: Novedades SQL Server 2012 para desarrolladores

Enrique Catalá Bañuls Mentor – Área relacional

MCT – MS Technical Ranger – MCTS – MCITP – MAP 2010

[email protected]