Top Banner
Premiers pas avec PostgreSQL version 9.3 Premiers pas avec PostgreSQL 1.1 1/35
35

doc_postgresql_9_3

Sep 26, 2015

Download

Documents

Yacine Messaoui

base de donné
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
  • Premiers pas avecPostgreSQL

    version 9.3

    Premiers pas avec PostgreSQL 1.1 1/35

  • Table of Contents I Introduction.......................................................................................................................................3

    A.Pourquoi ce document?...............................................................................................................3 B. qui s'adresse ce document?......................................................................................................3 C.Licence du document :................................................................................................................3

    II Prsentation de PostgreSQL............................................................................................................4 III Installation......................................................................................................................................5

    A.Vocabulaire..................................................................................................................................5 B.Principes de base.........................................................................................................................5 C.Exemple.......................................................................................................................................6 D.Sous Windows.............................................................................................................................7 E.Sous Linux.................................................................................................................................17 F.Autres.........................................................................................................................................19

    IV Aprs l'installation........................................................................................................................20 A.Processus et emplacement des fichiers.....................................................................................20 B.Changer le mot de passe de l'utilisateur systme postgres........................................................22 C.Crer un cluster de base de donnes.........................................................................................22 D.Autoriser les connexions...........................................................................................................22 E.Super-utilisateur........................................................................................................................27 F.Je ne peux pas me connecter la base? Que faire?....................................................................27 G.O se trouvent les logs ? Comment les configurer?.................................................................27 H.Arrter/dmarrer le serveur PostgreSQL..................................................................................28

    V Outils..............................................................................................................................................28 A.Outil graphique : pgAdmin3.....................................................................................................28 B.psql (outil en ligne de commande)............................................................................................29 C.phpPgAdmin.............................................................................................................................30 D.Copy..........................................................................................................................................30

    VI Dveloppement.............................................................................................................................31 A.SQL...........................................................................................................................................31 B.Procdures stockes..................................................................................................................31 C.JDBC.........................................................................................................................................31 D.Autres (PERL, Python, .Net, ODBC, Tcl...).............................................................................32 E.A savoir !...................................................................................................................................32

    VII Et aprs?......................................................................................................................................35 A.Lire la documentation :.............................................................................................................35 B.Sites utiles :...............................................................................................................................35 C.Pour trouver de l'aide complmentaire :...................................................................................35

    Premiers pas avec PostgreSQL 1.1 2/35

  • I Introduction

    A. Pourquoi ce document?J'ai commenc dvelopper sous PostgreSQL assez rcemment aprs une longue exprience sousOracle. La documentation gnrale de PostgreSQL est excellente, et trs riche, mais j'avais besoind'un document plus lger expliquant la procdure d'installation sur diffrents systmes et commentdmarrer (crer un cluster, configurer les connexions), ainsi que des informations sur ce qu'onpouvait faire avec PostgreSQL. Je ne l'ai pas trouv.Aprs quelques mois d'utilisation, je me suis rendu compte que les problmes des dbutants taienttoujours les mmes. Ainsi, j'ai compil mes notes des dbuts et ce que j'ai appris depuis dans cedocument.Voici le rsultat, en esprant qu'il vous aide dbuter et qu'il vous encourage continuer avecPostgreSQL.

    B. qui s'adresse ce document?Ce document a pour but de vous aider installer PostgreSQL sous Windows ou sous Linux, et commencer dvelopper.Il est crit pour vous faire gagner du temps dans vos premiers pas avec PostgreSQL, tout en vousexpliquant les points importants afin que vous puissiez progresser par vous-mme.Il s'adresse donc principalement aux dveloppeurs d'applications, afin de leur permettre dedcouvrir ce puissant moteur sur une petite base de test, ou aux personnes qui dbutentcompltement avec PostgreSQL. Vous n'aurez pas besoin de connaissances systme avances poursuivre ce document.Une fois que vous aurez termin la lecture de ce document, vous pourrez continuer par la lecture dela documentation officielle pour apprendre administrer PostgreSQL ou devenir un dveloppeuraguerri. La dernire section de ce document vous donne les liens et rfrences ncessaires pourcontinuer progresser.Parfois les informations ne sont volontairement pas compltes, et lorsque la documentation derfrence est plus claire et prcise que ce qui aurait pu tre fait ici, les liens sont fournis vers ladocumentation franaise.Ce document a t crit initialement pour la version 8.3, puis mis jour pour la version 9.0, 9.1, 9.2et prsent 9.3 (voir le chapitre sur les versions).

    Avertissement : ce document n'est en aucun cas un document sur le tuning de la base. Il n'est pasfait non plus pour vous apprendre administrer une base de production.

    C. Licence du document :Guide de dmarrage rapide avec Postgresql by Florence Cousin est mis disposition selon les termes de la licence Creative Commons Paternit 2.0 France.

    cousinflo chez free point fr

    Premiers pas avec PostgreSQL 1.1 3/35

  • II Prsentation de PostgreSQLPostgreSQL est un moteur de bases de donnes relationnelle. C'est un moteur adapt des basesmtier, donc riche en fonctionnalits et puissant. Son installation est cependant plutt simple. Il fautjuste comprendre quelques principes de base (ce que cette prsentation s'efforce de faire)

    Si vous ne connaissez pas les principes relationnels ou le SQL, le mieux est de vous procurer unbon ouvrage sur le sujet. L'article de Wikipedia peut tre une bonne introduction(http://fr.wikipedia.org/wiki/SQL ), et donne de nombreuses rfrences. Le tutoriel de ladocumentation PostgreSQL peut galement vous rendre service si vous avez besoin de vousrafrachir la mmoire : http://docs.postgresqlfr.org/9. 3 /tutorial-sql.html

    1. LicenceLa licence de PostgreSQL est une licence de type BSD, ce qui permet son utilisation sansrestriction, dans un logiciel libre ou propritaire. C'est un avantage certain, car cela permet parexemple d'utiliser PostgreSQL comme base de donnes pour un logiciel propritaire.

    PostgreSQL est un projet indpendant. Il n'est dtenu par aucune entreprise. La communautPostgreSQL est trs ractive (allez voir les mailings-lists si vous voulez vrifier). De nombreusesentreprises soutiennent et participent galement au dveloppement de PostgreSQL.

    2. Caractristiques et fonctionnalits :PostgreSQL comporte de nombreuses fonctionnalits intressantes. Parmi celles-ci, on peut citer parexemple :

    moteur transactionnel respect des normes SQL MVCC (mcanisme permettant une concurrence efficace sans verrouiller les

    enregistrements pour assurer l'isolation des transactions) procdures stockes dans de nombreux langages triggers rplication matre-esclaves en continu par application des journaux binaires (archives WAL),

    esclaves accessibles en lecture.

    PostgreSQL est conu pour tre robuste (aucune version ne sort sans avoir subi une suite extensivede tests) et peut supporter des volumes importants de donnes (ainsi par exemple Mto France greune base de 3 To1).

    PostgreSQL est conu pour pouvoir supporter des extensions. Des extensions et outils sontdisponibles pour complter le moteur, par exemple :

    PostGis : moteur de donnes spatiales. Slony : rplication matre-esclaves.

    Et de nombreux autres.

    1 http://www.postgresqlfr.org/temoignages:meteo_france , mis jour le 4 mars 2014

    Premiers pas avec PostgreSQL 1.1 4/35

  • III InstallationAvant de passer aux procdures d'installation proprement dites, il est ncessaire de comprendrecertaines notions fondamentales.

    A. Vocabulaire

    1. BaseUne base est un ensemble structur de donnes. On utilise gnralement une base de donne parapplication.Pour pouvoir crer une base de donnes, vous devez disposer d'un cluster de bases de donnes.

    2. Cluster (ou grappe de base de donnes)Un cluster est un ensemble de bases de donnes qui partagent les mmes ressources (processus,mmoire, disque...) .

    3. SchmaUn schma est un espace de nommage au sein d'une base de donnes.

    B. Principes de base

    1. Comptes systmeLes processus de PostgreSQL utilisent un compte systme. Gnralement c'est le compte postgresqui est utilis pour cela, sauf si vous avez install PostgreSQL sur votre compte (voir la partiecompilation).

    2. RlesLes droits de la base de donnes sont grs par des rles. Avant de pouvoir vous connecter la basede donnes, le rle que vous utilisez doit avoir les autorisations ncessaires.http://docs.postgresql.fr/9.3/user-manag.html

    NB : les comptes systmes et les rles de base de donnes sont distincts! Mme s'il y a despossibilits de mapping entre les deux (cf. paragraphe sur pg_hba.conf). La confusion entreces 2 notions est une des causes frquentes d'erreurs et de problmes d'installation pour lesdbutants.

    3. Versions (mineures/majeures)Les versions majeures comprennent le chiffre avant le point et un chiffre aprs. Exemple : 8.4 et 9.0sont des versions majeures diffrentes.Les versions mineures incrmentent la 3me partie : exemple : 8.4.17Pour changer de version mineure, il suffit de mettre jour le moteur. Mais pour changer de version

    Premiers pas avec PostgreSQL 1.1 5/35

  • majeure, il est ncessaire de dcharger puis recharger les donnes.

    Plus d'informations ici :http://www.postgresql.org/support/versioning

    4. Client/serveurPostgreSQL est une application client/serveur. Le serveur gre les fichiers de la base de donnes,accepte les connexions des clients, et effectue les oprations demandes par les clients (requtes...)Le client peut prendre de nombreuses formes. Il existe par exemple un client en ligne de commande(psql), des clients graphiques (par exemple pgAdmin3)... Le client peut tre sur la mme machineque le serveur, ou bien communiquer avec lui par le rseau.

    5. Processus serveurSous Windows, le serveur PostgreSQL tourne en tant que service.Sous Linux, ce sont des dmons systme qui effectuent ces tches.(si vous tes curieux, vous pouvez aller voir cet article : http://dalibo.org/glmf112_les_processus_de_postgresql)Il ne faut pas arrter les processus du serveur n'importe comment. Pour arrter le serveur, il faututiliser les outils fournis (voir la section sur l'arrt et le dmarrage du serveur).

    NB : par dfaut, PostgreSQL est configur pour couter sur le port 5432. Les outils seconnectent par dfaut sur ce port : pensez cela si vous devez modifier ce paramtre.

    6. Module de contributionCe sont des extensions intressantes, maintenues par le projet, mais non intgres au coeur dumoteur. Exemples :

    adminpack (fonctions supplmentaires, utilises par les outils d'administrations commepgAdmin3)

    pg_buffercache (pour savoir ce qui est prsent dans le cache) pg_freespacemap : donne la liste des blocs vides et partiellement vides des tables et index

    (quantit d'espace libre dans chaque objet de la base) pgcrypto : fonctions de cryptographie

    C. ExemplePour l'installation et la suite, nous prendrons l'exemple de la cration d'une base de donnesmabase, qui sera utilise et gre par un utilisateur tom.

    Premiers pas avec PostgreSQL 1.1 6/35

  • D. Sous Windows partir de la version 8.0, PostgreSQL fonctionne nativement sous Windows (Windows XP,Windows 2000, Windows 2003, Vista, Windows 2008...). Malgr tout, seules les versions partir dela 8.2 sont supportes sous Windows. Il s'installe en tant que service.

    NB : si vous regardez dans la liste des processus, plusieurs processus postgres sont prsents.Gardez l'esprit que la mmoire est partage entre ces processus : la mmoire utilise parPostgreSQL est donc infrieure la somme de la mmoire utilise par chaque processus quiest affiche dans le gestionnaire de tches...

    1. O trouver PostgreSQL pour Windows?Vous pouvez trouver deux types d'installeurs pour Windows : l'installeur "en un clic", ou l'installeur"pgInstaller". Le premier est cr par EnterpriseDB, le seconde par la communaut. Vous lestrouverez partir d'ici :http://www.postgresql.org/download/windows"pgInstaller" n'est disponible que pour les versions 8.2 et 8.3, le document dtaille donc le processusd'installation pour l'installeur en un clic .

    NB : il est possible de rcuprer les binaires sans l'installeur (pour utilisateurs avancsuniquement), ou de faire une installation silencieuse (voir sur le site de EnterpriseDB)

    2. InstallationLancez l'installeur (pour Postgresql 9.3, le fichier s'appelle : postgresql-9.3.5-3-windows-x64.exeou postgresql-9.3.5-3-windows.exe pour les architectures 32 bits).

    Aprs les autorisations d'usage, l'extraction des fichiers et la configuration de la versionredistribuable de Microsoft Visual C++ 2010, l'installation de PostgreSQL dbute.

    Premiers pas avec PostgreSQL 1.1 7/35

  • La langue de l'installation est celle du systme sur lequel l'installation s'effectue (ici le Franais).

    NB : L'installeur logue toutes ses actions dans un fichier install-postgresql.log qui est dans lerpertoire %TEMP% de Windows. En cas de problme, consulter ce fichier..

    Premiers pas avec PostgreSQL 1.1 8/35

  • Le rpertoire d'installation est celui o vont s'installer le programme serveur (postgres.exe) et lesoutils client (psql, pgdump...), ainsi que la documentation, etc...L'installeur ne permet actuellement pas d'installer les outils client et le serveur sparment.

    L'installeur demande o sera cr le cluster de donnes, sous le nom de rpertoire des donnes .Il sera par la suite toujours possible de crr d'autres cluster avec l'outil initdb. Voirhttp://docs.postgresql.fr/9.3/app-initdb.html pour plus de dtails.

    Premiers pas avec PostgreSQL 1.1 9/35

  • Il est aussi possible que le message suivant soit affich :

    ou encore :

    Auquel cas, si vous souhaitez changer de rpertoire d'installation ou de rpertoire de donnes, vousdevrez procder manuellement ou dsinstaller proprement PostgreSQL.

    Si une prcdente installation n'avait pas t dtecte, l'installeur demande le mot de passe du super-utilisateur de la base de donne.

    Premiers pas avec PostgreSQL 1.1 10/35

  • A noter que pour faire tourner le service de la base de donne, contrairement aux versionsprcdentes o un compte postgres tait cr, l'installeur va utiliser le compte windows pr-existant SERVICE RESEAU . Ce compte sera ainsi celui sur le compte duquel fonctionnent lesprogrammes du serveur PostgreSQL. Il sera aussi utilis pour crer physiquement le premier clusterde la base.

    Attention : ne donnez pas un mot de passe trivial l'utilisateur postgres (c'est encore plus importantsi vous autorisez les connexions partir du rseau!). vitez galement de lui donner lemme mot de passe que celui de l'utilisateur systme postgres. En effet, l'utilisateurpostgres dispose de tous les droits sur le cluster.

    NB : Pour ceux qui voudraient aller plus loin dans le paramtrage des comptes, PostgreSQL, partir de sa version 9.1, propose l'usage de l'API SSPI permettant de mettre en uvre le SingleSign On dans un domaine Windows. Voir le sitehttp://www.postgresql.fr/configuring_for_single_sign-on_using_sspi_on_windows.

    A noter enfin le problme d'affichage dans la consigne cette tape mentionnant une erreur unknown variable superaccoun*** . Cela est li au fait que l'utilisateur SERVICE RESEAU est utilis par postgreSQL. Cette erreur a t rapporte sur le forum de EnterpriseDB, en attente dersolution. Ce message n'a pas d'influence sur la suite de l'installation. Cela tant, si vous voulez lefaire disparatre, il s'agit simplement d'excuter l'installeur avec les droits du compte SERVICERESEAU . Les liens suivant vous donnerons des pistes pour vous en sortir :http://www.developpez.net/forums/d1306052/bases-donnees/postgresql/installer-postgresql-windows-server-2008-r2/http://forums.enterprisedb.com/posts/list/3769.page

    Premiers pas avec PostgreSQL 1.1 11/35

  • Par dfaut, le port sur lequel le serveur attend les connexions est le port 5432. L'installeur vousproposera toutefois le premier port disponible au moment de l'installation partir du port 5432.Par exemple, si les ports 5432 et 5433 sont dj pris, l'installeur proposera 5434, etc ...Vous pouvez changer le numro de port d'coute. Attention dans ce cas configurer correctementvos clients (JDBC, etc...).

    NB : par dfaut, postgres n'acceptera pas les connexions partir du rseau. Ceci est parfait surun poste de dveloppement autonome, mais pas pour un serveur. Cela pourra tre modifipar l'intermdiaire des fichiers de configuration de postgreSQL.

    La locale dfinit le comportement du cluster pour les oprations de tri (ordre alphabtique) Par dfaut, c'est celle du systme qui est utilise ([Locale par dfaut]), mais vous pouvez en prfrerune autre.

    Premiers pas avec PostgreSQL 1.1 12/35

  • Si vous tes certain(e) du paramtrage, vous pouvez cliquer sur Suivant.

    L'installation se droule progressivement...

    Premiers pas avec PostgreSQL 1.1 13/35

  • L'installation est termine. Si vous souhaitez installer des modules complmentaires (phppgAdmin,Slony...), lancez l'outil Stackbuilder. Il ncessite une connexion internet.

    Premiers pas avec PostgreSQL 1.1 14/35

  • L'installation sous Windows est prte tre utilise.Dans le menu dmarrer, vous pouvez retrouver tous les outils utiles pour grer le serveur.

    Si vous avez conserv les options par dfaut, les fichiers du cluster se trouvent dans C:\ProgramFiles\PostgreSQL\9.3. A noter que, pour windows vista et 7, le nom du dossier program files estvisuellement remplac par programmes .l'outil pour dsinstaller PostgreSQL se trouve la racine de ce dossier (uninstall-postgresql.exe) etles fichiers du cluster se trouvent alors dans le rpertoire data ( moins que vous n'ayez modifi lerpertoire choisi par dfaut durant l'installation).

    Premiers pas avec PostgreSQL 1.1 15/35

  • NB : notes sur la console Windows et psqlLa console Windows est par dfaut dans un encodage compatible DOS (par exemple CP850).Lorsque vous dmarrerez psql, vous aurez le message d'avertissement suivant :

    Attention : l'encodage console (850) diffre de l'encodage Windows (1252). Les caractres 8 bits peuvent ne pas fonctionner correctement. Voir la section Notes aux utilisateurs de Windows de la page rfrence de psql pour les dtails.

    Il est recommand de modifier l'encodage de la console. A cet effet, vous pouvez diter le fichier C:\Program Files\PostgreSQL\9.3\scripts\runpsql.bat en ajoutant la ligne :

    chcp 1252

    avant le lancement de psql au moyen du script runpsql.bat en question.

    Remarque importante : si vous avez install PostgreSQL sur un poste de travail (dans le but parexemple de l'valuer ou de vous familiariser avec lui), vous avezmaintenant une installation qui fonctionne la sortie de la bote , et vouspouvez commencer l'utiliser via l'outil pgAdmin (crer des bases, etc...).Mais si vous souhaitez autoriser des connexions distantes, il estindispensable de lire la suite du document. Il apporte galement desinformations qui pourraient vous tre utiles (emplacement et rle desdiffrents rpertoires...) mme si vous utilisez peu les outils en ligne decommande.

    Vous pouvez maintenant passer la section aprs l'installation si vous le souhaitez.

    Premiers pas avec PostgreSQL 1.1 16/35

  • E. Sous LinuxPostgreSQL est fourni avec plusieurs outils pour la gestion du serveur et des bases de donnes. Les principales distributions fournissent des paquets PostgreSQL pour faciliter l'installation etl'utilisation.CentOS et Debian ont leur propre version des outils, qui ont un nom diffrent de ceux que voustrouverez dans la documentation. Il vaut mieux utiliser les outils fournis par votre distribution.

    1. Debian/UbuntuActuellement (au moment de la relecture de ce document, en dcembre 2014), la version stable deDebian (Wheezy) propose en standard PostgreSQL en version 9.1. Pour installer PostgreSQL enversion 9.3, un dpt de paquets PostgreSQL pour Debian et Ubuntu est mis disposition par lePGDG (PostgreSQL Global Development Group).A cet effet, il est ncessaire de complter votre liste de dpts comme suit.Crez un fichier /etc/apt/sources.list.d/pgdg.list qui doit contenir la ligne suivante :

    deb http://apt.postgresql.org/pub/repos/apt/ wheezy-pgdg mainLa distribution peut tre adapte si vous utilisez squeeze par exemple.Importez ensuite la cl de ce dpt :wget --quiet -O https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudoapt-key add -sudo apt-get update

    Une fois configur, pour installer PostgreSQL 9.3 sur Debian, il faut rcuprer les paquets suivants: postgresql-9.3 (serveur) ; postgresql-client-9.3 (client) ;

    NB : Vous pouvez bien sr simplement installer une version antrieure comme la 9.1.

    Durant l'installation de PostgreSQL, vous avez peut-tre remarqu qu'un cluster de bases dedonnes est cr automatiquement. Vous pouvez voir la liste des clusters installs via la commandepg_lsclusters.

    flo@flo:~$ pg_lsclustersVer Cluster Port Status Owner Data directory Log file9.3 main 5432 online postgres /var/lib/postgresql/9.3/main /var/log/postgresql/postgresql-9.3-main.logflo@flo:~$

    Vous pouvez ainsi voir que le cluster de base est install dans le rpertoire :/var/lib/postgresql/9.3/main

    Premiers pas avec PostgreSQL 1.1 17/35

  • NB : Quelques outils connatre absolument : 1. pg_lsclusters : liste des clusters ; 2. pg_createcluster : cre un cluster de bases ; 3. pg_ctlcluster : contrle des cluster (arrt/dmarrage) ;

    Modules de contribution :Pour utiliser les modules de contribution, il faut installer le paquet :

    postgresql-contrib-9.3 ;

    Lors de l'installation du paquet, Debian copie des fichiers .sql. Voyons o ils se trouvent :flo:~# dpkg -L postgresql-contrib-9.3 | grep "\.sql" | more[]/usr/share/postgresql/9.3/extension/fuzzystrmatch--1.0.sql []

    Ces fichiers .sql permettent d'installer les extensions de mme nom, comme par exemple :flo@flo:~$ su postgrespostgres@flo:~$ psqlpostgres=# create extension fuzzystrmatch ;CREATE EXTENSIONpostgres=# select levenshtein('from','to') ; levenshtein------------- 3(1 row)

    NB : L'emplacement de ces fichiers a chang avec l'volution de PostgreSQL. Les fonctionsprsentes ci-dessus taient auparavant de simples fichiers sql, et sont devenues desextensions.

    2. Redhat/Cent OS/FedoraLes RPM pour PostgreSQL se trouvent l'adresse suivante :http://yum.postgresql.org/.

    Actuellement (dcembre 2014), la version 9.3 de PostgreSQL est propose partir de RHEL 5,Centos 5, et Fedora 18. Il peut s'agir d'abord de mettre jour vos dpots partir de la liste suivantesuivant votre distribution : http://yum.postgresql.org/repopackages.php

    Puis d'installer au minimum les paquets postgresql92 et postgresql92-serveryum install postgresql93 postgresql93-server

    Une fois l'installation termine, vous devrez crer un cluster :

    Premiers pas avec PostgreSQL 1.1 18/35

  • service postgresql-9.3 initdbet dmarrer le service :

    service postgresql-9.3 start

    Si vous souhaitez que ce service dmarre avec le serveur, vous pouvez ajouter :chkconfig postgresql-9.3 on

    NB : La nomenclature du service a volu avec les versions successives. Le service de la version8.3 s'appelait postgresql et non pas postgresql-8.3.

    Il est enfin possible d'installer les extensions (voir le test dans la partie prcdente sur debian):yum install postgresql93-contrib

    NB : Attention ! Le paquet postgresql-contrib correspond la version de postgresql native votredistribution. Avec ce paquet, les extensions ne seront alors pas installes dans le bon rpertoire...

    3. Compilation des sourcesSi vous n'avez pas le droit de vous connecter en tant que root sur le serveur Linux o vous souhaitezinstaller PostgreSQL, c'est le moyen d'installer PostgreSQL tout de mme. Le serveur s'excuteraalors avec les droits de votre compte utilisateur.Compiler les sources n'est pas trs compliqu en fait, mme si cela parat un peu effrayant quand onne l'a jamais fait.Pour compiler les sources, vous devez les rcuprer ici : http://www.postgresql.org/ftp/source/ etsuivre la procdure d'installation prcise dans la documentation.

    F. AutresDes binaires sont disponibles galement pour :

    1. FreeBSD ;2. Mac OS X ;3. Solaris ;

    Premiers pas avec PostgreSQL 1.1 19/35

  • IV Aprs l'installationDans toute la suite du document, nous supposons que l'utilisateur systme sous lequel PostgreSQL at install est postgres. Si ce n'est pas le cas, remplacez par l'utilisateur qui dmarre le serveur.Nous supposons aussi que le systme est Centos 6. Sur d'autres systmes, certains rpertoirespeuvent tre diffrents.NB : Avant toute modification de fichier de configuration, pensez sauvegarder la version initiale

    du fichier! Une erreur est si vite arrive...

    A. Processus et emplacement des fichiers.L'emplacement des fichiers de configuration et des fichiers du cluster dpend de votre distribution.Le rpertoire contenant les fichiers du cluster est couramment appel PGDATA (du nom de lavariable d'environnement correspondante). Par exemple : /var/lib/postgresql/9.3/main (Debian),/var/lib/pgsql/9.3/data (CentOS) ou C:\Program Files\PostgreSQL\9.3\data (Windows)Normalement, le fichier postgresql.conf est dans le rpertoire du cluster. Cependant, cela peut treautrement (sur Debian, tous les fichiers de configuration doivent tre dans /etc).Voici un moyen de retrouver leur emplacement sous Linux ou Unix si vous l'avez oubli.Liste des processus nomms "postgres" :(exemple sur une Centos):

    flo:~# ps -ef | grep postgres | grep -v greppostgres 1781 1 0 06:14 ? 00:00:00 /usr/pgsql-9.3/bin/postmaster -p 5432-D /var/lib/pgsql/9.3/datapostgres 1783 1781 0 06:14 ? 00:00:00 postgres: logger process postgres 1785 1781 0 06:14 ? 00:00:00 postgres: checkpointer process postgres 1786 1781 0 06:14 ? 00:00:00 postgres: writer process postgres 1787 1781 0 06:14 ? 00:00:00 postgres: wal writer process postgres 1788 1781 0 06:14 ? 00:00:00 postgres: autovacuum launcher processpostgres 1789 1781 0 06:14 ? 00:00:00 postgres: stats collector process flo:~#

    Voyez que le processus 1781 est le pre de tous les autres :postgres 1781 1 0 06:14 ? 00:00:00 /usr/pgsql-9.3/bin/postmaster -p 5432-D /var/lib/pgsql/9.3/data

    le chemin derrire le -D est l'emplacement du cluster.-D /var/lib/pgsql/9.3/data

    Normalement, les autres fichiers de configuration du cluster (pg_hba.conf, pg_ident.conf) sont dansle mme rpertoire. Mais sous Debian, vous trouverez une option -c qui indique un paramtragespcifique concernant l'emplacement du fichier de configuration :

    config_file=/etc/postgresql/9.3/main/postgresql.conf

    Premiers pas avec PostgreSQL 1.1 20/35

  • Vous avez certainement identifi par vous mme l'emplacement des binaires :/usr/pgsql-9.3/bin/postgres

    A noter le contenu du rpertoire du cluster (CentOS toujours):flo:/var/lib/pgsql/9.3/data# ls -ltotal 60drwx------ 7 postgres postgres 4096 mai 10 15:19 basedrwx------ 2 postgres postgres 4096 mai 10 18:29 globaldrwx------ 2 postgres postgres 4096 avr 4 19:58 pg_clogdrwx------ 4 postgres postgres 4096 avr 4 19:58 pg_multixactdrwx------ 2 postgres postgres 4096 avr 4 19:58 pg_notifydrwx------ 2 postgres postgres 4096 avr 4 19:58 pg_serialdrwx------ 2 postgres postgres 4096 avr 4 19:58 pg_snapshotsdrwx------ 2 postgres postgres 4096 avr 4 19:58 pg_statdrwx------ 2 postgres postgres 4096 avr 4 19:58 pg_stat_tmpdrwx------ 2 postgres postgres 4096 avr 4 19:58 pg_subtransdrwx------ 2 postgres postgres 4096 avr 4 19:58 pg_tblspcdrwx------ 2 postgres postgres 4096 avr 4 19:58 pg_twophase-rw------- 1 postgres postgres 4 avr 4 19:58 PG_VERSIONdrwx------ 3 postgres postgres 4096 avr 4 19:58 pg_xlog-rw------- 1 postgres postgres 133 mai 10 08:15 postmaster.opts-rw------- 1 postgres postgres 99 mai 10 08:15 postmaster.pid

    Quelques sous-rpertoires et fichiers : base : rpertoire des fichiers de base de donnes ; pg_log : sous CentOS ou windows, log de la base de donnes (c'est le seul rpertoire du

    cluster o vous pouvez supprimer des fichiers!). Ce rpertoire est absent sous debian, car leslogs sont normalement sous /var/log/postgresql/ ;

    pg_clog et pg_xlog : commit log (tat des transactions) et rpertoire des fichiers WAL(Write Ahead Log, utilis pour la durabilit ) ;

    postmaster.pid : fichier verrou utilis pour viter que plusieurs instances ne soient activessur le mme rpertoire de donnes ;

    Attention : le contenu de pg_clog et pg_xlog ne doit pas tre supprim!

    Premiers pas avec PostgreSQL 1.1 21/35

  • B. Changer le mot de passe de l'utilisateur systme postgres moins que vous n'ayez compil les sources pour utiliser PostgreSQL sur votre compte utilisateur,un utilisateur postgres a t cr sur votre systme.Afin de pouvoir l'utiliser, vous devez changer le mot de passe de cet utilisateur.Pour cela, sous Linux, connectez-vous en tant que root et excutez la commande 'passwd postgres'.(encore une fois, ne pas utiliser un mot de passe trivial!).

    C. Crer un cluster de base de donnes.Avec certaines distributions (CentOS, Debian, Windows), un cluster est cr par dfaut l'installation des paquets.Si vous tes dans un autre cas de figure, il vous faudra donc en crer un.Pour cela, utilisez la commande initdb.

    D. Autoriser les connexionsL'installation de PostgreSQL positionne des valeurs par dfaut dans les fichiers de configuration. Aprs l'installation, PostgreSQL est configur de telle sorte que les connexions ne sont paspossibles partir du rseau. Pour autoriser des clients distants se connecter, il faut configurer deuxfichiers : postgresql.conf et pg_hba.conf.

    1. Connexions rseau (postgresql.conf) l'installation, PostgreSQL est configur pour n'accepter que les connexions locales (c'est leparamtre listen_addresses). Si vous souhaitez pouvoir vous connecter partir du rseau, il faut d-commenter le paramtrelisten_addresses du fichier postgresql.conf, et prciser sur quelle(s) adresse(s) postgres accepte lesconnexions.Attention : ce sont bien les adresses IP d'coute, c'est--dire les adresses IP du serveur sur

    lesquelles le serveur PostgreSQL va couter. Si vous prcisez une adresse '*', postgresva couter les connexions sur toutes les interfaces rseau du serveur. Si vous prcisezune adresse IP, cela signifie que postgres va couter sur l'interface rseau de votremachine qui a cette adresse IP. Si vous souhaitez n'autoriser les connexions qu' uneliste de machines ou d'adresses IP, c'est dans pg_hba.conf que vous pouvez le faire(paragraphe suivant).

    Pour que les paramtres soient pris en compte, il faut redmarrer le serveur PostgreSQL.Exemples :(connexion locales uniquement)

    #listen_addresses = 'localhost' # what IP address(es) to listen on; # comma-separated list of addresses; # defaults to 'localhost', '*' = all # (change requires restart)port = 5432 # (change requires restart)

    Premiers pas avec PostgreSQL 1.1 22/35

  • (connexion sur l'adresse 192.168.0.4 et locales, port 5432)listen_addresses = '192.168.0.4, localhost' # what IP address(es) to listenon; # comma-separated list of addresses; # defaults to 'localhost', '*' = all # (change requires restart)port = 5432 # (change requires restart)

    2. Authentification des clients (pg_hba.conf)Le fichier pg_hba.conf configure les autorisations pour les bases du cluster.Chaque ligne prcise une rgle aidant dcider si l'utilisateur est habilit se connecter ou non.Le fichier est lu dans l'ordre par postgres, et, ds qu'une ligne est rencontre qui correspond au castest, la lecture s'arrte. Cela signifie que l'ordre des lignes est important.Sur chaque ligne est prcis le type de connexion, un nom de base de donnes, un nom d'utilisateur,et la mthode d'authentification.Les mthodes d'authentification les plus classiques sont : md5 (par mot de passe crypt), ident (partir du nom d'utilisateur du systme d'exploitation, non utilisable sous Windows).Exemple :

    # connection par socket Unix pour l'administration du serveur# TYPE DATABASE USER CIDR-ADDRESS METHODlocal all postgres ident sameuser# connection par socket Unix # TYPE DATABASE USER CIDR-ADDRESS METHODlocal mabase tom md5local truc all ident sameuser# Connexions locales en Ipv4 :# TYPE DATABASE USER CIDR-ADDRESS METHODhost mabase tom 127.0.0.1/32 md5host truc all 127.0.0.1/32 md5# Connexion distante en Ipv4 :# TYPE DATABASE USER CIDR-ADDRESS METHODhost mabase tom 192.168.12.10/32 md5host truc all 192.168.12.10/32 md5

    La premire ligne non commente :local all postgres ident sameuser

    signifie que, si postgres reoit une demande de connexion par socket Unix (local) sur n'importequelle base (all), pour l'utilisateur postgres, alors la mthode d'authentification utilise est : ident.sameuser signifie que postgres vrifie que le nom de l'utilisateur Unix propritaire de la socket estle mme que celui utilis pour se connecter la base.

    La ligne suivante :

    Premiers pas avec PostgreSQL 1.1 23/35

  • local mabase tom md5signifie que, lorsque tom essaie de se connecter par socket Unix sur la base mabase, c'estl'authentification md5 qui est utilise.

    La ligne :local truc all ident sameuser

    signifie que lorsque n'importe quel utilisateur essaie de se connecter la base truc par socket Unix,c'est l'authentification ident sameuser qui est utilise.

    La ligne :host mabase tom 127.0.0.1/32 md5

    signifie qu'une demande de connexion partir du rseau local par Ipv4 (host 127.0.0.1/32) pour labase mabase, par un utilisateur tom, est authentifie par md5.

    La ligne :host mabase tom 192.168.12.10/32 md5

    signifie qu'une demande de connexion de l'utilisateur tom sur mabase, partir de l'adresse192.168.12.10 est authentifie par md5.

    En rsum : 1. tom est autoris se connecter sur la base mabase, soit par socket Unix, soit par Ipv4 en

    local, soit par Ipv4 partir de : 192.168.12.10 ;2. Les autres utilisateurs ( part l'utilisateur postgres) ne peuvent se connecter que sur la base

    truc ;3. Tom peut galement se connecter sur la base truc, car tom fait partie de l'ensemble des

    utilisateurs (all) ;

    NB : CIDR est une faon de noter les ensembles d'adresses IP, avec le chiffre derrire le '/'indiquant la taille du masque en bits (ainsi un rseau de classe A est en /8, classe B, 16,classe C, 24, une IP unique /32, et tout le monde : 0.0.0.0/0 ) (voir l'article Wikipedia :http://fr.wikipedia.org/wiki/Adresse_IPv4 )

    NB : Le fichier pg_hba.conf permet de configurer le cluster, il est donc commun toutes lesbases du cluster : attention ne pas autoriser un utilisateur sur une base par erreur.

    Attention : ne surtout pas autoriser d'authentification trust ni ident par le rseau, car cela signifieraitfaire entirement confiance au client... Si vous voulez en savoir plus surl'authentification du client, allez voir la documentation ici :http://docs.postgresql.fr/9.3/client-authentication.html

    Premiers pas avec PostgreSQL 1.1 24/35

  • 3. Prise en compte des paramtres de configurationPour que PostgreSQL prenne en compte les modifications de paramtres sans redmarrer le serveur,vous avez les solutions suivantes :

    sous CentOS, utiliser pg_ctl reload -D /var/lib/pgsql/9.3/data avec l'user postgres ; sous Debian, utiliser pg_ctlcluster 9.3 main reload avec l'user postgres ; sous linux, envoyer un signal SIGHUP postgres (ex : kill -s SIGHUP 753) ; sous Windows, il est possible, avec les droits adquat, d'utiliser un raccourci install dans le

    menu Dmarrer ( Rechargez la configuration : il s'agit d'un script VB qui excutepg_ctl.exe) ;

    Attention : Il faut savoir que certaines options ne seront de toutes faons prises en compte qu'audmarrage (voir la documentation, les commentaires de postgresql.conf ou la colonnecontext de la vue pg_settings)

    4. Crer une baseNous allons crer une base mabase sur le cluster, puis par la suite faire de tom le propritaire de labase (afin qu'il puisse faire ce qu'il veut sur cette base).

    Pour cela, lancez la commande createdb :postgres@flo$ createdb mabase

    NB : createdb lance en fait la commande SQL CREATE DATABASE pour vous.

    5. Crer un rle et lui donner des droits sur une baseIl faut savoir que les utilisateurs et les groupes dans PostgreSQL sont tous grs par des rles.

    En tant qu'utilisateur postgres, lancez psql :postgres@debian:/etc/postgresql/9.3/main$ psqlpsql (9.3.5)Type "help" for help.

    Postgres=# helpYou are using psql, the command-line interface to PostgreSQL.Type: \copyright for distribution terms \h for help with SQL commands \? for help with psql commands \g or terminate with semicolon to execute query \q to quitpostgres=#

    Premiers pas avec PostgreSQL 1.1 25/35

  • Crez un rle tom, avec les droits de login (pour qu'il ait le droit de se connecter au serveur), et lemot de passe : secret.

    postgres=# CREATE ROLE tom LOGIN password 'secret';CREATE ROLEpostgres=#

    Pour que tom soit le propritaire de mabase :postgres=# ALTER DATABASE mabase OWNER TO tom;ALTER DATABASE

    Si vous souhaitez donner le droit tom de crer des bases:postgres=# ALTER ROLE tom CREATEDB;ALTER ROLEpostgres=#

    Sortez de psql :postgres=# \qpostgres@debian:/etc/postgresql/9.3/main$

    NB : les commandes CREATE DATABASE et CREATE ROLE (cration de base etd'utilisateur) sont globales au cluster. Il est donc possible de les excuter depuis n'importequelle base.

    Maintenant, l'utilisateur tom peut se connecter sur mabase : lancez psql, en prcisant que vous vousconnectez en tant que tom :

    flo@flo:~$ psql -U tom mabasePassword for user tom :psql (9.3.5)Type "help" for help.

    mabase=>

    NB : il faut prciser la base! Sinon psql cherchera se connecter une base "tom".NB : Et si vous obtenez un message tel que Peer authentication failed for user "tom", c'est que

    votre fichier pg_hba.conf est mal configur. Dans notre cas, la ligne de configurationcorrespondante dans pg_hba.conf est local mabase tom md5 . Vrifiez aussi qu'il n'y apas plus haut dans le fichier une ligne comme local all all peer qui serait alorsprioritaire.

    Pour les dtails sur les droits, lisez le chapitre correspondant de la documentation :http://docs.postgresqlfr.org/9.3/user-manag.html

    Premiers pas avec PostgreSQL 1.1 26/35

  • E. Super-utilisateurLe super-utilisateur est un utilisateur qui dispose de droits spciaux (certaines fonctions ne sontutilisables que par un super-utilisateur). Les super-utilisateurs ne sont pas affects par les droits.Si vous avez install PostgreSQL en tant que root, classiquement vous avez un super-utilisateurpostgres.Attention! Le super-utilisateur disposant de tous les droits, viter de l'utiliser si ce n'est pas

    ncessaire, afin de limiter le risque d'erreur.

    F. Je ne peux pas me connecter la base? Que faire?Que vrifier?D'abord : lisez le message d'erreur! (a peut suffire trouver la solution partir d'un bon moteur derecherche, des archives des mailing-lists ou de forums...)Consultez les logs (voir chapitre suivant)Cherchez quels sont les clusters prsents ? (sous Debian : pg_lsclusters..., sinon commande \l danspsql)Vrifiez le fichier postgresql.conf (le paramtre listen_addresses est-il correct? Le port est-il celuisouhait? Le client essaie-t-il de se connecter sur le bon port?)Vrifiez le fichier pg_hba.confVrifiez le propritaire de la baseLe rle que vous utilisez a-t-il le droit de se loguer (autorisation ''LOGIN'') ?Le rle utilis a-t-il le droit de se connecter la base de donnes (sinon utilisez GRANTCONNECT on mabase ...)

    G. O se trouvent les logs ? Comment les configurer?La configuration des logs est effectue par le fichier postgresql.conf (voir les paramtreslog_destination et log_directory)Dans une installation standard de PostgreSQL, la log se trouve dans un rpertoire pg_log sous lerpertoire PGDATA (rpertoire du cluster).Par exemple, sous Windows :

    C:\Program Files\PostgreSQL\9.3\data\pg_log

    En fonction de votre utilisation (production, test, dveloppement), vous pourrez rgler lesparamtres des logs. Par exemple, loguer tous les ordres SQL peut tre fort utile en dveloppement(surtout lorsque vous utilisez un ORM).Pensez recharger la configuration aprs modification.

    Premiers pas avec PostgreSQL 1.1 27/35

  • H. Arrter/dmarrer le serveur PostgreSQLSous Windows : vous pouvez utiliser "stoppez le service" et "dmarrez le service" dans le menudmarrer, ou bien dans un terminal, utiliser pg_ctl :

    C:\Program Files\PostgreSQL\9.3\bin>pg_ctl start -D "C:\Program Files\PostgreSQL\9.3\data"server starting

    ou simplement manipuler le service windows correspondant.

    Sous Debian / Ubuntu, il est possible d'utiliser :pg_ctlcluster 9.3 main start

    Sous CentOS / RedHat / Fedora, utiliser :pg_ctl start -D /var/lib/pgsql/9.3/data

    ou simplementservice postgresql-9.3 start

    V Outils

    A. Outil graphique : pgAdmin3PgAdmin3 est sans doute l'outil le plus populaire pour dvelopper et administrer PostgreSQL.http://www.pgadmin.org/?lang=fr_FRCeci est un apercu de ce quoi il ressemble. Pour le reste, vous pourrez vous reporter sadocumentation.

    Premiers pas avec PostgreSQL 1.1 28/35

  • B. psql (outil en ligne de commande)Psql permet d'excuter des ordres SQL sur les bases, et galement des commandes de gestion etd'administration.

    Comme le montre les paragraphes qui suivent, le lancement de psql est diffrent selon le systmeutilis.

    1. Windows :

    a) Via le menu dmarrer (gre tout seul le changement d'utilisateur)Si, la premire connexion, vous avez ce message d'avertissement :

    Warning: Console code page (850) differs from Windows code page (1252) 8-bit characters might not work correctly. See psql reference page "Notes for Windows users" for details.

    postgres=#

    reportez-vous la partie installation sous Windows.

    b) En ligne de commande dans une console :Si vous lancez psql non pas avec le menu dmarrer, mais partir d'une console Windows, il fautdisposer des droits correspondant l'utilisateur systme postgres. Si vous n'tes pas administrateur,ceci reste possible avec la commande runas de Windows.

    runas /user:postgres cmd.exe

    Puis modifiez la police de la console pour utiliser Lucida Console, et changez de code page :cmd.exe /c chcp 1252

    (pour la France).

    Avant de vous connecter psql :cd "C:\program Files\PostgreSQL\9.3\bin"psqlMot de passe :psql (9.3.5)Saisissez help pour l'aide.

    postgres=#

    Malheureusement, si votre base est en UTF8, la console Windows est incapable de grercorrectement l'affichage. Il faudra galement viter de saisir des donnes avec psql, et prfrerpgAdmin pour cet usage (pgAdmin gre parfaitement les diffrents encodages).

    Premiers pas avec PostgreSQL 1.1 29/35

  • 2. Sous Linux : Avec l'utilisateur postgres :

    psql mabase

    NB : Quelque soit la plateforme, si vous ne prcisez pas le nom de la base, psql essaie de seconnecter la base de mme nom que l'utilisateur. Si vous ne prcisez pas le nomd'utilisateur, c'est le nom de l'utilisateur du systme qui est utilis.

    3. Commandes Commandes psql connatre absolument :

    \? pour l'aide des commandes psql (si vous deviez n'en retenir qu'une) \q quitter \h aide des commandes sql

    autres commandes intressantes : \l liste des bases de donnes \c se connecter une base \d [nom] pour la description d'une table, d'un index, squence, vue \d liste des relations (tables, vues et squences) \i nom_fichier excuter un fichier de commandes SQL

    Attention! Pour la commande \i, les noms de fichiers sous Windows doivent utiliser lesparateur slash " / "et non antislash " \ " . Exemple :

    Exemple :\i C:/tests.sql

    C. phpPgAdminC'est un outil d'administration web pour PostgreSQLhttp://phppgadmin.sourceforge.net/

    D. CopyCopy est un outil pour le chargement et dchargement de donnes en masse. Ce n'est pas unecommande standard SQL.http://docs.postgresqlfr.org/9.3/sql-copy.html

    Premiers pas avec PostgreSQL 1.1 30/35

  • VI Dveloppement

    A. SQLPlusieurs outils permettent d'excuter du code SQL de faon interactive : psql, pgAdmin (voir lessections qui leur sont consacres).Vous pouvez galement utiliser un outil tiers, si vous prfrez...

    B. Procdures stockesL'intrt des procdures stockes est de pouvoir excuter des fonctions directement sur le serveur.Les procdures stockes sont efficaces et rapides, et permettent de traiter des donnes, soit pourconsultation par un client, soit en mise jour.PostgreSQL vous donne le choix du langage de procdures stockes.Vous pouvez utiliser:

    PL/pgsql (proche de SQL, facile utiliser, utilisable pour les triggers) PL/Tcl PL/Perl (pratique lorsqu'il y a des traitements de chanes de caractres effectuer) PL/Python D'autres langages ne sont pas inclus dans la distribution principale :

    PL/Java, PL/PHP, PL/R, PL/Ruby, PL/Scheme, PL/sh Vous pouvez aussi en dfinir un vous-mme...mais c'est beaucoup de travail !

    C. JDBCLe pilote JDBC pour PostgreSQL est un pilote natif (il est entirement crit en Java). Lesdiffrentes versions du pilote JDBC sont disponibles ici (ainsi que la documentation) :

    http://jdbc.postgresql.org/index.html Ensuite vous avez juste utiliser le .jar de manire classique (le mettre dans le CLASSPATH devotre application).

    NB : la syntaxe de l'URL peut prendre diffrentes formes :String url1="jdbc:postgresql:database";String url2="jdbc:postgresql://host/database";String url3="jdbc:postgresql://host:port/database";Allez voir la documentation http://jdbc.postgresql.org/documentation/head/connect.html pour

    plus de dtails.

    Premiers pas avec PostgreSQL 1.1 31/35

  • Quel driver choisir ?Normalement, la dernire version du driver devrait vous convenir (elle est compatible avec toutesles versions supportes de PostgreSQL). Mais il y en a 3 varits :

    1. la JDBC3, prfrer pour les JVM 1.4 et 1.5 ;2. la JDBC4, pour la JVM 1.6 ;3. et enfin prsent JDBC41 pour les JVM 1.7 et 1.8 ;

    Plus de prcisions et une matrice de compatibilit sur la page de tlchargement :http://jdbc.postgresql.org/download.html

    D. Autres (PERL, Python, .Net, ODBC, Tcl...)Voir ici : http://docs.postgresqlfr.org/9.3/external-projects.html

    E. A savoir !

    1. Majuscules/minusculesLe nom des objets dans les ordres SQL est converti automatiquement en minuscules (c'est la cassepar dfaut choisie par PostgreSQL, la norme SQL ne l'ayant pas impos).Par exemple, si vous excutez :

    SELECT Id, Valeur FROM Matable;

    l'ordre rellement excut sera :SELECT id, valeur FROM matable;

    mabase=> SELECT Id, Valeur FROM Matable; id | valeur----+-------- 1 | azerty(1 ligne)

    mabase=>

    Si vous souhaitez utiliser la casse dans les noms d'objets (ce qui n'est pas conseill en gnral),utilisez les guillemets.Par exemple :

    SELECT "Id", "Valeur" FROM "Matable";

    Remarquez que ce comportement est diffrent d'autres moteurs, qui soit passent tous les noms enmajuscule, soit conservent la casse.

    Premiers pas avec PostgreSQL 1.1 32/35

  • 2. Erreurs et transactionsAvec PostgreSQL, lorsqu'une erreur se produit dans une transaction, il n'est pas possible del'ignorer. L'erreur doit tre gre. Sinon tous les ordres suivants sont galement en erreur.De plus, en cas d'erreur, la fin de la transaction, il n'est pas possible de commiter. Ainsi, l'ordreCOMMIT provoque en ralit un ROLLBACK.

    Exemple :mabase=> begin;BEGINmabase=> insert into matable(valeur, nb) values ('c',2);INSERT 0 1mabase=> insert into matable(valeur, nb) values ('c',2);ERREUR: la valeur d'une cl duplique rompt la contrainte unique u_matable mabase=> insert into matable(valeur, nb) values ('d',2);ERREUR: la transaction est annule, les commandes sont ignores jusqu' lafin du blocde la transactionmabase=> commit;ROLLBACKmabase=> select valeur, nb from matable; valeur | nb--------+---- a | 2 b | 2(2 lignes)

    mabase=>

    3. SavepointsLes savepoints ne sont pas spcifiques PostgreSQL. Mais c'est une fonctionalit SQL trop peuconnue, et pourtant extrmement utile, dans le cas de traitements lourds.Un savepoint sert marquer un point de reprise dans un traitement. Lorsque vous avez effectuerun traitement long (par exemple lorqu'un programme doit mettre jour tout un ensemble dedonnes les unes aprs les autres), vous pouvez mettre des savepoints intervalles rguliers.Lorsqu'une erreur se produit, vous faites en sorte que le programme effectue un ROLLBACK TOSAVEPOINT vers un point de sauvegarde o l'tat de vos donnes est cohrent (gnralement ledernier point de sauvegarde). Ensuite vous pouvez annuler le traitement (aprs par exemple pris laprcaution de loguer les vnements...).L'intrt est que seul les traitements effectus aprs le point de sauvegarde sont perdus. Cela vite votre programme de faire un ROLLBACK sur l'ensemble du traitement! Votre programme peutainsi effectuer des traitements partiellement.

    Premiers pas avec PostgreSQL 1.1 33/35

  • 4. DDL dans les transactions!Une des fonctionnalits les plus patantes de PostgreSQL est la possibilit d'inclure des ordres DDLdans des transactions.Exemple :Dans une transaction, on cre une table "test", puis une table "matable". La cration de "matable"choue (la table existe dj). On fait un rollback sur la transaction : la table "test" n'existe pas.

    mabase=> BEGIN;BEGINmabase=> CREATE TABLE test ( id serial NOT NULL, valeur character varying(20) NOT NULL);NOTICE: CREATE TABLE crera des squences implicites test_id_seq pour lacolonne serial test.id CREATE TABLEmabase=> ALTER TABLE test ADD CONSTRAINT pk_test PRIMARY KEY (id);NOTICE: ALTER TABLE / ADD PRIMARY KEY crera un index implicite pk_test pourla table test ALTER TABLEmabase=> CREATE TABLE matable ( id serial NOT NULL, valeur character varying(20) NOT NULL);NOTICE: CREATE TABLE crera des squences implicites matable_id_seq1 pour lacolonne serial matable.id ERREUR: la relation matable existe djmabase=> ROLLBACK;ROLLBACKmabase=> \d Liste des relations Schma | Nom | Type | Propritaire--------+------------------+----------+-------------- public | matable | table | tom public | matable_id_seq | squence | tom public | table_flo | table | flo public | table_flo_id_seq | squence | flo(4 lignes)

    mabase=>

    Intrt : On peut faire tout un ensemble de modification de faon atomique (par exemple lamigration d'un schma pour l'volution d'une application). C'est un soulagement pour le DBA quidevra passer votre script de migration, de nuit, de savoir qu'il n'aura pas restaurer la base en casd'chec.

    5. Count(*)En raison de l'implmentation actuelle du MVCC, count(*) force le parcours complet de la table, cequi est donc lent.

    Premiers pas avec PostgreSQL 1.1 34/35

  • VII Et aprs?

    A. Lire la documentation :Lien vers la documentation en Franais : http://docs.postgresql.fr/En anglais : http://www.postgresql.org/docs/

    B. Sites utiles :Site officiel : http://www.postgresql.org/Site de la communaut francophone : http://www.postgresql.fr/ :

    C. Pour trouver de l'aide complmentaire :La communaut PostgreSQL est trs active, et vous trouverez facilement de l'aide pour lesproblmes les plus simples aussi bien que pour les cas les plus tordus.

    1. Listes de diffusion :La liste francophone : http://www.postgresql.org/list/pgsql-fr-generale/Les autres : http://www.postgresql.org/list/Attention : les listes "developer" sont pour les dveloppeurs de PostgreSQL uniquement !

    2. Forum de la communaut francophone :http://forums.postgresql.fr/

    3. Remarque : comment poser vos questions?Si vous posez une question parce que vous avez un problme, vous voulez certainement qu'il soitrsolu le plus vite possible. Alors pensez ceux qui vont tenter de vous aider, et faites-leur gagnerdu temps en donnant les informations ncessaires. Soyez le plus clair possible. Pensez prciser au minimum :

    La version de PostgreSQL utilise, Le systme d'exploitation., ce que vous avez fait, ce que vous vouliez faire, le message d'erreur (ou son absence), le rsultat obtenu.

    Si vous n'arrivez pas vous connecter, prcisez si le client est sur la mme machine que le serveur.Recopiez les messages d'erreurs, consultez les logs... enfin donnez le maximum d'informationspertinentes, et si on vous pose des questions, rpondez-y le plus prcisment possible.

    Evitez galement de dire qu'il y a un bug si vous n'en tes pas absolement certain(e), et postez sur lamailing-list ou le forum appropri (par exemple, la mailing-list pour les novices n'est pas un endroitindigne, et des hackers y rpondent rgulirement et avec bienveillance).

    Premiers pas avec PostgreSQL 1.1 35/35

    I IntroductionA. Pourquoi ce document?B. qui s'adresse ce document?C. Licence du document :

    II Prsentation de PostgreSQL1. Licence2. Caractristiques et fonctionnalits :

    III InstallationA. Vocabulaire1. Base2. Cluster (ou grappe de base de donnes)3. Schma

    B. Principes de base1. Comptes systme2. Rles3. Versions (mineures/majeures)4. Client/serveur5. Processus serveur6. Module de contribution

    C. ExempleD. Sous Windows1. O trouver PostgreSQL pour Windows?2. Installation

    E. Sous Linux1. Debian/Ubuntu2. Redhat/Cent OS/Fedora3. Compilation des sources

    F. Autres

    IV Aprs l'installationA. Processus et emplacement des fichiers.B. Changer le mot de passe de l'utilisateur systme postgresC. Crer un cluster de base de donnes.D. Autoriser les connexions1. Connexions rseau (postgresql.conf)2. Authentification des clients (pg_hba.conf)3. Prise en compte des paramtres de configuration4. Crer une base5. Crer un rle et lui donner des droits sur une base

    E. Super-utilisateurF. Je ne peux pas me connecter la base? Que faire?G. O se trouvent les logs ? Comment les configurer?H. Arrter/dmarrer le serveur PostgreSQL

    V OutilsA. Outil graphique : pgAdmin3B. psql (outil en ligne de commande)1. Windows :a) Via le menu dmarrer (gre tout seul le changement d'utilisateur)b) En ligne de commande dans une console :

    2. Sous Linux :3. Commandes

    C. phpPgAdminD. Copy

    VI DveloppementA. SQLB. Procdures stockesC. JDBCD. Autres (PERL, Python, .Net, ODBC, Tcl...)E. A savoir !1. Majuscules/minuscules2. Erreurs et transactions3. Savepoints4. DDL dans les transactions!5. Count(*)

    VII Et aprs?A. Lire la documentation :B. Sites utiles :C. Pour trouver de l'aide complmentaire :1. Listes de diffusion :2. Forum de la communaut francophone :3. Remarque : comment poser vos questions?