PostgreSQL

¿Está SQL Server realmente muerto como dicen algunos?

Cada pocos años alguien anuncia la muerte de SQL Server con la misma convicción con la que se predice el fin del mundo. Y, como suele pasar, seguimos aquí, con instancias vivas, bases de datos respirando y DBAs quejándose de los mismos problemas de siempre… y de unos nuevos. El auge de las bases de datos analíticas, la popularidad de entornos cloud como Snowflake o Microsoft Fabric, el ruido de las soluciones NoSQL y la omnipresencia de alternativas relacionales como MySQL o PostgreSQL han creado un escenario donde cualquiera podría pensar que el reinado de SQL Server se tambalea. Sin embargo, las novedades anunciadas para SQL Server 2025 apuntan a todo lo contrario: el producto sigue mutando para seguir siendo relevante, incluso si eso implica acercarse peligrosamente al mundo de la ciencia de datos. Y todo esto sin soltar la bandera que le hizo grande: el motor transaccional.

El entorno actual: cada uno en su liga

No es ningún secreto que las bases de datos analíticas están en su momento. Snowflake, BigQuery o Azure Synapse se han convertido en la herramienta preferida para quienes necesitan triturar terabytes de datos con más rapidez que un analista quemando su último café. Microsoft, por su parte, ha apostado fuerte con Fabric, un entorno que quiere ser la navaja suiza del dato: integración, ingeniería, análisis, IA… y todo en la nube, sin que te preocupes por el hardware (o eso dicen, hasta que llega la factura).

En paralelo, el ecosistema NoSQL sigue vivo, aunque su hype inicial ya no llena auditorios. MongoDB, Cassandra y compañía encontraron su nicho: estructuras flexibles, escalabilidad horizontal y consultas rápidas para ciertos patrones de uso. Pero conviene recordar que no es la primera vez que la industria promete que “lo nuevo” es la panacea. Antes fue XML en bases de datos, luego el OLAP embebido en todo, más tarde los lagos de datos que acabarían con los almacenes tradicionales… y ahí siguen las bases relacionales, 50 años después, ejecutando transacciones sin descanso. “Sin esquema” no significa “sin problemas”, y muchos que lo ignoraron pagaron el precio en migraciones forzadas y dolores de cabeza técnicos.

Mientras tanto, las bases de datos relacionales de código abierto siguen creciendo. PostgreSQL ha dejado de ser el “hermano alternativo” para convertirse en la opción principal de muchos nuevos proyectos. MySQL, que sobrevive gracias a su inercia y al ecosistema que lo rodea, sigue presente en millones de aplicaciones. Y hasta SQLite, ese motor minimalista, tiene más implantación de la que muchos sospechan, realmente es la base de datos relacional más utilizada, gracias en parte a que está embebido en aplicaciones móviles, navegadores y dispositivos IoT.

SQL Server en 2025: más que un SGBD relacional

Si echamos un vistazo a las novedades anunciadas para SQL Server 2025, el mensaje es claro: Microsoft no quiere que SQL Server se perciba solo como “la base de datos transaccional de siempre” y a la vez sí. La integración nativa con capacidades de ciencia de datos, el soporte extendido para Python y R, y la mejora de conectores con entornos como Fabric o Azure Machine Learning junto con las optimizaciones y mejoras del motor transaccional lo colocan como una plataforma híbrida, capaz de manejar tanto cargas OLTP como escenarios analíticos complejos.

Esto no es nuevo. Llevamos años viendo cómo SQL Server incluye características que antes parecían fuera de lugar: PolyBase para consultar datos externos, Graph Database para modelar relaciones no relacionales, o el soporte para formatos como Parquet y ORC a través de EXTERNAL TABLE. Pero en 2025 la apuesta es más decidida: acercar al científico de datos a la misma herramienta donde ya vive el dato empresarial. Porque mover datos sigue siendo caro y lento, aunque lo disfracemos de “pipelines”.

El motor OLTP: la base que no se toca

Entre tanta novedad es fácil olvidar lo obvio: SQL Server sigue siendo, ante todo, un motor OLTP sólido, fiable y maduro. Es el tipo de sistema que lleva años procesando millones de transacciones diarias sin que nadie lo ponga en duda. No será el más rápido del mundo en benchmarks aislados, pero tampoco se estrella en ninguna disciplina. Es ese jugador de equipo que no siempre marca goles espectaculares, pero nunca falla un pase. En entornos de misión crítica, eso vale más que el hype de la semana.

Aplicaciones financieras, sistemas de reservas, ERPs, CRMs… todos siguen necesitando un motor transaccional robusto, y SQL Server continúa cumpliendo sin dramas. Es cierto que el mercado está más fragmentado, pero en el terreno de las operaciones diarias, la consistencia y la integridad de datos no pasan de moda. Y ahí, el producto sigue ofreciendo un equilibrio que otros todavía no alcanzan.

Azure SQL: el motor en modo nube

En paralelo, Microsoft ha sabido llevar el ADN de SQL Server a la nube con Azure SQL Database y Azure SQL Managed Instance. Ambos ofrecen el mismo motor relacional, pero con las ventajas del cloud: elasticidad, alta disponibilidad automática y actualizaciones gestionadas. Azure SQL Database brilla para cargas modernas, escalables y distribuidas, mientras que Managed Instance resulta un salvavidas para migraciones lift-and-shift desde entornos on-premises, evitando reescribir medio catálogo de procedimientos almacenados.

Pero no todo es perfecto. La nube te da elasticidad, sí, pero también facturas que crecen más rápido que una tabla de log que no mantienes. Y ciertas configuraciones avanzadas siguen teniendo limitaciones frente al on-premises clásico. Aun así, en la pelea contra RDS for SQL Server, Cloud SQL o Aurora, Azure SQL compite muy decentemente, sobre todo cuando se integra con el resto del ecosistema Microsoft.

Competencia y convivencia: ahora con Oracle en la foto

Intencionadamente no había hablado de Oracle en este artículo aun. Esto es porque merecía su apartado dedicado. Ignorar a Oracle sería como hablar de fútbol sin mencionar a Messi o Cristiano. Oracle sigue siendo el otro gran titán del mundo relacional empresarial. Su estrategia ha ido en dos direcciones claras: reforzar su motor transaccional con mejoras de rendimiento y disponibilidad (la famosa RAC sigue siendo un argumento fuerte) y empujar con fuerza su base de datos autónoma en la nube, que promete optimización automática, parches sin downtime y escalabilidad elástica. En papel suena a ciencia ficción; en la realidad, sigue siendo un producto potente, aunque con el mismo talón de Aquiles que siempre: licenciamiento complejo y costes elevados.

Oracle mantiene una cuota sólida en sectores donde el riesgo no se negocia, como banca o telecomunicaciones, pero su imagen de “producto premium” lo aleja de entornos más ágiles o con presupuestos ajustados. En ese hueco es donde SQL Server ha sabido jugar sus cartas: más versátil en despliegues, más sencillo de administrar y con una curva de entrada menos intimidante.

La mayoría de grandes organizaciones que usan Oracle no prescinden de SQL Server; al contrario, los combinan. Oracle se queda con lo que justifica su precio (OLTP ultra crítico, escenarios de HA extrema) y SQL Server cubre aplicaciones empresariales, integraciones y cargas mixtas donde la flexibilidad pesa más que la pureza del rendimiento.

Oracle en entornos analíticos

En el frente analítico, Oracle ha optado por un enfoque doble. Por un lado, ha ido incorporando capacidades analíticas directamente en su motor transaccional, con funciones in-database, modelos estadísticos y procesamiento in-memory columnar para ejecutar cargas masivas sin mover los datos. Por otro, ha desarrollado Oracle Autonomous Data Warehouse, su servicio cloud gestionado para analítica, con escalabilidad automática y optimización asistida, pensado para competir con Snowflake o BigQuery. La diferencia es que Oracle sigue apostando por la especialización y la potencia de su propio ecosistema, mientras que Microsoft, con Fabric, ha preferido unificar integración, ingeniería y consumo en un solo marco. Solo el tiempo nos dirá quien ha optado por la solución correcta.

¿Un viraje o una extensión natural?

Visto lo que hay, los puristas dirán que SQL Server se está “contaminando” con funciones que no le corresponden. Los pragmáticos vemos otra cosa: un intento lógico de mantenerse en un mercado donde ya no basta con ser bueno en lo tuyo, sino que hay que ser útil en lo que otros necesitan. Si el científico de datos puede trabajar sobre el mismo entorno donde el ERP graba transacciones, se ahorran latencias, ETLs y errores humanos. Y si encima puedes exponer los resultados a Power BI o Fabric sin montar un festival de integraciones, más puntos a favor.

Esto no significa que SQL Server vaya a sustituir a Snowflake o a un motor columnar puro en un data warehouse masivo. Significa que cada vez será más común ver entornos mixtos, donde el dato crudo se procese en un sistema especializado y SQL Server actúe como nodo central para servir datos curados, combinados y gobernados.

El veredicto: no, no está muerto

Si algo nos enseña la historia de la tecnología es que las modas pasan y las bases sólidas permanecen. El hype del NoSQL, los lagos de datos milagrosos o las bases “autónomas” con inteligencia artificial han tenido su momento, y en muchos casos han acabado como piezas útiles pero de uso específico. Las bases de datos relacionales llevan medio siglo alimentando aplicaciones críticas y, lejos de extinguirse, siguen adaptándose.

SQL Server no se está apagando, se está transformando. Lo que vemos en 2025 es un motor más abierto, más conectado y con capacidades que hace diez años habrían hecho reír a cualquier DBA clásico. Pero, sobre todo, sigue siendo un motor transaccional de referencia, capaz de mover operaciones críticas día tras día sin pestañear. No será el mejor en todo, pero tampoco es malo en nada, y esa consistencia es la que mantiene viva su posición.

Y además tiene su versión en la nube bien armada, con Azure SQL plantando cara a las alternativas cloud sin complejos. El futuro del producto no es blanco o negro; es híbrido. Y, por ahora, SQL Server sigue siendo muy bueno en eso.

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, SQL Server, 0 comentarios
El problema de Halloween

El problema de Halloween

El problema de Halloween es una anécdota clásica en el ámbito de las bases de datos y la informática, que además de ser técnicamente relevante, tiene una historia curiosa detrás de su descubrimiento. A menudo se lo menciona en el contexto de las transacciones concurrentes y la consistencia en los sistemas de bases de datos relacionales. En este artículo, y ya que mañana celebraremos Halloween, quiero contaros en detalle la historia de este problema, y que veamos cómo eso afectó a los sistemas actuales con los que trabajamos. Sentaos y poneos cómodos amigos que este joven aprendiz de abuelo cebolleta os va a contar una historia de los inicios de las bases de datos relacionales.

Historia del problema de Halloween

Era 1976, y en los laboratorios de IBM en San José, California, un grupo de ingenieros trabajaba en el desarrollo de uno de los primeros sistemas de bases de datos relacionales: System R. Entre ellos estaban Don Chamberlin, Pat Selinger, Raymond Boyce y varios otros miembros de un equipo pionero. Su objetivo era crear un sistema eficiente que pudiera manejar grandes volúmenes de datos con integridad y consistencia, un reto tecnológico sin precedentes en aquella época.

La tarde de un viernes a finales de Octubre, mientras experimentaban con actualizaciones masivas de datos, Don Chamberlin, uno de los co-creadores del lenguaje SQL, notó un comportamiento extraño en una consulta que estaban probando. La consulta parecía simple: querían aumentar el salario de todos los empleados que ganaban menos de 3000 dólares. Así que Don escribió algo parecido a esto:

Esperaba que la consulta incrementara el salario de cada empleado que ganara menos de 3000 dólares, pero lo que vio fue desconcertante. Los sueldos de algunos empleados no solo se habían incrementado una vez, sino varias veces en la misma ejecución. Los salarios de los empleados que inicialmente ganaban 2800 dólares, por ejemplo, terminaron siendo mucho mayores de lo esperado.

¿Qué estaba pasando?

Don llamó a Pat Selinger, la ingeniera encargada de la optimización de consultas en System R, y juntos comenzaron a investigar qué estaba pasando. Descubrieron que el problema radicaba en cómo el motor de la base de datos estaba gestionando el índice de salarios. El sistema estaba utilizando el índice para seleccionar las filas que debían ser actualizadas, pero cada vez que se actualizaba el salario de un empleado, el índice no se actualizaba inmediatamente.

Esto significaba que el motor seguía viendo las mismas filas como si aún cumplieran la condición Salario < 3000, incluso después de que el salario ya hubiera sido incrementado. Así, el sistema volvía a seleccionar esas filas y aplicaba otra actualización, lo que provocaba un aumento repetido e inesperado de los salarios.

Pat, quien ya tenía una gran reputación por su trabajo en la optimización de bases de datos, se dio cuenta de que esto no era un simple error; era un problema fundamental en cómo las operaciones de actualización y selección interactuaban cuando se usaban índices. Rápidamente comprendieron que este problema podía ocurrir en cualquier situación donde los datos modificados afectaran al criterio de selección.

Al darse cuenta de la magnitud del problema, y siendo ya altas horas de la noche, el equipo decidió que no iban a poder dar una solución sencilla y que ya trabajarían en una solución al problema pasadas las fiestas de acción de gracias y Halloween, no sin antes poner un nombre al marrón que acababan de descubrir: “El problema de Halloween”.

Origen del nombre

Como acabamos de ver, el problema fue identificado por Don Chamberlin y otros miembros del equipo de investigación, quienes estaban analizando cómo el índice de salario se comportaba de manera inesperada. Curiosamente, este comportamiento erróneo fue descubierto en octubre de 1976, cerca de la fecha de Halloween. A partir de ese momento, el equipo decidió bautizarlo como el problema de Halloween, en honor a la época del año en que fue detectado.

El descubrimiento marcó un hito en la comprensión de cómo los sistemas de bases de datos podían comportarse de manera incorrecta bajo ciertas condiciones de concurrencia y actualización. Desde entonces, el problema de Halloween se convirtió en un caso de estudio clásico sobre los peligros de las transacciones concurrentes mal gestionadas.

Impacto técnico del problema de Halloween

Ya hemos contado historias, ahora pongámonos técnicos para entender por qué esto si da miedo. El problema de Halloween tiene lugar debido a la interacción entre el acceso a los datos mediante índices y las operaciones de actualización que afectan a los mismos índices. Al realizar una operación como la actualización de un campo indexado, el índice puede cambiar, lo que provoca que el plan de ejecución de la consulta vuelva a seleccionar las mismas filas que ya han sido modificadas. Esto es particularmente peligroso en operaciones que implican modificaciones masivas de registros, como las sentencias UPDATE o DELETE, ya que pueden conducir a un bucle interminable de modificaciones.

Uno de los aspectos más críticos del problema de Halloween es que afecta tanto a la consistencia de los datos como al rendimiento de la transacción. En un escenario en el que no se gestiona correctamente este problema, una operación de actualización podría realizar más cambios de los esperados, lo que lleva a resultados incorrectos. Además, la transacción podría consumir más recursos del sistema de los previstos, lo que degrada el rendimiento general.

Soluciones al problema de Halloween

Con el tiempo, los desarrolladores de motores de bases de datos han ideado varias soluciones para mitigar el problema de Halloween. Desde los bloqueos de claves y operadores de bloqueos de rango hasta el uso de los spools en los planes de ejecución de las consultas.

Bloqueos de claves

El bloqueo de claves es una técnica que asegura que las filas que están siendo leídas o modificadas en una transacción no puedan ser afectadas por otras transacciones concurrentes. En el contexto del problema de Halloween, el bloqueo de claves se utiliza para prevenir que una fila que ha sido modificada vuelva a ser seleccionada por la misma transacción. Pero, ¿Cómo funciona?

Cuando una transacción selecciona una fila basada en un índice, el motor de la base de datos coloca un bloqueo en la clave de índice asociada con esa fila. Este bloqueo persiste hasta que la transacción termina, lo que garantiza que ninguna otra transacción o la misma transacción pueda seleccionar o modificar esa fila hasta que el bloqueo se libere. Esto evita que una fila que ha sido actualizada vuelva a ser seleccionada, ya que la clave correspondiente al índice sigue bloqueada durante la ejecución de la transacción.

Operadores de bloqueos de rango

Los bloqueos de rango (range locks) son otra técnica avanzada que utilizan algunos motores de bases de datos, como SQL Server, para evitar el problema de Halloween. Estos bloqueos no solo afectan a las filas individuales, sino que bloquean un rango completo de valores de un índice para evitar que otras transacciones modifiquen o inserten filas en ese rango.

En lugar de bloquear solo una fila específica, el sistema bloquea un rango de valores en el índice. De esta manera, se garantiza que ninguna otra transacción pueda modificar o insertar nuevas filas en ese rango hasta que la transacción actual se complete.

Los bloqueos de rango previenen que las filas modificadas vuelvan a seleccionarse en la misma transacción y aseguran que las operaciones concurrentes no interfieran con la transacción actual.

Operadores Spool

El spool es un operador que actúa como una especie de «almacén temporal» de los datos que han sido leídos durante la ejecución de una consulta. Su principal función es almacenar los resultados intermedios de una operación, de modo que el motor de base de datos pueda trabajar con ellos sin necesidad de volver a acceder a la fuente de datos original. Esto es particularmente útil en casos donde la selección y la actualización de las filas podrían interactuar de manera perjudicial, como ocurre en el problema de Halloween. Existen varios tipos de spools que se utilizan en SQL Server, no vamos a entrar en detalle ahora pues ya le dedicamos un artículo completo.

Cuando SQL Server detecta que una consulta tiene el potencial de sufrir el problema de Halloween, el optimizador de consultas puede introducir un spool en el plan de ejecución para evitar que las filas modificadas sean seleccionadas de nuevo. El spool actúa como una «instantánea» de las filas seleccionadas al inicio de la transacción, de modo que las actualizaciones no afecten a la selección de filas en curso.

Dicho de otra forma, en un escenario donde SQL Server detecta el riesgo de un problema de Halloween, el plan de ejecución podría incluir un Table Spool para garantizar que las filas se procesen de forma correcta, almacenando temporalmente las filas que cumplen con la condición inicial (por ejemplo Salario < 3000). Una vez que todas las filas han sido seleccionadas, el motor aplica la actualización sin el riesgo de que las filas se vuelvan a seleccionar debido a la modificación del índice.

MVCC, la solución de Oracle

El Control de Concurrencia por Múltiples Versiones (MVCC) es un enfoque utilizado por varios sistemas de bases de datos, como PostgreSQL y Oracle. MVCC permite que múltiples versiones de las filas coexistan, lo que permite que las transacciones lean los datos sin interferir con las modificaciones de otras transacciones y así evitar el problema de Halloween.

Cuando una transacción modifica una fila, se crea una nueva versión de esa fila. Las otras transacciones que están leyendo los datos continúan accediendo a la versión anterior de la fila, mientras que la transacción que la está modificando trabaja con la nueva versión. Esto previene que las modificaciones concurrentes afecten a las lecturas en curso.

De esta manera, MVCC elimina el riesgo de que las filas actualizadas sean seleccionadas de nuevo dentro de la misma transacción, ya que las transacciones no leen las versiones modificadas hasta que estén completamente confirmadas (commit). Esto previene el problema de Halloween sin necesidad de bloqueos explícitos.

Conclusión

El problema de Halloween es un claro recordatorio de cómo los detalles técnicos de la ejecución de consultas y las actualizaciones concurrentes pueden generar comportamientos inesperados en los sistemas de bases de datos. A lo largo de los años, los avances en los motores de bases de datos han permitido mitigar este problema, y uno de los mecanismos más efectivos es el uso de operadores spool en los planes de ejecución.

Aunque el problema de Halloween fue descubierto hace más de cuatro décadas, sigue siendo relevante en los sistemas modernos que manejan grandes volúmenes de datos y transacciones concurrentes. Con el uso de operadores como los spools, los motores de bases de datos garantizan que las actualizaciones se realicen de manera eficiente y sin comprometer la consistencia de los datos, lo que permite a los desarrolladores y administradores de bases de datos centrarse en mejorar el rendimiento y la escalabilidad de sus sistemas sin preocuparse por este problema clásico.

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 Otros, 0 comentarios

La pronunciación de SQL: ¿Es-kiu-el o Sicuel?

Una de las discusiones más recurrentes cuando hablamos de bases de datos es cómo se debe pronunciar «SQL» cuando hablamos en inglés: ¿deberíamos decir es-kiu-el o, como mucha gente pronuncia, sicuel? Aunque a primera vista pueda parecer un tema trivial, la evolución de este debate está profundamente entrelazada con la historia de uno de los lenguajes más importantes para la gestión de bases de datos. En este artículo, vamos a hablar de la historia del origen de SQL y su impacto en sistemas como SQL Server y PostgreSQL, mientras aclaramos cómo y por qué se originaron estas dos pronunciaciones.

Orígenes de SQL: El nacimiento de SEQUEL

El lenguaje SQL, que significa Structured Query Language (Lenguaje de Consulta Estructurado), fue desarrollado a principios de la década de 1970 en los laboratorios de IBM por Donald D. Chamberlin y Raymond F. Boyce, basándose en las teorías relacionales de Edgar F. Codd. Inicialmente, el lenguaje se llamaba SEQUEL (Structured English Query Language). El nombre SEQUEL, en inglés, se asemeja fonéticamente a sicuel, por no decir que es prácticamente igual.

Este término refleja la idea original del lenguaje de ser una herramienta de consulta para gestionar bases de datos relacionales. Sin embargo, debido a problemas legales con una empresa británica que ya tenía registrada la marca SEQUEL, IBM decidió cambiar el nombre a SQL. A pesar de este cambio, muchos de los primeros usuarios continuaron usando la pronunciación sicuel, que evocaba al nombre original.

El cambio a SQL y la aparición de es-kiu-el

Aunque el nombre oficial pasó a ser SQL, la pronunciación original sicuel permaneció en uso, especialmente entre aquellos que ya estaban familiarizados con SEQUEL. Sin embargo, también comenzó a surgir una nueva pronunciación: es-kiu-el, que es simplemente el resultado de pronunciar las letras «S-Q-L» por separado en inglés (S es «es», Q es «kiu», L es «el»). Este enfoque más literal se volvió popular, especialmente en entornos más técnicos y entre usuarios que preferían la claridad de pronunciar las siglas tal cual.

Con el tiempo, ambas pronunciaciones coexistieron. La pronunciación sicuel estaba más arraigada entre quienes habían empezado a trabajar con el lenguaje en sus primeros días, mientras que es-kiu-el comenzó a ganar popularidad entre generaciones posteriores y en entornos donde era común pronunciar las siglas una a una.

SQL Server y el debate sobre la pronunciación

SQL Server, desarrollado por Microsoft, ha sido uno de los actores clave en la popularización de SQL a nivel mundial. Lanzado en 1989, este sistema de gestión de bases de datos relacional ha jugado un papel crucial en el crecimiento de SQL como estándar global. A lo largo de su historia, el equipo de SQL Server ha utilizado ambas pronunciaciones de SQL.

Si no me cree mira este vídeo de un anuncio de SQL Server protagonizado por Ed Esber y el mismo Bill Gates en 1989. En el video podemos ver cómo ambas pronunciaciones, sicuel y es-kiu-el, se utilizan de manera intercambiable. Esta falta de un consenso claro refleja cómo las dos formas han coexistido a lo largo del tiempo, sin una regla estricta que indique cuál es la «correcta».

PostgreSQL: Su influencia en la pronunciación

PostgreSQL, a menudo abreviado como Postgres, es otro sistema de gestión de bases de datos relacional que ha jugado un papel importante en la historia de SQL. Al igual que SQL Server, PostgreSQL ha influido profundamente en la evolución de SQL, aunque su origen es independiente.

PostgreSQL fue desarrollado en la Universidad de California en Berkeley en 1986 como parte del proyecto POSTGRES, liderado por el profesor Michael Stonebraker. Inicialmente, Postgres no estaba diseñado para utilizar SQL, sino que empleaba su propio lenguaje de consultas llamado QUEL. No fue hasta 1994 cuando PostgreSQL adoptó SQL como lenguaje estándar, lo que permitió que el sistema ganara popularidad en el ámbito empresarial.

En la comunidad de PostgreSQL, la pronunciación sicuel es también común, ya que se remonta al origen de SQL como SEQUEL. Sin embargo, al igual que con SQL Server, muchos usuarios optan por la pronunciación es-kiu-el, especialmente en países donde es común leer las siglas de manera literal, como ocurre en gran parte del mundo hispanohablante.

El impacto de PostgreSQL en la estandarización

PostgreSQL no solo adoptó SQL, sino que ha jugado un papel crucial en su estandarización y expansión. A lo largo de los años, ha implementado una serie de características avanzadas que luego se han incorporado al estándar SQL, lo que ha reforzado su posición como uno de los motores más potentes y completos. Entre sus aportaciones destacan:

  • CTEs recursivos (Common Table Expressions): Que permiten realizar consultas jerárquicas complejas.
  • Soporte avanzado para JSON: PostgreSQL fue pionero en el manejo de datos no estructurados con JSON, una capacidad que luego se ha vuelto esencial en otros sistemas.
  • Herencia de tablas: Una característica única que extiende el modelo relacional tradicional.

Estas características han influido significativamente en la dirección del estándar SQL y han ayudado a que PostgreSQL sea ampliamente reconocido como uno de los sistemas más avanzados y robustos.

La influencia cultural y regional en la pronunciación de SQL

La elección entre sicuel y es-kiu-el no solo refleja preferencias personales o generacionales, sino también influencias culturales y regionales. En muchos países de habla hispana, es más común escuchar es-kiu-el, ya que esta pronunciación se ajusta mejor a las reglas fonéticas del español. En cambio, en el mundo angloparlante, sicuel sigue siendo predominante, sobre todo entre aquellos que conocieron el lenguaje en su versión original como SEQUEL.

Este fenómeno se observa también en empresas globales, yo lo he visto hasta en Microsoft, donde las pronunciaciones varían incluso entre los empleados. La alternancia entre es-kiu-el y sicuel, como se muestra en el vídeo de SQL Server, subraya que ambas formas son aceptables, y la preferencia suele depender del contexto o de las personas involucradas en la conversación.

Conclusión

No existe una pronunciación «correcta» de SQL. Tanto es-kiu-el como sicuel son formas válidas de referirse al lenguaje. La pronunciación que elijas dependerá de factores como tu trasfondo, la región en la que trabajas y las preferencias de tu entorno. SQL, ya sea pronunciado como sicuel o es-kiu-el, sigue siendo el estándar indiscutible para la gestión de bases de datos relacionales y continuará evolucionando gracias a sistemas como SQL Server y PostgreSQL.

Este debate sobre la pronunciación es solo una pequeña parte de la rica historia de SQL, un lenguaje que ha transformado el mundo de los datos y que sigue siendo fundamental para la infraestructura tecnológica moderna. Lo importante, más allá de cómo lo pronuncies, es la capacidad que ofrece SQL para gestionar y manipular datos de manera eficiente y robusta.

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 SQL Server, 0 comentarios

DRP ¿Cómo sobrevivir a una caída total de las bases de datos?

Hoy nos sumergimos en las profundidades del Plan de Recuperación ante Desastres (DRP) en el mundo de las bases de datos. Los DRP son algo imprescindible para todos los que trabajamos con entornos de producción con cierta criticidad. Puede parecer algo lejano y muy avanzado si estás empezando en este mundo, pero no te preocupes, vamos a intentar aclarar el mar de acrónimos y jerga técnica que rodea este tema. 

¿Qué es un DRP?

Lo primero de todo sería aclarar que el DRP forma parte del BCP (plan de continuidad de negocio). En ocasiones se pueden llegar a confundir pero no son lo mismo. Mientras que un DRP es un plan técnico que se centra en recuperar la infraestructura, el BCP incluye mucha más información como los pasos necesarios para mitigar pérdidas y recuperar toda la organización. 

¿Para qué sirve el DRP?

Vale, ya hemos dicho que el DRP es un plan puramente técnico que recoge de la manera más detallada posible las acciones a realizar ante un incidente. Pero, ¿para qué sirve? Puede parecernos que algunas cosas son demasiado obvias para ponerlas en un documento y que nosotros como buenos DBAs sabemos que hay que hacer en caso de incidente. Sin embargo, tenéis que pensar que en caso de crisis, con la presión que vamos a tener encima, lo mejor es tener todo documentado y seguir un guion. El futuro de nuestra empresa estará en esa intervención y tendremos que estar a la altura.
Los beneficios de tener un DRP previamente pensado y documentado son varios, entre ellos podemos destacar:

  1. Reduce el tiempo de inactividad al máximo lo que se traduce en un mejor servicio para nuestros clientes y proveedores.
  2. Minimiza las pérdidas por inactividad al conseguir un mejor tiempo de respuesta.
  3. Reduce el estrés de la toma de decisiones. En un momento crítico, es de vital importancia que todo el mundo sepa cómo actuar y no pierda los nervios.
  4. Asegura que todo el mundo podrá volver a acceder a su información. 
  5. Nos ayuda a cumplir con la legislación vigente en entornos regulados.

Los 4+1 pasos para el éxito de nuestro DRP

Genial, necesitamos un DRP pero, ¿por dónde empezamos?. No te asustes que no es tan difícil. En tan solo 5 pasos vas a poder tenerlo todo atado ya verás.

1 Definiciones

Todo DRP debe empezar definiendo las necesidades de alcance y los objetivos del propio plan. Podríamos definir tres apartados dentro de este paso, el primero es el alcance es decir, qué servicios queremos tener cubiertos por el plan de recuperación.
Una vez que hemos definido el alcance o perímetro de nuestro DRP el siguiente apartado sería saber de que nos queremos proteger, pregúntate: ¿Qué podría pasar? ¿un apagón? ¿Un incendio? ¿Un ataque de ransomware? ¿O tal vez una ardilla se coma los cables del servidor? (Sí, eso también pasa. ¿Verdad compañeros?). 

Por último, sabiendo que queremos proteger y de que lo siguiente sería definir lo que se conoce como BIA (Business Impact Analysis) o análisis de impacto de negocio. Aquí, tendremos que colaborar con otras áreas de la empresa para conocer el impacto de una crisis en su actividad y la de nuestros clientes.

2 Diseñar las estrategias de recuperación

Ahora que sabemos qué y de qué nos tenemos que proteger llega el momento del cómo. Diseñaremos una estrategia de recuperación para cada uno de los incidentes previamente descritos. Por ejemplo, esta es una lista de los escenarios más comunes y alternativas para su recuperación.

INCIDENTEEstrategia de RECUPERACIÓN
Borrado accidental de datosRestaurar copia de seguridad
Indisponibilidad de una base de datos
  1. Restaurar copia de seguridad
  2. Balanceo a otro nodo del cluster
Indisponibilidad de un servidor
  1. Balanceo a otro nodo del cluster.
  2. Reinstalación + restaurar copias.
Indisponibilidad de un centro de datos (CPD)
  1. Balanceo a otra ubicación geográfica.
  2. Reinstalación en otra ubicación y restaurar copias

3 Procedimentar las estrategias de recuperación

Como hemos dicho, no tenemos que dar nada por sentado y tenemos que detallar todos los pasos por lo que es el momento de explicar paso a paso como realizar todas y cada una de las acciones descritas en el paso anterior. Cuanto más detalle mejor, no olvidéis detallar la ubicación de las copias de seguridad o las direcciones IP y nombre de los servidores de respaldo, por ejemplo.

Podemos partir de la tabla anterior y añadir otra columna con los pasos, como en este ejemplo:

INCIDENTEEstrategia de RECUPERACIÓNProcedimiento de ACTUACIÓN
Borrado accidental de datosRestaurar copia de seguridad
  1. Identificar el problema.
  2. Avisar a todos los usuarios afectados.
  3. Intentar reparar el problema.
  4. Restaurar copia de seguridad de las bases de datos desde \\NuestroNAS\Copias\NuestroServer\NuestraBD
    4.1 Verificar que hay espacio disponible y solucionarlo en caso que sea necesario.
    4.2 Restaurar la base de datos.
  5. Probar que todo funciona.
  6. Avisar a los usuarios de que se ha resuelto la incidencia
  7. Monitorizar el correcto funcionamiento

4 Estimación de tiempos e impacto

Ya hemos visto todo lo que hay que hacer y como, es el momento de documentar cuánto tiempo vamos a tardar en cada uno de los escenarios y cual va a ser el impacto en los sistemas. Esto es lo que técnicamente se conoce como RPO y RTO que son las siglas en inglés de punto de recuperación objetivo y tiempo de recuperación objetivo.

El RPO hace referencia al máximo tiempo de pérdida de datos admisible, por ejemplo si tenemos una copia de seguridad diaria, en caso de fallo del servidor principal podremos tener hasta 24 horas de pérdida de datos.

El RTO es un poco más difícil de calcular, y seguramente tendremos que hacer pruebas para saberlo con exactitud, y hace referencia al tiempo que tardaremos en tener el servicio operativo nuevamente. Si en este punto hemos hecho todo bien, los RPO y RTO de las estrategias de recuperación estarán dentro de los márgenes admisibles que definimos en el paso número 2. 

5 Paso EXTRA: Revisión y pruebas

Aunque con los 4 pasos anteriores teóricamente habríamos completado nuestro DRP es importante que lo pongamos en práctica y que comprobemos que realmente funciona como habíamos pensado. Esto no hay que hacerlo solo una vez y olvidarnos, nuestras bases de datos son sistemas vivos que van cambiando día a día por lo que al menos una vez al año deberíamos hacer el ejercicio de probar el DRP y en caso de que sea necesario modificarlo para que se adapte a la situación actual de los sistemas. Este paso es el más importante y, en ocasiones, habrá entidades reguladoras que nos exijan evidencias de éxito de estos DRP Test.

Conclusión

Los DRP son imprescindibles para cualquier empresa que tenga sistemas en producción. Ya sea porque un regulador lo establece, porque estás tratando de adecuarte a la ISO 27001 o porque has pensado que este tipo de planes son importantes para ti, espero que este post te haya ayudado a resolver las dudas que tenías antes de empezar a leer. Si tienes alguna duda o comentario, no dudes en contactarnos en Twitter o por mail o dejarnos un mensaje en los comentarios de aquí abajo. Y recuerda que también tenemos un grupo de LinkedIn al que te puedes unir.

Publicado por Roberto Carrancio en Alta Disponibilidad, SQL Server, 1 comentario
BABELFISH PG Porque hay vida más allá de SQL Server

BABELFISH PG Porque hay vida más allá de SQL Server

Cada vez que toca renovar licencias de SQL Server hay una pregunta recurrente de todos mis clientes: ¿Y si migramos a PostgreSQL y nos ahorramos este dinero? Normalmente, quien me hace esta pregunta espera de mí un tajante NO. Sin embargo, hasta ahora mi respuesta siempre había sido: “Es una opción, claro. PostgreSQL es un excelente gestor de bases de datos y, si estás desarrollando una nueva aplicación y no tienes esa camisa de fuerza que es migrar todo tu código, me parece perfecto. Eso sí, asegúrate de tener un buen soporte.” Ahora bien, a día de hoy, BABELFISH for PostgreSQL ha mejorado lo suficiente como para hacerme cambiar esta respuesta. 

¿Qué es BABELFISH?

Empecemos por el principio, Babelfish es un complemento para PostgreSQL y ahora también para Aurora PostgreSQL (Amazon) que nos permite utilizar nuestra misma cadena de conexión SQL Server y nuestro código T-SQL sobre una base de datos de Postgre. Además de este “traductor” incorpora una funcionalidad de migración de nuestros datos desde cualquier versión licenciada de SQL hacía PostgreSQL.

Esquema de Babelfish

¿Cómo funciona BABELFISH?

Paso 1. Instalación:

Como es lógico para empezar a trabajar con Babelfish lo primero que debemos hacer es instalarlo, para lo que necesitaremos un sistema operativo linux. Es importante destacar que la instalación de babelfish incluye la instalación de una versión de PostgreSQL con los componentes necesarios para su funcionamiento y no funcionará con una instalación de PostgreSQL desde cualquier otra fuente. Por suerte, el bundle de instalación de Babelfish incluye un fichero con las instrucciones detalladas paso a paso para completar la instalación de manera exitosa, eso sí, las instrucciones de instalación son para Ubuntu y los pasos pueden diferir ligeramente en otras distribuciones.

En caso de que queramos una versión cloud, Babelfish es una capacidad integrada de Amazon Aurora y no tiene coste adicional. Se puede habilitar Babelfish en Amazon Aurora desde la consola de administración de RDS.

Paso 2. Configuración:

Una vez concluida la instalación, es el momento de conectar a PostgreSQL y empezar a configurar todo. Para empezar crearemos un usuario que será propietario de la base de datos de muestra. Crearemos también la base de datos de muestra y definiremos si Babelfish va a trabajar en modo base de datos única o va a admitir varias bases de datos. Esta configuración no se va a poder cambiar por lo que si elegimos la opción single-db debemos estar muy seguros.

Paso 3. Migración:

Ahora que ya tenemos todo instalado y configurado toca entrar en materia y migrar los datos de nuestro SQL Server. Para la migración tenemos dos opciones otra vez, modo base de datos única o modo de múltiples bases de datos. Cada uno de los modos de migración tiene sus pros y sus contras y una vez más, una vez elegido uno no lo podremos cambiar. La primera vez que iniciemos Babelfish se crearán una base de datos master y una tempdb, si teníamos objetos creados en la master deberemos recrearlos en esta. En cuanto a la tempdb una vez creada no se borrará nunca al contrario de lo que pasa en SQL Server.

En el modo de migración de base de datos única, los nombres de los esquemas se crean tal cual, por lo que si el objetivo es terminar migrando a PostgreSQL nativo tendremos que terminar haciendo cambios en el código. Si este es nuestro objetivo (que, a estas alturas, debería serlo) es recomendable mover todas las tablas al esquema DBO en SQL Server antes de la migración.

Tendrás que elegir el modo de migración de múltiples bases de datos si quieres migrar varias bases de datos, si no tienes claras tus necesidades futuras o si lo que quieres es migrar varias bases de datos de usuarios juntas y el objetivo final no es realizar una migración PostgreSQL.

Siguientes pasos y conclusiones

En este punto ya estamos preparados para empezar a trabajar con Babelfish for PostgreSQL de manera transparente como si de un SQL Server se tratara, esto nos permitirá ir migrando gradualmente nuestras aplicaciones hasta conseguir un funcionamiento con PostgreSQL Nativo y podremos reinvertir el dinero ahorrado en licencias de SQL Server en un mejor hardware y/o en un soporte de alto nivel para PostgreSQL.

Publicado por Roberto Carrancio en Otros, 1 comentario