PostgreSQL 16 Bêta 1

Par:
fredericmazue

ven, 26/05/2023 - 13:04

Le PostgreSQL Global Development Group a annoncé la disponibilité de la première version bêta de PostgreSQL 16. Voici quelques points forts des fonctionnalités de PostgreSQL 16

Performance

PostgreSQL 16 inclut des améliorations de performances dans l'exécution des requêtes. Cette version ajoute plus de parallélisme des requêtes, notamment en permettant aux jointures FULL et RIGHT de s'exécuter en parallèle et en parallèle de l'exécution des fonctions d'agrégation string_agg et array_agg. De plus, PostgreSQL 16 peut utiliser des tris incrémentiels dans les requêtes SELECT DISTINCT. Il existe également plusieurs optimisations pour les requêtes de fenêtre, des améliorations dans les recherches pour les partitions RANGE et LIST et la prise en charge des "anti-jointures" dans les requêtes RIGHT et OUTER.

PostgreSQL 16 peut également améliorer les performances du chargement en masse simultané de données à l'aide de COPY jusqu'à 300 %.

Cette version introduit également la prise en charge de l'accélération du processeur à l'aide de SIMD pour les architectures x86 et ARM, y compris des optimisations pour le traitement des chaînes ASCII et JSON, et des recherches de tableaux et de sous-transactions. De plus, PostgreSQL 16 introduit l'équilibrage de charge dans libpq, la bibliothèque cliente pour PostgreSQL.

Améliorations de la réplication logique

La réplication logique permet aux utilisateurs de PostgreSQL de diffuser des données en temps réel vers d'autres PostgreSQL ou d'autres systèmes externes qui implémentent le protocole logique. Jusqu'à PostgreSQL 16, les utilisateurs ne pouvaient créer des éditeurs de réplication logique que sur des instances principales. PostgreSQL 16 ajoute la possibilité d'effectuer un décodage logique sur une instance de secours, offrant aux utilisateurs plus d'options pour répartir leur charge de travail, par exemple, utiliser une instance de secours moins occupée qu'une instance principale pour répliquer logiquement les modifications.

PostgreSQL 16 inclut également plusieurs améliorations des performances de la réplication logique. Cela inclut la possibilité pour l'abonné d'appliquer des transactions volumineuses en parallèle, d'utiliser des index autres que la PRIMARY KEY pour effectuer des recherches lors des opérations UPDATE ou DELETE, et de permettre la copie des tables au format binaire lors de l'initialisation.

Expérience développeur

PostgreSQL 16 continue d'implémenter la norme SQL/JSON pour manipuler les données JSON, y compris la prise en charge des constructeurs SQL/JSON (par exemple JSON_ARRAY(), JSON_ARRAYAGG() et al) et des fonctions d'identité (IS JSON). Cette version ajoute également la fonction d'agrégation standard SQL ANY_VALUE, qui renvoie toute valeur arbitraire de l'ensemble d'agrégats. Pour plus de commodité, PostgreSQL 16 vous permet désormais de spécifier des littéraux entiers non décimaux, tels que 0xff, 0o777 et 0b101010, et d'utiliser des traits de soulignement comme séparateurs de milliers, tels que 5_432.

Cette version ajoute la prise en charge du protocole de requête étendu au client psql. Les utilisateurs peuvent exécuter une requête, par ex. SELECT $1 + $2 et utiliser la commande \bind pour substituer les variables.

Fonctions de sécurité

PostgreSQL 16 continue de donner aux utilisateurs la possibilité d'accorder un accès privilégié aux fonctionnalités sans nécessiter de superutilisateur avec de nouveaux rôles prédéfinis. Ceux-ci incluent pg_maintain, qui permet l'exécution d'opérations telles que VACUUM, ANALYZE, REINDEX, et autres, et pg_create_subscription, qui permet aux utilisateurs de créer une souscription de réplication logique. De plus, à partir de cette version, les abonnés à la réplication logique exécutent des transactions sur une table en tant que propriétaire de la table, et non en tant que superutilisateur.

PostgreSQL 16 vous permet désormais d'utiliser des expressions régulières dans les fichiers pg_hba.conf et pg_ident.conf pour faire correspondre les noms d'utilisateurs et de bases de données. De plus, PostgreSQL 16 ajoute la possibilité d'inclure d'autres fichiers dans pg_hba.conf et pg_ident.conf. PostgreSQL 16 ajoute également la prise en charge du mot-clé standard SQL SYSTEM_USER, qui renvoie le nom d'utilisateur et la méthode d'authentification utilisés pour établir une session.

PostgreSQL 16 ajoute également la prise en charge de la délégation des informations d'identification Kerberos, qui permet à des extensions telles que postgres_fdw et dblink d'utiliser les informations d'identification authentifiées pour se connecter à d'autres services. Cette version ajoute également plusieurs nouveaux paramètres de connexion axés sur la sécurité pour les clients. Cela inclut require_auth, où un client peut spécifier les méthodes d'authentification qu'il est prêt à accepter du serveur. Vous pouvez maintenant définir sslrootcert sur system pour demander à PostgreSQL d'utiliser le magasin d'autorité de certification (CA) de confiance fourni par le système d'exploitation du client.

Surveillance et gestion

PostgreSQL 16 ajoute plusieurs nouvelles fonctionnalités de surveillance, notamment la nouvelle vue pg_stat_io qui fournit des informations sur les statistiques d'E/S. Cette version fournit également un horodatage pour la dernière fois qu'une table ou un index a été analysé. Il y a aussi des améliorations à l'algorithme de normalisation utilisé pour pg_stat_activity.

Cette version inclut des améliorations de la stratégie de gel des pages, qui améliore les performances de nettoyage et d'autres opérations de maintenance. PostgreSQL 16 améliore également la prise en charge générale des classements de texte, qui fournissent des règles sur la façon dont le texte est trié. PostgreSQL 16 définit ICU comme fournisseur de classement par défaut et ajoute également la prise en charge des classements unicode et ucs_basic prédéfinis.

PostgreSQL 16 ajoute des options de compression supplémentaires à pg_dump, notamment la prise en charge de la compression lz4 et zstd.

A remarquer : Sous Windows, PostgreSQL 16 requeirt Windows 10 au minimum.