PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Quoi de neuf dans PostgreSQL 12

Le 3 octobre 2019, une nouvelle version de la base de données open source la plus avancée au monde a été publiée. PostgreSQL 12 est désormais disponible avec des améliorations notables des performances des requêtes (en particulier sur des ensembles de données plus volumineux et l'utilisation globale de l'espace), entre autres fonctionnalités importantes.

Dans ce blog, nous allons jeter un œil à ces nouvelles fonctionnalités et vous montrer comment obtenir et installer cette nouvelle version de PostgreSQL 12. Nous explorerons également certaines considérations à prendre en compte lors de la mise à niveau.

Fonctionnalités et améliorations de PostgreSQL 12

Commençons par mentionner certaines des fonctionnalités et améliorations les plus importantes de cette nouvelle version de PostgreSQL.

Indexation

  • Il existe une optimisation de l'utilisation de l'espace et des performances de lecture/écriture pour les index B-Tree.
  • Réduction des frais généraux WAL pour la création d'index GiST, GIN et SP-GiST.
  • Vous pouvez effectuer des requêtes K-plus proches voisins avec l'opérateur de distance (<->) à l'aide des index SP-GiST.
  • Reconstruire les index sans bloquer les écritures sur un index via la commande REINDEX CONCURRENTLY, ce qui permet aux utilisateurs d'éviter les scénarios de temps d'arrêt pour les longues reconstructions d'index.

Partitionnement

  • Il existe des améliorations par rapport aux requêtes sur les tables partitionnées, en particulier pour les tables avec des milliers de partitions qui n'ont besoin de récupérer les données que d'un sous-ensemble limité.
  • Améliorations des performances pour l'ajout de données aux tables partitionnées avec INSERT et COPY.
  • Vous pourrez attacher une nouvelle partition à une table sans bloquer les requêtes.

SQL

  • Vous pouvez désormais exécuter des requêtes sur des documents JSON à l'aide d'expressions de chemin JSON définies dans la norme SQL/JSON et ils peuvent utiliser les mécanismes d'indexation existants pour les documents stockés au format JSONB afin de récupérer efficacement les données.
  • Les requêtes WITH peuvent désormais être automatiquement intégrées par PostgreSQL 12 (si elles ne sont pas récursives, n'ont pas d'effets secondaires et ne sont référencées qu'une seule fois dans une partie ultérieure d'une requête), ce qui peut à son tour aider à augmenter les performances de nombreuses requêtes existantes.
  • Introduit les "colonnes générées". Ce type de colonne calcule sa valeur à partir du contenu des autres colonnes de la même table. Le stockage de cette valeur calculée sur this est également pris en charge.

Internationalisation

  • PostgreSQL 12 étend sa prise en charge des classements ICU en permettant aux utilisateurs de définir des "classements non déterministes" qui peuvent, par exemple, permettre des comparaisons insensibles à la casse ou aux accents.

Authentification

  • Introduit à la fois le chiffrement côté client et côté serveur pour l'authentification sur les interfaces GSSAPI.
  • Le service PostgreSQL est capable de découvrir les serveurs LDAP s'il est compilé avec OpenLDAP.
  • Authentification multi-facteurs, à l'aide de l'option clientcert=verify-full et d'une méthode d'authentification supplémentaire configurée dans le fichier pg_hba.conf.

Si vous souhaitez profiter de ces nouvelles fonctionnalités et améliorations, vous pouvez vous rendre sur la page de téléchargement et obtenir la dernière version de PostgreSQL. Si vous avez besoin d'une configuration HA, voici un blog pour vous montrer comment installer et configurer PostgreSQL pour HA.

Comment installer PostgreSQL 12

Pour cet exemple, nous allons utiliser CentOS7 comme système d'exploitation. Nous devons donc nous rendre sur le site de téléchargement du système d'exploitation basé sur RedHat et installer la version correspondante.

$ yum install https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm

Il installera le référentiel PostgreSQL avec les packages stables, de test et source.

$ head /etc/yum.repos.d/pgdg-redhat-all.repo

# PGDG Red Hat Enterprise Linux / CentOS stable repositories:

[pgdg12]

name=PostgreSQL 12 for RHEL/CentOS $releasever - $basearch

baseurl=https://download.postgresql.org/pub/repos/yum/12/redhat/rhel-$releasever-$basearch

enabled=1

gpgcheck=1

gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-PGDG

...

Ensuite, installez les packages client et serveur PostgreSQL12. Il installera certaines dépendances Python.

$ yum install postgresql12 postgresql12-server

Maintenant, vous pouvez initialiser votre nouvelle base de données PostgreSQL 12.

$ /usr/pgsql-12/bin/postgresql-12-setup initdb

Initializing database ... OK

Et activer/démarrer le service PostgreSQL.

$ systemctl enable postgresql-12

Created symlink from /etc/systemd/system/multi-user.target.wants/postgresql-12.service to /usr/lib/systemd/system/postgresql-12.service.

$ systemctl start postgresql-12

Et c'est tout. Vous avez la nouvelle version de PostgreSQL en cours d'exécution.

$ psql

psql (12.0)

Type "help" for help.

postgres=# select version();

                                                 version

---------------------------------------------------------------------------------------------------------

 PostgreSQL 12.0 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-39), 64-bit

(1 row)

Maintenant que vous avez installé la dernière version de PostgreSQL, vous pouvez migrer vos données vers ce nouveau nœud de base de données.

Mettre à jour vers PostgreSQL 12

Si vous souhaitez mettre à niveau votre version actuelle de PostgreSQL vers cette nouvelle version, vous disposez de trois options principales pour effectuer cette tâche.

  • pg_dump :C'est un outil de sauvegarde logique qui vous permet de vider vos données et de les restaurer dans la nouvelle version de PostgreSQL. Ici, vous aurez une période d'indisponibilité qui variera en fonction de la taille de vos données. Vous devez arrêter le système ou éviter de nouvelles données dans le nœud maître, exécuter le pg_dump, déplacer le vidage généré vers le nouveau nœud de base de données et le restaurer. Pendant ce temps, vous ne pouvez pas écrire dans votre base de données principale PostgreSQL pour éviter l'incohérence des données.
  • Pg_upgrade :C'est un outil PostgreSQL pour mettre à niveau votre version PostgreSQL sur place. Cela pourrait être dangereux dans un environnement de production et nous ne recommandons pas cette méthode dans ce cas. En utilisant cette méthode, vous aurez également des temps d'arrêt, mais ils seront probablement beaucoup moins longs qu'avec la méthode pg_dump précédente.
  • Réplication logique :Depuis PostgreSQL 10, vous pouvez utiliser cette méthode de réplication qui vous permet d'effectuer des mises à niveau de version majeures sans temps d'arrêt (ou presque). De cette manière, vous pouvez ajouter un nœud de secours dans la dernière version de PostgreSQL, et lorsque la réplication est à jour, vous pouvez effectuer un processus de basculement pour promouvoir le nouveau nœud PostgreSQL.

Considérations avant la mise à niveau vers PostgreSQL 12

En général, pour tout processus de mise à jour, et dans toute technologie, il y a plusieurs points à prendre en compte. Voyons quelques-uns des principaux.

  • Les types de données abstime, reltime et tinterval ont été supprimés.
  • Les paramètres recovery.conf se trouvent dans le fichier postgresql.conf et il n'est plus utilisé. Si vous avez créé ce fichier, le serveur ne démarrera pas. Les fichiers recovery.signal et standby.signal sont maintenant utilisés pour basculer en mode non primaire. Le paramètre trigger_file a été renommé promote_trigger_file et le paramètre standby_mode a été supprimé.
  • Les multiples spécifications recovery_target en conflit ne sont pas autorisées.
  • La spécification de "-f" pour envoyer le contenu du vidage vers la sortie standard est requise dans pg_restore.
  • La longueur maximale des entrées d'index est réduite de huit octets dans les index B-Tree, afin d'améliorer la gestion des entrées en double. L'opération REINDEX sur un index pg_upgrade d'une version précédente peut échouer.
  • DROP IF EXISTS FUNCTION/PROCEDURE/AGGREGATE/ROUTINE génère une erreur si aucune liste d'arguments n'est fournie et qu'il existe plusieurs objets correspondants.

Pour des informations plus détaillées sur les nouvelles fonctionnalités de PostgreSQL 12 et les considérations avant de migrer vers celle-ci, vous pouvez vous référer à la page Web des notes de publication officielles.