Azure

Azure MI Failover Group vs SQL Server Always On

Hablar de alta disponibilidad en entornos SQL Server es como entrar en un congreso de arquitectos y preguntar por el hormigón armado: todo el mundo tiene una opinión, pero no todos entienden lo que hace que no se les caiga el edificio. Desde que apareció Azure SQL Managed Instance, muchos han querido comparar su Failover Group con el clásico y reputado Always On Availability Groups (AO AG) de SQL Server. Spoiler: no son lo mismo. Ni en arquitectura, ni en control, ni en flexibilidad. Y por mucho que Microsoft los presente como soluciones “equivalentes” en diferentes contextos, la verdad está en los detalles. Ahí donde el marketing calla y el diagrama de red grita.

¿Qué es un Failover Group en Azure SQL Managed Instance?

El Failover Group (FOG, para los amigos) en Managed Instance es un servicio de Azure PaaS que nos permite tener una réplica automática en otra región, con conmutación por error (failover) automática o manual. No hay que gestionar clústeres, ni certificados, ni configurar endpoints: todo se cocina dentro de la infraestructura de Azure. ¿Ventajas? Sencillez. ¿Limitaciones? También las hay, pero menos de lo que algunos creen.

El Failover Group actúa a nivel de instancia. Replica automáticamente todas las bases de datos del grupo seleccionado, manteniendo sincronización asincrónica entre regiones. Y aunque históricamente tenía fama de ser unidireccional y sin opciones de lectura secundaria, eso ya no es cierto: podemos habilitar acceso de solo lectura a la réplica secundaria a través del listener. Eso sí, solo una réplica, y nada de topologías a medida. Pero para muchos escenarios de DR, es más que suficiente.

¿Y qué hace SQL Server con su Always On Availability Groups?

Aquí volvemos al SQL Server clásico, el de verdad, el que instalamos en máquinas (físicas o virtuales), con clústeres de Windows, certificados, endpoints, y todo lo que da gusto configurar a las tres de la mañana cuando algo falla. El AO AG es un modelo de alta disponibilidad y recuperación ante desastres (HA/DR) basado en grupos de disponibilidad, con réplicas sincronizadas (para HA) y asincrónicas (para DR). Admite múltiples réplicas, balanceo de lectura, conmutación automática o manual, y una flexibilidad que muchos aún no saben que están mal usando.

¿Requiere trabajo? Mucho. ¿Te da control absoluto? También. Y eso, en infraestructuras exigentes, marca la diferencia entre diseñar alta disponibilidad y simplemente esperar que Azure haga lo suyo.

Diferencias técnicas clave

Aquí es donde empieza lo interesante. El Failover Group en MI está limitado por diseño: solo una réplica secundaria, sincronización asincrónica entre regiones y sin opción a topologías complejas. Pero lo compensa con gestión simplificada, y sí, un listener que permite direccionar tráfico de lectura y escritura de forma bastante transparente. El parámetro ApplicationIntent=ReadOnly funciona como esperamos, siempre que tengamos configurado el grupo correctamente.

AO AG, por su parte, permite hasta ocho réplicas, elegir sincronización o asincronía según la necesidad, distribuir la carga de lectura, gestionar failover policies con precisión quirúrgica y hasta usar clusterless AGs para entornos que no necesitan HA pero sí replicación. También nos permite ajustar los parámetros internos de cada réplica, implementar scripts personalizados ante fallos y mantener una visibilidad completa del estado del clúster.

La diferencia crítica sigue siendo el acceso al entorno. En SQL Server AO AG tienes control del sistema operativo, del almacenamiento, de la red y del motor de base de datos en sí. En Managed Instance estás dentro de una caja cerrada: puedes administrar lo que te dejan, y cuando algo se rompe, dependes completamente del soporte de Azure. Que sí, son majos. Pero a veces el SLA no consuela cuando tienes al CTO respirando en la nuca.

Ventajas y limitaciones prácticas

El Failover Group de Azure Managed Instance es ideal para quienes quieren alta disponibilidad sin complicaciones, sin pelearse con Windows Server Failover Clustering, sin pensar en discos compartidos ni quorum. Y con la posibilidad de lectura secundaria, gana puntos en escenarios de DR que también exigen analítica o reporting en caliente.

AO AG, por su parte, permite arquitecturas híbridas, complejas y a medida. Pero requiere un nivel de experiencia y de mantenimiento que no todos los equipos pueden asumir. No es para todos, pero en manos expertas es una bestia formidable. Eso sí, como toda bestia, necesita cuidado constante y algo de cariño (o miedo). Cuidado con meterte en esta solución tan compleja si tu equipo no está preparado o tendrás el caldo de cultivo perfecto para un problema grave.

¿Qué debemos elegir para nuestro entorno?

La decisión real no es entre Failover Group y Always On, sino entre PaaS y IaaS (o on-premises). Si tu equipo no puede o no quiere gestionar infraestructura, el Failover Group en Azure MI es una solución más que decente. Pero si necesitas múltiples réplicas, balanceo de lectura avanzado, configuración personalizada o integración con entornos complejos… entonces AO AG sigue siendo la referencia.

También hay que mirar la criticidad del sistema. ¿Puedes tolerar unos minutos de pérdida de servicio mientras Azure detecta y conmuta? ¿O necesitas failover inmediato y con cero pérdida de datos? El RPO y RTO no son iguales, y en algunos casos eso marca la diferencia entre continuidad del negocio y justificación al comité de crisis.

Los precios de ambas soluciones también son decisivos, en Azure Managed Instance tienes que pagar todos los meses depende del tamaño de tu servidor y eso a la larga puede salir caro. Always On, por su parte, no se queda corto ya que vas a necesitar licencias SQL Server Enterprise y, eso no es barato precisamente.

Casos reales y decisiones que duelen

Recientemente, en un proyecto de consultoría, el cliente tenía que mover un entorno crítico de Always On a Azure MI. Las restricciones del Failover Group se hicieron evidentes al tercer día, cuando se dieron cuenta de que no podían controlar la latencia ni ajustar parámetros finos de sincronización. ¿Solución? Replantear parte de la arquitectura y asumir limitaciones. ¿Resultado? Un entorno funcional, sí, pero menos flexible. Y con la sensación de haber pasado de un Fórmula 1 a un coche automático: cómodo, sí. Pero que no te deja cambiar de marcha cuando más lo necesitas.

Conclusión

Failover Group en Azure MI no es el sucesor espiritual de Always On. Es una solución distinta, pensada para escenarios distintos. Si necesitas control, flexibilidad y múltiples réplicas, Always On sigue siendo el rey. Si priorizas simplicidad y mantenimiento mínimo, Failover Group cumple su papel. Y ahora, con acceso de lectura en la réplica secundaria, es más potente de lo que muchos creen.

Pero no confundamos comodidad con equivalencia. Porque cuando llegue el fallo, lo que importa no es la tecnología, sino cómo responde. Y en ese momento, más vale haber elegido bien. ¿Quieres alta disponibilidad sin sustos? Elige con cabeza, no con prisas. Porque lo único peor que una base de datos caída… es una mal diseñada que no sabe caer.

Publicado por Roberto Carrancio en Alta Disponibilidad, Cloud, SQL Server, 0 comentarios

Azure SQL Database: Comprendiendo las opciones de compra DTU y vCore

Azure SQL Database es la solución de acceso a SQL en Azure. Y, sin embargo, es una plataforma versátil y escalable que se adapta a distintas necesidades empresariales gracias a sus modelos de compra flexibles. Elegir entre DTU (Database Transaction Unit) y vCore (Virtual Core) puede parecer complicado, sobre todo al principio. Hay que entender que cada modelo está diseñado para escenarios específicos, lo que permite optimizar el rendimiento y los costes según los requerimientos de nuestro negocio.

En este artículo introduciremos ambos modelos, sus niveles de servicio, ventajas y desventajas, precios en España y los casos en los que es más recomendable optar por cada opción.

Introducción a los modelos de compra en Azure SQL Database

Como decía en la introducción, Microsoft ofrece dos principales modelos de compra para Azure SQL Database DTU y vCore.

El modelo de compra por DTU está diseñado para simplificar la elección de recursos al proporcionar paquetes preconfigurados que incluyen CPU, memoria y E/S.

El modelo basado en vCore (Virtual Core), por contra, nos da mayor flexibilidad al permitir configurar de forma independiente los recursos de proceso y almacenamiento, adaptándose mejor a las necesidades específicas de cada carga de trabajo. Sin embargo, por esto mismo, puede ser más complejo de configurar

Además, para hacer las cosas más flexibles (ejem complejas), ambos modelos están disponibles con distintos niveles de servicio que determinan las capacidades de rendimiento, alta disponibilidad y escalabilidad.

Azure SQL Database basado en DTU

El modelo de compra por DTU combina los recursos computacionales, la memoria y las operaciones de entrada/salida en un único paquete. Esto lo convierte en una opción intuitiva y fácil de implementar para quienes buscan simplicidad en la gestión de sus bases de datos.

Niveles de servicio en DTU

Este modelo de compra tiene varios niveles que vamos a poder seleccionar.

Un primer nivel básico, ideal para cargas de trabajo pequeñas con baja concurrencia. Nos ofrece hasta 2 GB de almacenamiento por lo que está diseñado, en principio, para aplicaciones de prueba o proyectos muy pequeños.

A continuación encontraremos un nivel estándar pensado para aplicaciones empresariales con requisitos de rendimiento moderado. Este nivel ya nos permite hasta 1 TB de almacenamiento por lo que es ideal para bases de datos transaccionales estándar.

Por último, encontramos un nivel premium más diseñado para cargas críticas con alta concurrencia y baja latencia. Este nivel nos ofrece además almacenamiento local SSD para un rendimiento superior y es escalable hasta 4 TB de almacenamiento.

Ventajas del modelo DTU

Si hay una ventaja a destacar de este modelo de compra por DTU es su simplicidad. Al agrupar los recursos en paquetes, elimina la necesidad de calcular CPU o memoria de manera independiente. Todo esto sin renunciar a la escalabilidad vertical, podremos aumentar o reducir el nivel de servicio según las necesidades prácticamente en tiempo real.

Desventajas del modelo DTU

Toda ventaja tiene una contraparte, y en este caso, la simplicidad del modelo DTU implica una excesiva rigidez en la configuración. Este modelo con una configuración tan simple no nos permite ajustar individualmente los recursos de CPU o memoria. Además, es muy susceptible a costes potencialmente elevados. Si nuestras necesidades de recursos no coinciden perfectamente con un paquete, deberemos ir a un nivel superior y pagar por recursos no utilizados. Porque no vamos a contratar algo infradimensionado, ¿verdad?

Azure SQL Database basado en vCore

El modelo vCore (Virtual Core), al contrario que el DTU, nos proporciona un control más granular sobre los recursos, lo que resulta ideal cuando trabajamos con aplicaciones con requisitos específicos o cargas de trabajo variables. Es una opción que se asemeja más al enfoque tradicional de bases de datos locales, facilitando la migración de estas a la nube.

Tipos de implementación en vCore

A la hora de contratar una Azure SQL Database basada en vCore debemos elegir uno de los dos tipos de implementación que tenemos disponibles, el aprovisionado y el sin servidor.

En el tipo aprovisionado los recursos se asignan permanentemente y están disponibles en todo momento.Esto es adecuado para cargas de trabajo constantes o predecibles. Esto no quiere decir que no se pueda escalar, pero no es un proceso dinámico.

Por otro lado, tenemos el tipo de implementación sin servidor (Serverless). En este nivel, los recursos se escalan automáticamente según la demanda, reduciendo costes durante los períodos de inactividad. Este tipo es ideal para cargas de trabajo esporádicas o impredecibles pero cuidado, una consulta mal optimizada puede arruinarnos.

Niveles de servicio en vCore

Igual que en modelo basado en DTU, en este modelo también tenemos niveles de servicio que marcarán el rendimiento y las limitaciones de escalado de nuestra base de datos

El primer nivel de acceso a este modelo es el de uso general (General Purpose). Este nivel, basado en almacenamiento remoto, proporciona un equilibrio entre coste y rendimiento ideal. Es el más recomendado para la mayoría de las aplicaciones empresariales.

Si tenemos unas necesidades mayores podemos optar por el nivel crítico (Business Critical). Este segundo nivel utiliza almacenamiento SSD local, lo que nos ofrece una menor latencia y alta velocidad. Está especialmente diseñado para aplicaciones críticas que requieren alta disponibilidad.

Por último, el nivel hiperescala (Hyperscale) nos permite almacenar y gestionar grandes volúmenes de datos de más de 100 TB. Además es escalable dinámicamente, lo que lo hace ideal para aplicaciones con crecimiento masivo de datos.

Ventajas del modelo vCore

Como este modelo de contratación es más configurable lo primero que debemos destacar como ventaja es su mayor flexibilidad. Ya hemos visto que nos permite personalizar los recursos de CPU, memoria y almacenamiento según nuestras necesidades. Por otro lado, la transparencia en costes también es fundamental, al final pagamos solo por lo que utilizamos.Por último, gracias a su similitud con configuraciones tradicionales tiene una mayor compatibilidad y nos facilita la migración de cargas de trabajo locales.

Desventajas del modelo vCore

Como nada es perfecto, también nos vamos a encontrar con una desventaja y no es otra que la mayor complejidad que ya hemos comentado antes. Este modelo requiere más conocimiento técnico para optimizar la configuración.

Además debemos tener mucho cuidado con los costes en Serverless. Aunque sea el tipo de implementación más eficiente para cargas variables, puede ser más costoso si las pausas no se configuran adecuadamente o si no controlamos las consultas pesadas y costosas.Requiere de mucho trabajo de optimización de desarrollo para no llevarnos sustos en las facturas.

Comparativa de costes (Precios en España)

Como todo en Azure, y en casi todo en esta vida, los precios dependen de la región. En este caso además entran en juego variables como el modelo de compra y el nivel de servicio elegido. A continuación, os pongo unas estimaciones aproximadas con los precios en España al momento de escribir este artículo:

  • DTU Basic (5 DTU): Desde 4,70 € al mes.
  • DTU Standard (10 DTU): Desde 14,12 € al mes.
  • DTU Premium (125 DTU): Desde 437,75 € al mes.
  • vCore General Purpose (2 vCore): Desde 234,55 € al mes*.
  • vCore Business Critical (2 vCore): Desde 469,10 € al mes*.
  • vCore Business Critical (2 vCore): Desde 281,46 € al mes*.
  • vCore Serverless: Desde 0,055 €/hora*. 

* A los modelos de compra vCore hay que sumarle los costes de almacenamiento que son de 0,131 € por GB al mes.

Ten en cuenta que existen descuentos por reservas de uno o tres años y, en algunos casos, te puedes acoger a la Ventaja híbrida de Azure o a los Derechos de conmutación por error. Por último, como sobrecostes, tienes que contar con replicaciones y opciones de redundancia o retención a largo plazo de los backups.

Si necesitas precios más específicos, te recomiendo usar la calculadora de precios de Azure.

¿Cuándo usar Azure SQL Database DTU o vCore?

Ahora que ya hemos visto toda la parte más de descripción del “comercial” llega el momento de mojarme, si habéis venido a leer esto es porque queréis saber mi opinión. En este caso, y como estarás imaginando, no hay una respuesta universal. 

Yo personalmente recomiendo elegir DTU si la simplicidad es prioritaria para ti y no requieres un control granular de los recursos. También es aconsejable para las aplicaciones tienen cargas de trabajo predecibles y de baja a mediana intensidad o si prefieres pagos fijos y predecibles.

Por el contrario, te recomendaría elegir vCore si necesitas esa flexibilidad extra para configurar CPU, memoria y almacenamiento de forma independiente siempre y cuando seas o tengas a alguien especialista para esta administración más especializada. Sobre todo, si gestionas aplicaciones críticas con requisitos específicos de rendimiento y alta disponibilidad o tu carga de trabajo es variable y prefieres la opción sin servidor para ahorrar costes en periodos de inactividad.

Conclusión

Tanto DTU como vCore son modelos viables para Azure SQL Database, cada uno con sus ventajas y limitaciones. La elección depende de las necesidades específicas de tu aplicación, el nivel de control requerido y el presupuesto disponible. Mientras DTU destaca por su simplicidad, vCore se adapta mejor a configuraciones avanzadas y escenarios críticos.

Os recomiendo evaluar las características de cada modelo y utilizar herramientas como la calculadora de precios de Azure para tomar decisiones informadas. Azure SQL Database ofrece una plataforma potente y flexible que, bien configurada, puede convertirse en un aliado clave para el crecimiento de cualquier negocio.

Si tenéis alguna duda o sugerencia, podéis dejarla en Twitter, por mail o dejarnos un mensaje en los comentarios. Y recuerda que también tenemos un grupo de Telegram y un canal de YouTube a los que te puede unir. ¡Hasta la próxima!  

Publicado por Roberto Carrancio en Cloud, 1 comentario

Optimización de Consultas con OPTION RECOMPILE

Cuando hablamos de consultas sobre las bases de datos, la eficiencia es clave. Como DBAs siempre buscamos formas de mejorar el rendimiento de las consultas. Pero no solo nosotros, los DBAs, nos vemos en esta necesidad, cualquier desarrollador que trabaje con bases de datos también debe perseguir el mismo objetivo. En este contexto, a veces, la solución puede ser tan simple como usar la sugerencia de consulta OPTION RECOMPILE. Pero, ¿qué es exactamente y cómo puede ayudarnos en SQL Server y Azure SQL? ¿Realmente es una solución mágica que podemos usar siempre como una carta comodín? Durante estas líneas voy a tratar de dar respuesta a estas preguntas.

¿Qué es OPTION RECOMPILE?

OPTION RECOMPILE es una directiva que podemos agregar al final de nuestras consultas en SQL Server para indicar que queremos que se recompile el plan de ejecución cada vez que se ejecuta la consulta. Esto puede ser útil en situaciones donde los datos subyacentes cambian con frecuencia y queremos asegurarnos de que estamos utilizando el plan de ejecución más eficiente posible.

Banner-Telegram

¿Cómo funciona OPTION RECOMPILE?

Para entender este concepto, es importante recordar algunos de los conceptos que hemos discutido en artículos anteriores. En concreto hablo de los planes de ejecución de las consultas y de la caché de planes de ejecución.

Planes de ejecución

En nuestro artículo sobre planes de ejecución, exploramos cómo SQL Server y Azure SQL crean y utilizan estos planes para llevar a cabo las consultas de manera eficiente. Estos planes son esenciales para entender cómo OPTION RECOMPILE puede mejorar el rendimiento de nuestras consultas.

Caché de planes de ejecución

Además, en nuestro artículo sobre la caché de planes, vimos cómo SQL Server y Azure SQL almacenan los planes de ejecución para su reutilización. Este almacenamiento en caché puede ser muy eficiente, pero también puede llevar a problemas si los datos subyacentes cambian con frecuencia, lo que nos lleva de nuevo a la utilidad de OPTION RECOMPILE.

Option Recompile

Ahora sí, vamos a dar respuesta a la pregunta ¿cómo funciona OPTION RECOMPILE?

Ya sabemos que la primera vez que ejecutamos una consulta en SQL Server o Azure SQL, el motor de la base de datos crea un plan de ejecución. Este plan es básicamente una serie de pasos que la base de datos seguirá para recuperar los datos solicitados. Una vez que se ha creado un plan, además de usarse para la consulta en curso, se almacena en caché para su uso en futuras ejecuciones de la misma consulta. 

Sin embargo, esto que la mayoría de las veces es una ventaja, puede no serlo si los datos subyacentes cambian significativamente. En estos casos el plan almacenado en caché puede no ser el más eficiente. También puede pasar que las estadísticas de la tabla no estuvieran bien actualizadas al momento de compilar el primer plan de ejecución y no este sea del todo correcto. Aquí es donde entra en juego OPTION RECOMPILE. Al agregar esta directiva a nuestra consulta, le estamos diciendo al motor de base de datos de SQL Server que ignore cualquier plan almacenado en caché y genere uno nuevo. 

Esto no quiere decir que se vaya a usar un plan de ejecución distinto, simplemente el motor de base de datos va a analizar todas las opciones posibles para resolver la consulta y a elegir el que le parezca más óptimo. Puede ser que vuelva a elegir el mismo, sobre todo si tenemos un problema con las estadísticas.

¿Cuándo deberíamos usar OPTION RECOMPILE?

Aunque OPTION RECOMPILE puede ser una herramienta poderosa, no siempre es la mejor opción. La recompilación de un plan de ejecución tiene un coste en términos de recursos, en concreto en consumo de CPU, por lo que si una consulta se ejecuta con mucha frecuencia, el coste de la recompilación puede superar cualquier beneficio de rendimiento que obtengamos.

Por lo tanto, OPTION RECOMPILE es más adecuado para consultas que se ejecutan con poca frecuencia, pero que son críticas para el rendimiento, o para consultas donde los datos subyacentes cambian con tanta frecuencia que un plan almacenado en caché se vuelve ineficiente rápidamente. En esta línea, otro posible escenario son las consultas de procedimientos almacenados que interactúan con datos con gran variación entre un parámetro y otro. Para estos casos de gran desigualdad en los volúmenes de datos puede ser una gran alternativa a la utilización tradicional de planes en caché.

Personalmente también me gusta mucho utilizar esta opción de consulta cuando me enfrento a un problema de rendimiento de una consulta. En estas situaciones puede ser de gran ayuda, localizar a tiempo que el problema está en un plan de ejecución no óptimo cacheado puede ahorrarnos mucho tiempo y esfuerzo en la optimización.

Conclusión

En resumen, OPTION RECOMPILE es un truco muy potente y valioso en nuestra caja de herramientas de optimización de consultas. Aunque no es una solución para todos los problemas de rendimiento, y hay que medir muy bien su uso para no caer en problemas mayores, puede ser extremadamente útil en las circunstancias adecuadas. Como siempre, la clave es entender cómo funciona y cuándo usarlo. Y como digo siempre, solo plantéate este tipo de soluciones si realmente tienes un problema, las soluciones “por si acaso” nunca suelen ser una buena idea.  Si tenéis alguna duda o sugerencia, podéis dejarla en Twitter, por mail o dejarnos un mensaje en los comentarios. Y recuerda que también tenemos un grupo de Telegram y un canal de YouTube a los que te puede unir. ¡Hasta la próxima!

Publicado por Roberto Carrancio en Rendimiento, SQL Server, 0 comentarios
Azure Data Studio vs SQL Server Management Studio (SSMS)

Azure Data Studio vs SQL Server Management Studio (SSMS)

La primera elección a la que nos vamos a enfrentar cuando vamos a trabajar con SQL Server o una instancia o base de datos de Azure por primera vez es la herramienta que vamos a usar. Existen multitud de soluciones pero las principales, y desarrolladas por Microsoft, para esta tarea son SQL Server Management Studio (SSMS) o Azure Data Studio (aquí no hay siglas, nadie usa ADS). No os dejéis llevar por los nombres, ambas soluciones nos van a permitir conectarnos de la misma manera tanto a SQL Server como a instancias o bases de datos de Azure SQL. Así que, la decisión entre una u otra será por otros aspectos que las diferencian, y eso justo es lo que hoy voy a tratar de aclararos.

¿Qué son SSMS y Azure Data Studio?

SQL Server Management Studio (SSMS) es una aplicación de código cerrado pero gratuita desarrollada por Microsoft para permitir la interacción de usuarios y administradores a las bases de datos SQL Server ya sea en instalaciones On Premise como en la nube de Azure. Además, nos permite conectarnos a otros servicios de la familia de SQL Server como son SSAS, SSRS y SSIS. Gracias a esta herramienta dispondremos de una interfaz gráfica para realizar de manera gráfica cualquier operación que necesitemos sobre SQL Server y sus objetos. Dispondremos también de la posibilidad de generar código para consulta T-SQL, DMX, MDX y DAX.

Azure Data Studio, por su parte, también es una herramienta gratuita de Microsoft pero en este caso es de código abierto. Se basa en Visual Studio Code que a su vez se basa en el Framework Electron. Esto hace que, si quieres, puedas colaborar en el código de Azure Data Studio en GitHub. Si lo comparamos con SSMS estaremos ante una aplicación visualmente más moderna, más ligera y extensible. En el caso de Azure Data Studio, al igual que en Visual Studio Code, podremos instalar componentes ya sean de Microsoft o de terceros para ampliar las funcionalidades que nos ofrece. Por ejemplo, podemos agregar compatibilidad con bases de datos MySQL o PostgreSQL. 

Compatibilidad Multiplataforma

SSMS lleva en el mercado desde SQL Server 2005, y aunque ha ido mejorando y añadiendo funcionalidades (ya va por la versión 20.1), en esencia es la misma aplicación Win32 para escritorios Windows. No tiene soporte para MacOS ni para Linux y eso restringe su uso a servidores o estaciones clientes con un sistema operativo Windows.

Azure Data Studio, por el contrario, al estar basado en Visual Studio es multiplataforma y podremos instalarlo en equipos Windows, Linux o Mac (no como SSMS que solo es compatible con Windows).

¿A quién va dirigido SSMS y Azure Data Studio?

SSMS es una aplicación dirigida a desarrolladores SQL Server y administradores de bases de datos o profesionales de sistemas que deban administrar Servidores SQL Server. Incluye todas las opciones de administración de forma gráfica y nos permite adaptar cualquier configuración con unos pocos clics de ratón. Gracias al soporte ampliado de las nuevas versiones, además, vamos a poder administrar de la misma manera Azure Managed Instances, Azure Databases o pools de Azure Synapse SQL. Por último, como ya hemos comentado, también vamos a poder usar SSMS para conectar con SSAS, SSRS y SSIS.

Azure Data Studio, por el contrario, es una aplicación centrada en su uso por profesionales de datos y BI y desarrolladores por lo que prescinde de todas las opciones de administración que nos brinda SSMS. Esto hace que sea una aplicación mucho más ligera como hemos comentado antes. No quiere decir que desde Azure Data Studio no vayamos a poder administrar nuestros servidores, si vamos a poder, simplemente tendremos que hacerlo por comandos T-SQL. Mucho más engorroso, ¿verdad?. Si nos gustase eso administraríamos Servidores Oracle y ganaríamos más dinero. Con Azure Data Studio tendremos la posibilidad de conectarnos a SQL Server On Premise, Azure Database, Azure Managed Instance, Azure Synapse así como a MySQL y a PostgreSQL. Sin embargo, y esto es una cosa que no entiendo, no tiene soporte para bases de datos NOSQL como la propia CosmoDB de Azure.

Características

En cuanto a la comparativa propiamente dicha, como venimos comentando, está entre las funciones que cada una de las aplicaciones nos brinda. Vamos primero a ver las características comunes a ambas aplicaciones y luego sus diferencias. Ambas tienen un editor de consultas que admite T-SQL, DMX, MDX, DAX y XMLA (SSAS) y se apoyan en IntelliSense para facilitarnos la tarea. También disponen de un explorador para visualizar jerárquicamente los objetos que componen nuestra base de datos. 

Como diferencias, SSMS dispone de un gran arsenal de herramientas pensadas para administradores y usuarios más avanzados de SQL Server entre las que podemos destacar las relacionadas con la seguridad, el mantenimiento y el Agente de SQL Server. Disponemos también de Query Store y una serie de informes predefinidos para las bases de datos que nos aportarán información muy valiosa.

Azure Data Studio, cuenta en su haber con otras características exclusivas como los cuadernos Jupyter, integración con GitHub y con Copilot y la posibilidad de instalar extensiones. Además soporta los lenguajes de programación Python, R y Scala.

Para cerrar este apartado, quiero destacar la integración entre SSMS y Azure Data Studio. Si disponemos de ambas aplicaciones instaladas, desde SSMS vamos a poder abrir Azure Data Studio directamente para poder trabajar con los cuadernos Jupyter. 

SSMS_AzureDataStudio

Tampoco sería justo dejar de mencionar que, si bien Azure Data Studio no está pensado para administrar servidores, poco a poco se van añadiendo funcionalidades para este fin. En el momento de escribir estas líneas, podemos encontrar cómo Preview funcionalidades avanzadas hasta ahora exclusivas de SSMS.

AzureDataStudio_Manage

Conclusión

Azure Data Studio y SSMS son dos poderosísimas herramientas desarrolladas por Microsoft para facilitarnos nuestras interacciones diarias con SQL y Azure. Elegir una u otra dependerá de nuestras necesidades ya que no están pensadas para el mismo público objetivo y por tanto no disponen de exactamente las mismas funcionalidades. En mi caso trabajo siempre con ambas aplicaciones abiertas y depende la tarea que tenga que realizar en ese momento uso la que mejor se adapte. Espero que gracias a este artículo vosotros podáis tomar la mejor decisión informada y veáis cubiertas vuestras necesidades. Como siempre, estamos aquí para ayudarte. Si tenéis alguna duda o sugerencia, podéis dejarla en Twitter, por mail o dejarnos un mensaje en los comentarios. Y recuerda que también tenemos un grupo de Telegram y un canal de YouTube a los que te puede unir. ¡Hasta la próxima!

Publicado por Roberto Carrancio en Cloud, SQL Server, 1 comentario

¿Sirven de algo los bloqueos de recursos en Azure?

Volvemos con nuestros video blogs esta vez con un vídeo sobre los bloqueos de recursos en Azure. Esta opción nos va  a permitir generar un bloqueo sobre un objeto de Azure para evitar que se pueda borrar. De esta manera, cuando alguien intente borrar nuestra base de datos o instancia gestionada desde el portal de Azure obtendrá un error indicando que el recurso está bloqueado.

Bloqueo de Recursos en Azure

Azure ofrece una característica llamada bloqueos que nos permite proteger nuestros recursos contra modificaciones o eliminaciones accidentales. Los bloqueos de recursos pueden ser aplicados a cualquier recurso de Azure, desde suscripciones y grupos de recursos hasta servicios individuales.

Plano de Control y Plano de Datos

Para entender cómo funcionan los bloqueos de recursos, primero debemos entender la diferencia entre el plano de control y el plano de datos en Azure.

El plano de control es responsable de las operaciones de gestión en Azure. Esto incluye acciones como la creación, modificación y eliminación de recursos. Cuando aplicamos un bloqueo de recursos, estamos interactuando con el plano de control.

Por otro lado, el plano de datos se encarga de las operaciones que se realizan en los recursos una vez que están creados. Esto incluye acciones como la lectura y escritura de datos en una base de datos o el envío de mensajes a través de un bus de servicio. Este plano de datos queda fuera del «paraguas» de protección de los bloqueos de recursos.

Aplicando Bloqueos de Recursos

Los bloqueos de recursos se pueden configurar para permitir solo lecturas o para evitar todas las modificaciones. Un bloqueo de solo lectura permitirá que los usuarios vean y consulten los recursos, pero no podrán hacer cambios. Un bloqueo de no modificación, por otro lado, evitará cualquier cambio en el recurso, incluyendo la eliminación.

Conclusión

La protección de nuestros recursos en Azure es esencial para mantener la integridad y seguridad de nuestros datos. Los bloqueos de recursos nos ofrecen una forma eficaz de prevenir borrados y modificaciones no deseadas, asegurando que nuestros recursos permanezcan seguros y protegidos. Sin embargo, esto debe ser combinado por una buena política de permisos en SQL Server o, de lo contrario una operación desde el plano de datos acabará con nuestros sistemas.

Recuerda, como administradores de bases de datos, nuestra prioridad es siempre la seguridad y la protección de nuestros recursos. Asegúrate de utilizar todas las herramientas a tu disposición para mantener tus recursos de Azure seguros. Si tenéis alguna duda o sugerencia, podéis dejarla en Twitter, por mail o dejarnos un mensaje en los comentarios. Y recuerda que también tenemos un grupo de LinkedIn y un canal de YouTube a los que te puede unir. ¡Hasta la próxima!

Publicado por Roberto Carrancio en Cloud, Videos, 0 comentarios

Escalado vertical y horizontal en SQL Server y Azure

¿Qué es el escalado en SQL Server y por qué es importante? En este artículo vamos a explicar los conceptos de escalado vertical y horizontal, las diferencias entre ellos y las ventajas y desventajas de cada uno. También veremos cómo aplicar estas técnicas en SQL Server, tanto en la versión On Premise como en la nube de Azure.

¿Qué es el escalado vertical y horizontal?

El escalado es la capacidad de aumentar o disminuir los recursos de un sistema para adaptarse a las necesidades de rendimiento y disponibilidad. Existen dos tipos de escalado: vertical y horizontal.

– El escalado vertical consiste en incrementar o reducir la potencia de un único servidor, ya sea añadiendo o quitando memoria, CPU, disco o cualquier otro componente. Por ejemplo, si tenemos un servidor con 8 GB de RAM y lo ampliamos a 16 GB, estamos haciendo un escalado vertical.

– El escalado horizontal consiste en agregar o eliminar servidores al sistema, de forma que se distribuya la carga entre ellos. Por ejemplo, si tenemos un servidor con 8 GB de RAM y le añadimos otro igual, estamos haciendo un escalado horizontal.

Ventajas y desventajas del escalado vertical y horizontal

Cada tipo de escalado tiene sus pros y sus contras, que debemos tener en cuenta a la hora de elegir la mejor opción para nuestro sistema.

Escalado vertical

– Ventajas: Es más sencillo de implementar, ya que no requiere cambios en la arquitectura ni en el código de la aplicación. Además, al tener un único servidor, se evitan problemas de sincronización, consistencia y latencia entre los nodos.

– Desventajas: Tiene un límite físico, ya que no podemos aumentar indefinidamente los recursos de un servidor. También implica un mayor coste, ya que los componentes más potentes suelen ser más caros. Además, al tener un único punto de fallo (SPOF), se reduce la disponibilidad del sistema.

Escalado horizontal

– Ventajas: Permite un mayor crecimiento, ya que podemos agregar tantos servidores como necesitemos. También implica un menor coste, ya que podemos aprovechar servidores más económicos y estándar. Además, al tener varios nodos, se aumenta la disponibilidad y la tolerancia a fallos del sistema.

– Desventajas: Es más complejo de implementar, ya que requiere cambios en la arquitectura y en el código de la aplicación. Además, al tener varios servidores, se generan problemas de sincronización, consistencia y latencia entre los nodos.

¿Cómo escalar SQL Server On Premise?

Para escalar SQL Server On Premise tenemos varias opciones, dependiendo del tipo de escalado que queramos realizar.

Escalado vertical On Premise

Para hacer un escalado vertical On Premise debemos modificar el hardware del servidor donde está instalado SQL Server. Esto, en algunos casos, implica detener el servicio, cambiar los componentes y reiniciar el servidor. Estos problemas desaparecen, en gran medida, cuando hablamos de servidores virtuales. Algunas recomendaciones para hacer un buen escalado vertical son:

  • Elegir componentes compatibles con el servidor y con SQL Server. 
  • Prestar atención al licenciamiento, algunas ediciones y modos de licenciamiento de SQL Server tienen limitaciones en cuanto a CPU y RAM y si los superamos deberemos adquirir otra licencia.
  • Ajustar los parámetros de configuración de SQL Server según los nuevos recursos.
  • Realizar pruebas de rendimiento antes y después del cambio para verificar la mejora.

Escalado horizontal On Premise

Para hacer un escalado horizontal On Premise debemos agregar más servidores al sistema y distribuir la carga entre ellos. Esto implica crear una arquitectura distribuida, como un clúster, una réplica o una partición. Algunas recomendaciones para hacer un buen escalado horizontal son:

  • Elegir servidores con características similares al existente.
  • Configurar correctamente la redirección del tráfico entre los nodos.
  • Mantener la sincronización y la consistencia de los datos entre los nodos.

Las réplicas de solo lectura de los grupos de disponibilidad Always On son un ejemplo de este tipo de escalado. Añadiendo una réplica de solo lectura a nuestro grupo de disponibilidad podremos redirigir a ella las operaciones de lectura descargando de trabajo el nodo principal.

¿Cómo escalar SQL Server en Azure?

Para escalar SQL Server en Azure tenemos varias opciones, dependiendo del tipo de servicio que estemos usando.

Escalado vertical en Azure

Para hacer un escalado vertical en Azure debemos modificar el tamaño del servicio donde está alojado SQL Server. Esto implica cambiar el nivel de servicio o el plan de tarifa, lo que puede implicar un cambio de precio. Algunas ventajas de hacer un escalado vertical en Azure son:

  • No requiere detener el servicio ni reiniciar el servidor.
  • Se puede hacer desde el portal de Azure o mediante scripts.
  • Se puede automatizar según las métricas de rendimiento.
  • Valorar el apagado de los servicios cuando no están en uso para un menor coste. Esto es especialmente útil cuando hablamos de entornos de desarrollo y pruebas.

Mención especial en este apartado para las bases de datos de Azure en modo de licenciamiento sin servidor donde podremos adaptar los recursos según la carga de trabajo. Aumentando en horas punta y disminuyendo la cantidad de recursos en momentos de menos carga.

Otra opción muy interesante que se nos plantea en Azure son los grupos de recursos, podremos asignar un extra de recursos a un grupo con varios servicios para que los usen en caso de ser necesario. Esto nos permite no tener que sobredimensionar todos y cada uno de los servicios por separado y reducir costes. Si, por ejemplo, nuestra base de datos transaccional tiene su pico de trabajo por el día y la informacional por la noche podrán compartir un grupo de recursos.

Escalado horizontal en Azure

Para hacer un escalado horizontal en Azure debemos agregar más instancias al servicio donde está alojado SQL Server. Esto implica crear un balanceador de carga o un grupo de escalado, lo que puede implicar un cambio de precio. Además, en Azure podemos aprovechar las bases de datos elásticas, que son un tipo de servicio que permite escalar horizontalmente una base de datos SQL sin tener que gestionar los servidores ni la distribución de los datos. Las bases de datos elásticas se componen de un grupo de bases de datos que comparten recursos y se balancean automáticamente según la demanda. d.

Conclusión

El escalado es una técnica fundamental para optimizar el rendimiento y la disponibilidad de SQL Server, tanto en la versión On Premise como en la nube de Azure. Dependiendo de las necesidades y los recursos disponibles, podemos optar por un escalado vertical o horizontal, cada uno con sus ventajas y desventajas. Tienes que tener en cuenta que estos modos no son excluyentes, nuestra aplicación puede hacer uso de una base de datos de Azure por cliente, escalando horizontalmente con cada nuevo cliente y, a la vez, escalar verticalmente una base de datos cuando el volumen de datos o transacciones de un cliente lo requiera. Lo importante es elegir la opción más adecuada para nuestro sistema y realizar las pruebas necesarias para verificar la mejora.

Espero que este artículo te haya sido útil y que te ayude a optimizar el rendimiento de tus consultas en SQL Server. Si tenéis alguna duda o sugerencia, podéis dejarla en Twitter, por mail o dejarnos un mensaje en los comentarios. Y recuerda que también tenemos un grupo de LinkedIn y un canal de YouTube a los que te puede unir. ¡Hasta la próxima!

Publicado por Roberto Carrancio en Cloud, Rendimiento, SQL Server, 2 comentarios