Blog

PostgreSQL

Lanzamiento de PostgreSQL 16

14 de septiembre de 2023 – El Grupo Global de Desarrollo de PostgreSQL ha anunciado hoy el lanzamiento de PostgreSQL 16, la versión más reciente de la base de datos de código abierto más avanzada del mundo.

PostgreSQL 16 eleva su rendimiento, con notables mejoras en el paralelismo de consultas, la carga masiva de datos y la replicación lógica. Esta versión contiene muchas características para desarrolladores y administradores, como más sintaxis SQL/JSON, nuevas estadísticas de monitoreo para cargas de trabajo y mayor flexibilidad en la definición de reglas de control de acceso para la gestión de políticas en flotas de gran tamaño.

«A medida que evolucionan los patrones de las bases de datos relacionales, PostgreSQL continúa mejorando el rendimiento en la búsqueda y gestión de datos a gran escala», dijo Dave Page, miembro del Core Team de PostgreSQL. «PostgreSQL 16 ofrece a los usuarios nuevos métodos para escalar vertical y horizontalmente sus cargas de trabajo, ofreciéndoles al mismo tiempo nuevas formas de adquirir información del funcionamiento interno y optimizar la gestión de sus datos.»

PostgreSQL es un innovador sistema de gestión de datos conocido por su confiabilidad y robustez. 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.

Mejoras de rendimiento

PostgreSQL 16 mejora el rendimiento de las actuales funcionalidades de PostgreSQL a través de nuevas optimizaciones del planificador de consultas. En esta nueva versión, el planificador de consultas puede paralelizar los joins FULL y RIGHT, generar planes mejor optimizados para consultas que usan funciones de agregado con cláusulas DISTINCT u ORDER BY, utilizar ordenamientos incrementales para consultas SELECT DISTINCT , y optimizar funciones de ventana deslizante para que se ejecuten de forma más eficiente. También mejora los «anti-joins» RIGHT y OUTER, lo cual permite a los usuarios identificar registros no presentes en una tabla unida.

Esta versión incluye mejoras para la carga masiva de datos utilizando COPY tanto en operaciones individuales como simultáneas, con pruebas que muestran, en algunos casos, una mejora del rendimiento de hasta el 300%. PostgreSQL 16 añade soporte para el balanceo de carga en clientes que utilizan libpq, y mejoras en la estrategia de vacuum que reducen la necesidad de congelar tablas completas. Además, PostgreSQL 16 introduce la aceleración de CPU mediante SIMD en arquitecturas x86 y ARM, lo cual resulta en mejoras de rendimiento al procesar cadenas ASCII y JSON, y al realizar búsquedas en matrices y sub transacciones.

Replicación lógica

La replicación lógica permite a los usuarios transmitir datos a otras instancias PostgreSQL o a suscriptores que puedan interpretar el protocolo de replicación lógica de PostgreSQL. En PostgreSQL 16, los usuarios pueden realizar la replicación lógica a partir de una instancia standby, lo cual significa que un standby puede publicar cambios lógicos a otros servidores. Esto proporciona a los desarrolladores nuevas opciones de distribución de cargas de trabajo – por ejemplo, utilizar una instancia standby en lugar de la instancia primaria más concurrida para replicar de forma lógica los cambios a los sistemas downstream.

Además, se han realizado varias mejoras de rendimiento en PostgreSQL 16 con respecto a la replicación lógica. Los suscriptores ahora pueden aplicar transacciones de gran tamaño utilizando workers en paralelo. En tablas que no disponen de una clave primaria, para encontrar registros los suscriptores pueden usar índices B-tree en lugar de lecturas secuenciales. Bajo ciertas condiciones, los usuarios también pueden acelerar la sincronización inicial de tablas utilizando el formato binario.

En PostgreSQL 16 se han introducido varias mejoras en el control de acceso a la replicación lógica, que incluyen el nuevo rol predefinido pg_create_subscription, el cual otorga a los usuarios la posibilidad de crear nuevas suscripciones lógicas. Por último, con esta versión se empieza a añadir soporte para la replicación lógica bidireccional, introduciendo funcionalidad para replicar datos entre dos tablas de diferentes editores.

Experiencia para los desarrolladores

PostgreSQL 16 añade más sintaxis del estándar SQL/JSON, lo que incluye constructores y predicados como JSON_ARRAY(), JSON_ARRAYAGG(), e IS JSON. En esta versión también se introduce la posibilidad de utilizar guiones bajos como separadores de miles (por ejemplo, 5_432_000) y literales enteros no decimales, como 0x1538, 0o12470, y 0b1010100111000.

Los desarrolladores que utilizan PostgreSQL 16 también se benefician de los nuevos comandos en psql. Estos incluyen \bind, que permite a los usuarios preparar consultas parametrizadas y utilizar \bind para sustituir las variables (por ejemplo SELECT $1::int + $2::int \bind 1 2 \g). 

PostgreSQL 16 mejora el soporte general para intercalaciones de texto, las cuales proporcionan reglas sobre cómo ordenar el texto. PostgreSQL 16 se compila con soporte ICU por defecto, determina la configuración regional ICU por defecto a partir del entorno y permite a los usuarios definir reglas de intercalación ICU personalizadas.

Monitoreo

Un elemento clave a la hora de optimizar el rendimiento de las cargas de trabajo de las bases de datos es comprender el impacto que tienen las operaciones de E/S en el sistema. PostgreSQL 16 introduce pg_stat_io, una nueva fuente de métricas clave de E/S para el análisis granular de los patrones de acceso de E/S.

Además, esta versión añade un nuevo campo a la vista pg_stat_all_tables el cual registra un timestamp para indicar cuándo se escaneó por última vez una tabla o índice. PostgreSQL 16 también mejora la legibilidad de auto_explain mediante el registro de valores transferidos a sentencias parametrizadas, así como la precisión del algoritmo de seguimiento de consultas utilizado por pg_stat_statements y pg_stat_activity.

Control de acceso y seguridad

PostgreSQL 16 proporciona opciones más detalladas para el control de acceso y mejora otras características de seguridad. Esta versión mejora la gestión de los archivos pg_hba.conf y pg_ident.conf permitiendo la coincidencia de expresiones regulares para nombres de usuarios y bases de datos, y directivas include para la inclusión de archivos de configuración externos.

Se han añadido varios parámetros de conexión cliente orientados a la seguridad, incluido require_auth, que permite a los clientes especificar qué parámetros de autenticación están dispuestos a aceptar de un servidor, y sslrootcert="system", que indica que PostgreSQL debe utilizar el almacén de autoridades de certificación (CA) de confianza proporcionado por el sistema operativo del cliente. Además, la versión añade soporte para la delegación de credenciales Kerberos, lo cual permite a extensiones como postgres_fdw y dblink utilizar credenciales autenticadas para conectarse a servicios de confianza.

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
Haz clic aquí para leer la noticia original en inglés en la página web oficial de PostgreSQL.