postgresql - e

publicité
PostgreSQL
Introduction
Jean-Jacques LE COZ
Histoire



Université de Berkeley (Californie)

Ancêtre de PostgreSQL : Ingres (1977-1985)

Postgres : projet de base de données objet (1986-1994)

Postgres95 : ajout de fonctionnalité SQL (1994-1995)
Projet PostgreSQL

A partir de 1996

250 000 lignes de code

1999 : total des donations = 25 millions de $
Open source licence BSD
Postgresql SGBDR

Implémentations

Norme SQL1 (SQL)

Norme SQL2 (Fonctions, trigger, procédures stockées,...)

Quelques aspects de la norme SQL3 (orientations objet)

www.postgresql.org

Réplication

Transaction (OLTP)

APIs pour la programmation

Tuning
Licence Open Source

Licence BSD (logiciel et documentation)

Utilisation, copie, modification, distribution

Pas de droits

Pas d'accord préalable

Obligation d'inscrire deux paragraphes
Non responsabilité de l'Université de Californie



Mauvais fonctionnement
Garantie
Programmation

Langages



ADA, C, C++, C#, Java, Perl, TCL/TK, PHP, Python,
Ruby
APIs

LIBPQ, LIBPGEASY, ECPG, LIBPQ++

ODBC, JDBC (natif)

PGTCLSH
SQL embarqué

ECPG/C - C++
PostgreSQL et Java

Communauté dédiée à JDBC



URL : jdbc.postgresql.org
Versions de driver 2, 3 et bientôt 4
Haute disponibilité avec une solution Java


Surcouche intergicielle (Middleware)
Produit SEQUOIA (sequoia.continuent.org)




Licence libre Apache V2
Basé sur le projet Objectweb C-JDBC
Equilibrage de charge
Tolérance de panne
Installation

Site officiel

www.postgresql.org

Nombreux sites miroirs

Packages


format tar.gz

format RPM
Installation

$> rpm -ivh package.rpm

Tous les packages en respectant les dépendances
Le dba postgresql

Administrateur par défaut

/etc/passwd

user : postgres

Démarrage de l'instance ou cluster (démon postmaster)

Arrêt de l'instance

Tuning

Création des utilisateurs et accord des droits

Sauvegardes
Création d'une instance

Création de l'instance



Démarrage

postmaster -i -D /chemin/data &[options]

Par défaut sur le port 5432 ( -p numéro de port)
Création d'utilisateurs


$> initdb -D /chemin/data [options]
$>createuser [options]
Création d'une base de données (1 instance = n bases)

$>createdb nomBase [options]
Architecture
Configuration


Le fichier pg_hba.conf

Détermine les clients et leur mode d'authentification

Détermine les types d'accès des clients
Le fichier pg_ident.conf

Détermine la correspondance entre des noms
d'utilisateurs système et des noms d'utilisateurs
postgres.
Administration (1)

Sécurité :

Le fichier pg_hba.conf

Types d'authentification


Connexions



Types : UNIX socket, TCP/IP
Valeurs : local ou host
Bases de données


Valeurs : trust, password, md5, crypt
Valeurs : all ou nom d'une base
Clients

Valeurs : aucune, adresse IP d'un host, adresse IP d'un réseau
Administration (2)


Sauvegarde

$>pg_dumpall > filename

$>pg_dump nom de BD > filename

$>pg_dumpall | gzip > filename.gz

$>pg_dumpall | split -b 1m – filename
Restauration

$>psql nom de BD < filename

$>gunzip -c filename.gz | psql

$>cat filename.* | psql
Administration (3)

Nétoyage des données obsolètes


$>vacuumdb -z -d nom de BD -U username
Performances (shared_buffers)

Linux



$>echo 33554432 >/proc/sys/kernel/shmall
$>echo 33554432 >/proc/sys/kernel/shmmax
PostgreSQL



$>shared_buffers = 4096
$>sort_mem = 8192
$>max_connections = 8
Interface graphique (1)

Pgaccess

Écrit en C/C++

Permet :




Création de tables
Mise à jour : insert, update, delete
Sélection : select
Utilisation

$>pgaccess &
Interface graphique (2)

Squirrel

Écrit en Java

Il faut un driver JDBC (version 3)

Permet la :




Création de tables
Mise à jour : insert, update, delete
Sélection : select
Utilisation

$>squirrel-sql.sh &
Interface graphique (3)

PGADMIN III

Multi-plateformes




MS-Windows 2000, XP
GNU/Linux
FreeBSD
MacOS X et SUN OS en développement

Support des langues : 20 langues supportées

Accès natif à PostgreSQL

Tous les objets postgres sont pris en compte
Interface graphique (4)

SQL Explorer

Plugin pour Eclipse

Tous les SGBDR

Avec JDBC

Requêtes SQL
Interface graphique (5)

Azzurri Clay

Plugin pour Eclipse

Tous les SGBDR

Avec JDBC

Modèlisation de base de données

Génération automatique de schéma
Interface texte

psql

Utilisation

$>psql nom base de données [ options ]

\q (quit)

\d (liste les tables)

\? (aide)

=>ordres sql;
Inerface graphique pour
la commande explain

Produit rhdb-explain

Éditeur RedHat

Produit sous forme graphique l'ensemble des opérations
effectué par le moteur de PostgreSQL pour résoudre une
requête SQL.

Site web:

www.redhat.com

Compilation des sources par: $>ant dist

Exécution par

$>java -jar rhdb-explain/dist/rhdb-explain.jar &
Création d'une base
de données

Il faut être utilisateur ou administrateur postgresql

Avoir le droit de création de BD

$>createdb nombase

$>psql nombase

=>create table essai(id int, libelle varchar(20));

=>insert into essai values (111,'ABCD');

=>select * from essai;
Clefs primaires et étrangères

Création d'une clef primaire


CREATE TABLE Ra (nomColonneA type sql primary key, ...);
Création d'une clef étrangère

CREATE TABLE Rb ( ..., nomColonneB type sql, ..., foreign
key(nomColonneB) references Ra (nomColonneA);
Gestion des contraintes
d'intégrité

Intégrité référentielle

Quand une information dans une table en référence une
autre dans une autre table et que le SGBDR assure cette
relation.

Ces informations doivent être synchronisées.

Exemple :



Le SGBDR garantie qu'il est impossible de créer une
commande pour un client inexistant.
Table commande(numero, date, #code client)
Table client(code, nom, ...)
Gestion des contraintes
d'intégrité

Intégrité référentielle (suite)

Problème de la mise à jour


Ordres SQL update et delete
Options sur un update de clef primaire


Options sur un delete de clef primaire


No action ou Restrict, Cascade, Set null, Set default
No action ou Restrict, Cascade, Set null, Set default
Problème de la suppression de table

Odre SQL drop table
PostgreSQL : limites (1)

Taille maximum pour une base ?

Taille maximum pour une table ?



32 TB.
Taille maximum pour une colonne ?


Sans limite. (il existe des bases en production de 4 TB).
1.6 TB.
Taille maximum pour un champ ?

1 GB.
PostgreSQL : limites (2)
Nombre maximum de lignes pour une table ?


Sans limite.
Nombre maximum de colonnes dans une table ?


250-1600 cela dépend du type des colonnes.
Nombre maximum d'indexes sur une table ?


Sans limite.
Conclusion
De beaux jours pour les SGBDR Open Source :
MySQL, PostgreSQL, Derby, ...
Article de « Entreprise Systems » :
DBMS Licensing Woes Turn Customers to Open Source Systems
12/16/2003
There is something rotten in the state of database management system (DBMS) pricing today,
consultancy META Group says, and it has a lot to do with rapid changes to database
licensing models and service and support agreements.
The upshot, suggests META Group analyst Charlie Garry, is that by 2006, a majority of
customers will conclude that the current vendor-client licensing model is broken and in need
of retooling. Some will look to downsize - or - ''rightsize'' their database infrastructures, even
as others consolidate DBMSes, or, increasingly, look to open source software (OSS) database
solutions.
Bibliographie

PostgreSQL Introduction and Concepts – Bruce
Momjian – édition Addison Wesley

Parctical PostgreSQL – John C.Worsley, Joshua
D.Drake – édition O'Reilly

PostgreSQL Essential Reference – Barry Stinson
– édition Paperback

PostgreSQL Developer's Handboobk – Erwald
Geshwinde, Hans Jüergen Shöenig - édition
Paperback
Documentation

Sur le site www.postgresql.org

Manuels

Notes techniques

Documentation officielle spécialisée par version

Livres en ligne



''PostgreSQL Introduction and concepts'' B. Momjian
''Practical PostgreSQL'' J. C. Worsley & J. D. Drake
Tutoriaux
Téléchargement