Comprendre l’architecture PostgreSQL

Effectué

PostgreSQL est un système de gestion de base de données relationnelle client/serveur (SGBDR). PostgreSQL prend également en charge un large éventail d’extensions, comme l’extension Citus dans l’option Azure Cosmos DB for PostgreSQL. Une fois qu’une extension est chargée dans la base de données, elle fonctionne comme n’importe quelle fonctionnalité intégrée.

PostgreSQL a également son propre langage de requête appelé pgsql. En outre, PostgreSQL prend en charge les langages procéduraux comme Ruby on Rails.

Capture d’écran montrant les extensions et les langages PostgreSQL.

Architecture client/serveur

PostgreSQL est basé sur une architecture client/serveur. Le serveur stocke, gère et retourne des données aux programmes clients. Les programmes clients demandent des données à l’aide de pgSQL ou l’un des langages procéduraux pris en charge par PostgreSQL, comme PL/pgSQL.

Une session PostgreSQL se compose de trois parties :

  • Le postmaster
  • L’application cliente
  • Le serveur

Postmaster

Le postmaster est le processus démon de supervision qui gère un serveur PostgreSQL. Le démon postmaster gère la communication entre les différents processus serveur, notamment l’initialisation du serveur, l’arrêt du serveur, la gestion des demandes de connexion et l’exécution d’autres processus en arrière-plan. Dans Azure Database pour PostgreSQL, vous n’avez pas accès au système de fichiers ou au processus postmaster.

Applications clientes

Les clients exécutent des requêtes et interagissent avec des bases de données sur un serveur Azure Database pour PostgreSQL. Pour exécuter des requêtes, vous avez besoin d’un outil client comme Azure Data Studio, DBeaver, pgAdmin ou psql. Vous découvrirez les outils client dans le module suivant.

des processus serveur

Cluster : un serveur unique PostgreSQL peut héberger plusieurs bases de données utilisateur. PostgreSQL fait référence à cette collection de bases de données en tant que cluster. Chaque base de données est distincte de l’autre, et les utilisateurs et les applications interagissent avec une seule base de données. Les utilisateurs sont créés au niveau du cluster ou du serveur.

Les données de ces bases de données sont stockées dans le répertoire de données du cluster appelé PGDATA. Le répertoire de données PGDATA inclut un fichier contenant la version de PostgreSQL en cours d’exécution, pg_tblspc, qui contient des liens vers des espaces de table, et pg_xlog qui contient les fichiers journaux WAL.

Notes

Azure Database pour PostgreSQL est un service qui gère le stockage et le système de fichiers sous-jacent. En tant qu’utilisateur de ce serveur, vous n’avez pas accès direct au répertoire PGDATA ou à ses sous-répertoires.

Outre les bases de données que vous créez, il existe trois bases de données système :

  • postgres : base de données par défaut. Une fois votre serveur créé, vous vous connectez à la base de données postgres.
  • azure_maintenance : base de données qui gère les processus de maintenance. Vous n’avez pas d’accès direct à cette base de données.
  • azure_sys - la base de données du magasin des requêtes. Ne modifiez pas la base de données azure_sys ou ses schémas. La modification de tout élément d’azure_sys empêche le Magasin des requêtes et d’autres fonctionnalités de performances de fonctionner correctement.

Schémas : un schéma est un regroupement nommé d’objets de base de données. Les bases de données volumineuses avec de nombreux objets bénéficient de l’organisation d’objets en schémas. Par exemple, la création d’un schéma pour les objets liés aux ventes et un schéma pour les objets associés aux clients facilite la recherche de l’objet approprié.

Paramètres du serveur : PostgreSQL a plusieurs fichiers de configuration, qui déterminent le fonctionnement du moteur de base de données. Le fichier de configuration PostgreSQL principal est appelé postgresql.conf.

Azure Database pour PostgreSQL a remplacé ces fichiers de configuration par des paramètres de serveur, accessibles via le Portail Azure ou à l’aide d’Azure CLI.

Pour afficher ou modifier les paramètres du serveur dans le portail Azure :

  1. Accédez à votre serveur Azure Database pour PostgreSQL.
  2. Dans le menu de gauche, sous Paramètres, sélectionnez Paramètres du serveur.
  3. Utilisez la barre de recherche pour filtrer la liste des paramètres ou sélectionner le numéro de page dont vous avez besoin.

Stockage : Azure Database pour PostgreSQL gère le stockage des données pour vous et est approvisionné au niveau du serveur. Que vous choisissiez la catégorie de calcul Burstable, Usage général, ou Optimisé pour la mémoire, vous pouvez utiliser jusqu’à 32 To de stockage. Pour approvisionner du stockage, accédez à votre serveur Azure Database pour PostgreSQL et, dans la section Vue d’ensemble, sélectionnez votre Configuration. La section Calcul + stockage s’affiche. Sous Stockage, et Taille de stockage (en Go), utilisez le curseur pour sélectionner la quantité de stockage que vous souhaitez provisionner.

Le stockage que vous approvisionnez est la capacité d’E/S disponible pour votre serveur Azure Database pour PostgreSQL. Vous pouvez surveiller votre consommation d’E/S dans le Portail Azure ou à l’aide des commandes Azure CLI. Les métriques pertinentes à surveiller sont la limite de stockage, le pourcentage de stockage, le stockage utilisé et le pourcentage d’E/S.

Notes

Vous pouvez augmenter la quantité de stockage après avoir créé votre serveur Azure Database pour PostgreSQL, mais vous ne pouvez pas réduire la quantité de stockage.

Espaces de table : avec une implémentation locale de PostgreSQL, vous pouvez créer des espaces de table liés à la zone de stockage principale appelée PGDATA à l’aide du sous-répertoire pg_tblspc. Azure Database pour PostgreSQL ne prend pas en charge les espaces de table : toutes les tables sont créées dans la zone de stockage principale.

Catalogues système : PostgreSQL contient de nombreuses tables système et vues qui stockent des informations sur les objets de base de données. Par exemple, pg_database retourne toutes les bases de données sur un serveur et pg_class stocke les statistiques sur les tables.

Remarque

Azure Database pour PostgreSQL autorise l’accès à certains des catalogues système, mais pas tous.

Extensions : PostgreSQL prend en charge diverses extensions qui étendent les fonctionnalités principales du moteur de base de données. Ces extensions sont rendues disponibles sur un référentiel appelé Réseau d’extensions PostgreSQL (PGXN).

Pour utiliser une extension PostgreSQL, elle doit être installée dans votre base de données. Pour installer une extension, exécutez la commande CREATE EXTENSION à partir de l’outil psql pour charger l’extension dans votre base de données. Par exemple :

SELECT create_extension('postgis');

Pour savoir quelles extensions prennent en charge Azure Database pour PostgreSQL, exécutez la requête suivante :

SELECT * FROM pg_available_extensions;

Tous les serveurs Azure Database pour PostgreSQL incluent l’extension pg_stat_statements. Cette extension est déjà installée pour fournir des fonctionnalités pour le suivi des statistiques d’exécution des instructions SQL. Le paramètre de serveur pg_stat_statements.track définit les instructions qui sont comptabilisées par l’extension. Les options sont :

  • Top : effectue le suivi de toutes les instructions émises directement par les clients (par défaut).
  • None : aucune instruction n’est suivie.
  • All : effectue le suivi de toutes les instructions, y compris les instructions imbriquées et les instructions appelées par des fonctions.

Notes

Une surcharge sur les performances sur le serveur est nécessaire pour consigner chaque instruction SQL. Si vous n’utilisez pas activement pg_stat_statements, donnez à ce paramètre la valeur None. Notez également que certains services de surveillance tiers peuvent s’appuyer sur pg_stat_statements.

Optimiseur de requête : PostgreSQL utilise une méthode d’optimisation des requêtes basée sur les coûts. L’analyseur vérifie la syntaxe de requête et sépare la requête en différentes parties. L’analyseur crée une arborescence d’analyse et transmet la requête à l’outil de réécriture, qui applique des règles à la requête. Le planificateur détermine la meilleure façon d’exécuter la requête avant son exécution.

Processus back-end - Processus PostgreSQL - Modèle par transaction. Lorsqu’un nouvel utilisateur se connecte, PostgreSQL authentifie l’utilisateur et crée un processus de serveur principal pour gérer la connexion. Le client interagit uniquement avec le processus de serveur lors de l’envoi de requêtes et de la réception du résultat des requêtes.