LOXODATA

PostgreSQL 13 en bêta

2020-06-29   1387 mots, 7 minutes de lecture

PostgreSQL 13 Bêta 2 publiée

Le PostgreSQL Global Development Group annonce la disponibilité de la seconde bêta de PostgreSQL 13. Cette publication contient un aperçu de toutes les fonctionnalités qui seront disponibles dans la version finale de PostgreSQL 13. Il est, toutefois, possible que quelques détails changent avant cette publication.

Vous trouverez des informations sur toutes les fonctionnalités et modifications à PostgreSQL dans les notes de publication : https://www.postgresql.org/docs/13/release-13.html.

Dans l’esprit de la communauté open source PostgreSQL, nous vous encourageons fortement à tester les nouvelles fonctionnalités dans votre contexte. Ceci afin de nous aider à éliminer les bogues et autres problèmes qui pourraient exister. Si nous ne conseillons pas d’utiliser PostgreSQL 13 Bêta 2 dans vos environnements de production, nous vous encourageons à tester votre charge applicative typique avec cette publication bêta.

Vos tests et commentaires aideront la communauté à s’assurer que PostgreSQL 13 respecte les standards de stabilité et de fiabilité.

Le processus de bêta test et les possibilités de contribution sont décrits à l’adresse suivante : https://www.postgresql.org/developer/beta/.

Changements depuis la Bêta 1

Plusieurs bogues ont été corrigés depuis la publication de la Bêta 1 :

  • le paramètre de configuration effective_io_concurrency est maintenant plus simple à utiliser. Pour convertir l’ancienne valeur vers la nouvelle, vous pouvez utiliser cette requête : SELECT round(sum(OLD / n::float)) from generate_series(1, OLD) s(n); ;
  • le paramètre de configuration enable_hashagg_disk est renommé en hashagg_avoid_disk_plan et sa valeur par défaut est off;
  • le paramètre de configuration enable_groupingsets_hash_disk est retiré;
  • la sortie de EXPLAIN ANALYZE pour les plans d’exécution des requêtes parallèles ayant des agrégats de hachage sur disque montre maintenant la quantité maximum de mémoire et le volume utilisé sur le disque par tâche parallélisée;
  • plusieurs correctifs et améliorations concernant les agrégats de hachage sur disque;
  • la correction d’un crash dans le processus « WAL sender » au démarrage de la réplication physique.

Fonctionnalités

De nombreuses nouvelles fonctionnalités dans PostgreSQL 13 améliorent les performances tout en facilitant le développement des applications.

L’index B-tree, standard de PostgreSQL, reçoit plusieurs améliorations pour la gestion des données dupliquées. Ces améliorations aident à diminuer la taille des index et la vitesse de parcours, en particulier pour les index contenants des valeurs répétées.

PostgreSQL 13 ajoute le tri incrémental, accélérant le tri de données préalablement triées dans une autre partie de la requête. De plus, les requêtes ayant des clauses OR ou des clauses IN/ANY avec des listes de constantes peuvent utiliser les statistiques étendues (créé par CREATE STATISTICS). Cela peut améliorer les plans d’exécution et les performances. PostgreSQL 13 peut maintenant utiliser un fichier sur disque pour les agrégations de hachage (utilisées en tant que partie de requêtes agrégées) avec de grands ensembles d’agrégations.

D’autres améliorations sont ajoutées aux fonctionnalités de partitionnement de PostgreSQL dans cette publication, incluant un plus grand nombre de cas où une jointure directe entre des partitions peut être utilisée. Cela améliore le temps d’exécution de la requête. Les tables partitionnées supportent désormais les déclencheurs « niveau ligne » avec la clause BEFORE, et une table partitionnée peut être répliquée via la réplication logique sans avoir à publier chacune des partitions.

PostgreSQL 13 ajoute la fonctionnalité FETCH FIRST WITH TIES, qui retourne les lignes liées à la dernière ligne.

La fonction .datetime() ajoutée aux requêtes jsonpath convertit automatiquement une chaîne contenant une date ou un horodatage vers le type de données approprié.

Il est plus facile de générer des UUIDs aléatoires avec la fonction gen_random_uuid() utilisable sans activer d’extensions.

Administration

Une des fonctionnalités les plus attendues de PostgreSQL 13 est la capacité de la commande VACUUM à traiter des index en parallèle. Cette fonctionnalité est accessible en utilisant l’option PARALLEL de la commande VACUUM (ou --parallel sur vacuumdb), ce qui permet d’indiquer le nombre de tâches parallèles à utiliser pour traiter les index. Notez que cela ne fonctionne pas avec l’option FULL.

La commande reindexdb peut aussi paralléliser les tâches avec la nouvelle option --jobs, qui permet de spécifier le nombre de sessions concurrentes à utiliser pour réindexer une base de données.

PostgreSQL 13 introduit la notion de « trusted extension », qui permet à un SUPERUSER de spécifier les extensions qu’un utilisateur peut installer dans sa base de données en ayant le privilège CREATE.

Cette publication inclut de nouvelles méthodes de supervision dans une instance PostgreSQL : PostgreSQL 13 permet de suivre les statistiques d’utilisation des WAL, la progression d’une sauvegarde physique en flux et la progression d’une commande ANALYZE. pg_basebackup peut produire un manifeste pouvant être utilisé pour vérifier l’intégrité d’une sauvegarde avec un nouvel outil appelé pg_verifybackup. Il est aussi possible de limiter le volume de WAL réservé par les slots de réplication.

Une nouvelle option de pg_dump, --include-foreign-data, inclut les données des serveurs distants dans la sauvegarde.

La commande pg_rewind reçoit aussi quelques améliorations dans PostgreSQL 13. En plus de la capacité à déclencher une restauration après le crash, il est possible de configurer l’instance secondaire avec l’option --write-recovery-conf. pg_rewind peut utiliser le paramètre restore_command de l’instance cible pour récupérer les WAL requis.

Sécurité

PostgreSQL continue d’améliorer la sécurité avec cette dernière publication. L’introduction de plusieurs fonctionnalités aident au déploiement en toute sécurité de PostgreSQL.

libpq, la bibliothèque de connexions utilisées par psql et de nombreux pilotes de connexions inclut plusieurs nouveaux paramètres de sécurisation des connexions. PostgreSQL 13 introduit le paramètre de connexion channel_binding, permettant à un client de préciser qu’il veut reacquérir la fonctionnalité de «&nsp;channel binding » dans SCRAM. De plus, un client utilisant des certificats TLS protégés par mot de passe peut utiliser le paramètre sslpassword pour l’indiquer. PostgreSQL 13 ajoute aussi le support des certificats chiffrés DER.

Le pilote de données distantes postgres_fdw augmente la sécurité des connexions, en incluant la possibilité d’utiliser une authentification basée sur des certificats pour se connecter à d’autres instances PostgreSQL. De plus, des comptes non privilégiés peuvent maintenant se connecter à d’autres bases de données PostgreSQL via postgres_fdw sans mot de passe.

Autres sujets

PostgreSQL continue d’améliorer l’utilisabilité sur Windows. Il est désormais possible d’utiliser les sockets UNIX pour se connecter à PostgreSQL sous Windows.

La documentation de PostgreSQL ajoute un glossaire pour aider les utilisateurs à se familiariser avec les concepts généraux des bases de données et de PostgreSQL. Cela coïncide avec un travail sur l’affichage des tableaux de fonctions et opérateurs, améliorant la lisibilité sur le web et dans la documentation PDF.

L’utilitaire pgbench utilisé pour les tests de performance offre maintenant la possibilité de partitionner la table “accounts”, facilitant ainsi les tests de charge sur des scénarios contenant des partitions.

psql inclut maintenant la commande \warn, similaire à la commande \echo en termes de sortie. La différence réside dans le fait que \warn envoie le message sur la sortie d’erreur (stderr). De plus, afin d’améliorer l’utilisation des commandes SQL, l’aide \help inclut maintenant un lien vers l’aide en ligne.

Fonctionnalités supplémentaires

De nombreuses autres fonctionnalités et améliorations ont été ajoutées à PostgreSQL. En fonction des cas d’usages, leur importance peut paraître plus ou moins grande que celles mentionnées ci-dessus.

Vous pouvez consulter les notes de publication pour la liste complète des nouveautés et changements.

Tests pour le débogage et la compatibilité

La stabilité de chaque publication de PostgreSQL dépend de vous, la communauté. En testant la version à venir avec votre charge et vos outils de tests, vous pourrez nous aider à trouver les bogues et régressions avant la publication de PostgreSQL 13.

Étant donné qu’il s’agit d’une version bêta, des changements mineurs dans le comportement de la base de données, des détails et des APIs sont toujours possibles. Vos retours et tests aideront à déterminer les ajustements finaux des nouvelles fonctionnalités.

La qualité des tests aide à déterminer le moment de la publication finale.

Une liste des problèmes ouverts est publiquement disponible dans le wiki de PostgreSQL. Vous pouvez rapporter des bogues en utilisant le formulaire présent sur le site web de PostgreSQL : https://www.postgresql.org/account/submitbug/

Planning Bêta

Il s’agit de la deuxième publication bêta de la version 13. Le projet PostgreSQL publiera autant de bêtas que nécessaire pour tester. Celles-ci seront suivies par une ou plusieurs publications de versions candidates, jusqu'à la publication de la version finale à la fin de l’année 2020.

Pour plus d’information, veuillez consulter la page Beta Testing.

Liens