Le blog Big Data

PostgreSQL 9.4 arrive à grand pas

La sortie de cette nouvelle version majeure est prévue pour septembre 2014 et apporte son lot de surprises. Les développeurs PostgreSQL ne se sont pas endormis sur leurs lauriers.

Focus sur les 5 nouveautés les plus intéressantes :

Alter system

Dans les versions précédentes de PostgreSQL il fallait éditer le fichier postgresql.conf pour modifier ou ajouter un paramètre de configuration. Dans la version 9.4 on peut désormais exécuter directement la commande ALTER SYSTEM (ALTER SYSTEM SET configuration_parameter { TO | = } { value | ‘value’ | DEFAULT }). Cette commande modifie un nouveau fichier appelé postgresql.auto.conf. Les paramètres contenus dans le fichier postgresql.auto.conf sont prioritaires par rapport à ceux du postgresql.conf. La valeur « DEFAULT » supprime l’entrée présente dans le postgresql.auto.conf, l’entrée correspondante dans postgresql.conf est alors à nouveau prise en compte.

Exemple : ALTER SYSTEM SET wal_level = hot_standby;

Replication slot

La réplication slot est une fonctionnalité lié à la réplication master/slave (hot standby ou streaming replication). Ils permettent de s’assurer que le master ne supprime pas (ou n’archive pas) les segments Wal tant qu’ils n’ont pas été reçus par le ou les esclaves. Ce n’était pas le cas précédemment et cela pouvait créer potentiellement des conflits et des erreurs de recovery quand un esclave était indisponible même pendant un court instant.

Logical decoding

Cette fonctionnalité permet d’extraire toutes les opérations validées contenues dans les Wal et de les afficher de manière compréhensible pour l’utilisateur. Mais surtout elle permet de rediriger le flux vers une source externe (une autre base par exemple) ouvrant la voie à une réplication logique. Là où la réplication classique permet de copier un cluster en entier, cette nouvelle fonctionnalité permet de répliquer au niveau de la base de données. Et bien plus encore. (Nous verrons en détail dans un prochain article tout ce que peut nous apporter le logical decoding)

Materialized views

Les vues matérialisées ne sont pas une nouveauté, elles sont apparues dans la version 9.3 de PostgreSQL. Lorsqu’une vue matérialisée est mise à jour, les données qui la composent sont bloquées en lecture. Ce n’est plus le cas dans la version 9.4 grâce à la commande REFRESH MATERIALIZED VIEW CONCURRENTLY : les données sont toujours accessibles malgré la mise à jour.

PG_prewarm

Un des comportements naturels d’une base de données est le fait que les données ne sont mises en cache (zone mémoire shared-buffer) que lors de leur première utilisation. En d’autres termes, lors de l’exécution d’une requête les données sont lues une première fois sur disque puis stockées dans la mémoire cache. La première exécution de la requête est donc toujours plus lente que les exécutions suivantes.

Pg_prewarm permet de charger directement les données d’une ou plusieurs tables dans la mémoire cache (de l’OS ou de PostgreSQL) au moment du démarrage du cluster ou à n’importe quel autre moment. Les données étant déjà en cache, les requêtes seront plus rapides dès la première exécution.

A travers ces 5 nouveautés, on voit que la version de PostgreSQL 9.4 sera encore plus aboutie que les versions précédentes. Ce SGBDR arrive à maturité et dépasse sur bien des points les systèmes de base de données des grands éditeurs qui vendent très cher leurs solutions. PostgreSQL n’a rien à leur envier. Vivement septembre 2014.

Sébastien Ruiz

Sébastien Ruiz

      Laisser un commentaire