Aujourd’hui, c’est la sortie de PostgreSQL 10!!!! Première révolution, la numérotation des versions : on passe de 9.4…9.6 pour les versions majeures à 10, 11, 12… Ce point est important car un changement de version majeure implique une migration des données. Une opération beaucoup plus lourde que la seule mise à jour des exécutables !

Voici quelques détails sur cette nouvelle version 10 et ce qu’elle apporte :

# Performance et partitionnement

  • Le partitionnement de table est maintenant un attribut de la table :

  • PostgreSQL 10 va plus loin dans la parallélisation avec le parallélisme des Index-Only Scan, Index Scan, Bitmap Heap Scan, Merge Join / Gather Merge, Subplan-Related Improvements
  • Amélioration des performances pour les agrégats et jointures avec postgres_fdw
  • Amélioration des performances de l’analyseur de requête
  • Apparition des statistiques multi-colonnes
  • Amélioration du plan d’exécution des requêtes

# Réplication et scalabilité

  • Réplication logique : légère et basée sur les WAL, répliquant les objets individuellement via les commandes PUBLICATION (primaire) et SUBSCRIPTION (secondaire)

  • QUORUM replication : avec ANY et FIRST pour synchronous_standby_names;
  • Suppression automatique à la fin de la session des slots de réplication temporaires
  • Amélioration de libpq permettant des connexions a de multiples systèmes
  • Amélioration des performances de la réplication physique

# Administration

    • Support de la compression pour pg_receivewal
    • Ajout d’informations sur les Background processes et Wait Events dans pg_stat_activity
    • Ajout de fonctions qui remontent à l’utilisateur des informations sur le status de transaction. L’usage principal de ces fonctions est de déterminer les transactions commitées entre deux snapshots.

# Fonctionnalités SQL et développeurs

    • Gestion de colonne Identity qui vise à remplacer l’utilisation du type serial et qui est conforme au standard SQL

plus d’informations sur ce sujet ici par exemple

    • Possibilité de renommer la valeur d’une énumération

    • Ajout des triggers AFTER STATEMENT qui peuvent avoir accès à l’ensemble des lignes modifiées, avant et après changement, à travers une pseudo-variable de type table

    • Ajout de la fonction xmltable qui produit une table basée sur la valeur XML donnée.
    • Supprimer des éléments d’un JSONB

    • Il est possible de créer des indexes full text sur une colonne JSON ou JSONB

# Sécurité

    • Authentification SCRAM plus sécurisée que md5
    • Création de nouveau rôle pour le monitoring évitant ainsi d’être super utilisateur

    • Ajout de politiques restrictive dans les politiques de sécurité pour l’accès aux lignes et plus seulement de politiques permissives

# Autres fonctionnalités

  • file_fdw peut maintenant utiliser les programmes
  • support des collations ICU
  • Ajout d’un module amcheck permettant de vérifier cohérence / corruption d’un index B-Tree

# Modifications entrainant une incompatibilité ascendante

  • “xlog” et “clog” qui deviennent respectivement “wal” et “xact”.
  • fin du support du protocole client/serveur 1.0 (clients datant d’avant la version 6.3)
  • changement de valeurs par défaut pour pg_basebackup
  • fin du support des TIMESTAMP avec floating point.
  • Le module contrib/tsearch2 a été supprimé qui permettait une comptabilité avec les fonction de recherche full text avant la version 8.3
  • fin du support de la commande pg_dump pour les bases de données plus anciennes que la version 8.0

 

Et voilà, nous avons fini notre petit tour rapide des nouveautés de postgreSQL 10 mais une version 11 est déjà prévue pour dans 12 mois !