PostgreSQL 18 llega con I/O asíncrona, índices más rápidos, UUIDv7, autenticación OAuth 2.0 y columnas virtuales
Tras un año de intenso trabajo, el equipo de desarrollo de PostgreSQL ha anunciado la llegada de la versión 18, una nueva rama estable que estará respaldada con actualizaciones y soporte hasta noviembre de 2030.
Con esta versión, el legendario sistema de gestión de bases de datos de código abierto marca el fin del soporte para la serie PostgreSQL 13.x, programado para el 13 de noviembre, invitando a las organizaciones a preparar sus planes de migración hacia esta nueva etapa.
Principales novedades de PostgreSQL 18
En esta nueva versión que se presenta de PostgreSQL 18, una de las características más destacadas es la incorporación de un subsistema de entrada/salida asíncrona (AIO), diseñado para eliminar cuellos de botella y reducir la latencia en operaciones intensivas de lectura. Esta mejora se apoya en la interfaz io_uring del kernel de Linux, ofreciendo hasta tres veces más rendimiento en pruebas reales.
Aunque por ahora solo las operaciones de lectura se benefician de la asincronía (para preservar los principios ACID en escritura), el impacto en escenarios de análisis de datos o grandes consultas es significativo.
Otra de las grandes mejoras es la optimización del uso de índices multicolumna mediante la técnica de skip scan, que permite aprovechar las columnas indexadas incluso cuando no todas son utilizadas en una consulta. Asimismo, se refina el manejo de consultas con las cláusulas OR e IN, lo que mejora tanto la planificación como la ejecución de operaciones complejas de unión y filtrado.
En el terreno del paralelismo, PostgreSQL 18 introduce la construcción paralela de índices GIN, acelerando la indexación de datos compuestos, matrices o estructuras JSON, y permitiendo un uso más eficiente de los recursos del sistema.
Ademas de ello, también se destaca el nuevo soporte para columnas virtuales generadas revoluciona la forma en que los datos se calculan y consultan. A diferencia de las columnas almacenadas, estas no ocupan espacio en disco y permiten procesar información de manera dinámica, una característica especialmente útil para trabajar con datos JSON o transformaciones al vuelo.
También se introduce la función uuidv7(), una versión mejorada de los identificadores únicos que combina el tiempo de generación con componentes aleatorios, lo que optimiza la ordenación y el uso en índices primarios.
Mayor seguridad y autenticación moderna
En el apartado de la seguridad, PostgreSQL 18 da un paso firme hacia el futuro con la compatibilidad con OAuth 2.0, lo que permite el inicio de sesión mediante tokens de acceso en lugar de contraseñas tradicionales. Esta integración abre la puerta a mecanismos más avanzados como la autenticación multifactor (MFA) y el inicio de sesión único (SSO).
Asimismo, se marca el fin de la era del algoritmo MD5, reemplazado por el más seguro SCRAM-SHA-256, y se añade soporte para autenticación passthrough entre servidores PostgreSQL conectados mediante postgres_fdw o dblink.
Mejoras en herramientas y administración
La herramienta pg_upgrade, clave para la migración entre versiones, ahora es notablemente más rápida gracias al soporte de paralelización con el parámetro «–jobs N». También se añade la opción «–swap», que permite reemplazar directorios completos sin necesidad de copiar ni enlazar archivos, reduciendo los tiempos de actualización.
Otras utilidades, como EXPLAIN ANALYZE, han sido ampliadas para ofrecer métricas más detalladas sobre búsquedas en índices, uso de buffers, carga de CPU y operaciones WAL. Además, PostgreSQL 18 habilita por defecto las sumas de comprobación de datos, fortaleciendo la integridad y confiabilidad del almacenamiento.
De los demás cambios que se destacan:
- Se añadió la funcion pg_stat_io para informar la actividad de E/S en bytes
- Se añadió la función para devolver estadísticas WALpg_stat_get_backend_wal() por backend
- Las estadísticas WAL por backend se pueden borrar mediante pg_stat_reset_backend_stats().
- Se añadió la variable de servidor ssl_tls13_ciphers para permitir la especificación de múltiples conjuntos de cifrado TLSv1.3 separados por dos puntos
- Cambio la variable de servidor ssl_groups predeterminada para incluir la curva elíptica X25519
- Cambio el nombre de la variable del servidor ssl_ecdh_curvea ssl_groups y permitir que se especifiquen múltiples curvas ECDH separadas por dos puntos
Finalmente si estás interesado en poder conocer más al respecto, puedes consultar los detalles en el siguiente enlace.