Tal y como se viene presentando año con año en entre septiembre-octubre, se ha dado a conocer el lanzamiento de la nueva versión de PostgreSQL 17 y al igual que en todas las versiones anteriores, la prioridad sigue siendo la mejora del rendimiento y optimizaciones de recursos, especialmente para operaciones como VACUUM, I/O y consultas, mientras que la novedad más importante de este lanzamiento es la copia de seguridad incremental.
Para los usuarios empresariales, la actualización trae una gran cantidad de mejoras que simplifican la administración y el uso de la base de datos. Aunque PostgreSQL ha sido históricamente una base de datos relacional, esta versión amplía su integración con funcionalidades avanzadas para trabajar con documentos JSON, una característica comúnmente asociada con MongoDB Atlas.
Novedades de PostgreSQL 17
En esta nueva versión que se presenta de PostgreSQL 17, se ha introducido una nueva estructura de datos en la operación VACUUM, que reduce el consumo de memoria hasta 20 veces, permitiendo que estas operaciones sean más rápidas y eficientes en términos de recursos compartidos.
Por la parte de las mejoras en el rendimiento, la gestión de registros de escritura diferida (WAL) se ha optimizado, logrando un rendimiento de escritura hasta dos veces superior en sistemas con muchas consultas concurrentes. Se ha propuesto una interfaz de E/S en streaming para mejorar la búsqueda secuencial y la actualización de estadísticas tras realizar la operación ANALYZE.
Además de ello, se han implementado mejoras en las consultas con cláusulas «IN» al usar índices de árbol B, asi como también que se han implementado la construcción paralela de índices BRIN, se han optimizado las comprobaciones «NOT NULL» y se ha acelerado el procesamiento de expresiones de tabla comunes (CTE) y para cálculos intensivos, se han incorporado instrucciones SIMD, como AVX-512, para acelerar operaciones como la función `bit_count`.
Otra de las novedades que se destaca son las nuevas funcionalidades para JSON, ya que los usuarios ahora pueden consultar tipos de datos JSON utilizando comandos SQL estándar. Esto es posible gracias a la nueva funcionalidad de la tabla json
, que transforma los datos JSON en una estructura tabular. A partir de ahí, los usuarios pueden realizar consultas mediante la cláusula FROM
en SQL, lo que permite devolver los datos en un formato relacional. Se ha añadido la función `JSON_TABLE` para convertir datos JSON en tablas estándar de PostgreSQL.
Tambien se destaca la nueva funcionalidad de copia de seguridad incremental en PostgreSQL 17 que permite respaldar únicamente los cambios realizados desde la última copia de seguridad completa o incremental, lo que optimiza el uso del ancho de banda y reduce el almacenamiento. Aunque PostgreSQL ya ofrecía soluciones como el WAL Archiving, que replicaba el registro de escritura anticipada (WAL) para mantener las secciones necesarias de la base de datos, la versión 17 introduce por primera vez un mecanismo nativo para realizar copias incrementales. Este sistema no solo minimiza las interrupciones durante el funcionamiento al impactar menos en el rendimiento, sino que también reduce considerablemente los tiempos de recuperación, un aspecto clave, ya que la restauración de copias de seguridad suele ser un proceso lento y preocupante para los usuarios.
Se implementó un motor independiente de la plataforma para procesar las propiedades de configuración regional, permitiendo un comportamiento uniforme en el ordenamiento de resultados de consultas. Este motor tiene en cuenta factores como la presencia de caracteres especiales y la sensibilidad al caso al ordenar valores. El mecanismo de replicación lógica ahora simplifica el proceso de actualización de la base de datos sin necesidad de eliminar ranuras de replicación lógica ni resincronizar datos al migrar a una nueva versión.
De los demás cambios que se destacan:
- La exportación de cadenas largas con el comando `COPY` se ha acelerado hasta dos veces.
- Se ha optimizado la copia cuando las codificaciones de origen y destino coinciden.
- Se ha añadido la opción `ON_ERROR` para permitir que la importación continúe a pesar de errores al insertar datos.
- Se ha agregado la capacidad de utilizar columnas con identificadores únicos en tablas particionadas.
- Se implementó una función de conmutación por error para cambiar a un servidor de respaldo en configuraciones tolerantes a fallas.
- Se agregó una nueva utilidad pg_createsubscriber para convertir una réplica física en una réplica lógica.
- Se introdujo la opción «sslnegotiation» para negociar conexiones TLS seguras directamente utilizando la extensión ALPN TLS.
- Se agregó el rol predefinido pg_maintain, que otorga a los usuarios el derecho a realizar operaciones relacionadas con el mantenimiento del DBMS
Finalmente si estás interesado en poder conocer más al respecto, puedes consultar los detalles en el siguiente enlace.