Lanzamiento de PostgreSQL 17
26 de septiembre de 2024 – El Grupo Global de Desarrollo de PostgreSQL ha anunciado hoy el lanzamiento de PostgreSQL 17, la versión más reciente de la base de datos de código abierto más avanzada del mundo.
PostgreSQL 17 es el resultado de décadas de desarrollo de código abierto, que ha mejorado su rendimiento y escalabilidad y le ha permitido adaptarse a los nuevos patrones de acceso y almacenamiento de datos. Esta versión de PostgreSQL añade mejoras significativas en su rendimiento general, que incluyen una implementación revisada de la gestión de memoria para vacuum, optimizaciones en el acceso al almacenamiento y mejoras en las cargas de trabajo de alta concurrencia, mayor velocidad en la exportación y carga masiva de datos, y mejoras en la ejecución de consultas para índices. PostgreSQL 17 contiene características que benefician tanto a las nuevas cargas de trabajo como a los sistemas críticos, tales como una experiencia enriquecida para los desarrolladores gracias al comando JSON_TABLE
de SQL/JSON, y mejoras en la replicación lógica que simplifican la gestión de las cargas de trabajo de alta disponibilidad y las actualizaciones a versiones principales.
«PostgreSQL 17 demuestra cómo la comunidad global de código abierto, que impulsa el desarrollo de PostgreSQL, realiza mejoras que ayudan a los usuarios a lo largo de todas las etapas de su viaje en el mundo de las bases de datos», dijo Jonathan Katz, miembro del Core Team de PostgreSQL. «Sea que se trate de mejoras en el funcionamiento de bases de datos a gran escala o de nuevas características que refuerzan la agradable experiencia de los desarrolladores, PostgreSQL 17 potenciará su experiencia en la administración de datos».
PostgreSQL es un innovador sistema de gestión de datos conocido por su confiabilidad, robustez y extensibilidad. Cuenta con más de 25 años de desarrollo de código abierto por parte de una comunidad global de desarrolladores y se ha convertido en la base de datos relacional de código abierto preferida por organizaciones de todos los tamaños.
Aumento del rendimiento en todo el sistema
El proceso de vacuum en PostgreSQL es fundamental para el buen estado de las operaciones, ya que requiere recursos de instancias del servidor para funcionar. PostgreSQL 17 introduce una nueva estructura de memoria interna para vacuum que consume hasta 20 veces menos memoria. Esto mejora la velocidad de vacuum y reduce el uso de recursos compartidos, ofreciendo una mayor cantidad de memoria disponible para las cargas de trabajo.
PostgreSQL 17 continúa mejorando el rendimiento de su capa de E/S. Las cargas de trabajo de alta concurrencia pueden obtener hasta el doble de rendimiento en las operaciones de escritura debido a mejoras en el procesamiento del registro de escritura anticipada (WAL). Además, la nueva interfaz de E/S en flujo acelera los escaneos secuenciales (al leer todos los datos de una tabla) y la rapidez con la que ANALYZE
puede actualizar las estadísticas del planificador.
PostgreSQL 17 también extiende sus mejoras de rendimiento a la ejecución de consultas. De hecho, mejora el rendimiento de las consultas con cláusulas IN
que utilizan índices B-tree, el método de índice predeterminado en PostgreSQL. Además, los índices BRIN ahora soportan construcciones paralelas. PostgreSQL 17 incluye varias mejoras para la planificación de consultas, como optimizaciones para restricciones NOT NULL
y mejoras en el procesamiento de expresiones de tabla comunes (consultas WITH
). Esta versión ofrece un mayor soporte para SIMD (Single Instruction/Multiple Data) con el fin de acelerar las operaciones de cálculo, incluyendo el uso de AVX-512 para la función bit_count
.
Ampliación ulterior de una sólida experiencia de los desarrolladores
PostgreSQL fue la primera base de datos relacional en añadir soporte para JSON (2012), y PostgreSQL 17 amplía su implementación del estándar SQL/JSON. JSON_TABLE
ya está disponible en PostgreSQL 17, lo cual permite a los desarrolladores convertir datos JSON en una tabla PostgreSQL estándar. PostgreSQL 17 ahora soporta constructores SQL/JSON (JSON
, JSON_SCALAR
, JSON_SERIALIZE
) y funciones de consulta (JSON_EXISTS
, JSON_QUERY
, JSON_VALUE
), ofreciendo a los desarrolladores otras formas de interactuar con sus datos JSON. Esta versión añade más expresiones jsonpath
, con énfasis en la conversión de datos JSON a un tipo de datos PostgreSQL nativo, incluidos los tipos numérico, booleano, de cadena y de fecha/hora.
PostgreSQL 17 añade más características a MERGE
, que se utiliza para actualizaciones condicionales, incluyendo la cláusula RETURNING
así como la posibilidad de actualizar vistas. Además, PostgreSQL 17 cuenta con nuevas capacidades para la exportación y carga masiva de datos, incluida una mejora de rendimiento de hasta el doble al exportar registros de gran tamaño mediante el comando COPY
. El rendimiento de COPY
también ha mejorado en los casos en que las codificaciones de origen y destino coinciden, e incluye la nueva opción ON_ERROR
, que hace posible continuar un proceso de importación incluso si se produce un error de inserción.
Esta versión incrementa la funcionalidad tanto para el manejo de datos en particiones como para datos distribuidos a través de instancias remotas de PostgreSQL. PostgreSQL 17 soporta el uso de columnas de identidad y restricciones de exclusión en tablas particionadas. El conector de datos externos de PostgreSQL (postgres_fdw
), usado para ejecutar consultas en instancias remotas de PostgreSQL, ahora puede enviar subconsultas EXISTS
e IN
al servidor remoto permitiendo un procesamiento más eficiente.
PostgreSQL 17 incorpora también un proveedor de intercalación inmutable, sin dependencia de plataforma, que garantiza su inmutabilidad y proporciona una semántica de ordenación similar a la de la intercalación C
, aunque con codificación UTF-8
en lugar de SQL_ASCII
. El uso de este nuevo proveedor de intercalación garantiza que las consultas en formato texto devuelvan los mismos resultados ordenados independientemente de dónde se ejecute PostgreSQL.
Mejoras en la replicación lógica para alta disponibilidad y actualizaciones de versiones principales
La replicación lógica se utiliza para enviar datos en tiempo real en distintos escenarios de uso. Sin embargo, antes de esta versión, los usuarios que querían realizar una actualización a una versión principal tenían que eliminar los slots de replicación lógica y, tras la actualización, volver a sincronizar los datos con los suscriptores. Para las actualizaciones realizadas desde PostgreSQL 17, los usuarios ya no tendrán que eliminar los slots de replicación lógica, lo cual simplifica el proceso de actualización al utilizar este tipo de replicación.
PostgreSQL 17 ahora dispone de control de failover para la replicación lógica, lo que la hace más resiliente cuando se implementa en entornos de alta disponibilidad. Además, PostgreSQL 17 introduce la herramienta de línea de comando pg_createsubscriber
para convertir una réplica física en una nueva réplica lógica.
Más opciones para gestionar la seguridad y las operaciones
PostgreSQL 17 amplía aún más la forma en que los usuarios pueden gestionar el ciclo de vida completo de sus sistemas de bases de datos. PostgreSQL cuenta con la nueva opción TLS, sslnegotiation
, que permite a los usuarios realizar un handshake TLS directo cuando se utiliza ALPN (registrado como postgresql en el directorio ALPN). PostgreSQL 17 también añade el rol predefinido pg_maintain
, que otorga a los usuarios permiso para realizar operaciones de mantenimiento.
pg_basebackup
, la utilidad incluida en PostgreSQL que permite realizar respaldos, ahora soporta respaldos incrementales y agrega la utilidad pg_combinebackup
para reconstruir un respaldo completo. Además, pg_dump
incluye una nueva opción llamada --filter
que permite seleccionar qué objetos incluir al generar un archivo de volcado.
PostgreSQL 17 también incluye mejoras en las funciones de monitoreo y análisis. EXPLAIN
ahora muestra el tiempo empleado para lecturas y escrituras de bloques de E/S locales, e incluye dos nuevas opciones: SERIALIZE
y MEMORY
, útiles para visualizar el tiempo empleado en la conversión de datos destinados a la transmisión por red, así como la cantidad de memoria utilizada. PostgreSQL 17 ahora reporta el progreso del proceso de vacuum en índices, y añade la vista del sistema pg_wait_events
que, combinada con pg_stat_activity
, proporciona más información sobre las razones por las que una sesión activa se encuentra en estado de espera.
Características adicionales
Se han añadido numerosas nuevas características y mejoras a PostgreSQL 17 que podrían ser útiles para sus casos de uso. Consulten las notas de la versión para obtener una lista completa de las características nuevas y modificadas.
Sobre PostgreSQL
PostgreSQL es la base de datos de código abierto más avanzada del mundo, que cuenta con una comunidad global de miles de usuarios, contribuidores, empresas y organizaciones. Basada en más de 35 años de ingeniería, que comenzaron en la Universidad de Berkeley en California, PostgreSQL ha continuado con un ritmo de desarrollo inigualable. El maduro conjunto de características de PostgreSQL no sólo iguala a los principales sistemas de bases de datos propietarios, sino que los supera en términos de características avanzadas, extensibilidad, seguridad y estabilidad.
Enlaces
- Descargas
- Notas de la versión
- Kit de prensa
- Información de seguridad
- Política de versiones
- Sigan @postgresql
- Donaciones