Blog

PostgreSQL

Lanzamiento de PostgreSQL 16 Beta 1

El Grupo Global de Desarrollo de PostgreSQL anuncia que ya puede descargarse la primera versión beta de PostgreSQL 16. Esta versión ofrece avances de todas las características que contendrá PostgreSQL 16 tras su disponibilidad general, aunque algunos detalles del lanzamiento podrían cambiar durante el periodo beta.

La información sobre todas las características y cambios introducidos en PostgreSQL 16 se encuentra en las notas de la versión:

https://www.postgresql.org/docs/16/release-16.html

De acuerdo con el espíritu de la comunidad de código abierto de PostgreSQL, recomendamos encarecidamente que prueben las nuevas características de PostgreSQL 16 en sus sistemas. Esto nos ayudará a eliminar errores u otros posibles problemas. Aunque no recomendamos ejecutar PostgreSQL 16 Beta 1 en un entorno de producción, les invitamos a encontrar formas de ejecutar esta versión beta con cargas de trabajo típicas de sus aplicaciones.

Sus pruebas y comentarios ayudarán a la comunidad a asegurar que PostgreSQL 16 cumpla con nuestros estándares de entrega de una versión estable y confiable de la base de datos relacional de código abierto más avanzada del mundo. Por favor, lean más sobre nuestro proceso de pruebas beta y cómo pueden contribuir:

https://www.postgresql.org/developer/beta/

Características destacadas de PostgreSQL 16

Rendimiento

PostgreSQL 16 incluye mejoras de rendimiento en la ejecución de consultas. Esta versión añade más paralelismo a las consultas, permitiendo que los join FULL y RIGHT se ejecuten en paralelo, y que las funciones de agregación string_agg y array_agg también se ejecuten en paralelo. Además, PostgreSQL 16 puede usar ordenamientos incrementales en consultas SELECT DISTINCT. También se han introducido varias optimizaciones para las  consultas de ventana deslizante, mejoras en las búsquedas de particiones RANGE y LIST, y soporte para «anti-joins» en consultas RIGHT y OUTER.

PostgreSQL 16 también puede mejorar en hasta un 300% el rendimiento en las cargas masivas concurrentes de datos utilizando COPY.

Esta versión también introduce soporte para la aceleración de CPU usando SIMD para arquitecturas x86 y ARM, incluyendo optimizaciones para procesar cadenas ASCII y JSON, y búsquedas de matrices y sub transacciones. Además, PostgreSQL 16 introduce el balanceo de carga para libpq, la biblioteca cliente para PostgreSQL.

Mejoras en la replicación lógica

La replicación lógica permite a los usuarios de PostgreSQL transmitir datos en tiempo real a otros sistemas PostgreSQL o a sistemas externos que implementen el protocolo lógico. Antes de PostgreSQL 16, los usuarios podían crear únicamente editores de replicación lógica en instancias primarias. Sin embargo, PostgreSQL 16 añade la posibilidad de utilizar la decodificación lógica en una instancia en standby, ofreciendo a los usuarios más opciones para distribuir sus cargas de trabajo. Es posible, por ejemplo, replicar lógicamente los cambios utilizando una instancia en standby que esté menos saturada que una instancia primaria.

PostgreSQL 16 también cuenta con varias mejoras de rendimiento para la replicación lógica. Entre ellas, se permite al suscriptor ejecutar grandes transacciones en paralelo, el uso de índices distintos de la PRIMARY KEY para realizar búsquedas durante las operaciones UPDATE o DELETE, y la posibilidad de copiar tablas usando el formato binario durante la inicialización.

Experiencia para los desarrolladores

PostgreSQL 16 continúa implementando el estándar SQL/JSON para la manipulación de datos JSON, lo cual incluye soporte para constructores SQL/JSON (por ejemplo, JSON_ARRAY(),JSON_ARRAYAGG() et al), y funciones de identidad (IS JSON). Esta versión también añade la función de agregado del estándar SQL ANY_VALUE, que devuelve cualquier valor arbitrario del conjunto de agregados. Además, para mayor comodidad, PostgreSQL 16 permite ahora especificar literales enteros no decimales, como 0xff, >0o777 y 0b101010, y usar guiones bajos como separadores de miles, como por ejemplo 5_432.

Esta versión añade soporte al cliente psql para el protocolo de consulta extendido. Esto permite a los usuarios ejecutar una consulta, por ejemplo SELECT $1 + $2, y utilizar el comando \bind para sustituir las variables.

Características de seguridad

PostgreSQL 16 sigue ofreciendo a los usuarios la posibilidad de conceder acceso privilegiado a determinadas funciones, sin necesidad de contar con el rol de superusuario, mediante nuevos roles predefinidos. Estos incluyen pg_maintain, que permite la ejecución de operaciones como VACUUM, ANALYZE, REINDEX y otras, y pg_create_subscription, que permite a los usuarios crear una suscripción de replicación lógica. Además, a partir de esta versión, los suscriptores de replicación lógica ejecutan transacciones en una tabla como propietarios de la tabla, no como superusuarios.

PostgreSQL 16 ahora permite utilizar expresiones regulares en los archivos pg_hba.conf y pg_ident.conf para que coincidan nombres de usuarios y bases de datos. Adicionalmente, PostgreSQL 16 añade la posibilidad de incluir otros archivos tanto en pg_hba.conf como en pg_ident.conf. Se añade también soporte para la palabra clave estándar SYSTEM_USER de SQL, que devuelve el nombre de usuario y el método de autenticación utilizado para establecer una sesión. 

PostgreSQL 16 también añade soporte para la delegación de credenciales en Kerberos, lo cual permite a extensiones como postgres_fdw y dblink utilizar las credenciales autenticadas para conectarse a otros servicios. En esta versión se añaden también varios parámetros de conexión orientados a la seguridad para clientes. Entre ellos figura require_auth, mediante el cual un cliente puede especificar qué métodos de autenticación está dispuesto a aceptar desde el servidor. Ahora es posible establecer sslrootcert en system para indicarle a PostgreSQL que utilice el almacén de autoridades de certificación (CA) confiables proporcionado por el sistema operativo del cliente.

Monitoreo y gestión

PostgreSQL 16 añade varias nuevas características de monitoreo, incluida la nueva vista pg_stat_io que contiene información sobre las estadísticas de I/O. Esta versión también proporciona un timestamp que indica cuándo se escaneó por última vez una tabla o un índice. Se ha mejorado también el algoritmo de normalización utilizado para pg_stat_activity.

Esta versión incluye mejoras en la estrategia de congelamiento de páginas, que mejoran el rendimiento de las operaciones de vaciado y otras tareas de mantenimiento. PostgreSQL 16 también mejora el soporte general para intercalaciones de texto, el cual proporciona reglas para la ordenación del texto. PostgreSQL 16 establece ICU como el proveedor de intercalación por defecto, y también añade soporte para las intercalaciones predefinidas de unicode y ucs_basic.

PostgreSQL 16 añade opciones de compresión adicionales a pg_dump, que incluyen soporte para los tipos de compresión lz4 y zstd.

Otros cambios destacados

En PostgreSQL 16 se elimina la opción promote_trigger_file para habilitar la promoción de un standby. Los usuarios deberán utilizar el comando pg_ctl promote o la función pg_promote() para promover un standby.

PostgreSQL 16 introduce el sistema de compilación Meson, que finalmente reemplazará a Autoconf. Esta versión también añade soporte básico para características de desarrollo que serán mejoradas en versiones futuras. Esto incluye una opción para desarrolladores que habilita DirectIO y la capacidad de utilizar la replicación lógica para replicar bidireccionalmente entre dos tablas cuando se especifica origin=none en el suscriptor.

Para instalaciones en Windows, PostgreSQL 16 ahora soporta una versión mínima de Windows 10.

Características adicionales

Muchas otras nuevas características y mejoras han sido añadidas a PostgreSQL 16. Varias de ellas también pueden ser útiles para sus casos de uso. Para una lista completa de las características nuevas y de las modificadas, consulten las notas de la versión:

https://www.postgresql.org/docs/16/release-16.html

Pruebas de errores y compatibilidad

La estabilidad de cada versión de PostgreSQL depende en gran medida de que ustedes, la comunidad, prueben la próxima versión con sus cargas de trabajo y herramientas de prueba para detectar errores y regresiones antes del lanzamiento oficial de PostgreSQL 16. Dado que se trata de una versión beta, es posible que se produzcan pequeños cambios en los comportamientos de la base de datos, los detalles de las funciones y las API. Sus impresiones y pruebas ayudarán a determinar los ajustes finales de las nuevas funciones, así que les rogamos que la prueben lo antes posible. La calidad de las pruebas de los usuarios contribuirá a definir el momento en el que lanzaremos la versión final.

Una lista de los problemas abiertos está disponible al público en el wiki de PostgreSQL. Pueden reportar errores usando el siguiente formulario en el sitio web de PostgreSQL:

https://www.postgresql.org/account/submitbug/

Calendario de la versión beta

Este es el primer lanzamiento beta de la versión 16. Según lo requieran las pruebas, el Proyecto PostgreSQL publicará betas adicionales. Serán seguidas por una o más versiones candidatas, hasta el lanzamiento de la versión definitiva a finales de 2023. Para más información, consulten la página de Pruebas Beta.

Enlaces

Haz clic aquí para leer la noticia original en inglés en la página web oficial de PostgreSQL.