
PostgreSQL 12 Bêta 1 publiée
Le PostgreSQL Global Development Group annonce la disponibilité de la première bêta de PostgreSQL 12. Cette publication contient un aperçu de toutes les fonctionnalités qui seront disponibles dans la version finale de PostgreSQL 12. Des modifications peuvent toutefois intervenir d’ici là.
Dans l’esprit de la communauté open source PostgreSQL, nous vous encourageons fortement à tester les nouvelles fonctionnalités de PostgreSQL dans vos systèmes de base de données. Ceci afin de nous aider à éliminer les bogues et autres problèmes qui pourraient exister. Bien que nous ne vous conseillons pas de faire fonctionner PostgreSQL 12 Bêta 1 dans vos environnements de production, nous vous encourageons à trouver des moyens de faire fonctionner votre charge applicative typique avec cette publication bêta.
Vos tests et vos commentaires aideront la communauté à s’assurer que PostgreSQL 12 respecte nos standards de stabilité et fiablité.
Principales fonctionnalités de PostgreSQL 12
Performance d’indexation, Fonctionnalités et Administration
PostgreSQL 12 améliore les performances globales des index B-tree standards, tout en améliorant également la gestion globale de l’espace de ces index. Ces améliorations fournissent aussi une réduction globale de la taille des index B-tree fréquemment modifiés, ainsi qu’un gain de performances.
De plus, PostgreSQL 12 ajoute la possibilité de reconstruire les index
de façon concurrente, ce qui permet de faire une opération
REINDEX
sans bloquer de requêtes sur cet index. Cette fonctionnalité devrait
aider dans le cas de reconstructions longues qui pouvaient causer des
indisponibilités dans le cadre de l’administration d’une base de
données de production.
PostgreSQL 12 étend les possibilités de plusieurs mécanismes
d’indexation spécialisés. La possibilité de créer des index couvrants
(covering index), c.-à-d. la clause INCLUDE
qui a été ajoutée dans
PostgreSQL 11, est désormais ajoutée pour les index GiST. Les index
SP-GiST permettent maintenant d’effectuer des recherches dites « plus
proche voisin » (K-NN) pour les types de données supportant
l’opérateur de distance (<->
).
La quantité de données supplémentaires écrites dans les journaux de transactions (WAL) lors de la création d’un index GiST, GIN ou SP-GiST a été significativement réduite dans PostgreSQL 12. L’utilisation globale des disques d’une instance PostgreSQL en bénéficie, de même que les fonctionnalités comme l’archivage continu ou la réplication en flux.
Requêtes WITH en ligne (Common table expressions)
Les requêtes CTE (requêtes WITH
) peuvent maintenant automatiquement
être exécutées en ligne si elles sont : a) non récursives b) n’ont pas
d’effet de bord c) sont référencées une seule fois dans le reste
de la requête. Ceci supprime la barrière d’optimisation connue depuis
l’introduction de la clause WITH
dans PostgreSQL 8.4.
Vous pouvez forcer une requête WITH
à être exécutée en ligne en
utilisant la clause NOT MATERIALIZED
, par exemple :
WITH c AS MATERIALIZED (
SELECT * FROM a WHERE a.x % 4 = 0
)
SELECT * FROM c JOIN d ON d.y = c.x;
Partitionnement
PostgreSQL 12 améliore le traitement de tables partitionnées ayant des milliers de partitions pour les opérations ne nécessitant qu’un petit nombre de partitions.
PostgreSQL 12 amène aussi des
améliorations des performances des commandes INSERT
et COPY
sur
une table partitionnée. ATTACH PARTITION
peut maintenant être
exécuté sans verrouiller les requêtes concurrentes sur la table
partitionnée. Enfin, il est possible d’utiliser des clés étrangères
référençant une table partitionnée dans PostgreSQL 12.
Requêtes JSON path selon la norme SQL/JSON
PostgreSQL 12 permet maintenant l’exécution de requêtes JSON path selon la spécification SQL/JSON de la norme SQL:2016. De façon similaire aux expressions XPath pour XML, les expressions JSON path permettent d’évaluer des expressions arithmétiques et fonctions ainsi que des comparaisons de valeurs dans les documents JSON.
Un sous-ensemble de ces expressions peut être accéléré avec les index GIN, permettant des recherches très performantes sur des données JSON.
Collations
PostgreSQL 12 supporte maintenant les collations insensible à la casse et insensible aux accents pour les collations fournies par ICU, aussi connues sous le nom de collations non déterministes. Lorsqu’elles sont utilisées, ces collations facilitent les tris et les comparaisons, mais peuvent aussi entrainer des coûts supplémentaires si la collation nécessite des vérifications supplémentaires sur la chaîne de caractères.
Valeurs les plus communes dans les statistiques étendues
CREATE STATISTICS
,
a été introduit dans PostgreSQL 10 pour aider à collecter des
statistiques plus complètes sur des colonnes multiples. Ceci a permis
d’améliorer les plans d’exécution des requêtes. Cette fonction
supporte maintenant les statistiques sur les valeurs les plus
communes. Ainsi les plans d’exécution seront meilleurs pour des
distributions de valeurs non uniformes.
Colonnes générées
PostgreSQL permet la création de colonnes générées calculant leurs valeurs en se basant sur le contenu d’autres colonnes.
Cette fonctionnalité fournit deux types de colonnes générées :
- les colonnes générées stockées, calculées à l’insertion et à la mise à jour, et enregistrées sur le disque ;
- les colonnes générées virtuelles, calculées à la lecture de la colonne, comme une partie de la requête. Celles-ci ne sont cependant pas encore implantées.
Interface au stockage de tables
PostgreSQL 12 introduit une interface au stockage de table, permettant
la création et l’utilisation de mécanismes de stockages différents
pour les tables. De nouvelles méthodes d’accès peuvent être ajoutées en
utilisant l’ordre CREATE ACCESS METHOD
et par la suite utilisé par les tables par la nouvelle clause USING
de l’ordre CREATE TABLE
.
Une interface de stockage des tables peut être définie en créant une nouvelle méthode d’accès aux tables.
Dans PostgreSQL 12, l’interface de stockage utilisée par défaut est la
méthode d’accès heap
, qui est en fait la seule supportée nativement.
Somme de contrôle des pages
La commande pg_verify_checkums
est renommée
pg_checksums
et supporte maintenant l’activation et la désactivation des sommes de
contrôle pour une instance PostgreSQL à froid. Auparavant, les sommes
de contrôles des pages ne pouvaient être activées qu’à
l’initialisation d’une instance avec initdb
.
Authentification et sécurisation des connexions
GSSAPI supporte maintenant le chiffrement côté client et serveur.
Il peut être spécifié dans le fichier
pg_hba.conf
en utilisant les types d’enregistrement hostgssenc
et hostnogssenc
.
PostgreSQL 12 autorise également la découverte des serveurs LDAP
en se basant sur les enregistrements DNS SRV
si PostgreSQL est compilé
avec OpenLDAP.
Changement de comportement notable
Plusieurs changements dans PostgreSQL 12 peuvent affecter le comportement et l’administration des opérations. Quelques-uns sont notés ci-dessous. Pour plus d’informations sur les autres changements, veuillez consulter la section « Migrer vers PostgreSQL » de la note de publication.
-
Le fichier de configuration
recovery.conf
est désormais fusionné dans le fichier principalpostgresql.conf
. L’instance PostgreSQL ne démarre pas si elle détecte la présence du fichierrecovery.conf
. Pour mettre une instance PostgreSQL en mode non primaire, il faut utiliser les fichiersrecovery.signal
etstandby.signal
. Plus d’information sur la restauration d’archive ici :\ https://www.postgresql.org/docs/devel/runtime-config-wal.html#RUNTIME-CONFIG-WAL-ARCHIVE-RECOVERY -
La compilation Just-in-Time (JIT) est maintenant activée par défaut.
-
Les OIDs ne peuvent plus être ajoutés aux tables utilisateurs avec la clause
WITH OIDs
. Il est nécessaire d’effectuer des ajustements sur les tables contenant des colonnes nommées « OID ».\ Lancer unSELECT *
sur une table système fait désormais apparaître l’OID. L’ancien fonctionnement nécessitait que la colonne soit explicitement nommée.
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 publications pour une 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 12.
É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 première publication bêta de la version 12. Le projet PostgreSQL publiera autant de bêtas que nécessaires 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 2019.
Pour plus d’information, veuillez consulter la page Beta Testing.