15
Les Cahiers du programmeur PostgreSQL Services Web professionnels avec PostgreSQL et PHP/XML Stéphane Mariel Avec la contribution de Martine Chalmond © Groupe Eyrolles, 2002 ISBN : 2-212-11166-5

Les Cahiers du programmeur PostgreSQL - eyrolles.com · nant que la notion de gratuité. Certes le logiciel est gratuit, mais il vous faudra l’installer, le maintenir : ceci a un

Embed Size (px)

Citation preview

Page 1: Les Cahiers du programmeur PostgreSQL - eyrolles.com · nant que la notion de gratuité. Certes le logiciel est gratuit, mais il vous faudra l’installer, le maintenir : ceci a un

Les Cahiers du programmeur PostgreSQL

Services Web professionnels avecPostgreSQL et PHP/XML

Stéphane Mariel

Avec la contribution de Martine Chalmond

© Groupe Eyrolles, 2002

ISBN : 2-212-11166-5

Page 2: Les Cahiers du programmeur PostgreSQL - eyrolles.com · nant que la notion de gratuité. Certes le logiciel est gratuit, mais il vous faudra l’installer, le maintenir : ceci a un

© Eyrolles, 2002

2L’environnement idéal : XML, PHP et PostgreSQL

SBGD | relationnel | architecture LAMP | langage Glue

SOMMAIRE

B PostgreSQL et les autres

B Architecture LAMP

B Architecture LAPP

MOTS-CLÉS

B SBGDB RelationnelB Architecture LAMPB Langage Glue

F

Le chapitre précédent a défini les objectifs mais, au risque de brutaliser les impa-tients, il n’est pas encore temps de coder ! Dans ce chapitre, nous allons nousposer la question de l’environnement car, s’il est essentiel de savoir où l’on va,encore faut-il s’assurer d’avoir une bonne monture… Alors pourquoi PostgreSQL,quelle architecture utiliser pour notre service, quelles alternatives ? À la fin de cechapitre, nous disposerons de l’environnement choisi, prêt pour les premièrespages dynamiques.

Pos tgr eSQL

Page 3: Les Cahiers du programmeur PostgreSQL - eyrolles.com · nant que la notion de gratuité. Certes le logiciel est gratuit, mais il vous faudra l’installer, le maintenir : ceci a un

Les

Cahi

ers

du p

rogr

amm

eur P

ostg

reSQ

L

© Eyrolles, 200210

PostgreSQL, un SGBD pas comme les autresLes sites Internet statiques sont morts, vive les applicatifs Web ! La chose estentendue, mais qui dit logiciel Web dit circulation d’informations, échanges,persistance, stockage, requêtes et enfin une architecture 3-tiers ou mieux (cer-tains diront pire). Derrière tout service Web il y a donc un élément clef, sanslequel rien ne saurait fonctionner : le SGBD.

FonctionnalitésLe SGBD est ainsi une des pierres angulaires des services Web. Hélas, desSGBD il en existe plus d’un ! Quelles sont les caractéristiques des uns et desautres ? Le tableau 2-1 propose un petit état des lieux. La première chose àretenir de ce tableau est le « sans faute » du modèle relationnel. Exit donc lesbases de données de type objet ou les bases nativement XML. Séduisantes enthéorie, elles peinent à s’imposer et restent cantonnées à des marchés de niche.La faute de l’inertie sans doute... Car la quasi-totalité des bases déjà installées repose sur le modèle relationnel.Cet historique lourd en investissements incite les utilisateurs à conserver leursSGBD traditionnels et à faire confiance aux éditeurs de ces outils pour l’adapta-tion aux nouveautés comme XML. Un signal parfaitement reçu par les leadersdu marché qui réagissent vite et fort, laissant peu de marge de manœuvre auxnouveaux venus. Ainsi Oracle propose désormais un module XML tout à faitefficace, il en va de même pour SQL Server.Deuxième aspect : la richesse fonctionnelle et la complétude des offres commer-ciales, à commencer par le leader incontesté qu’est Oracle. Si, dans l’univers desserveurs Web ou de messagerie, les logiciels libres ou « open source » sont en posi-tion de force, il n’en est rien ici. Pourquoi alors se pencher sur ces challengers ?Pour deux raisons au moins : le coût et la réactivité. Le coût est évidemmentl’argument de poids en faveur du logiciel libre. Cet argument porte d’autant plusque les SGBD (un peu comme les PGI) constituent un secteur dans lequel lescoûts de licence (l’achat du droit d’usage) sont loin d’être négligeables.

B.A.-BA Architecture 3-tiers (et n-tiers)

L’arrivée du réseau (et par extension d’Internet) dansles entreprises a complètement modifié l’architec-ture générale des logiciels. D’une vision monolithi-que et monoposte (tout se déroule au même endroit,dans le même programme), on est passé à unmodèle distribué, le plus souvent présenté sous leterme client/serveur. Une action, un service sontdonc désormais délivrés par la collaboration de plu-sieurs entités. Ce sont ces « morceaux » qui sontdésignés sous le terme de tiers.Ainsi, lorsque vous utilisez votre logiciel de dessin,vous êtes dans une architecture 1-tiers (votre logi-ciel fonctionne en autiste, il fait tout lui-même).Maintenant, si vous ouvrez une page Web avecvotre navigateur, vous bénéficiez de la collabora-tion entre un client (le navigateur) qui initie unedemande, et un serveur (qui répond). Vous êtesdans une architecture 2-tiers. Si, par ailleurs, lapage que vous visualisez est dynamique, alors il estfort probable qu’une base de données intervientdans la délivrance du contenu : on est alors en pré-sence d’une architecture 3-tiers (la plus répandue). Bien évidemment, rien n’impose de s’arrêter à 3composants, et on peut imaginer toutes sortes decollaborations, ceci d’autant plus facilement queles contenus délivrés aujourd’hui sont de plus enplus complexes. Imaginez une page Web avec desnouvelles, une vidéo, des cotations en direct…RT. Brethes, F. Hisquin et P. Pezziardi,

Serveurs d’applications, collection « Solutions d’entreprise » (Eyrolles 2000).

B.A.-BA Modèle relationnelDans le modèle relationnel, les données sontstockées sous forme de tables. Tout le jeu con-siste alors à manipuler ces tables et notammentà en extraire des lignes (appelées tuples) selondes critères particuliers. Chaque ligne repré-sente un contenu dont les colonnes définissentles différentes caractéristiques. À titre d’exemple considérons une table appe-lée « villes ». Chaque ligne décrit une ville par-ticulière et les colonnes des propriétés de laville concernée.

Assez logiquement il est nécessaire de donnerau SGBD, PostgreSQL ou un autre, le moyen deconnaître l’espace à réserver pour stocker uneligne. Pour chaque colonne on précise donc untype de données dont la taille sera connue dansla plupart des cas.

B.A.-BA Modèle relationnel, bis !Si le modèle relationnel est une histoire de tables,lignes et colonnes, pourquoi diable l’appelerrelationnel ? En réalité, si tables et colonnes sontutiles pour fixer l’esprit, l’origine du modèle pro-vient de la théorie des ensembles et plus précisé-ment de l’algèbre relationnelle. Il faut noter quetout cela n’est pas si vieux (E. Codd pour IBM enest à l’origine dans les années 1970) mais évi-demment paraît aujourd’hui un peu daté, avec lesmodèles dits « objet », du moins d’un point devue théorique…

numéro nom pays habitants

1 Paris France 2 000 000

2 San Jose États Unis 10 000 000

Page 4: Les Cahiers du programmeur PostgreSQL - eyrolles.com · nant que la notion de gratuité. Certes le logiciel est gratuit, mais il vous faudra l’installer, le maintenir : ceci a un

2 –

L’en

viro

nnem

ent i

déal

: XM

L, P

HP e

t Pos

tgre

SQL

© Eyrolles, 2002 11

Tableau 2–1 Fonctionnalités des SBGD les plus connus du marché

Éditeurs MySQL AB Oracle Microsoft IBM IBMPostgreSQL

Development Group

SGBD MySQL Oracle 9 SQL Server DB2 Informix PostgreSQL

Plates-formes supportées

Linux Z Z Z Z Z

Autres Unix Z Z Z Z Z

Microsoft Z Z Z Z Z Z

Mainframe Z Z Z

Pilotes

Natif C/C++ Z Z Z Z Z Z

ODBC Z Z Z Z Z Z

JDBC Z Z Z Z Z Z

Fonctionnalités

Vue Z Z Z Z Z

Procédures stockées Z Z Z Z Z

Transactions Z(version max) Z Z Z Z Z

Triggers Z Z Z Z Z

Large Objects Z Z Z Z Z Z

Exportation XML Z Z Z Z

Extensions types et fonctions Z Z Z Z Z Z

Langages procéduraux

SQL Z Z Z Z Z

Autres TCL, Perl, Python

Fonctionnalités avancées

Réplication Z Z Z Z Z Z(beta)

Clustering Z Z Z Z

Page 5: Les Cahiers du programmeur PostgreSQL - eyrolles.com · nant que la notion de gratuité. Certes le logiciel est gratuit, mais il vous faudra l’installer, le maintenir : ceci a un

Les

Cahi

ers

du p

rogr

amm

eur P

ostg

reSQ

L

© Eyrolles, 200212

En termes de coûts, il faut cependant se garder de simplifier l’équation en ne rete-nant que la notion de gratuité. Certes le logiciel est gratuit, mais il vous faudral’installer, le maintenir : ceci a un coût additionnel, souvent supérieur au coûtd’achat initial. Comme toujours, c’est donc le TCO qu’il faudra étudier de près.De ce point de vue, logiciel libre ou logiciel propriétaire – sauf à être un expert –il vous faudra débourser le prix de la maintenance. À ceci près qu’un logiciellibre donne libre accès à son code source, et que cela change tout. En donnant libre accès au code même du logiciel, on donne la possibilité àchacun de l’améliorer. Les esprits chagrins feront remarquer que code source oupas, il n’est pas donné à tout utilisateur d’être un expert en développement. C’estvrai, mais en réalité tout cela n’a pas d’importance : bien des utilisateurs se con-tentent tout simplement de signaler : « en faisant telle et telle action, j’obtiens lemessage d’erreur X ». Ce retour sur expérience est des plus précieux et, face à ceconstat, ce sont les contributeurs au projet dans le monde qui se pencheront surle problème. Indépendamment de la taille des équipes, il y a donc dans le logi-ciel libre une mutualisation de l’effort où chacun assume une partie du projet ettous bénéficient du résultat : il en résulte une réactivité qu’aucune entreprisecommerciale, même avec la meilleure volonté, ne pourrait obtenir.Incidemment, cela veut aussi dire que l’entreprise qui assure la maintenanced’un produit open source bénéficie pour ses clients de l’effort global des contri-buteurs dans le monde, alors qu’elle-même n’a peut-être qu’un technicien sur leproblème. Vous avez dit compétitivité…Ainsi, ce modèle de fonctionnement permet au logiciel open source d’être effi-cace et robuste. Attention à ne pas se laisser désappointer par les numéros deversion. Ainsi si Apache, le serveur Web, change de version régulièrement, cen’est pas parce qu’il est plus « buggé » que ses concurrents. Au contraire, celaveut dire que la communauté des utilisateurs est active, et que les dysfonction-nements détectés sont corrigés sans délai, alors que, par ailleurs, certains édi-teurs nient les défaillances, ou préfèrent vendre une nouvelle version.

B.A.-BA Libre/Open sourceLe logiciel libre est le terme historique tel que défini par Richard Stallman. Il s’agit d’une vision trèslibertaire, dans laquelle c’est le logiciel et non l’auteur qui est l’objet de la protection. On parle de« copyleft » par opposition au copyright bien connu. Il est en particulier impossible de modifier unlogiciel libre pour ensuite en faire un logiciel propriétaire. Une clause difficile pour les éditeurs clas-siques, et, pour certains acteurs du libre, contraire à une expansion du code « open source ».Ce constat est à l’origine de la définition du logiciel « open source » par Bruce Perens. Une défi-nition, proche de la philosophie BSD (un autre système libre de type Unix lui aussi) plus permis-sive pour les auteurs et dans les usages (incorporation à des outils non « open source », gestiondes marques).La définition du logiciel « open source » est donc un compromis permettant une meilleure coha-bitation avec l’industrie du logiciel, avec pour objectif de conserver la dynamique du monde« open source ».B http://www.fsf.orgB http://www.opensource.org

B.A.-BA PGI (Progiciel de gestion intégrée) ou ERP en anglais

B.A.-BA TCO (Total cost of ownership)

Avec le SGBD (auquel il est souvent couplé), le PGIest probablement une autre pierre angulaire dusystème d’information de l’entreprise. À lui toute lacomptabilité, la paie, la gestion commerciale, lesstocks.

En mauvais français on pourrait dire coût total depossession. En gros ce qu’il vous faut dépenser,non seulement pour disposer de l’outil (achat),mais aussi pour son usage. À titre d’exemple, vousachetez un PC, il vous coûte 1500 euros. Cela neserait pas une bonne idée de retenir ce chiffre dansvotre prévision de dépenses. En réalité, il faudraajouter : le service de maintenance sous 4 heurespar exemple, la gestion de la sauvegarde, les logi-ciels additionnels… Tout cela risque de faire bienplus du double !

Page 6: Les Cahiers du programmeur PostgreSQL - eyrolles.com · nant que la notion de gratuité. Certes le logiciel est gratuit, mais il vous faudra l’installer, le maintenir : ceci a un

2 –

L’en

viro

nnem

ent i

déal

: XM

L, P

HP e

t Pos

tgre

SQL

© Eyrolles, 2002 13

Utiliser PostgreSQL, c’est donc bénéficier de tous les avantages du logiciel libresans rien sacrifier ou presque en fonctionnalités, qui seront indispensables dansl’univers des services Web et qui font la différence, notamment avec MySQL. Ilreste quelques objections au choix particulier de PostgreSQL, des objectionslevées dans les deux sections qui suivent.

SupportLe mot est lâché. Si le SGBD est bien ce centre névralgique que l’on décrit,peut-on raisonnablement confier à un logiciel « anonyme » le soin d’assurer lamission visée. Le cas de PostgreSQL est caractéristique à cet égard.PostgreSQL, à la différence de MySQL, n’est pas aujourd’hui porté par uneentreprise, mais par un groupe international de développeurs. Est-ce rédhibi-toire, et y a-t-il une hypothèque sur l’avenir de PostgreSQL ?L’histoire montre que cet aspect n’a que peu d’impact sur la pérennité d’un logi-ciel comme PostgreSQL, dont la maturité et l’usage dans le monde sont acquis.Ainsi, la cessation d’activité de la société Great Bridge, à l’origine d’une portiondu code de PostgreSQL et employeur du leader de l’équipe de développementPostgreSQL, n’a pas eu d’impact sur le développement. Après l’étape de lancement, et pour les logiciels qui trouvent leur place dans lacommunauté, le logiciel se désolidarise de son initiateur pour être le fait de lacommunauté, qui en assure le développement. Si la notion d’éditeur n’est pasfondamentale, qu’en est-il du support à apporter aux utilisateursprofessionnels ? Sur ce point le logiciel libre ne se distingue pas du logiciel pro-priétaire. Nombre d’entreprises voient le support des logiciels Microsoft assuréspar des sociétés de services ad hoc. Cet aspect constitue même à lui seul un seg-ment du marché informatique.Oui mais alors... et les correctifs de l’éditeur ? Là encore, non seulement le logiciellibre n’est pas handicapé, mais mieux, son mode de développement (avec pourcorollaire la réactivité évoquée précédemment) permet une meilleure interactionentre les équipes chargées du support et celles chargées du développement. Tout cela s’applique naturellement à PostgreSQL et la plupart des sociétés deservices françaises spécialisées dans les logiciels libres sont en mesure d’apportertout le support nécessaire à une installation fondée sur PostgreSQL. Comptent-elles parmi les développeurs du SGBD ? peut-être pas. Sont-elles en contactavec la communauté des utilisateurs et l’équipe de développement ? assurément.

PerformancesInutile de le nier, la majorité d’entre vous ont en tête le lieu commun le pluscourant sur PostgreSQL : ce SGBD est lent. Ce fut vrai, inutile de le nier. Maisà y regarder de plus près, MySQL et PostgreSQL ont finalement un mouve-ment convergent. MySQL supporte désormais les transactions (au prix, il estvrai, d’une performance moindre) et PostgreSQL, dans ses dernières versions, sesitue dans le sillage de MySQL.

Page 7: Les Cahiers du programmeur PostgreSQL - eyrolles.com · nant que la notion de gratuité. Certes le logiciel est gratuit, mais il vous faudra l’installer, le maintenir : ceci a un

Les

Cahi

ers

du p

rogr

amm

eur P

ostg

reSQ

L

© Eyrolles, 200214

Il faut d’ailleurs se garder de comparer les performances de manière brutale, unpeu comme on mesure la puissance d’un processeur en lui branchant directe-ment un voltmètre sur les pattes sans se préoccuper de savoir l’exploiter. Ainsi,l’étude de Tim Perdue pour PHPBuilder démontre la résistance de PostgreSQLaux charges élevées et le caractère acceptable de sa réactivité pour des sitesmoyens. Sans aller jusqu’au just good enough associé à certains éditeurs, les performancesde PostgreSQL ne semblent en rien rédhibitoires. À cela il convient d’ajouterque la richesse fonctionnelle permet de coller plus facilement aux besoinsexprimés et de garantir la cohérence et l’intégrité des données manipulées (avecnotamment les transactions, les vues, les réflexes (ou triggers) et les contraintesd’intégrité).Suite à l’amélioration de ses performances et à la levée de quelques limites tech-niques, PostgreSQL est donc aujourd’hui la seule base de données « opensource » à pouvoir proposer le minimum requis pour passer de l’Internet déco-ratif à l’Internet utile dans l’entreprise, en respectant les contraintes fortesimposées à tous les outils qui prétendent manipuler, via le Web et Internet, latotalité des flux de données de l’entreprise. La stabilisation prochaine des outils de réplication dotera PostgreSQL de tousles attributs associés historiquement aux leaders commerciaux. Ce constat n’apas échappé à Red-Hat qui a bâti autour de PostgreSQL sa toute dernière offreen matière de SGBD dédié aux entreprises. Un signe supplémentaire, s’il enétait besoin, de la maturité de PostgreSQL.

Autour de PostgreSQL : architecture d’un environnement de chocLes éléments précédents ont démontré la pertinence des choix : choix du logi-ciel libre d’une part et, en particulier, choix d’un SGBD : PostgreSQL. Unchoix rationnel, ni téméraire, ni partisan, et de surcroît compatible avec la plu-part des projets. Mais un SBGD ne fait pas tout, il convient de l’intégrer aumieux dans un environnement à la hauteur.

Scripts et pages dynamiquesLe choix du SGBD a une incidence sur la persistance de vos données, et sur lacapacité à les rétablir le plus rapidement possible. En quelque sorte, c’est la pre-mière brique de votre environnement, juste après le système (voir figure 2-1). Il reste à choisir deux éléments clefs : le serveur Web qui va délivrer les contenusau poste client, et l’un de ses composants essentiels : le module qui va permettrela création de pages dynamiques.

B.A.-BA Just good enough

Pourrait être traduit en français par « justesuffisant », avec cette connotation péjorative sous-entendue dans les bulletins de notes !On dénote le plus souvent cette expression commeun reproche fait par les acteurs du monde libre auxéditeurs de logiciels, accusés de produire avec unequalité juste acceptable.Ce thème est aussi l’objet d’une interrogation surl’angle d’attaque à donner au logiciel libre enréponse au logiciel propriétaire. En un mot, l’utili-sateur est-il plus intéressé à obtenir une voiture decourse avec tout ce que cela suppose de com-plexité ou en réalité n’aspire-t-il pas à conduirequ’un break pas trop mauvais, mais dans lequel ilne passe pas 2 heures à charger les bagages ?

B.A.-BA Pages dynamiques vs DHTML

Le mot dynamique est un peu trop à la mode. Il nefaut pas confondre une page dynamique, c’est-à-dire une page créée à la demande – c’est le cas dela plupart des échanges dans les services Web – etle HTML dit dynamique qui est une extension dulangage HTML permettant, côté client (sur votrenavigateur) de créer des effets (menus, rollovers,etc.).

Page 8: Les Cahiers du programmeur PostgreSQL - eyrolles.com · nant que la notion de gratuité. Certes le logiciel est gratuit, mais il vous faudra l’installer, le maintenir : ceci a un

2 –

L’en

viro

nnem

ent i

déal

: XM

L, P

HP e

t Pos

tgre

SQL

© Eyrolles, 2002 15

On peut voir le serveur Web comme un distributeur automatique (ceux desgares par exemple). Il ne fait pas grand chose lui-même, mais il est conçu pourdélivrer un produit, et il le fait bien. Quand le produit est élémentaire (pageHTML, SSI), le serveur Web se débrouille tout seul. Dès que les choses secompliquent, il délègue à des modules qui, s’ils ne savent pas distribuer, saventcréer. Une répartition des rôles en quelque sorte. Historiquement, un desmodules parmi les plus connus et, en général, disponible d’office dans les ser-veurs Web, est le module CGI. Tout simple, ce module transfère la création despages à un programme tiers.Dans le cadre d’un service Web le module sera nécessairement plus complexe. Ildevra mettre en œuvre, au sein du serveur Web, un langage de programmationévolué permettant la création de pages à la volée (pages dynamiques) et disposerd’interfaces vers tous les outils communément utilisés dans l’entreprise : messa-gerie, SGBD, fichiers, annuaires.Premier point, le langage de développement. Côté technique, la bataille est ter-minée, tous les langages en course sont des langages interprétés à la base quivont être compilés à la demande avant d’être exécutés par une machine virtuelle.On vous vantera en général les performances de tel ou tel compilateur JIT (Justin time) mais, encore une fois, la bataille est terminée, la technique maîtrisée.Reste donc le langage en lui-même (voir tableau 2-2) :

On peut d’après cette comparaison rapide, dessiner un portrait type du langagede script idéal : il est très classiquement procédural (Rebol est l’exception), fai-blement typé et sait manipuler des objets (avec plus ou moins de bonheur).Le langage en lui-même est donc conçu pour faciliter la vie du développeur, quitteà prendre de la distance avec les avantages mis en avant dans les langages à objetsfortement typés (contrôle, qualité, etc.). On peut pousser la logique plus loin enestimant que, s’il est important de faciliter le travail du développeur, autant pour-suivre et permettre l’accès à tous les développeurs, quel que soit leur niveau. Onestime, en effet, qu’à l’avenir une très grande majorité des applications Web pro-fessionnelles ne seront pas réalisées par des développeurs purs et durs.

Tableau 2–2 Les langages de développement les plus en vogue

Langage Fortement typé Objet Procédural

ASP Z

JSP Z Z Z

Perl partiel Z

PHP partiel Z

Python Z Z

Rebol Z

Figure 2–1 Architecture des échanges sur le Web

B.A.-BA SSI (Server Side Include)

B.A.-BA Langage de scripts

Les SSI sont des tags, relativement simples (inclu-sion, dates…) à placer dans des pages Web tradi-tionnelles, que le serveur va interpréter pour vousen les remplaçant par leur valeur. On peut ainsiréaliser sans effort des en-têtes, des « dernièresdates de modification », etc.

À quelques nuances près, un synonyme de langageinterprété : par extension, on appelle script le pro-gramme écrit dans un langage de script et qui seraexécuté par l’interpréteur adapté.

Page 9: Les Cahiers du programmeur PostgreSQL - eyrolles.com · nant que la notion de gratuité. Certes le logiciel est gratuit, mais il vous faudra l’installer, le maintenir : ceci a un

Les

Cahi

ers

du p

rogr

amm

eur P

ostg

reSQ

L

© Eyrolles, 200216

C’est toute la logique présente dans la notion de « langage glue », un termeapparu avec le langage TCL (PgAccess, utilisé dans la suite de l’ouvrage, estécrit en TCL) qui matérialise la distinction entre :• d’une part, des composants créés par des professionnels du développement à

l’aide de langages inaccessibles à l’individu lambda (C++, Java, etc.) ;• d’autre part, les applications finales, le plus souvent réalisées par aggloméra-

tion des composants précédents à l’aide de langages simples (les langagesglue) compréhensibles par le commun des mortels.

Dans cette optique, la stratégie de Microsoft avec Visual Basic est exemplaire etcouronnée de succès : un langage simple – trivial, diront certains – utilisécomme un Lego pour construire des applications spécifiques faites de compo-sants externes. Autre aspect du langage de script, son ouverture sur le monde. Peut-on parexemple simplement accéder au réseau et aux services qui fonctionnent parailleurs ? Dans ce domaine, le logiciel libre et particulièrement Python ou PHP,sortent du lot. Inutile d’aller chercher ou acheter à une myriade d’acteurs lescomposants qui vous sont utiles. PHP intègre à peu près tout ce qui se fait. Unerequête vers Oracle ? L’accès à l’annuaire d’entreprise ? L’envoi d’un e-mail ? Pasde problème, tout est prévu. Si l’on ajoute à cette richesse fonctionnelle une syntaxe qui réussit l’exploitd’associer la simplicité de Visual Basic à la puissance de C, PHP sera sans hési-tation notre langage de script. À noter par ailleurs que PHP accède nativementà PostgreSQL quand ASP doit ajouter ODBC. Petit bémol, la gestion desobjets par PHP est vraiment peu encourageante, mais on nous annonce unerefonte de cet aspect pour la prochaine version majeure de PHP. Tout espoirn’est donc pas perdu.

Le serveur Web, un bon transporteurNous avons le module, il nous faut maintenant nous pencher sur le serveur Webqui le portera. Le tableau 2-3 donne un petit état des lieux des solutions envisa-geables.

Si vous aviez l’intention de vous lancer sur le marché du serveur Web, ce tableaua dû quelque peu vous ébranler, car on parle bien là d’un duel. N’entrons pasdans la polémique, ces deux serveurs sont performants, et finalement le plusimportant est peut-être ailleurs. Pour reprendre l’analogie du distributeur, pourpeu qu’il marche bien, ce n’est pas lui qui fait la différence mais les produits et,

Tableau 2–3 Les principaux serveurs

Éditeur Serveur Part de marché

Microsoft IIS (Internet Information Server) 29 %

Apache Software Foundation HTTP Server 60 %

B.A.-BA Langages interprétés ou compilés

Les langages interprétés sont des langages quisont transformés en code pour le processeur et lesystème d’exploitation le plus tard possible, aumoment de l’exécution. En tant que tel, un programme interprété n’estdonc pas compréhensible par le système, et sa tra-duction est confié à un interpréteur qui exécute leprogramme dans son propre environnement. Cetenvironnement commun proposé par l’interpréteurà tous les programmes est le plus souvent désignésous le terme « machine virtuelle ».Les langages compilés n’ont pas besoin d’interpré-teur, car il sont transformés bien avant l’utilisationen instructions compréhensibles par le processeur.Cette transformation est la compilation.Traditionnellement les langages compilés sont plusrapides que les langages interprétés : c’est« logique » puisque, en plus d’exécuter le pro-gramme, le processeur doit au préalable le tra-duire. Cet aspect est d’autant plus pénalisant dansle cas des boucles que l’interpréteur va devoir tra-duire à chaque fois. Ce défaut de performance est aujourd’hui très lar-gement compensé par la technique de compilation« au plus tard » (JIT : just in time). Au moment del’exécution, un compilateur spécifique traduit toutle code en un code intermédiaire compréhensiblepar une machine virtuelle, beaucoup plus rapide. On peut donc bénéficier de la facilité d’utilisationdes langages interprétés (pas de compilation,d’assemblage, le code est utilisable directement,sur plusieurs architectures) sans chute trop impor-tante de la performance. Ceci est d’autant plus vraique la plupart des langages interprétés font appelsà des composants compilés et donc rapides pourles tâches complexes.

Page 10: Les Cahiers du programmeur PostgreSQL - eyrolles.com · nant que la notion de gratuité. Certes le logiciel est gratuit, mais il vous faudra l’installer, le maintenir : ceci a un

2 –

L’en

viro

nnem

ent i

déal

: XM

L, P

HP e

t Pos

tgre

SQL

© Eyrolles, 2002 17

dans le cas de notre serveur Web, la richesse de son environnement, sa capacité àagréger des contenus aujourd’hui de plus en plus complexes.Concernant notre environnement, nous allons suivre la majorité et sélectionnerApache pour aboutir à un environnement homogène, très « unixien » il est vrai.Cet ensemble va nous assurer la performance et la robustesse auxquelles sonthabitués les utilisateurs des systèmes Unix/Linux et qui sont indispensables dèslors que l’on sort de la page personnelle pour entrer dans le système d’informa-tion et les processus de l’entreprise.Il convient cependant de rester lucide et de penser utile. Ainsi, bousculant lesidées reçues, l’enquête de Philippe Petit pour DevParadise montre que sur unsite chargé (plus d’un million de pages vues par jour), l’association IIS/ASP/PostgreSQL est la plus apte à délivrer le contenu d’un site de type boutique enligne.

LAPP et WAPP : un environnent solide et efficace Proche des architectures LAMP, notre architecture LAPP (Linux, Apache,PostgreSQL, PHP) est une illustration du principe KISS. Rien de superflu,l’objectif est d’aboutir au TCO le plus faible avec :• des outils à la robustesse éprouvée ;• une association simple sans interconnexions inutiles ;• et, pour finir, un langage de développement alliant richesse fonctionnelle,

performance et facilité de prise en main. Enfin, cerise sur le gâteau, cet environnement est susceptible de fonctionneraussi bien sous Linux que sous MS Windows. Un environnement WAPP idéalpour développer rapidement sur une station de travail mais qui peut souffrir enproduction.

B.A.-BA Les architectures LAMP

B.A.-BA KISS (Keep it simple stupid)

Il s’agit de l’architecture la plus en vogue dumoment, elle est idéale pour les sites dynamiques,y compris les plus visités. Elle repose sur un qua-tuor talentueux : Linux pour le système, Apachepour délivrer les pages Web, PHP pour leur créa-tion, MySQL pour la persistance.

Un des principes parmi les plus connus du mondeUnix et Internet qui consiste à toujours rechercherla simplicité même si cela conduit à ignorer desinnovations. La plupart des services Internet (mes-sagerie, Web, etc.) et le monde IP ont été définisd’après ce principe. Ainsi les protocoles de trans-port Ethernet et IP ne sont pas les meilleurs, loins’en faut, mais ils sont simples à mettre en œuvreet finalement plus économiques que certains pro-tocoles plus sophistiqués.

ARCHITECTURE L’environnement « idéal »

Figure 2–2 Notre environnement sous Linux Figure 2–3 L’environnement du développeur sous MS Windows

Page 11: Les Cahiers du programmeur PostgreSQL - eyrolles.com · nant que la notion de gratuité. Certes le logiciel est gratuit, mais il vous faudra l’installer, le maintenir : ceci a un

Les

Cahi

ers

du p

rogr

amm

eur P

ostg

reSQ

L

© Eyrolles, 200218

Installation et prise en mainNotre environnement étant défini, il faut l’installer. Il s’agit d’une version dedéveloppement, le système d’exploitation retenu est donc MS Windows. Uncertain nombre de composants, conçus pour des environnements Unix, peuventêtre traumatisés par la découverte de MS Windows. Aussi, afin d’aller directe-ment à l’essentiel, un environnement fonctionnel, cet ouvrage est complété d’unprogramme d’installation complet pour notre environnement. Les utilisateurs avertis de MS Windows ne seront pas dépaysés, il suffit dedouble-cliquer sur le programme setup.exe (voir page 20). L’installation estclassique et les paramètres par défaut devraient convenir à tous.

ALTERNATIVES IIS + ASP + PostgreSQLL’enquête de Philippe Petit évoquée précédemment montre combien lesévidences peuvent être battues en brèche : c’est le cas des performan-ces de PostgreSQL et il en va de même pour cette association qued’aucuns qualifieraient d’improbable : PostgreSQL et IIS/ASP.

Un tel choix permet de bâtir à moindre coût un environnement mixteouvert sur les deux mondes. Un serveur Web capable avec ASP de met-tre en œuvre tout le potentiel des composants disponibles sousMS Windows, une base de données sous Linux ou Unix, capabled’ouvrir une porte vers des services plus lourds. Reste que, si la mixitéde plates-formes permet d’éviter de mettre tous ses œufs dans le mêmepanier et de conserver cette lucidité qui fait parfois défaut, il s’agit biende la bête noire des directions informatiques.

ALTERNATIVES LXPNotre étude de cas repose sur des briques parmi les plus standards, etmet en œuvre une architecture classique avec base de données relation-nelle, la création du code XML étant faite par un langage procédural. Le projet libre LXP permet de procéder différemment. Construit au-dessus de PostgreSQL, il permet de simuler une base nativement XML :une grosse partie du travail de génération du code XML est alors con-fiée au SBGD, ce qui simplifie d’autant le code PHP.

ALTERNATIVES Java et les « servlets »Aujourd’hui l’environnement Java est complètement opérationnel etnombre de développements autour d’XML se font en Java. Les dernièresévolutions (notamment autour des servlets) font des environnementsconstruits sur Java des alternatives de choix pour la réalisation de ser-vices Web.

Un des environnements libres parmi les plus en vogue sur le sujet estCocoon (http://xml.apache.org/cocoon/) dont l’utilisation dans le cadrede notre étude pourrait prendre la forme suivante :

Nous n’avons pas sélectionné cet environnement pour notre étude decas en vertu du principe KISS et du fait qu’Apache est la brique essen-tielle dans la restitution des informations.

Dans un tel cadre l’architecture présentée ne paraît pas la plus simple àmettre en œuvre et expose à des problèmes de connexion entre Apacheet les machines Java, ce qui induit des problèmes de robustesse. Cecisans compter la difficulté inhérente à Java, évoquée précédemment.

Ce choix est bien évidemment contestable et n’a rien d’un axiome uni-versel. On pourra notamment s’intéresser aux projets de l’ApacheSoftware Foundation dans ce domaine.B http://www.apache.org

Page 12: Les Cahiers du programmeur PostgreSQL - eyrolles.com · nant que la notion de gratuité. Certes le logiciel est gratuit, mais il vous faudra l’installer, le maintenir : ceci a un

2 –

L’en

viro

nnem

ent i

déal

: XM

L, P

HP e

t Pos

tgre

SQL

© Eyrolles, 2002 19

Une fois l’installation terminée, vous devriez trouver un groupe dédié à cetouvrage dans le sous-menu Programmes du menu Démarrer (voir figure 2–4).Le lien Démarrer les services permet, sans surprise et comme son noml’indique, de lancer tous les services requis, à savoir :

Quand les services sont démarrés, une icône apparaît dans la barre des tâches(dans « system tray »). Vous pouvez alors tout arrêter (voir figure 2–5). L’installation vous permet également d’utiliser PSQL, le client en ligne de com-mande pour PostgreSQL, et PgAccess, qui fera l’objet d’une description appro-fondie au chapitre 3.Naturellement, il est tout à fait possible d’installer l’ensemble des logiciels soi-même. Le logiciel d’installation de Cygwin est relativement simple d’emploi(voir page 21). Il vous faudra cependant réaliser quelques opérations de configu-ration sur PostgreSQL et Apache .Enfin, pour les plus téméraires, l’installation de Linux sur un PC n’est plus cecalvaire si longtemps décrié. Les choses se font simplement et en françaisnotamment avec les distributions Red Hat et Mandrake. Dans la plupart descas, et en particulier pour ces distributions, tous les modules requis pour l’étudede cas sont disponibles en standard, il ne vous reste plus qu’à les cocher.Un dernier mot pour les experts. La compilation, tant de PostgreSQL qued’Apache et PHP, ne devrait pas vous émouvoir mais prenez garde aux quelquesremarques présentées page 20.

Figure 2–4 Démarrer les services Figure 2–5 Arrêter les services en utilisant le gestionnaire

Service Rôle

Ipc-daemon Bloque une zone de mémoire à partager à laquelle peut accéder tout programme sur la station. Ce service permet notamment aux différents serveurs PostgreSQL de discuter entre eux.

Postmaster Le serveur PostgreSQL en lui-même : c’est lui qui répond aux requêtes et accède aux bases de données

Httpd Le serveur Apache, chargé de délivrer les pages Web. Il contient le module PHP appelé pour les pages dynamiques.

B.A.-BA Cygwin

Cygwin est le nom d’un environnement désormaisproduit et commercialisé par la société Red Hat.Pour simplifier, il recrée sous MS Windows l’envi-ronnement auquel un programme conçu pour lessystèmes Unix (Solaris, Linux, BSD) s’attend. Cesderniers reposent en effet sur des fonctions et desappels au système tous normalisés (ce sont les nor-mes POSIX) et supportés par une grande majoritédes systèmes d’exploitation. Sous MS Windows,Cygwin traduit les demandes des logiciels en élé-ments compréhensibles par les fonctions disponi-bles sous MS Windows. L’adaptation des logicielssur cette plate-forme est donc simplifiée malgrédes inconvénients dont les plus évidents sont unemoindre performance et une intégration assez limi-tée à l’univers MS Windows.B http://www.cygwin.com/

Page 13: Les Cahiers du programmeur PostgreSQL - eyrolles.com · nant que la notion de gratuité. Certes le logiciel est gratuit, mais il vous faudra l’installer, le maintenir : ceci a un

Les

Cahi

ers

du p

rogr

amm

eur P

ostg

reSQ

L

© Eyrolles, 200220

Procédure d’installationL’ensemble des logiciels et des développements nécessaires à l’étude de cas sontréunis dans un programme d’installation classique sous MS Windows. Il suffitde lancer le programme setup.exe et de se laisser guider (les questions ne sontpas difficiles).

Télécharger le programme d’installation

B http://www.stephanemariel.com/

EN IMAGES Installation des Services Web professionnels avec PostgreSQL et PHP

� Lancer l’installation ?

� Confirmer l’installation � Choisir le répertoire de destination

� Placer les raccourcis du programme � Installer les Services Web professionnels � Installation terminée

ALTERNATIVES Compiler soi-même

Selon toute probabilité, si vous avez décidé de compiler vous-même lesoutils présentés ici, c’est que ./configure ne vous fait pas peur.Quelques conseils cependant :

• En compilant PostgreSQL, n’oubliez pas de vérifier que readlinesera supporté, quitte à installer cette librairie et les headers avantd’aller plus loin. Cette option vous permettra de disposer de tous lesraccourcis classiques disponibles avec bash ou emacs dans le clienten ligne de commande de PostgreSQL.

• N’oubliez pas non plus d’installer Tcl/Tk préalablement, et d’opterpour la compilation du module pgtcl. Sinon, adieu PgAccess.

Pour PHP, l’intégration statique du module pgphp semble préférable,notamment pour des raisons de performances. Nous avons choisil’option -- with-apxs lors de nos tests pour faire le lien avec Apache.

Pour télécharger les sources de PostgreSQL :B http://www.fr.postgresql.org/software.html

Page 14: Les Cahiers du programmeur PostgreSQL - eyrolles.com · nant que la notion de gratuité. Certes le logiciel est gratuit, mais il vous faudra l’installer, le maintenir : ceci a un

2 –

L’en

viro

nnem

ent i

déal

: XM

L, P

HP e

t Pos

tgre

SQL

© Eyrolles, 2002 21

ALTERNATIVES Autre installation avec Cygwin

Avant toute chose, vous devez télécharger le programme setup.exe :B http://www.cygwin.com/setup.exeCe petit programme ne contient aucun paquet en particulier mais vavous permettre de télécharger ensuite tout ce qui vous est nécessaire.Cette installation s’effectuant en réseau, prenez soin de sélectionner unmiroir en France ; il en existe plusieurs �.

Pour notre étude de cas, outre les paquets sélectionnés par défaut etnécessaires au fonctionnement de l’environnement, vous devez sélec-tionner Apache, PHP et PostgreSQL, ainsi que présenté sur les capturesd’écran.

Pour tous ces logiciels, vous pouvez bien sûr télécharger les sources etles recompiler vous-même.

� Choisir la source d’installation � Choisir le répertoire d’installation � Choisir le répertoire de téléchargement des paquetages à installer

� Choisir la connexion Internet � Choisir le site de téléchargement � Cocher le paquetage PostgreSQL

� Cocher les paquetages Apache et PHP4 � Installation en cours Créer les icônes

Page 15: Les Cahiers du programmeur PostgreSQL - eyrolles.com · nant que la notion de gratuité. Certes le logiciel est gratuit, mais il vous faudra l’installer, le maintenir : ceci a un

Les

Cahi

ers

du p

rogr

amm

eur P

ostg

reSQ

L

© Eyrolles, 200222

Pour les impatients : tester PostgreSQLUne fois l’ensemble logiciel installé et les services lancés (si vous avez installévous-même PostgreSQL, n’oubliez pas de créer une base pour vos tests avec lacommande createdb), vérifiez que tout fonctionne en exécutant quelques ins-tructions dans le client standard de PostgreSQL.

En résumé...Le détail des possibilités offertes par PostgreSQL ne laisse pas de doute quantaux capacités hors normes de ce SGBD. Pour en tirer profit nous nous sommesattachés à identifier, loin des idées reçues, les briques clefs susceptibles de cons-tituer un environnement complet autour de PostgreSQL. Une explo-ration quinous permet de disposer enfin, au terme de ce chapitre, de l’environnementadapté à notre étude de cas.

� Découverte de PSQL, le client par défaut :

Bien qu’en ligne de commande, PSQL est un outil très puissant. N’hésitezpas à en étudier la documentation : il est souvent bien plus rapide de réa-liser quelques opérations en ligne de commande plutôt que de lancer touteune série d’outils graphiques ou Web.

� Création d’une première table :

Le serveur PostgreSQL est assez bavard : sans aller dans le détail de ce codeSQL, au demeurant proche du mauvais anglais, l’utilisateur est averti d’effetsdont il pourrait ne pas être conscient. Ici la création d’un index pour la table,suite à la déclaration d’une clé primaire pour les lignes et, enfin, la créationd’une séquence qui stockera la valeur courante de notre clé (elle s’auto-incré-mente, rappelez-vous !).

� Première insertion :

Comme prévu, PostgreSQL a attribué les valeurs par défaut aux champsnon précisés dans l’opération d’insertion. Le champ clef se voit doncaffecter la première valeur de notre série, soit 1, et le champ s la valeur pardéfaut spécifiée.

� Seconde insertion :

On constate bien dans cet exemple l’incrémentation automatique de la cléqui prend la valeur 2.