PostgreSQLLa base de données la plus sophistiquée au monde.
Documentation PostgreSQL 14.15 » Administration du serveur » Administration des bases de données » Aperçu

23.1. Aperçu

Un petit nombre d'objets, comme les rôles, les bases de données et les tablespaces, sont définis au niveau de l'instance et stockés dans le tablespace pg_global. À l'intérieur de l'instrance résident plusieurs bases de données, isolées les unes des autres mais pouvant accéder aux objets du niveau instance. Dans chaque base se trouvent plusieurs schémas contenant des objets comme les tables et les fonctions. La hiérarchie complète est donc : instance, base de données, schéma, table (et autre type d'objet comme une fonction).

Lors de la connexion à un serveur de bases de données, un client doit indiquer le nom de la base dans sa demande de connexion. Il n'est pas possible d'accéder à plus d'une base par connexion. Néanmoins, les clients peuvent ouvrir plusieurs connexions à la même base ou à des bases différentes. La sécurité au niveau de la base a deux composantes : le contrôle d'accès (voir Section 21.1), géré au niveau de la connexion, et le contrôle d'autorisation (voir Section 5.7), géré par le système de droits. Les foreign data wrappers (voir postgres_fdw) permettent à des objets d'une base d'agir comme des proxys pour les objets d'une autre base ou d'une autre instance. L'ancien module dblink (voir dblink) fournit la même fonctionnalité. Par défaut, tous les utilisateurs peuvent se connecter à toutes les bases en utilisant toutes les méthodes d'authentification.

Si une instance PostgreSQL doit contenir des projets différents, sans relation, ou des utilisateurs qui, pour la plupart ne devraient pas être au courant des autres, il est recommandé de les placer dans des bases séparées et d'ajuster les autorisations et les contrôles d'accès de façon approprié. Si les projets et les utilisateurs sont liés et, de ce fait, devraient être capables d'utiliser les ressources des autres, ils devraient être placés dans la même base mais probablement dans des schémas différents ; ceci fournit une structure modulaire avec une isolation par espace de nom et un contrôle d'autorisation. Section 5.9 fournit plus d'informations sur la gestion des schémas.

Quand plusieurs bases sont créées dans la même instance, il est conseillé de faire bien attention que les bénéfices dépassent les risques et limitations. En particulier, l'impact qu'avoir des journaux de transactions partagés (voir Chapitre 30) a sur les options de sauvegarde et de restauration. Alors que des bases individuelles dans l'instance sont isolées de la perspective de l'utilisateur, elles sont fortement liées du point de vue de l'administrateur de bases de données.

Les bases de données sont créées avec la commande CREATE DATABASE (voir la Section 23.2) et détruites avec la commande DROP DATABASE (voir la Section 23.5). Pour déterminer l'ensemble des bases de données existantes, examinez le catalogue système pg_database, par exemple

SELECT datname
   FROM pg_database;

La méta-commande \l du programme psql et l'option en ligne de commande -l sont aussi utiles pour afficher les bases de données existantes.

Note

Le standard SQL appelle les bases de données des « catalogues » mais il n'y a aucune différence en pratique.