PostgreSQL

Tags :
  • COURS
  • informatique
  • bases de données
  • serveur
  • postgresql
Auteurs :
  • Loïck Goupil-Hallay

Liens utiles

Introduction

PostgreSQL est un système de gestion de base de données relationnelles (DBMS) open source né en 1986. Il est reconnu pour sa robustesse, sa fiabilité, ses performances et sa conformité aux standards SQL.
Il a été créé pour être un remplaçant open source de Ingres, un autre système de gestion de base de données relationnelles. Il est aujourd'hui l'un des systèmes de gestion de base de données les plus populaires au monde, utilisé par de nombreuses entreprises et organisations pour stocker, gérer et analyser leurs données.

Avantages

Toutes ces propriétés en font un choix idéal pour les applications nécessitant une grande disponibilité, une grande fiabilité et une grande performance.

Inconvénients

License

C'est un logiciel libre distribué sous licence PostgreSQL, une licence open source similaire à la licence MIT. Cela veut dire que vous pouvez l'utiliser, le modifier et le distribuer librement.

Fonctionnement

PostgreSQL fonctionne en mode client-serveur. Cela signifie que le serveur PostgreSQL tourne en permanence sur une machine, et que les clients se connectent à ce serveur pour effectuer des opérations sur la base de données.

Fonctionnalités principales

Architecture

PostgreSQL est un système de gestion de base de données relationnelles (RDBMS) qui stocke les données dans des tables, qui sont des collections de lignes et de colonnes. Chaque table est définie par un schéma, qui définit les colonnes, les types de données, les contraintes, les index, les triggers, les vues, les procédures stockées,...

architecture-beta
    service users(clarity:users-solid)[Users]

    group postgresql(cloud)[Cluster PostgreSQL]
    group database(database)[Database 1] in postgresql
    service table1(disk)[Table 1] in database
    service table2(disk)[Table 2] in database
    service schema[Schema 1] in database
    service index[Index 1] in database

    group database2(database)[Database 2] in postgresql

    users:B --> T:table1

Commandes

Voici quelques commandes utiles pour interagir avec PostgreSQL.

Utilisation sur aioli

Le cluster postgres est accessible sur la machine aioli par tous les utilisateurs via le socket unix /var/run/postgresql/.s.PGSQL.5432. Chaque utilisateur peut se connecter à la base de données qui porte le même nom que son compte, sans mot de passe.
Chaque utilisateur ne peut pas créer de nouvelles bases de données ou d'utilisateurs. Il ne peut que se connecter à sa propre base de données et faire ce qu'il veut dedans. En revanche, il n'a accès qu'en lecture seule aux bases de données des autres utilisateurs.

Connexion via terminal

Vous pouvez utiliser la commande psql pour interagir avec votre base de données. La commande vous envoie directement dans le shell psql de votre base de données.
Vous pouvez alors effectuer toutes les opérations SQL standards: créer des tables, insérer des données, mettre à jour des données, supprimer des données, supprimer des tables, créer des index, créer des vues, créer des procédures stockées,...

Connexion via programme

Node.js

Installation des dépendances

Pour se connecter à une base de données PostgreSQL depuis un programme Node.js, vous pouvez utiliser le module pg qui est un client PostgreSQL pour Node.js.
Additionnellement, vous pouvez utiliser sequelize qui est un ORM (Object-Relational Mapping) pour Node.js qui supporte PostgreSQL. Cela permet d'intéragir avec la base de données de manière plus abstraite, en utilisant des modèles et des requêtes SQL générées automatiquement.
Enfin, nous utiliserons dotenv qui nous permettra de charger les variables environnement système ou de les définir dans un fichier .env.

L'installation de ces dépendances se fait via npm: npm install --save pg sequelize dotenv.

Connexion à la base de données

Pour se connecter à la base de données, vous devez créer une instance de Sequelize en lui passant les informations de connexion à la base de données.



import { Sequelize } from 'sequelize';
import dotenv from 'dotenv';

// Importe les variables d'environnement depuis le fichier .env (la variable USER est déjà définie dans l'environnement de base d'aioli, pas besoin de la définir dans le fichier .env)
dotenv.config();

// Définition des variables de connexion
const DBUSER = process.env.USER;
const DBNAME = process.env.USER;

// Création de l'instance Sequelize
const sequelize = new Sequelize(DBNAME, DBUSER, null, {
  dialect: 'postgres',
  host: '/var/run/postgresql',
  port: 5432,
  logging: false,
});

// Connexion à la base de données
(async () => {
  try {
    await sequelize.authenticate();
    console.log('Connection has been established successfully.');
  } catch (error) {
    console.error('Unable to connect to the database:', error);
  }
})();

// Exporte l'instance sequelize pour l'utiliser dans d'autres fichiers
export default sequelize;


Avec cette configuration, vous pouvez maintenant interagir avec votre base de données PostgreSQL depuis votre programme Node.js en appelant les méthodes de l'instance sequelize.