Notas sobre nuevas características de SQL Server 2019
Cuando un producto te gusta es emocionante ver la nueva versión y las mejoras que le han realizado.
SQL Server tiene un compromiso con el rendimiento, busca siempre mejorar el desempeño con respecto a las versiones anteriores y esto nuevamente lo logra en SQL server 2019, otro compromiso es también la inteligencia de datos sobre cualquier dato, este es uno de los principales aportes. que nos permite trabajar entre bases de datos relaciones y bases de datos de big data.
Podemos aplicar todo lo que sería inteligencia artificial y machine learning tanto con SQL server en modelos relacionales como apache spark en bases de datos nosql.
También se tiene soporte multiplataforma, con el clásico soporte para Windows, pero ahora con soporte para linux, docker y Kubernetes y diferentes lenguajes desde T-sql, java, php, python, ruby
Es una de las bases de datos de mejor rendimiento y más seguras en el mercado en los últimos años, SQL server es quien menos incidentes de seguridad tiene en la industria de base de datos y quizá la mejor herramienta en inteligencia de negocios, generando reportes y dashboard rápidamente.
Además se tiene que tener la cuenta el costo 10 veces más barato que Oracle y que el SQL Server incluye el motor de base de datos, el integration services, el Analysis Services, el reporting services, cosa que en otros gestores de base de datos se trabaja por módulos y cada modulo con un costo adicional.
Inteligencia de datos sobre todos los tipos de almacenamiento, se busca generar un hub de datos unificado en donde podemos tener consultas con diferentes plataformas o diferentes sistemas, también una administración centralizada a través de Azure data Studio, además que me permita hacer análisis de datos con aplicaciones inteligentes en bases de datos relacionales y no relacionales.
Entonces contamos con una ventaja competitiva con una plataforma de datos unificada,
conectándonos a datos en modelo relacional, nosql o sistemas de big data con hadoop, de estos datos de cualquier entorno podemos hacer inteligencia artificial o Machinne Learning usando Spark y SQL y todo a través de Azure Data Studio una herramienta multiplataforma.
Veamos un poco más a detalle cómo funciona la integración de SQL Server 2019 con big data, inteligencia de negocios, y Inteligencia artificial.
Primero: la virtualización de datos nos va permitir conectarnos a diferentes fuentes de datos sin necesidad de movernos o replicarlos, escalar todos los cálculos hacia esas tabla externas y tener un cache de los mismos.
Nosotros tenemos herramientas para hacer análisis y aplicaciones de negocios conectadas a nuestro motor de base de datos, tanto las herramientas de análisis como las aplicaciones de negocios van a invocar a un código Transact-sql seleccionando por ejemplo una tabla, esa tabla puede ser una tabla externa o local, si es externa puede residir en spark, en hdfs, en Oracle, y la comunicación a esas tablas externas va ser a través de un pools que controlará el procesamiento y un pool de datos para almacenar la información.
Segundo: En Big Data, tenemos a SQL Server con soporte para Spark y Data Lake, tenemos un portal de administración donde podemos manejar esql server, nuestro cluster de HDFS con seguridad integrada con active directory, con esto un sql server va a tener la capacidad de conectarse a un sistema de escalable y compartido de HDFS y también puede usarse compartido este hdfs con Spark
Tercero: Plataforma de Inteligencia Artificial completa primero con todo el concepto de contenedores administrados por API Rest y además usar dos plataformas para la fabricación de nuestros modelos con SQL Server Machinne Learning y spart Machinne Learning
Ahora enfoquémonos más hacia donde irán nuestras demostraciones, en lo que sería la medula espinal de nuestro SQL Server 2019, mejorando el rendimiento, la seguridad y la disponibilidad en la misión crítica.
Para todo lo que sería rendimiento en SQL server 2019 se tiene ahora Intelligent Query Processing, las herramientas anteriormente conocidas como Automatic Query Tunning cambiaron su nombre a Intelligent Query Processing para tenerlas todas dentro de una misma familia.
Esta familia de funciones de procesamiento inteligente de consultas (IQP) incluye funciones de amplio impacto que mejoran el rendimiento de las cargas de trabajo existentes con un mínimo esfuerzo de implementación para adoptar oor ejemplo Table Variable Deferred Compilation mejora el rendimiento hasta un 30%
También tenemos Bach Mode For Row Store que el principal beneficio de esta función es que mejora el rendimiento de las consultas analíticas y también reduce la utilización de la CPU de este tipo de consultas, antes esto solo se tenía para columnstore.
Aproximate QP es una nueva familia de características. Se agregaron para el manejo de grandes conjuntos de datos donde la capacidad de respuesta es más crítica que la precisión absoluta. Un ejemplo es calcular un COUNT (DISTINCT ()) en 10 mil millones de filas, para mostrar en una tabla. En este caso, la precisión absoluta no es importante, pero la capacidad de respuesta es crítica. La nueva función agregada APPROX_COUNT_DISTINCT devuelve el número aproximado de valores únicos no nulos en un grupo.
Memory Grant Feedback hace mejoras en los planes de ejecución en cache: El plan posterior a la ejecución de una consulta en SQL Server incluye la memoria mínima requerida necesaria para la ejecución y el tamaño de concesión de memoria ideal para que todas las filas quepan en la memoria. Tenemos problemas de rendimiento cuando los tamaños de concesión de memoria tienen un tamaño incorrecto. Obviamente si hay memoria asignada excesiva resultan en memoria desperdiciada y concurrencia reducida. Si la memoria es insuficiente causa desbordamiento costosos en el disco. Al abordar las cargas de trabajo repetitivas, la Memory Grant Feddback en modo por lotes recalcula la memoria real requerida para una consulta y luego actualiza el valor de concesión para el plan en caché. Cuando se ejecuta una instrucción de consulta idéntica, la consulta utiliza el tamaño de concesión de memoria revisado, mejorando el uso de la memoria.
Otra de las ventajas es mejoras en Always Encrypted con Secure Enclaves que permite hacer clasificación de datos y auditoria integrada directamente en el sql server.
Introducido en SQL Server 2016, Always Encrypted protege la confidencialidad de los datos confidenciales contra malware y usuarios no autorizados de SQL Server con altos privilegios . Los usuarios no autorizados con altos privilegios son DBA, administradores de computadoras, administradores de la nube o cualquier otra persona que tenga acceso legítimo a instancias de servidores, hardware, etc., pero que no deberían tener acceso a algunos o todos los datos reales.
Sin las mejoras discutidas en este artículo, Always Encrypted protege los datos cifrándolos en el lado del cliente y nunca permitiendo que los datos o las claves criptográficas correspondientes aparezcan en texto sin formato dentro del motor de SQL Server. Como resultado, la funcionalidad en columnas cifradas dentro de la base de datos está severamente restringida. Las únicas operaciones que SQL Server puede realizar en datos cifrados son las comparaciones de igualdad (solo disponibles con cifrado determinista). Todas las demás operaciones, incluidas las operaciones criptográficas (cifrado de datos inicial o rotación de clave) y / o cómputos ricos (por ejemplo, coincidencia de patrones) no son compatibles dentro de la base de datos. Los usuarios necesitan mover sus datos fuera de la base de datos para realizar estas operaciones en el lado del cliente.
Siempre cifrado con enclaves seguros resuelve estas limitaciones al permitir los cálculos en datos de texto sin formato dentro de un enclave seguro en el lado del servidor. Un enclave seguro es una región protegida de memoria dentro del proceso de SQL Server, y actúa como un entorno de ejecución confiable para procesar datos confidenciales dentro del motor de SQL Server. Un enclave seguro aparece como un cuadro negro para el resto del servidor SQL y otros procesos en la máquina de alojamiento. No hay forma de ver ningún dato o código dentro del enclave desde el exterior, incluso con un depurador.
Mejoras en el Always On, tengamos en cuenta cómo funciona Always On que permite tener una tolerancia de fallos mejorada, permite tener un servidor principal y nodos conectando a este replicando la data, si el nodo principal se cae inmediatamente pasa a pasivo y habilita uno de los nodos para continuar trabajando, pero mientras todo esta normal los nodos secundarios pueden ser leídos y utilizarse para conectar por ejemplo el reporting services, en sql server 2019 se pueden contar hasta con 6 nodos, uno de los problemas comunes era que el nodo principal soporta las operaciones del negocio con más actividad que los servidores secundarios fragmentaba más rápidos los índices, y entonces por ejemplo una tarea programada de mantenimiento de índices, levantaba un proceso sobre todos los nodos o servidores secundarios y esto levantaba bloqueos ocasionando los servidores sin poder realizar consultas, esto se mejora en sql server 2019 permitiendo contar con mantenimiento de índices en línea y también pudiéndose pausar y continuar, algo similar pasaba si implementábamos columnstoreindex.
Otro elemento importante es el soporte para cluster de Kubernetes que me permite contar con varios nodos que no necesariamente tienen que ser de Windows,
Contamos entonces con una plataforma de desarrollo moderna, más rápida, multiplataforma, para desarrollar en el entorno de nuestra predilección.
UTF-8: Las intercalaciones en SQL Server proporcionan reglas de clasificación, mayúsculas y minúsculas y propiedades de sensibilidad de acento para sus datos. Las intercalaciones que se usan con los tipos de datos de caracteres, como char y varchar , dictan la página de códigos y los caracteres correspondientes que se pueden representar para ese tipo de datos.
Alternativamente, comenzando con SQL Server 2019 (15.x), si se usa una intercalación habilitada para UTF-8 (_UTF8), los tipos de datos previamente no Unicode ( char y varchar ) se convierten en tipos de datos Unicode usando la codificación UTF-8. SQL Server 2019 (15.x) no cambia el comportamiento de los tipos de datos Unicode previamente existentes ( nchar , nvarchar y ntext ), que continúan utilizando la codificación UCS-2 o UTF-16.
Mejoras en el desarrollo, abarcando ahora más que solo Transact-sql, ahora podemos usar R, Python y java, en las bases de datos conectadas a graphos, mejoras en Machine Learning
Graphos es una base de datos de gráficos es un tipo de base de datos NoSQL que se basa en la teoría de gráficos. Las bases de datos de gráficos son ideales para almacenar datos que tienen relaciones complejas de muchos a muchos.
Si no conocen sobre una base de datos gráfica para tener una idea pensemos en el siguiente ejemplo: Las plataformas de redes sociales son uno de los mejores ejemplos de cómo funcionan las bases de datos gráficas. Considere un escenario donde a una persona le gusta un equipo de fútbol en particular. A un usuario también le pueden gustar uno o más estadios de fútbol. Alternativamente, un estadio de fútbol puede ser del agrado de múltiples usuarios. A los usuarios también les pueden gustar los estadios de fútbol y las ciudades. Un equipo de fútbol tiene un estadio local. Un estadio puede estar ubicado en una ciudad en particular y una ciudad puede tener múltiples estadios. Una base de datos gráfica es ideal para almacenar este tipo de información. Los usuarios, equipos, estadios y ciudades pueden implementarse como entidades o nodos. Por otro lado, los me gusta, el estadio local y las ciudades del estadio se pueden implementar como relaciones o bordes.
Como ya mencionamos el soporte multi-plataforma es muy importante agregando a las instancias en linux nuevas capacidades como la replicación, transacciones distribuidas y Machine Learning, además de soporte para LDAP, otra característica importante es el soporte en Always On Availability Groups para Kubernetes.
DBCC CLONEDATABASE
Genera un clon de una base de datos de solo esquema mediante DBCC CLONEDATABASE para investigar problemas de rendimiento relacionados con el optimizador de consultas.
El equipo de producto SQL ha realizado mejoras significativas en la funcionalidad, compatibilidad y rendimiento del índice de almacén de columnas durante SQL Server 2016 en función de los comentarios de los clientes.
sp_estimate_data_compression_savings
Cuando el equipo de SQL Server lanzó la compresión ROW y PAGE en SQL Server 2008, los clientes podían invocar sp_estimate_data_compression_savings procedimiento almacenado para estimar los ahorros de almacenamiento para la compresión ROW y PAGE. Tenga en cuenta que el ahorro de compresión fue solo una estimación basada en muestrear un subconjunto de filas de la tabla de origen y cargarlas en una tabla temporal y luego medir el tamaño de esta tabla temporal antes / después de la compresión.
Para la mayoría de los casos, la estimación del ahorro de compresión fue buena, excepto cuando los datos en la tabla de origen estaban sesgados. La mayoría de los clientes lo encontraron útil, ya que era una forma conveniente de ver los beneficios del almacenamiento. Sin embargo, como algunos de ustedes han descubierto, este procedimiento almacenado no se ha extendido para estimar los ahorros de almacenamiento del índice del almacén de columnas y que ahora aparecio en SQL Server 2019.
Una característica nueva y emocionante en SQL Server 2019 es sys.dm_db_page_info. Esta nueva función de administración dinámica (DMF) recupera la información de la página útil, como page_id, file_id, index_id, object_id, y page_type, que se puede utilizar para solucionar problemas y depurar problemas de rendimiento en SQL Server. Históricamente, la solución de problemas ha implicado el uso de la DBCC Page y el Dinamic Management Function no documentado sys.dm_db_page_allocations.
A diferencia de la página DBCC, que proporciona todo el contenido de una página, sys.dm_db_page_infosolo devuelve información de encabezado sobre las páginas. Afortunadamente, esto será suficiente para la mayoría de los escenarios de resolución de problemas y ajuste de rendimiento.
Azure data estudio, lanzado en septiembre 2018, multiplataforma disponible para mac, linux y Windows, es open source el codigo está disponible en Github,
Azure data estudio está enfocado a personas que pasan más tiempo desarrollando código, o personas que necesiten administrar sql server desde otro sistema operativo que no sea Windows,
SQL Management Studio está enfocado más a tareas administrativas, de seguridad, permite hacer reportes de Query store, sobre Windows,
Desde la versión 18.0 del SSMS se puede lanzar Azure Data Studio.
Características de Azue Data Studio:
- Es más liviano, corre más rápido
- Editor de código moderno, mejor intellisense
- Object explorer similar al SSMS
- Dashboards
- Se puede exportar el resultado de un query a csv, xml, json, excel
- notebooks, proyecto open source para phyton
- Tiene una terminal integrada
- Cuenta con Source Control git o github
- Actualizaciones mensuales
- Permite Creación de Snippets que sirve para auto-completar código frecuente