PostgreSQL : le système de gestion de base de données relationnelle et objet

Si des types de données complexes ou des contenus multimédia doivent être gérés en plus des données alphanumériques (lettres, chiffres, caractères spéciaux), les systèmes classiques de gestion de bases de données relationnellles atteignent rapidement leurs limites. Cependant, les bases de données relationnelle-objets ou les systèmes de gestion de bases de données qui étendent le modèle traditionnel par des approches orientées objet apportent la réponse appropriée à ce problème : le mapping objet-relationnel (en anglais object-relational mapping) permet de stocker des objets dans des systèmes relationnels en utilisant des applications basées sur des langages de programmation orientés objet. L’une des solutions les plus populaires et les plus anciennes dans ce contexte est la base de données open source PostgreSQL, également connue sous le nom de Postgres.

Qu'est-ce que PostgreSQL ?

PostgreSQL repose sur plus de 30 ans d’histoire de développement. Le système de gestion de base de données relationnelle objet (SGBDRO) trouve son origine dans le projet POSTGRES de l’Université de Californie à Berkeley. Il a été lancé en 1986 sous la direction de Michael Stonebraker et parrainé par la Defense Advanced Research Project Agency (DARPA) et la National Science Foundation (NSF), entre autres. En 1994, les étudiants Andrew Yu et Jolly Chen ont ajouté un interpréteur SQL au code de base, et cette nouvelle modification, plus rapide de 30 à 50 %, a été publiée en tant que solution open source sous le nom de Postgres95 (sous leur propre licence similaire aux licences BSD et MIT). Deux ans plus tard, l’application de base de données avec la version 6.0 a reçu le nom PostgreSQL, qui est toujours valable aujourd'hui.

Note

À part le nouveau nom PostgreSQL, le nom original Postgres (maintenant très rarement écrit en majuscules) est toujours utilisé pour le système de base de données. Outre une certaine nostalgie, cela s’explique simplement par le fait que la prononciation de postgres est plus facile.

Le projet POSTGRES est un travail pionnier précieux et a développé de nombreux concepts, qui n'ont trouvé leur place dans d’autres systèmes de bases de données (principalement commerciaux) que bien plus tard. Enfin, PostgreSQL n’est pas seulement une base de données compatible SQL, mais possède également les fonctionnalités modernes suivantes :

  • Possibilité de requêtes complexes
  • Clé étrangère pour relier les données de deux tables
  • Déclencheurs (triggers) lancés automatiquement lors de la saisie et du contrôle, de la confirmation, de la modification, de la suppression ou de l'utilisation facultative de données de référence.
  • Vues actualisables
  • Concept de transaction complet
  • Contrôle de simultanéité multiversion (MVCC) pour une exécution efficace des accès simultanés aux bases de données

Les utilisateurs peuvent également modifier et étendre PostgreSQL grâce à des licences libres, en ajoutant de nouveaux types de données, fonctions, opérateurs, méthodes d'indexation ou langages de procédure (langages de programmation pour les fonctions d’écriture et les déclencheurs).

Postgres : données clés et configuration système requise

La flexibilité de PostgreSQL ne se reflète pas seulement dans sa fonctionnalité et son extensibilité, la base de données offre également de nombreuses possibilités de configuration logicielle et matérielle. Ainsi, Postgres est déjà inclus par défaut dans la plupart des distributions UNIX/Linux et est livré par Apple depuis Mac OS X Lion (10.7) comme base de données standard. La seule exigence est qu’une version actuelle de gmake (3.80 ou supérieure) soit installée (déjà incluse dans les binaires finis). Grâce à des packs d’installation appropriés, les systèmes d’exploitation Windows peuvent également être sélectionnés comme plateformes pour le système. La puissance de calcul et la capacité de stockage requises dépendent uniquement de la taille du système de base de données prévu, le logiciel libre lui-même nécessite un peu moins de 20 Mo.

Les données clés suivantes de la base de données relationnelle-objet montrent qu'en pratique on est plutôt limité par ses propres capacités de stockage que par les limites de PostgreSQL :

Taille maximale de la base de données illimitée
Taille maximale d’un tableau 32 Téraoctets
Taille maximale d’un ensemble de données 1,6 Téraoctets
Taille maximale d’un champ 1 Gigaoctet
Nombre maximum de colonnes selon le type de données : de 250 jusqu’à 1 600
Nombre maximum de lignes illimité
Nombre maximum d’indices illimité

Comment fonctionne PostgreSQL ?

Postgres est basé sur le modèle client-serveur classique : le composant serveur central « postmaster » gère tous les fichiers de base de données ainsi que toutes les connexions établies pour la communication (entrée et sortie) avec le serveur de base de données. Les utilisateurs n’ont besoin que d’un programme client approprié pour établir la connexion, alors que le progiciel PostgreSQL avec psql a déjà intégré une solution native pour fonctionner via la ligne de commande ou le terminal. Alternativement, vous pouvez passer à diverses applications avec des interfaces utilisateur graphiques, telles que pgAdmin ou phpPgAdmin, qui peut être installé et utilisé. Dans le cas des sites Web interactifs, le serveur Web assume habituellement le rôle du client.

Conseil

Plusieurs distributions Linux incluent leur propre client graphique Postgres avec pgAccess

Pour quels projets PostgreSQL est-il adapté ?

En tant que système de gestion de base de données éprouvé et extrêmement flexible, Postgres est utilisé dans de nombreux secteurs et scénarios. La base de données relationnelle-objet est une base de premier ordre pour le fonctionnement sécurisé d’une grande variété d’applications. Grâce à son concept de transaction intégré et à la prise en charge du MVCC (Multiversion Concurrency Control), le projet open source est la solution idéale pour les logiciels bancaires en ligne, par exemple. Même les programmes d’analyse comme Matlab ou R s’harmonisent avec la base de données, c’est pourquoi PostgreSQL est souvent utilisé en combinaison avec ces programmes. En combinaison avec l’extension PostGIS, qui fournit des centaines de fonctions pour travailler avec des géodonnées, Postgres est également convaincant pour travailler avec des données spatiales et géographiques.

PostgreSQL est aussi demandé comme solution pour les projets Web : le système relationnel objet fonctionne avec différents frameworks modernes tels que Django, Node.js ou Ruby on Rails et supporte des langages Web classiques tels que PHP. La prise en charge de la réplication synchrone et asynchrone facilite également la distribution des données stockées sur plusieurs serveurs pour une haute résilience et un temps d'accès minimal aux données critiques.

Note

Le bon support de JSON fait également de PostgreSQL une excellente solution de base de données pour la mise à l'échelle des charges de travail NoSQL

Comment fonctionne l’installation de PostgreSQL ?

Si vous souhaitez utiliser Postgres pour votre projet, vous pouvez installer vous-même le système de gestion de base de données en quelques étapes, sans avoir à acheter une licence ou autre chose de similaire. Le portail de téléchargement de la page d'accueil officielle de PostgreSQL : Téléchargements contient des fichiers binaires et des liens vers les dépôts des paquets sources pour BSD, Linux, macOS, Solaris et Windows, qui peuvent être installés et utilisés gratuitement sous licence Open Source. Les droits de racine ne sont pas nécessaires pour cela : des droits d'administrateur simples suffisent tout à fait pour l'exécution. À titre d’exemple, les deux sections suivantes montrent comment fonctionne l’installation de PostgreSQL sous Linux (Ubuntu 17.10) et Windows.

Installer PostgreSQL sous Linux (Ubuntu 17.10)

Le dépôt Postgres apt supporte officiellement les versions LTS d’Ubuntu (à partir de la 14.04) ainsi que d’autres versions, telles qu’Ubuntu 17.04. De plus, les paquets sources fonctionnent souvent avec d’autres versions également. Cependant, l’équipe PostgreSQL recommande d’utiliser la variante LTS la plus récente possible pour que les utilisateurs puissent tirer le meilleur profit possible à long terme du système de gestion de base de données. Comme les paquets sous Ubuntu sont déjà inclus dans le référentiel standard, ils peuvent être facilement installés avec le gestionnaire de paquets apt :

sudo apt-get update
sudo apt-get install postgresql postgresql-contrib

PostgreSQL est installé par cette commande, par laquelle le logiciel crée automatiquement l’utilisateur Linux nommé « postgres » pour accéder à la base de données. Pour des raisons de sécurité, ceci ne doit être utilisé que pour travailler avec la base de données. Il est également recommandé d’entrer ce profil dans la première étape (aucun profil n’est entré par défaut). Il vous suffit d’entrer deux fois la commande suivante, puis le mot de passe de votre choix :

sudo passwd postgres

Parallèlement à l’utilisateur Linux « postgres », il existe l’utilisateur de base de données du même nom, qui est nécessaire pour l’administration de la base de données et devrait également recevoir un mot de passe renforcé. Pour ce faire, saisissez les commandes de terminal suivantes (« nouveau mot de passe » est un caractère de remplacement pour le mot de passe souhaité et doit être remplacé en conséquence) :

su - postgres
psql -d template1 -c "ALTER USER postgres WITH PASSWORD 'nouveau mot de passe';"

Pour vérifier si l’installation a fonctionné, vous devez créer une base de données (ici : testdb) avec le compte « postgres »-Linux-Account et la contrôler avec le terminal-client psql :

su - postgres
createdb testdb
psql testdb

Dans le terminal, vous pouvez alors voir cette sortie du shell du client psql, qui peut être utilisé avec n’importe quelle commande SQL :

Installation de PostgreSQL sous Windows

L'installation de Postgres sur les ordinateurs Windows est facile grâce à l'installateur interactif certifié par EnterpriseDB : L'assistant d'installation gratuit du fabricant du logiciel, qui offre des outils supplémentaires ainsi qu'un support commercial pour PostgreSQL, est disponible en téléchargement sur le site de l'entreprise page d’accueil. Sélectionnez simplement la version souhaitée du système de gestion de base de données et la plateforme cible et cliquez sur « DOWNLOAD NOW » :

Le programme d’installation téléchargé peut être lancé en double-cliquant et installe le compilateur Microsoft Visual C++ dans la première étape, s’il n'est pas déjà installé sur le système. Sélectionnez ensuite l'emplacement PostgreSQL, vous avez la possibilité d’exclure des composants individuels du package d'installation de l'installation. Dans tous les cas, le serveur PostgreSQL et les outils en ligne de commande sont nécessaires, le client graphique pgAdmin et le Stack Builder (pour de simples téléchargements et installations d'extensions) ne sont pas obligatoires, mais ils rendent le travail avec le système de gestion de base de données beaucoup plus facile.

Si l’emplacement de stockage des données a également été spécifié, l’attribution d’un mot de passe pour le profil d’administrateur de base de données « postgres » est toujours en attente. Le port par défaut et les paramètres de localisation peuvent être conservés inchangés avant de lancer définitivement l’installation à la dernière étape.

Après une installation réussie, l’interface utilisateur de pgAdmin (si installé) peut être utilisée pour établir une connexion au serveur PostgreSQL en quelques étapes seulement. Pour ce faire, cliquez avec le bouton droit de la souris sur la version de Postgres que vous avez configurée dans la liste des serveurs, puis cliquez sur « Connect Server ».

Après avoir saisi le mot de passe précédemment attribué au compte administrateur « postgres », le client établit la connexion.

Avantages et inconvénients de PostgreSQL dans un tableau récapitulatif

Avantages Inconvénients
Open Source Non disponible par défaut sur tous les hébergeurs
Hautement extensible Documentation extensible en anglais seulement
Largement conforme à la norme SQL Vitesse de lecture relativement faible
Traitement possible de types de données complexes (par ex : géo données)  
Recherche de texte flexible  
Possibilité de créer ses propres fonctions, déclencheurs, types de données, etc.  
Bon support du langage (Python, Java, Perl, PHP, C, C, C++ etc)  
Supporte JSON  
Cross-plateforme