32
PostgreSQL Installation et exploitation sous Linux

PostgreSQL sous linux

  • Upload
    allili

  • View
    6.456

  • Download
    1

Embed Size (px)

DESCRIPTION

Mise en œuvre de PostgreSQL a partir du code source sous linux

Citation preview

Page 1: PostgreSQL sous linux

PostgreSQL

Installation et exploitation sous Linux

Page 2: PostgreSQL sous linux

Plan

I - Présentation : 1 - Définition.

2 - Historique.

3 - Architecture.

II - Installation :

1 - Pré-requis 2 - Super utilisateur 3 - Préparation de l’installation 4 - Compilation et installation

5 - Configuration système 6 - Initialisation 7 - Service Postgres 8 - Démarrage

III - Exploitation :

1 - Concepts de base 2 - Cas pratique

Page 3: PostgreSQL sous linux

I - Présentation

Page 4: PostgreSQL sous linux

I - Présentation 1 - Définition

PostgreSQL est un SGBD objet Relationnel OpenSource, Multi-platformes.

Développé à l'université de Californie au département des sciences informatiques de Berkeley.

Il supporte une grande partie du standard SQL :

Requêtes complexes.

Clés étrangères.

Déclencheurs (triggers).

Vues.

Intégrité des transactions.

Page 5: PostgreSQL sous linux

I - Présentation 1 - Définition

Nouveaux types de données ;

Nouvelles fonctions ;

Nouveaux opérateurs ;

Nouvelles fonctions d'agrégat ;

Nouvelles méthodes d'indexage ;

Nouveaux langages de procédure.

PostgreSQL est extensible par l'utilisateur après l’adoption du SQL3. En ajoutant, par exemple, des :

Page 6: PostgreSQL sous linux

I - Présentation 2 - Historique

PostgreSQL est un projet d'origine universitaire :

Université de Californie (Berkeley)

Développement 1977-1985

Le projet n'est pas libre dans les premières années :

Une première version commerciale donne naissance à Ingres (1985).

Le projet continue à Berkeley sous le nom de Postgre (Post-Ingre).

Naissance de PostgreSQL : En 1995 les étudiants apportent le support de SQL

Le code est libre depuis en 1996.

Page 7: PostgreSQL sous linux

I - Présentation 2 - Historique

Postgres95 1.0 1994-1996 : SQL (Andrew Yu, Jolly Chen)

PostgreSQL 6.0 1997-1999 : union. . . PL/pgSQL

PostgreSQL 7.0 2000 : intégrités réferentielles

PostgreSQL 7.1 2001 : jointure externe

PostgreSQL 7.4 2003 : information schéma

PostgreSQL 8.0 2004 : tablespace

PostgreSQL 8.1 2005 : Rôles

PostgreSQL 8.2 2006 : performances. . .

Page 8: PostgreSQL sous linux

I - Présentation 3 - Architecture

PostgreSQL utilise un modèle client-serveur : "un processus par utilisateur".

Une session PostgreSQL consiste en plusieurs processus coopérants:

un processus démon superviseur (postmaster)

L'application utilisateur (p.ex. le programme PSQL, PGAdmin3)

le serveur de base de données (processus Postgres)

User Application LIBPQ

Client Host

Postmaster Server (Postgres)

Server Host

Page 9: PostgreSQL sous linux

I - Présentation 3 - Architecture

Les applications Client qui veulent accéder à la base de données font appel à la librairie.

Cette librairie envoie la requête de l'utilisateur à travers le réseau vers le Postmaster.

Le Postmaster démarre un nouveau processus serveur (un processus par utilisateur) et connecte ce processus au processus de l'application client.

A partir de ce moment, les processus client et Serveur communiquent sans intervention du Postmaster.

User Application LIBPQ

Client Host

Postmaster Server (Postgres)

Server Host

Page 10: PostgreSQL sous linux

II - Installation

Page 11: PostgreSQL sous linux

II - Installation 1 - Pré-requis

La version utilisée est : postgresql-8.2.3

Téléchargement : ftp://ftp.fr.postgresql.org/source/v8.2.3/

Il existe diffères types d'installation (code source, rpm, deb, mdk …)

L’utilité de l'installation à partir des codes sources réside dans le fait quelle marche dans les différentes distributions et de bien contrôler les paramètres de l'installation.

Chemins : Répertoire contenant les sources : /opt/sources/

Repertoire d'instalation : /usr/local/ (par défaut)

Vous pouvez utiliser le chemin que vous voulez.

Page 12: PostgreSQL sous linux

II - Installation 1 - Pré-requis

Étapes d’installation :

gcc / g++ : Compilateur C de GNU

libreadline : bibliothèque qui permet d’avoir accès à l’historique de requête dans le moniteur interactif psql.

zlib : bibiothèque nécessaire pour la création d’archives lors de la sauvegardes de bases de données en archive tar ou compressées.

Préparation Compilation Installation

Des erreurs peuvent être engendré pendant la préparation et la compilation, en raison des dépendance des bibliothèques.

Il faut se loger en « root » pour avoir le droit d’installer des programmes.

Page 13: PostgreSQL sous linux

II - Installation 2 - Super utilisateur

La création de super utilisateur :

$> sudo adduser postgres

Pourqoui le super utilisateur :

Pour des raisons de sécurité, il est conseillé de créer un utilisateur «  postgres  », pour évité tout menace tel que les attaques des requêtes de type "SQL injection" par le réseau ou par une mauvaise utilisation d’un simple utilisateur.

Page 14: PostgreSQL sous linux

II - Installation 3 - Préparation de l’installation

La création d’un répertoire dans la racine /opt :

Copier le fichier compressé :

$> sudo mkdir /opt/sources

$> sudo cp postgresql-8.2.3.tar.gz /opt/sources/

$> cd /opt/sources/$> tar -zxvf postgresql-8.2.3.tar.gz

La décompression :

z : compresser/décompresser les fichiers à travers le gzip.

x : extraire les fichiers de l’archive.

v : permet d'obtenir une description des fichiers désarchivés.

f : pour désigner l'archive contenant les fichiers (paramètre) .

Page 15: PostgreSQL sous linux

II - Installation 3 - Préparation de l’installation

Lance la configuration :

Pour plus d’information tapez :

$> ./configure

$> ./configure - - help

$> sudo aptitude install g++$> sudo aptitude install libreadline5-dev$> sudo aptitude install zlibc$> sudo aptitude install zlibg-dev

Télécharger les bibliothèque nécessaire :

Ou bien :

$> sudo aptitude install g++ libreadline5-dev zlibc zlibg-dev

Page 16: PostgreSQL sous linux

II - Installation 4 - Compilation et installation

Pour compiler :

Pour lance l’installation :

$> make

$> sudo make install

Pour voir les erreurs :

$> sudo make - - check

Postgres sera installer dans le répertoire :

/usr/local/pgsql/

/usr/local/pgsql/bin/ : contient les fichiers binaires (commandes)

/usr/local/pgsql/lib/ : contient les bibliothèques de Postgres

Page 17: PostgreSQL sous linux

II - Installation 5 - Configuration système

Configuration des variables d’environnements :

$> gedit /etc/profile

Ajouter les lignes suivantes :

# Chemin des bibliothèque Postgresexport LD_LIBRARY_PATH=/usr/local/pgsql/lib# Chemin des commandes Postgresexport PATH=/usr/local/pgsql/bin:$PATH

Pour vérifier : Se connecter entend que utilisateur « postgres » :

$> su – postgres Password :$> env | grep PATH=

Page 18: PostgreSQL sous linux

II - Installation 6 - Initialisation

Donner les droits aux utilisateurs :

$> sudo chmod o+rw /usr/local/pgsql/

Créer le répertoire qui va contenir les bases de données (culster) :

$> sudo mkdir /usr/local/pgsql/data

Puisque l’utilisateur « postgres » est le super utilisateur du PostgreSQL, alors il doit être le propriétaire de /usr/local/pgsql/data/ :

$> sudo chown postgres /usr/local/pgsql/data -R

Page 19: PostgreSQL sous linux

II - Installation 6 - Initialisation

Initialisation PostgreSQL :

$> su - postgresPassword : $> initdb -D /usr/local/pgsql/data -A md5 -W

-A md5 : Pour crypter les mots de passe en md5.

- W : Assigner un mot de passe au super-utilisateur. Sans cela, tous les utilisateurs locaux peuvent avoir accès au serveur sans sécurité.

$> gedit ~/.bash_profile

export PGDATA= /usr/local/pgsql/data

Pour ne pas écrire a chaque fois -D, éditer le profile de l’utilisateur «postgres» :

Ajouter la nouvelle variable d’environnement PGDATA dans le profile :

Page 20: PostgreSQL sous linux

II - Installation 7 - Service Postgres

Le répertoire /opt/sources/postgresql-8.2.3/ contient les scripts de démarrage pour différentes plateformes .

$> sudo update-rc.d postgres defaults

Rendre Postgres un service pour une machine linux :

$> sudo cp /opt/sources/postgresql-8.2.3/contrib/start-scripts/linux /etc/init.d/postgres

Mise à jour de la liste des services :

Démarrer postgreSQL :

$> sudo /etc/init.d/postgres start

$> sudo /etc/init.d/postgres start

Page 21: PostgreSQL sous linux

II - Installation 8 - Démarrage

Démarrer postgreSQL :

$> sudo /etc/init.d/postgres stop

Arrêter postgreSQL :

Redémarrer postgreSQL :

$> sudo /etc/init.d/postgres start

$> sudo /etc/init.d/postgres restart

Recharger les paramètres postgreSQL :

$> sudo /etc/init.d/postgres reload

Page 22: PostgreSQL sous linux

II - Installation 8 - Démarrage

Démarrer postgreSQL :

$> pg_ctl stop

Arrêter postgreSQL :

Redémarrer postgreSQL :

$> pg_ctl start

$> pg_ctl restart

Recharger les paramètres postgreSQL :

$> pg_ctl reload

Page 23: PostgreSQL sous linux

III - Exploitation

Page 24: PostgreSQL sous linux

III - Exploitation 1 - Concepts de base

Lors de l'initialisation du "cluster" de base de données, deux bases sont créées : template1 et template0.

Lors de la création d'une base, c'est template1 qui est copiée par défaut, toute modification de template1 est donc répercutée sur les nouvelles bases de données.

Template0 est une base modèle qui ne doit pas être modifiée, elle contient des objets prédéfinis selon la version de PostgreSQL.

Pour se connecte au serveur :

$> psql -U postgres

$> psql -U postgres template1

Page 25: PostgreSQL sous linux

III - Exploitation 1 - Concepts de base

PostgreSQL vient avec plusieurs langages côté serveur qui permettent d'écrire des procédures stockées. Pour cela il faut les installer.

Le langage propre à PostgreSQL s'appelle PL/PGSQL.

Il faut installer PL/PGSQL sur template1, afin que toutes les bases en disposent.

On ajoute le langage grâce à la commande shell suivante :

$> createlang plpgsql template1

la commande pour créer une base de données à partir d’une template est :

$> create database ma_base template template_base;

Page 26: PostgreSQL sous linux

III - Exploitation 1 - Concepts de base

Création d'une base de données en mode non connecter :

Postgres#> create database ma_base

Création d'une base de données en mode connecter :

Suppression d'une base de données en mode non connecter :

$> createdb ma_base -U postgres

$> dropdb ma_base -U postgres

Suppression d'une base de données en mode non connecter :

Postgres#> drop database ma_base

Page 27: PostgreSQL sous linux

III - Exploitation 1 - Concepts de base

Postgres#>\c ma_base

Pour changer la base courante :

Postgres#> SELECT user();

Postgres#> SELECT version();

Postgres#> SELECT current_database();

Postgres#> SELECT current_user();

Exemple des quelques commandes sous psql :

Exemple de requête :

Page 28: PostgreSQL sous linux

III - Exploitation 2 - Cas Pratique :

Un hôpital désire gérer, pour chaque patient, les informations suivantes :

Par ailleurs l’hôpital tient à jour la liste des médecins qu’il a déjà enregistrés, qui comprend pour chaque médecin :

Nom, Prénom

Adresse (numéro, rue et ville)

Matricule, CIN, CNSS

Date naissance

Dossier médical (un chemin pour le dossier électronique)

Nom, Prénom

Adresse (numéro, rue et ville)

Code

Spécialité

Téléphone

Page 29: PostgreSQL sous linux

III - Exploitation 2 – Cas Pratique :

Diagramme de classe :

Page 30: PostgreSQL sous linux

III - Exploitation 2 - Cas Pratique :

Travail demandé :

Créer une base de données appelée «hopital»

Créer le type «identité» qui comprend : le nom et le prénom

Créer le type «adresse» identifié par : numéro, rue, ville

Créer la table «personne» qui contient les attributs suivants : id de type identité adr de type adresse

Créer la table «médecin» qui hérite de la table personne.

Créer la table «patient» qui hérite de la table personne.

Insérer des données afin d’exploiter la base de données.

Page 31: PostgreSQL sous linux

III - Exploitation 2 - Cas Pratique :

Travail demandé :

Lister l’identité et l’adresse de tout les Patients et les médecins

Lister les patients qui habitent Casablanca et leurs médecins.

Lister les patients qui ont consulté un médecin de leur ville

Créer la fonction «Afficher» qui a comme paramètre une identité et qui l’affiche sous forme «Nom Prénom».

Créer la fonction «Afficher» qui a comme paramètre une adresse et qui l’affiche sous forme « N° …, rue, ville ». (Surcharge de la fonction Afficher) .

Lister les patients et les médecins avec la nouvelle forme (utiliser les fonctions) .

Page 32: PostgreSQL sous linux

III - Exploitation 2 - Cas Pratique :

Travail demandé :

Changer l'adresse du médecin de code16.

Changer juste la rue du médecin de code 17

Créer la fonction «Listerpatient» qui a comme paramètre un entier et qui permet d’afficher les nom et prénom des patients qui ont vu un médecin donné.

Donner un exemple d’utilisation de la fonction «Listerpatient»

Sauvegarder la base de données «hopital».

Créer une nouvelle base de données nommée «backhopital» et restaurer la sauvegarde de la base «hopital» dans la nouvelle base de données.