Introduction

Présentation

Ce site à été réalisé par Rémi Cocquet, dans le cadre des Xposés sytème du cours de Dominique Revuz, à Ingénieurs2000.

Les Xposés permettent aux étudiants en dernière année de la filière Informatique et Réseaux de présenter des technologies qui ne sont pas abordées dans leur cursus et ainsi d'élargir leurs connaissances.

Ce site présente donc le PL/PGSQL, un langage de programmation de base de données pour PostgreSQL.

Présentation de PostgreSQL

PostgreSQL est un Système de Gestion de Bases de Données Relationnelles Objet (SGBDRO ou ORDBMS -Object Relationnal DataBase Managment System- ) .

Il permet donc de creér, gérer, et administrer un ensemble de bases de données relationnelles. C'est à dire que les tables composant les bases de données sont liées par des relations, ce qui permet d'introduire des contraintes d'intégrité référencielles.

Sont fonctionnement est basé sur la technologie objet (tout est objet: types, tables, lagage, colonnes, lignes,....) ce qui lui confère une très grande stabilité et de très nombreuses possibilités d'extensibilité.

Un SGBD OpenSource

PostgreSQL est considéré comme le SGBD OpenSource le plus complet, et propose donc gratuitement des fonctionnalités que l'on retrouve dans les SQBD les plus connus tels que Oracle (contraintes d'intégrité fonctionnelles, triggers, procédures stockées,....).

PostgreSQL implémente les principaux critères des normes SQL ( SQL92, SQL99 et SQL2003 ) et est soutenu par une communauté active et sponsorisé par de nombreuses grandes entreprises (Fujitsu, Delta_Soft LLc, Redhat, creativ Gmbh, ....)

Qu'il s'agissent de performance, de fiabilité ou de fonctionnalités, ce SGBD concurence les plus grands noms des SGBD payants, et de nombreuses entreprises commencent à l'adopter.

Au moment de la conception de cette présentation (mars 2006), la version actuelle est la 8.1 Released. Il s'agit donc d'une version stable. Cette version est disposnible pour les systèmes Linux, Windows et Unix.

 

Les différentes méthodes d'interrogation d'une base de données

En considérant une application standart Client/Serveur, on trouve d'une part le SGBD (serveur) et une application en langage de programmation, telle que Java, PHP, Perl (client).

L'application peut donc être dans un langage compilé ou interprété, et c'est elle qui va interroger le serveur PostgreSQL pour obtenir les informations qui y sont stockées, pour ensuite les présenter ou les utiliser pour effectuer des trainements.

Bien que l'on aborde généralement une seule méthode d'interrogation des bases de données, que nous rappelerons dans un premier temps, il existe une autre méthode, qui consite à utiliser des procédures stockées. C'est sur cette dernière que porte le sujet de cette présentation, et que nous aborderons avec le PL/PGSQL.

Coté client: les requêtes

C'est de loin la méthode d'interrogation d'un SGBD la plus répendue.

Elle consiste à écrire des requêtes SQL directement dans les codes sources des applications. Elle est facile à mettre en place et ne nécessite que la connaissance du SQL, qui est un language standardisé et très simple.

Les développeurs intègrent donc directement leurs requetes à leurs sources, et peuvent ainsi disposer des informations dont ils ont besoin de façon très rapide et polyvalente. Les requètes sont alors présentent dans la totalité des codes sources, ou dans des librairies sous forme de fonctions propres au language de l'application dans les meilleurs des cas.

Plus techniquement, le code source contient la totalité d'une requete, et l'envoie au SGBD part une fonction propre à sont language (par exemple pg_query() pour le PHP). A la reception de cette requete, le SGBD la traite, et retourne ensuite le résultat à l'application. Celle-ci peut ensuite extraire de ce résultat les données qui lui sont nécéssaires (par exemple pg_result(), pg_fetch_row(), ... pour le PHP).

Le type de résultat ainsi obtenu peut être un resultat unique (entier, chaine), ainsi qu'un ou plusieurs tuples (lignes/colonnes).

Coté serveur: les procédures stockées

La seconde méthode consiste à ne pas écrire la requete dans le code source, mais d'y écrire un appel à une procédure ou fonction, avec des parametres ou non, stockée directement dans le SGBD:

Le principe d'interrogation du SGBD reste donc totalement identique à la première methode (l'appel d'une fonction se présente comme une requete SQL), mais le corp de la requete, la fonction, est présente dans le serveur et non dans le code source.

Ces requetes écrites sous forme de fonctions ne sont alors plus limitées au simple langage SQL, mais peuvent êtres écrites en C ou dans un langage de procédure (PL -Procedural Language-). Le support des langages étant alors lié au SGBD.

Il est alors possible, en profitant de ces langages plus évolués, d'obtenir des résultats de requetes beaucoup plus complexes que pour la première methode: tuples, tableaux, textes, types complexes et personnalisés, types variables, etc...