Présentation Générale PostgreSQL est un SGBDR étendu, c’est à dire qu’il inclut des notions d’un SGBDO Présentation du SGBDR postgreSQL C’est un produit libre (licence BSD) qui l’on peut télécharger à partir du site http://www.postgresql.org Fred Hémery C’est un SGBDR multi-utilisateurs et qui fonctionne en mode client/serveur IUT Béthune Département Réseaux & Télécommunications Il introduit les concepts suivants : I I Base de Données (I4) — 05/06 I I la notion de classe la notion d’héritage la notion de type la notion de fonction Comparable à Oracle 9i disponible lui aussi gratuitement, mais pas libre logo (IUT Béthune — Département R&T) Présentation du SGBDR postgreSQL Base de Données (I4) — 05/06 1 / 21 logo (IUT Béthune — Département R&T) Présentation du SGBDR postgreSQL Base de Données (I4) — 05/06 2 / 21 Architecture Historique 1977-1985 : A l’origine un projet universitaire, Université de Californie à Berkeley basé sur le produit Ingres commercialisé par la société Relational Technologies/Ingres Corporation. Un site est une machine sur laquelle est installée le serveur postgresql 1986-1994 : Toujours à Berkeley, Michael Stonebraker dirige une équipe qui développe un SGBDO appelé Postgres. La société Illustra commercialise le produit. L’administrateur du SGBD (postgres) est celui qui est propriétaire des programmes, du répertoire et des bases de données qu’il contient. Il a tous les privilèges sur le SGBD. Il peut notamment créer : I I 1994-1995 : Deux étudiants Jolly Chen puis Andrew Yu incorporent au projet le langage SQL. l’application s’appelle Postgres95 1996 : Le projet quitte Berkeley, MARC FOURNIER in Canada, THOMAS LOCKHART en Pasadena, California, VADIM MIKHEEV en Krasnoyarsk, Russia, et Bruce Momjian en Philadelphia, Pennsylvania reprennent les 250,000 lignes de code C. Ils renomment le projet postgresql version 6.0. une nouvelle base de données un nouvel utilisateur Sous UNIX pour créer un nouveau "cluster de bases de données" on utilise la commande initdb -D /nom/du/repertoire. Généralement avec une distribution Linux, le premier lancement du SGBD postgresql exécutera par défaut la commande initdb. 2000 : V7.0 utilisant un langage SQL norme 92 (SQL2), actuellement v8.1 logo (IUT Béthune — Département R&T) Présentation du SGBDR postgreSQL Base de Données (I4) — 05/06 3 / 21 Architecture logo (IUT Béthune — Département R&T) Présentation du SGBDR postgreSQL Base de Données (I4) — 05/06 5 / 21 Architecture un processus client peut avoir une ou plusieurs connexions avec le SGBD postgresql Une session d’utilisation du SGBD postgresql met en jeu les processus suivants : I I I un processus qui gère les demandes de connexion au SGBD (postmaster). Celui ci crée un processus qui gère la session entre le SGBD et un processus client (psql par exemple) qui a initié la session. logo (IUT Béthune — Département R&T) Présentation du SGBDR postgreSQL Base de Données (I4) — 05/06 7 / 21 Le catalogue système I I Les utilisateurs standards qui utilisent le SGBD Les administrateurs qui gèrent les données (catalogue système) système du SGBD : les méta-données. I I I Cela signifie que l’on peut les modifier avec une requête SQL Il est cependant préférable d’utiliser les commandes prévues Par exemple la table qui gère les utilisateurs est pg_shadow, une vue est disponible pour les utilisateurs de base (pg_user). F La requête CREATE USER username va modifier la table pg_shadow Autre exemple la table pg_database logo F La requête CREATE DATABASE basename modifie la table pg_database (IUT Béthune — Département R&T) Base de Données (I4) — 05/06 9 / 21 Présentation du SGBDR postgreSQL Base de Données (I4) — 05/06 c r e a t e u s e r [ −h machine ] ( commande s h e l l ) CREATE USER nom PASSWORD ’ motPasse ’ CREATEUSER ( commande SQL) Création d’une base de données c r e a t e d b [ −h machine ] [−−encoding encoding ] [ −−owner owner ] [ . . . ] ( commande s h e l l ) CREATE DATABASE name [ [ WITH ] [ OWNER [ = ] dbowner ] [ TEMPLATE [ = ] t e m p l a t e ] [ ENCODING [ = ] encoding ] [ TABLESPACE [ = ] t a b l e s p a c e ] ] ( commande SQL) Les administrateurs (super-utilisateurs) sont les seuls qui peuvent créer d’autres utilisateurs Les autres utilisateurs (standards) peuvent ou non créer des bases de données Les méta-données sont stockées dans des tables classiques. I Présentation du SGBDR postgreSQL Création d’un utilisateur Avec Postgresql I (IUT Béthune — Département R&T) Le catalogue système Dans un SGBD il y a deux types d’utilisateurs I logo 11 / 21 La suppression d’un utilisateur dropuser DROP USER name La suppression d’une base de données dropdb DROP DATABASE name (IUT Béthune — Département R&T) logo Présentation du SGBDR postgreSQL Base de Données (I4) — 05/06 13 / 21 Le catalogue système Structure du SGBD : Les schémas Le SGBD postgresql gère ses données dans une base de données particulière. Les tables qui la composent ont un nom qui commence par les lettres “pg_” Nom de la table pg_aggregate pg_attrdef pg_attribute pg_cast pg_class pg_constraint pg_conversion pg_database pg_depend pg_description pg_group pg_index pg_inherits pg_language pg_largeobject pg_listener pg_namespace pg_opclass pg_operator pg_proc pg_rewrite pg_shadow pg_statistic pg_trigger pg_type Contenu aggregate functions column default values table columns ("attributes", "fields") casts (data type conversions) tables, indexes, sequences ("relations") check constraints, unique / primary key constraints, foreign key constraints encoding conversion information databases within this database cluster dependencies between database objects descriptions or comments on database objects groups of database users additional index information table inheritance hierarchy languages for writing functions large objects asynchronous notification namespaces (schemas) index access method operator classes operators functions and procedures query rewriter rules database users optimizer statistics triggers data types (IUT Béthune — Département R&T) Présentation du SGBDR postgreSQL Base de Données (I4) — 05/06 Avec Postgresql I Le SGBD gère un cluster de bases de données. F I I Les utilisateurs et les groupes sont les seules données partagées par l’ensemble des bases de données Une base de données contient un ou plusieurs schémas qui sont accessibles ou non (droits d’accès) au travers d’une même connexion. Le schéma peut être vu comme un espace de nommage La structure de schéma est utile pour plusieurs raisons : I I I logo 15 / 21 Maintenance BD Permet à plusieurs utilisateurs de partager la même base de données sans interférences. Permet d’organiser les objets contenus dans la base de données en entités logiques Les applications tiers peuvent être isolées dans un schéma particulier. Le concept de Schéma est analogue à celui des répertoires pour les systèmes d’exploitation, à la différence que les schémas ne sont pas obligatoire dans un SGBD. (IUT Béthune — Département R&T) Présentation du SGBDR postgreSQL Base de Données (I4) — 05/06 logo 17 / 21 Sauvegarde et Restauration BD Un autre aspect de la sécurité est de sauvegarder les données sur un autre support (redondance). Il existe des commandes qui vont permettre de maintenir l’espace utilisé par le stockage des données I Récupération de l’espace occupé par les lignes qui ont été supprimées ou modifiées F I I Le dump de la base de données I La restauration de la base de données I La restauration d’une base de données par cette méthode n’inclut pas sa création qui doit être faite avant avec pg_dump dbname > outfile.sql psql dbname < infile.sql VACUUM Maintenir des statistiques d’utilisations des données pour faciliter le travail de l’algorithme de planification et de résolution des requêtes F createdb -T template0 dbname VACUUM ANALYSE La sauvegarde du système de fichiers de la base de données I Nettoyer le travail des éventuelles anciennes requêtes mal terminées F tar -cf backup.tar /usr/local/pgsql/data VACUUM FREEZE I I Il faut pour cela que le serveur de base de données soit arrêté La taille de la sauvegarde peut être plus importante que le dump (index recalculé et non stocké) logo (IUT Béthune — Département R&T) Présentation du SGBDR postgreSQL Base de Données (I4) — 05/06 19 / 21 logo (IUT Béthune — Département R&T) Présentation du SGBDR postgreSQL Base de Données (I4) — 05/06 21 / 21