Presentación inteligencia artificial en la actualidad
Novedades SQL Server 2012 para desarrolladores
1. SQL Server 2012: Novedades SQL
Server para desarrolladores
Enrique Catalá Bañuls
Mentor – Área relacional - SolidQ
MCT – MS Technical Ranger – MCTS – MCITP – MAP 2010
ecatala@solidq.com
2. α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á
3. 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
4. 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
5. 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 } ] [ ; ]
7. 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
8. 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.”
9. 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
10. 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
12. 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
13. 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
14. 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
15. 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
17. 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)
18. 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
19. 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
20. 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
21. 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
22. 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
23. 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
24. Mezcla de detalle y cálculos de
conjuntos
• Las consultas agrupadas imponen condiciones
25. Piensa en conjuntos
• Subconsultas
– Demasiada
información
– Cuidado con el
orden de
evaluación
– Cada consulta
necesita su
resolución
independiente
30. • 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
31. 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
33. 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