Database-SQL-RDBMS HOW-TO pour Linux Al Dev (Alavoor Vasudevan) aldev@hotmail.com v2.0, 17 November 1997, version francaise Janvier 1998 Ce document explique COMMENT mettre en place une Base de Donnees Rela- tionnelle SQL Objet de la nouvelle generation "PostgreSQL" sur votre systeme unix qui pourra etre utilisee comme Base de Donnees Serveur d'Application ou Serveur Web. PostgreSQL se rapproche chaque mois un peu plus des standards Internationaux ISO et ANSI SQL 1998,92,89. Ce document donne aussi des informations sur les programmes d'interface a la base de donnees tels que frontaux GUIs, outils RAD (Developpement Rapide d'Application ), interfacage des langages de programmation ("C", "C++", Java, Perl), pilotes ODBC, JDBC ainsi que sur les outils et programmes interfacage d'une Base de Donnees Web . L'information donnee ici est valable pour toutes autres plates-formes unix et autres Bases de Donnees. Cette information sera tres utile aux nouveaux util- isateurs de PostgreSQL, des Bases de Donnees et du langage SQL. 11.. IInnttrroodduuccttiioonn Tout systeme informatique au monde a besoin d'une base de donnees pour stocker/retrouver les informations. Sans base de donnees, un ordinateur devient inutile. La premiere raison pour laquelle on utilise un ordinateur est de stocker, retrouver et traiter l'information et de faire cela tres rapidement, et donc, de faire economiser du temps. En meme temps le systeme doit etre simple, robuste, rapide, fiable, economique et d'utilisation aisee. Les systemes de gestion de base de donnees les plus courants sont bases sur les specifications ISO (International Standard Organisation) SQL lesquelles sont egalement basees sur les standards americains ANSI SQL. Les specifications courantes generalement utilisees sont l'ANSI SQL 92 et l'ANSI SQL 89. Le prochain standard est le SQL 1998/99 aussi appele SQL-3. Les systemes de gestion de bases de donnees les plus repandus tels que Oracle, Sybase et Informix s'appuient sur ces standards ou essaient de les implanter. Ainsi qu'il est indique dans ce document, il y a plus de 20 varietes, commerciales/internet, de systemes de gestion de base de donnees actuellement utilises dans le monde et beaucoup, beaucoup plus dans un futur proche. En l'absence d'un standard tel que l'ANSI/ISO SQL, il serait tres difficile pour l'utilisateur de developper une application une fois pour toutes et de l'utiliser avec tous les systemes de gestion de bases de donnees. Aujourd'hui, l'utilisateur veut developper son application une fois pour toutes en utilisant les normes ISO SQL, ODBC, JDBC et la vendre afin qu'elle puisse etre utilisee sur une grande variete de systemes de gestion de base de donnees a travers le monde. PostgreSQL est la Base de Donnee LIBRE la plus populaire au monde qui implante la plupart des standards ISO SQL, ANSI SQL/98, SQL/92 et ANSI SQL/89 RDBMS. PostgreSQL est une base de donnees relationnelle Objet de la nouvelle generation et les futurs standards ANSI SQL tels que le SQL 1998 (SQL-3) et au-dela traiteront de maniere croissante de bases de donnees Objet et de types de donnees Objet. PostgreSQL est le seul SGBD (RDBMS - Relational Data Base Management System) au monde qui supporte les bases de donnees Objet et SQL. Ce document vous explique comment installer le systeme de gestion de base de donnees ainsi que tous les paquetages concernant les bases de donnees, comment mettre en place la base de donnees Web, la base de donnees application , les frontaux GUIs et les programmes interfacage. On ne saurait trop RECOMMANDER d'ecrire vos applications bases de donnees 100 % compatibles avec les standards ISO/ANSI SQL, ODBC, JDBC ceci rendant votre application portable sur de multiples SGDBD (Systemes de gestion de Bases de Donnees) tels que PostgreSQL, Oracle, Sybase, Informix etc. La haute qualite, et un large ensemble de possibilites de PostgreSQL viennent du fait que ce systeme est developpe suivant le principe du 'Modele de developpement de Systemes Ouvert'. Les systemes ouverts sont ceux ou la totalite du code source est fournie et ou le developpement se fait a travers l'internet par une tres large communaute de cerveaux humains en reseau. La tendance future des developpement logiciels reside dans ce que l'on appelle les "super autoroutes de l'information" qui s'etendent a travers le monde entier. Dans les annees a venir, la croissance d'internet va etre explosive et de ce fait favorisera l'adoption de PostgreSQL par les utilisateurs. Avec l'application des principes de la physique (quantique, classique, thermodynamique), des mathematiques et des statistiques a la qualite des logiciels, on obtient la meilleure qualite des logiciels 'Systemes Ouverts' tel que PostgreSQL en mettant le code source des programmes a la disposition d'un grand nombre de cerveaux humains interconnectes par les super-autoroutes de l'information. Plus le nombre de cerveaux au travail sera grand, meilleure sera la qualite du logiciel produit. Le modele "Systeme Ouvert" evite aussi de reinventer la roue tout en etant particulierement economique, en diminuant les delais de distribution et en suivant les lois economiques modernes d'optimisation des ressources nationales et globales. Dans un futur proche, a l'aube du 21-ieme siecle, la maniere de se procurer un logiciel va changer. Les utilisateurs accorderont en premier lieu leur preference aux logiciels ouverts tel PostgreSQL. Acheter un logiciel PEUT devenir une attitude archaique. On a seulement besoin d'acheter un bon materiel, cela vaut mieux de depenser de l'argent en materiel et trouver le logiciel sur internet. Puisqu'une masse importante de travail a ete effectuee sur PostgreSQL au cours des 12 dernieres annees, cela n'aurait aucun sens de recreer ex-nihilo un autre systeme de gestion de base de donnees satisfaisant aux normes ANSI/ISO SQL. Il est bien plus interessant de prendre le code existant de PostgreSQL, de commencer a l'utiliser, de l'ameliorer et d'y ajouter les fonctionnalites manquantes. PostgreSQL n'est pas seulement un SGBD libre mais aussi un "Produit Internet" et a ce titre merite respect et reconnaissance de tout un chacun. 22.. QQuu''eesstt--ccee qquuee PPoossttggrreeSSQQLL ?? PostgreSQL Version 6.2.1 patch level 3 est un SGBD libre, son code source complet est fourni. De plus, c'est un SGBD Relationnel-Objet pratiquement conforme (de plus en plus conforme) aux normes ANSI SQL1998,92,89. Il fonctionne sur diverses plates-formes materielles sous differents Systemes d'Exploitation. PostgreSQL est une amelioration du SGDB POSTGRES, prototype de recherche de SGDB de la prochaine generation. PostgreSQL, tout en conservant le puissant modele de donnees et la richesse des types de donnees de POSTGRES, remplace le langage de requete PostQuel par un sous-ensemble etendu de SQL. Le developpement de PostgreSQL est realise par une equipe de developpeurs Internet qui sont tous inscrits a la liste de diffusion "PostgreSQL development mailing list". Son coordinateur actuel est Marc G. Fournier scrappy@postgreSQL.org . Cette equipe est maintenant responsable des developpements actuels et futurs de PostgreSQL. Les auteurs de PostgreSQL 1.01 sont Andrew Yu et Jolly Chen. De nombreux autres ont contribue au portage, aux tests, a la mise au point et a l'amelioration du code. Le code original Postgres, duquel PostgreSQL est issu, est le resultat de l'effort de nombreux etudiants de troisieme cycle, de deuxieme cycle et d'enseignants sous la direction du Professeur Michael Stonebraker de l'universite de Californie, Berkeley. Le nom original du logiciel a Berkeley etait Postgres. Lors de l'ajout des fonctionnalites SQL en 1995, il fut renomme Postgres95. Ce nom fut change a la fin de 1996 en PostgreSQL. Des millions d'exemplaires du SGBD PostgreSQL sont installes comme serveurs, serveurs Web et serveurs d'application. Ce SGBD est tres avance, c'est un SGBD Relationnel-Objet (ORDBMS). PostgreSQL peut stocker plus de types de donnees que les types traditionnels entier, caracteres, etc. - L'utilisateur peut creer des types, des fonctions, de l'heritage de type etc. (La Version 7.0 rendra ces fonctions avancees encore plus puissantes). PostgreSQL fonctionne sur Solaris, SunOS, HPUX, AIX, Linux, Irix, Digital Unix, BSDi, NetBSD, FreeBSD, SCO unix, NEXTSTEP, Unixware et toutes sortes d'unix. Un portage pour Windows 95/NT est en cours de realisation. +o Titre : PostgreSQL SQL RDBMS Database (Systeme de Gestion de Base de Donnees Relationnelle Objet) +o Version actuelle : 6.2.1 patch level 3 +o Age : PostgreSQL a 12 ans. En developpement depuis 1985 +o Auteurs : Developpe par des millions d'universites/compagnies sur internet au cours des 12 dernieres ANNEES 33.. OOuu llee ttrroouuvveerr?? On peut acheter le CDROM Redhat 4.2 qui contient deja postgresql en paquetage rpm (a la fois en code source et en binaires) chez : +o Linux System Labs Web site : 6 (U.S. dollars) +o Cheap Bytes Inc Web site : 6 (U.S. dollars) Distributions uniquement en binaire de PostgreSQL : +o On peut executer PostgreSQL sans compiler le source. Recuperer les binaires pour Intel-Linux de l'url le fichier se nomme postgresql-6.2-3.i386.rpm. Son format est de type paquetage redhat 'rpm'. Il contient a la fois le source et les binaires de PostgreSQL. +o Sites binaires pour Solaris, HPUX, AIX, IRIX, Linux : Si vous faites une compilation pour n'importe laquelle des plates-formes envoyer le binaire a ce site, cela peut etre utile aux autres. +o ftp site : recuperer les binaires pour Intel-Linux de le fichier se nomme postgresql-6.2-3.i386.rpm. Son format est de type paquetage redhat 'rpm'. Il contient a la fois le source et les binaires de PostgreSQL.. Sites WWW Web : +o Site Web primaire : +o Site Web secondaire : +o +o +o +o Les sites ftp sont indiques ci-dessous :- +o Primaire FTP : +o Secondaire FTP : +o +o +o +o +o +o +o +o +o +o Le code source de PostgreSQL est aussi disponible sur tous les sites miroirs de sunsite.unc (soit environ 1000 sites autour du globe). Il se trouve dans la distribution Linux Red Hat dans le fichier /pub/contrib/i386/postgresql.rpm. +o Pour obtenir la liste des sites miroirs aller a l'url 44.. PPoossttggrreeSSQQLL SSuuppppoorrttee ddeess BBaassee ddee DDoonnnneeeess eexxttrreemmeemmeenntt ggrraannddeess >> 220000 GGiiggaass Si vous avez besoin d'utiliser des bases de donnees extremement grandes (superieures a 5 gigaoctets), il est fortement recommande d'utiliser des machines 64-bit telles que : Digital Alpha cpu, Sun Ultra-sparc 64-bit cpu, Silicon graphics 64-bit cpu, a venir Intel Merced IA-64 cpu, machines HPUX 64bit , IBM 64-bit machines. Si l'on compile PostgreSQL avec un cpu 64-bit il pourra supporter d'enormes bases de Donnees et de larges requetes. Les performances de PostgreSQL pour des interrogations sur de grandes tables et de grandes bases de donnees sera plus rapide de plusieurs ordres de grandeurs que sur des machines a cpu 32-bit . L'avantage des machines 64-bit est qu'elles disposent d'un grand espace d'adressage memoire et que le systeme d'exploitation peut gerer de tres grands systemes de fichiers. Cela permet des meilleures performances avec de grandes bases de donnees, plus de memoire centrale (RAM), plus de possibilites etc... 55.. PPoossttggrreeSSQQLL eesstt--iill ffiiaabbllee?? Le paquetage de "Test de Regression" permet de s'assurer de son bon fonctionnement. Il est inclus (src/test/regress) dans la distribution et permet a l'ordinateur d'effectuer la verification des operations SQL standard ainsi que des capacites de PostgreSQL. L'avantage de ce test effectue par l'ordinateur vient du fait que celui-ci peut effectuer plusieurs millions de test SQL tres rapidement. La vitesse de l'ordinateur est un milliard de fois plus rapide que celle de l'esprit humain! Le paquetage de tests contient des centaines de programmes de test SQL. Si vous le jugez utile vous pouvez en ajouter beaucoup d'autres. Dans ce cas penser a envoyer ces tests au site PostgreSQL primaire si vous pensez que cela peut etre utile aux autres. Le paquetage de Test de Regression permet d'asseoir la confiance des utilisateurs en PostgreSQL et facilite le deploiement rapide de PostgreSQL sur des systemes en production sans inquietude majeure. 66.. OOuuttiill GGUUII ffrroonnttaall ppoouurr PPoossttggrreeSSQQLL ((IInntteerrffaaccee UUttiilliissaatteeuurr GGrraapphhiiqquuee)) PostgreSQL est dote d'une librairie d'interface TCL/TK dans la distribution appelee 'pgtcl'. TCL/TK est un outil de developpement rapide d'application et un langage de script extremement puissant. On developpe une fois pour toutes et on utilise sur NT, Win 95, Linux et tous les systemes Unix! TCL/TK est egalement largement utilise comme langage de script sur internet. Ce qui permet de n'avoir qu'un seul langage pour couvrir tous ses besoins - applications et internet. TCL est l'abreviation de Integre) pour TCL/TK nomme SpecTCL. Verifiez la presence de ce paquetage (format rpm) dans la distribution linux Redhat ou dans l'un des sites sunscript indiquees ci-apres. TCL/TK est normalement inclus dans tous les cdrom linux. On peut egalement l'obtenir a partir des sites - +o +o +o +o Manuels de reference: de nombreux livres sur TCL/TK sont disponibles sur le marche. +o Visual TCL 77.. OOuuttiillss ddee ddeevveellooppppeemmeenntt iinntteeggrreess ppoouurr PPoossttggrreeSSQQLL ((IInntteerrffaaccee UUttiill-- iissaatteeuurr GGrraapphhiiqquuee)) Essayez les outils de developpement suivants utilisable en conjonction avec les pilotes odbc/jdbc. Ils sont similaires a Borland C++ Builder, Borland JBuilder. Vibe est un IDE Java et C++ (Environnement de Developpement Integre) a ete nomme IDE de l'annee par la revue "Unix Review". Ce produit a 800 US dollars est disponible pour linux au prix extremement bas de 79 US dollars pour un duree limitee. Essayez le! C'est le reve du developpeur. +o Des informations complementaire sur Vibe sont disponibles a Vous pouvez aussi utiliser Borland C++ Builder, JBuilder, PowerBuilder sur Windows95 pour se connecter a PostgreSQL sur une machine unix au travers de pilotes odbc/jdbc. Outils IDE gratuits - Regardez le CDROM de la distribution RedHat. +o FreeBuilder +o SpecTCL +o JccWarrior +o Applixware Tool +o XWPE X Windows Programming Environment +o XWB X Windows Work Bench +o NEdit 88.. OODDBBCC PPiillootteess ppoouurr PPoossttggrreeSSQQLL ODBC signifie 'Open DataBase Connectivity'. C'est un standard repandu pour acceder aux informations des bases de donnees de differents vendeurs. Le fonctionnement des applications ecrites en utilisant les pilotes ODBC est garanti quelle que soient les bases de donnees utilisees PostgreSQL, Oracle, Sybase, Informix etc.. +o Open Link Software Corporation distribue des ODBC pour PostgreSQL et d'autres bases de donnees. Open Link dispose aussi d'ODBC gratuits (quantite limitee) verifier aupres d'eux. +o C'est le site primaire de PostODBC (PostgreSQL ODBC) . Malheureusement c'est un site particulierement lent. +o Ce miroir est maintenu par Julia Anne Case qui est aussi un developpeur PostODBC majeur. Il existe aussi un projet interessant appele FreeODBC Pack Package . Il n'y a pas de version PostgreSQL, peut-etre pouvez vous y participer. +o c'est une version gratuite d'ODBC. 99.. PPiillootteess UUDDBBCC ppoouurr PPoossttggrreeSSQQLL UDBC est une version statique de pilote de gestionnaire et de DLL d'ODBC independant, pour integrer le support de la connectivite base de donnees directement au niveau des applications. +o Open Link Software Corporation vends UDBC pour PostgreSQL et autres SGBD. Open Link dispose aussi d'UDBC gratuits (quantite limitee) verifier aupres d'eux. 1100.. PPiillootteess JJDDBBCC ppoouurr PPoossttggrreeSSQQLL JDBC signifie 'Java DataBase Connectivity'. Java est un langage de developpement independant de la plate-forme d'utilisation developpe par Sun Microsystems. Les programmeurs Java sont encourages a ecrire leurs applications en utilisant JDBC pour faciliter la portabilite entre differentes plates-formes telles que PostgreSQL, Oracle, informix, etc. Si vous ecrivez des applications Java applications vous pouvez obtenir les pilotes JDBC pour PostgreSQL a partir des sites suivants : Le pilote JDBC est inclus dans la distribution PostgreSQL. +o Sun's Java connectivity to PostgreSQL +o +o Open Link Software Corporation vends JDBC pour PostgreSQL et autres SGBD. Open Link dispose aussi d'JDBC gratuits (quantite limitee) verifier aupres d'eux. 1111.. KKaanncchheennjjuunnggaa -- JJaavvaa RRAADD TTooooll ffoorr PPoossttggrreeSSQQLL Kanchenjunga est un Outil de Developpement Rapide d'Application Java pour PostgreSQL. On peut utiliser cet outil pour developper rapidement une application JAVA s'interfacant a PostgreSQL. +o 1122.. CCllaasssseess JJaavvaa ppoouurr PPoossttggrreeSSQQLL Ces classes pour PostgreSQL seront tres utiles au programmeur JAVA. +o +o 1133.. PPiilloottee dd''iinntteerrffaaccee ddee SSGGBBDD PPeerrll ((DDaattaabbaassee IInntteerrffaaccee DDBBII)) ppoouurr PPoossttggrreeSSQQLL 1133..11.. iinntteerrffaaccee PPeerrll 55 ppoouurr PPoossttggrreeSSQQLL Cette interface est incluse dans la distribution de PostgreSQL. On la trouve dans le repertoire src/pgsql_perl5. +o Email : E.Mergl@bawue.de +o On la trouve aussi dans - +o Page d'accueil Perl : 1133..22.. QQuu''eesstt--ccee qquuee DDBBII ?????? L'interface de SGBD Perl (Perl Database Interface - DBI) est une interface logicielle d'acces a un SGBD (Application Programming Interface - API) pour le langage PERL. Les specifications de l'API DBI perl definissent un ensemble de fonctions, de variables et de conventions d'acces a un SGDB coherent et independant du SGBD utilise. 1133..33.. AAnnnnoonnccee dduu ppiilloottee DDBBII DDBBDD--PPgg--00..6633 DDBBII ppoouurr PPoossttggrreeSSQQLL Sur le site CPAN on trouve DBD-Pg-0.63.tar.gz. Depuis sortie de la derniere version publique, les modifications suivantes ont ete effectuees : - - adaptation a PostgreSQL-6.2 : o $ sth->rows de meme que $ sth->execute et $ sth->do renvoient le nombre de lignes affectees meme pour les instructions non-Select. o ajout du support d'autorisation par mot de passe, lire la page du manuel concernant pg_passwd. - - the data_source parameter of the connect method accepts two additional parameters which are treated as host and port: DBI->connect("dbi:Pg:dbname:host:port", "uid", "pwd") - - support de l'instruction AutoCommit. Lire la documentation de ce module pour evaluer son impact sur vos scripts ! - - prise en compte dans un meilleur style perl du type de donnee bool, Lire la documentation de ce module pour evaluer son impact sur vos scripts ! Pour de plus amples informations voir: 1133..44.. NNootteess ccoonncceerrnnaanntt cceettttee vveerrssiioonn eett ffiicchhiieerr LLIISSEEZZ--MMOOII #--------------------------------------------------------- # # $Id: README,v 1.10 1997/10/05 18:25:55 mergl Exp $ # # Portions Copyright (c) 1994,1995,1996,1997 Tim Bunce # Portions Copyright (c) 1997 Edmund Mergl # #--------------------------------------------------------- ********************************************************** * * * Cette version contient des modifications * * INCOMPATIBLES * * _------------ * * avec les versions precedentes. * * * * Lire la documentation du module * * pour l'attribut AutoCommit * * et le type de donnee bool. * * * ********************************************************** DESCRIPTION : ------------ Ceci est la version 0.63 de DBD-Pg. DBD-Pg est une interface PostgreSQL pour Perl 5 utilisant DBI. Pour des informations complementaires concernant DBI consulter: COPYRIGHT : ----------- La distribution de ce document est soumise aux conditions de la licence publique generale GNU ou la licence protegeant la creation Artistique (Artistic License), ainsi que c'est specifie dans le fichier LISEZ-MOI perl. SI VOUS AVEZ DES PROBLEMES : --------------------------- Envoyez vos commentaires et vos rapports d'erreur a E.Mergl@bawue.de Pensez a inclure les messages affiches par perl -v, et perl -V, la version de PostgreSQL, la version de DBD-Pg, et la version de DBI dans votre rapport d'erreur. CONTRAINTES LOGICIELLES : ------------------------ - compiler, tester et installer Perl 5 (au moins 5.002) - compiler, tester et installer le module DBI (au moins 0.89) - compiler, tester et installer PostgreSQL (au moins 6.2) PLATEFORMES : ------------- Cette version def DBD-Pg a ete developpee pour Linux 2.0 avec chargement dynamique des extensions perl. Merci de me faire savoir si vous rencontrez des problemes sur d'autres plates-formes. INSTALLATION : -------------- Dans le fichier Makefile il y a un test la variable d'environnement POSTGRES_HOME ainsi que de quelques arborescences standard, pour trouver le repertoire racine de votre installation Postgres. Taper les commandes suivantes: 1. perl Makefile.PL 2. make 3. make test 4. make install ( de 1. a 3. comme utilisateur normal, pas comme root ! ) TEST : ------ Lancer 'make test'. Noter que l'utilisateur lancant ce script doit avoir ete cree avec des droits d'acces lui permettant de creer des bases de donnees "ET" des utilisateurs !. Ne pas lancer ce script en tant que root!. Si le test echoue avec le message 'login failed', verifier que l'acces a template1 de la base de donnees ainsi qu'a pgperltest ne sont pas proteges dans pg_hba.conf. Si vous utilisez la bibliotheque partagee libpq.so verifiez que votre chargeur dynamique trouve libpq.so. La commande Linux /sbin/ldconfig -v devrait vous renseigner sur l'endroit ou se trouve libpq.so. Si ldconfig ne trouve pas libpq.so, soit ajoutez une entree appropriee dans /etc/ld.so.conf et relancez ldconfig ou ajouter son chemin dans la variable d'environnement LD_LIBRARY_PATH. On aura comme message typique resultant de ce type d'erreur : install_driver(Pg) failed: Can't load './blib/arch/auto/DBD/Pg/Pg.so' for module DBD::Pg: File not found at Quelques distributions Linux ont une installation incomplete de perl. Si vous avez des erreurs de compilation du style "XS_VERSION_BOOTCHECK undeclared", executez un Si ce fichier n'est pas present, il est indispensable de recompiler et de reinstaller perl. Utilisateurs SGI : si vous avez un defaut de segmentation, assurez- vous que vous utilisez la version de malloc obtenue avec perl lors de la compilation de perl (ce n'est pas le cas par defaut). "David R. Noble" drnoble@engsci.sandia.gov drnoble@engsci.sandia.gov --------------------------------------------------------------------------- E.Mergl@bawue.de October 05, 1997 --------------------------------------------------------------------------- 1133..55.. FFAAQQ ppoouurr DDBBII On trouvera ci-dessous les Questions Frequemment Posees (FAQ) pour DBI. La page Web d'accueil se trouve a DBI Foire Aux Questions v.0.35 Derniere mise a jour : 20 Juin, 1997 * NAME * SYNOPSIS * VERSION * DESCRIPTION * Information & Sources d'Informations * 1.1 Qu'est-ce que DBI, DBperl, Oraperl and *perl? * 1.2. Ou puis-je les trouver? * 1.3. Ou puis-je trouver plus d'informations? * Problemes de compilation * 2.1. Problemes de compilation ou "echec aux tests!" * Questions de Plates-formes et de Pilotes * 3.1 Quelle est la difference entre ODBC et DBI? * 3.2 DBI est-il supporte sur les plates-formes Windows 95 / NT ? * 3.3 Puis-je acceder a des bases de donnees Microsoft Access ou SQL-Server avec DBI? * 3.4 Y-a-t'il un DBD pour X? * 3.5 Qu'est-ce que DBM? Et pourquoi dois-je utiliser DBI a sa place? * 3.6 Quand mSQL-2 sera t'il supporte? * 3.7 Quel systeme de gestion de base de donnees me recommandez vous? * 3.8 Est-ce que X est supporte dans DBI? * Questions de programmation * 4.1 Est-ce que DBI est d'une quelconque utilite pour la programmation CGI? * 4.2 Comment puis-je obtenir des temps de connexion plus rapides avec DBD::Oracle et CGI? * 4.3 Comment puis-je obtenir des connexions persistantes avec DBI et CGI? * 4.4 ``Quand je lance un script perl a partir de la ligne de commande, ca marche, mais, quand je le lance a partir de C, ca echoue!" Pourquoi? * 5.1 Puis-je faire de l'execution en parallele avec DBI? * 5.2 Comment manipuler des donnees BLOB avec DBI? * 5.3 Comment puis-je invoquer des procedures enregistrees avec DBI? * 5.4 Comment puis-je recuperer les valeurs de retour des procedures enregistrees avec DBI? * 5.5 Comment puis-je creer ou detruire une base de donnees avec DBI? * 5.6 Comment puis-je enregistrer ou annuler une instruction avec DBI? * 5.7 Comment les valeurs NULL sont-elles prises en compte par DBI? * 5.8 Qu'est-ce que c'est que ces histoires de methodes func? * Support et formation * Assistance Commerciale * Formation * Autres References * AUTEUR * COPYRIGHT ---------------------------------------------------------------------------- NAME DBI::FAQ -- Foire Aux Questions pour l'interface de SGBD Perl5 ---------------------------------------------------------------------------- SYNOPSIS perldoc DBI::FAQ ---------------------------------------------------------------------------- VERSION La version actuelle de ce document , du 20 Juin, 1997, porte le numero 0.35. ---------------------------------------------------------------------------- DESCRIPTION Ce document contient les reponses aux questions les plus frequemment posees a la fois sur les Mailing Lists DBI et personnellement aux membres de l'equipe de developpement DBI. ---------------------------------------------------------------------------- Information de base & Sources d'Information ---------------------------------------------------------------------------- 1.1 Qu'est-ce que c'est que DBI, DBperl, Oraperl and *perl? Pour citer Tim Bunce, l'architecte et l'auteur de DBI : ``DBI est une interface logicielle d'acces aux bases de donnees (Application Programming Interface -API) pour le langage Perl. Les specifications DBI API definissent un ensemble de fonctions, de variables et de conventions coherents d'interfacage a une base de donnees independant de la base de donnees utilisee.'' En langage simple, l'interface DBI permet aux utilisateurs d'acceder de maniere transparente a de multiples base de donnees. Ainsi, Si vous vous connectez a une base de donnees Oracle, Informix, mSQL, Sybase ou n'importe quelle autre, vous n'avez pas besoin de connaitre les mecanismes sous-jacents de la couche 3GL. L'API definie par DBI fonctionnera sur tous ces types de bases de donnees. On obtient un benefice du meme ordre en ayant la possibilite de se connecter a deux bases de donnees de differents fournisseurs a l'aide du meme script perl, i.e., je veux lire des donnees d'une base de donnees Oracle et les inserer dans une Informix a partir du meme programme. La couche logicielle DBI permet de le realiser simplement et efficacement. Voici un diagramme decrivant ce principe : [ Architecture DBI ] DBperl est le nom ancien des specifications de l'interface. Il est utilise maintenant pour designer les modules perl4 d'interfacage des bases de donnees tels que oraperl, isqlperl, ingperl et autres. Ces interfaces n'ont pas d'API standard et ne sont generalement pas supportes. Voici une liste des modules DBperl, de leur equivalent DBI correspondants et du support d'information. Notez que les auteurs cites ici ne maintiennent generalement pas le module DBI de la base de donnees. Les adresses E-mail n'ont pas ete verifiees et ne doivent etre utilisees que pour les questions concernant les modules perl4 listes ci-dessous. Les questions sur les pilotes DBI doivent etre directement adressees aux listes de diffusion des utilisateurs DBI. Module Name SGBD requis Auteur DBI ----------- ----------------- ------ --- Sybperl Sybase Michael Peppler DBD::Sybase Oraperl Oracle 6 & 7 Kevin Stock DBD::Oracle Ingperl Ingres Tim Bunce & DBD::Ingres Ted Lemon Interperl Interbase Buzz Moschetti DBD::Interbase Uniperl Unify 5.0 Rick Wargo None Pgperl Postgres Igor Metz DBD::Pg Btreeperl NDBM John Conover SDBM? Ctreeperl C-Tree John Conover None Cisamperl Informix C-ISAM Mathias Koerber None Duaperl X.500 Directory Eric Douglas None User Agent Cependant, certains modules DBI possedent des couches logicielles d'emulation. Ainsi DBD::Oracle est livre avec une couche d'emulation Oraperl, ce qui permet d'executer d'anciens scripts oraperl sans modification. La couche logicielle d'emulation traduit les appels oraperl API en appels DBI et les execute. Voici une table des couches d'emulation : Module Couche d'emulation Etat ------ --------------- ------ DBD::Oracle Oraperl Complete DBD::Informix Isqlperl En cours de developpement DBD::Sybase Sybperl Fonctionnelle? ( Necessite une verification) DBD::mSQL Msqlperl En version experimentale avec DBD::mSQL-0.61 L'emulation Msqlperl est un cas particulier. Msqlperl est un pilote perl5 pour les bases de donnees mSQL , mais il ne se conforme pas aux specifications DBI. On desapprouve son utilisation en faveur de DBD::mSQL. On peut telecharger Msqlperl a partir du site CPAN via : http://www.perl.com/cgi-bin/cpan_mod?module=Msqlperl ---------------------------------------------------------------------------- 1.2. Ou puis-je le trouver? DBI est disponible en premier sur : ftp://ftp.demon.co.uk/pub/perl/db Il faut utiliser le site CPAN (Comprehensive Perl Archive Network) pour recuperer les versions a jour des pilotes, en general absentes des sites miroirs. On peut acceder a CPAN grace au splendide programme "CPAN multiplexeur" de Tom Christiansen's situe a: http://www.perl.com/CPAN/ Pour des informations plus specifiques ainsi que pour les URL exactes des pilotes, veuillez consulter la liste des pilotes DBI et les pages concernant les modules sur: http://www.hermetica.com/technologia/perl/DBI ---------------------------------------------------------------------------- 1.3. Ou puis-je trouver plus d'informations? Il existe quelques sources d'information sur DBI. Specifications DBI http://www.hermetica.com/technologia/perl/DBI/doc/dbispec On trouve deux specifications disponibles a cette adresse: la nouvelle specification Draft (edition provisoire) DBI qui est un document en evolution rapide a mesure que l'equipe de developpement s'approche d'une version stable de l'interface, et l'ancienne specification historique DBperl a partir de laquelle l'interface DBI actuelle a evolue. Il faut considerer ce dernier document comme ne presentant qu'un interet historique et ne pas l'utiliser en tant que manuel de programmation ou document de reference. Il demeure cependant une source d'informations tres utile. Documentation POD (Plain Old Documentation) Les PODs sont des morceaux de documentation generalement noyes a l'interieur des programmes perl qui documentent le code "sur place". Ce sont des ressources tres utiles pour les programmeurs et les utilisateurs des modules. Les PODs pour DBI et pour les pilotes deviennent monnaie courante et la documentation pour les modules contenant ces PODs peut etre lue avec les commandes suivantes. La Specification DBI Les PODs pour la specification DBI peut etre lue avec la commande : perldoc DBI Oraperl Les utilisateurs de la couche d'emulation fournie avec DBD::Oracle, peuvent s'informer sur la maniere de programmer en utilisant l'interface Oraperl en tapant: perldoc Oraperl Ce qui permettra d'obtenir une copie a jour de la page de manuel originale ecrite par Kevin Stock pour perl4. L'API oraperl y est entierement listee et decrite. DBD::mSQL Les utilisateurs du module DBD::mSQL peuvent lire des informations sur quelques fonctions privees et bizarreries de ce pilote en tapant : perldoc DBD::mSQL Foire Aux Questions (FAQ) Ce document, la Foire Aux Questions, est aussi disponible en tant que documentation POD! Vous pouvez le lire sur votre propre systeme en tapant : perldoc DBI::FAQ Ceci peut etre plus pratique pour ceux qui ne sont pas connectes a l'Internet ou le sont d'une maniere peu pratique. Les POD en general On peut lire des informations sur la maniere d'ecrire des PODs, ainsi que sur la philosophie des PODs en general en tapant : perldoc perlpod Les utilisateurs ayant le module Tk installe seront peut-etre interesses d'apprendre qu'il existe un lecteur de POD base sur Tk nomme tkpod. Il formate les POD de maniere pratique et lisible. Discussions, Cancans et Observations http://www.hermetica.com/technologia/perl/DBI/tidbits Il y a , de temps en temps, une serie de discussions de la part de certaines personnes, dans les listes de diffusion sur DBI, qui, pour essayer d'eclaircir un simple point, finissent par transformer en brouillon des documents tout a fait complets. Ces documents sont souvent de qualite variable, mais donnent un apercu du fonctionnement des interfaces. ``DBI -- L'interface de SGBD en perl5'' C'est un article ecrit par Alligator Descartes et Tim Bunce sur la structure de DBI. Il a ete publie dans le numero 5 de ``The Perl Journal''. Il est extremement bon. Allez acheter ce magazine. En fait, achetez les tous! Le site WWW de ``The Perl Journal'' est : http://www.tpj.com ``DBperl'' Cet article, publie dans l'edition de novembre 1996 du ``Dr. Dobbs Journal'' traitait de DBperl. L'auteur de cet article n'a apparemment pas contacte un seul membre de l'equipe de developpement DBI pour verifier l'information contenue dans son article. Plusieurs critiques de cet article dans les listes de diffusion des utilisateurs de dbi ont ete peu flatteuses, c'est le moins que l'on puisse dire. Le fait que l'article traite de DBperl au lieu de DBI est un indice du manque de fraicheur de l'information. Cependant, cette reference est donnee par soucis d'exhaustivite. ``The Perl5 Database Interface'' Cette reference est celle d'un livre a ecrire par Alligator Descartes (pour lui, c'est moi) publie par O'Reilly et Associes a paraitre cet hiver. La table des matieres de ce livre devrait contenir : * Introduction + Les Bases de Donnees + CGI / WWW + perl * Concepts de Base des Bases de donnees + Types de Bases de Donnees o Flat File o AnyDBM o RDBMS + Utiliser Quelle Base de Donnees, pour Quoi faire... * SQL + Pourquoi SQL? + Structuration de l'Information dans les Bases de Donnees + Extraction des Donnees d'une Base de Donnees + Manipulation des Donnees et des Structures de Donnees * Architecture DBI * Programmation avec DBI + Initialisation DBI + Identifiants o Identifiants de pilotes o Identifiants de bases de donnees o Identifiants d'instructions + Connexion and Deconnexion + Gestion des Erreurs + Emission de Requetes Simples + Execution d'Instructions Atomiques + Instructions MetaDonnees + Instruction plus dans le style perl + Liaison + Gestion des Transactions + Methodes utilitaires + Gestion des Attributs et des Variables Dynamiques * DBI et ODBC * Les Pilotes de Bases de Donnees + DBD::Oracle et oraperl + DBD::Informix et isqlperl + DBD::mSQL et Msqlperl * Etude de Cas + DBI et le WWW + Migration des Donnees et Stockage + Logiciel d'Administration * Appendice: API Reference / Specification * Appendice: Ressources Fichiers LISEZMOI Les fichiers LISEZMOI fournis avec chaque pilote contiennent de temps en temps quelques informations utiles (non, vraiment! ) pouvant etre pertinentes pour l'utilisateur. S'il vous plait, lisez-les. Cela rendra nos pauvres existences plus supportables. On peut toutes les trouver depuis la page WWW DBI principale a : http://www.hermetica.com/technologia/perl/DBI Listes de diffusion Il y a trois listes de diffusion pour DBI gerees par Ted Lemon. On peut s'inscrire a toutes et resilier cette inscription a travers le World Wide Web a l'URL : http://www.fugue.com/dbi Les listes ou les utilisateurs peuvent participer sont: dbi-announce Cette liste de diffusion est reservee uniquement aux annonces. Tres peu de trafic. Les annonces sont generalement postees sur la page WWW DBI principale. Si vous n'arrivez pas a utiliser le formulaire sur la page WWW indiquee ci-dessus, inscrivez-vous a cette liste de la maniere suivante : Email: 'dbi-announce-request@fugue.com' avec le mot 'subscribe' dans le corps du message. dbi-dev Cette liste de diffusion est a l'usage des developpeurs pour discuter des idees et des concepts de l'interface DBI, API et des mecanismes des pilotes. Seulement utiles pour les developpeurs et les personnes interessees. Trafic faible. Si vous n'arrivez pas a utiliser le formulaire sur la page WWW indiquee ci-dessus, inscrivez-vous a cette liste de la maniere suivante : Email: 'dbi-dev-request@fugue.com' with a message body of 'subscribe' dbi-users Cette liste de diffusion est un lieu de discussion generale utilisee pour les rapports d'erreurs, la discussion sur differents problemes et des demandes de renseignement d'interet general. Trafic moyen. Si vous n'arrivez pas a utiliser le formulaire sur la page WWW indiquee ci-dessus, inscrivez-vous a cette liste de la maniere suivante : Email: 'dbi-users-request@fugue.com' with a message body of 'subscribe' Archives des Listes de Diffusion Archives des Listes de Diffusion US http://outside.organic.com/mail-archives/dbi-users/ Cette archive, avec recherches par hyper-liens, de ces trois listes de diffusion, avec un peu du trafic beaucoup plus ancien a ete mis en place pour permettre une recherche par les utilisateurs. Archives des Listes de Diffusion Europeennes http://www.rosat.mpe-garching.mpg.de/mailing-lists/PerlDB-Interest Identique a l'archive US ci-dessus. ---------------------------------------------------------------------------- Problemes de compilation ---------------------------------------------------------------------------- 2.1. Problemes de compilation ou "Il echoue aux tests!" En premier lieu, consulter la documentation en ligne concernant ce module, que ce soit DBI lui-meme ou un module DBD, et verifier que ce n'est pas un probleme de compilation connu pour votre architecture. On peut trouver ces documents a : http://www.hermetica.com/technologia/perl/DBI Si c'est un probleme connu, vous devrez probablement attendre qu'il ait ete corrige. Si vraiment vous avez besoin d'une solution, essayez l'une des solutions suivantes : Essayez de le corriger vous meme Cette technique n'est generalement par recommandee aux craintifs. Si vous pensez que vous y etes arrive, alors, envoyer un fichier patch (context diff ) a l'auteur en expliquant les points suivants : o Quel etait le probleme, et, si possible, des jeux d'essai. o Ce que vous avez du faire pour le corriger. Assurez vous que vous n'oubliez rien. o Donnez des informations concernant la Plate-forme utilisee, les versions : de la Base de Donnees, de Perl, du module et de DBI. Envoyez un Email a l'auteur SANS RALER! S'il vous plait, postez votre email a l'adresse indiquee dans les pages WWW du pilote avec lequel vous avez rencontre des problemes. Ne pas poster directement a une adresse que vous connaissez a moins qu'elle ne corresponde a l'une de celles qui sont indiquees. Nous avons un vrai travail a faire, et nous devons consulter les listes de diffusion traitant des problemes rencontres. De plus nous ne pouvons pas forcement avoir acces a et de ce fait vous apporter une quelconque assistance! Desole de vous paraitre dur, mais c'est comme cela! Cependant, vous pouvez tomber sur l'un de ces genies creatifs, qui, a 3 heures du matin resoudra votre probleme et vous fournira une rustine en 5 minutes. L'ambiance dans le cercle DBI est que nous apprecions de connaitre les problemes des utilisateurs puisque nous travaillons dans le meme environnement. Si vous envisagez d'envoyer un Email a un auteur, essayez de fournir le plus d'informations possible, i.e. : o TOUS les renseignements provenant du fichier LISEZMOI du module posant probleme. Je dis bien TOUS. Nous n'ajoutons pas de lignes dans la documentation pour le plaisir, ou pour que les fichiers LISEZMOI se conforment a une quelconque norme de taille. o Si vous disposez d'un vidage memoire, essayer de generer une trace du contenu de la pile (stack) a partir du vidage memoire (core dump) en utilisant le module Devel::CoreStack. L'envoyer egalement. On peut trouver le module Devel::CoreStack sur CPAN a : http://www.perl.com/cgi-bin/cpan_mod?module=Devel::CoreStack o Les numeros de version du Module, de perl, des jeux d'essai, du systeme d'exploitation ainsi que tout autre information pertinente. Souvenez-vous que, plus vous nous enverrez d'informations plus vite nous pourrons resoudre le probleme. Si vous n'envoyez rien, n'attendez rien en retour. Envoyez un Email dans la liste de diffusion des utilisateurs de dbi C'est en general une idee astucieuse de rapporter les problemes rencontres dans les listes de diffusion. Les auteurs lisent tous ces listes d'une part et d'autre part vous ne perdez rien a le faire, donc, faites-le. ---------------------------------------------------------------------------- Questions de Plates-formes et de Pilotes ---------------------------------------------------------------------------- 3.1 Quelle est la difference entre ODBC et DBI? Ca, c'est une bonne question! Reponse a rediger de maniere detaillee! ---------------------------------------------------------------------------- 3.2 DBI est-il supporte sur les plates-formes Windows 95 / NT ? Finalement, oui! Jeff Urlwin s'est employe avec constance a porter DBI et DBD::Oracle sur ces plates-formes, et, depuis la disponibilite d'un perl plus stable et d'un portage de MakeMaker, le projet a progresse a pas de geant. Les portages de DBI et de DBD::Oracle pour Win32 ports font maintenant partie integrante de DBI, donc, la recuperation d'une version de DBI superieure a 0.81 doit donner satisfaction. Pour ce qui est des rustines necessaires pour DBD::Oracle, veuillez lire la page d'information de portage pour Win32 a : http://www.hermetica.com/technologia/perl/DBI/win32 ---------------------------------------------------------------------------- 3.3 Puis-je acceder aux bases de donnees Microsoft Access ou SQL-Server avec DBI? Contribution de Tim Bunce et Jeff Urlwin Il existe une couche logicielle d'emulation experimentale pour le module Win32::ODBC fournie avec DBI-0.79 ( et suivants ). Elle s'appelle DBI::W32ODBC et est, pour le moment, minimale. Vous aurez besoin du module Win32::ODBC disponible a : http://www.roth.net Etant donne son etat, les rapports de problemes, sans correction, ont de bonnes chances d'etre ignores. Vous aurez egalement besoin du patch kit Win32 DBI tel qu'il est fourni par Jeff Urlwin. Pour trouver l'endroit ou il est disponible, lire la reponse a la question precedente. Jeff Urlwin fournit actuellement un gros travail sur la couche logicielle ODBC. Pour en revenir a la question initiale, theoriquement, oui, on peut acceder aux bases de donnees Microsoft Access ou SQL-Server avec DBI via ODBC! ---------------------------------------------------------------------------- 3.4 Existe-t-il in DBD pour ? Est-il cite dans la liste des pilotes DBI ? http://www.hermetica.com/technologia/perl/DBI/DBD Sinon, non. L'absence complete d'un pilote pour un SGBD donne dans cette page signifie que personne n'a manifeste l'intention d'y travailler. Comme corollaire a l'affirmation ci-dessus, cela signifie que si vous voyez une annonce pour un pilote qui n'est pas dans cette page, il y a une bonne chance que ce soit reellement un pilote DBI, et qu'il puisse ne pas respecter les specifications. Par consequent, les questions pour des problemes concernant ce code ne doivent pas etre posees dans les listes de diffusion DBI. ---------------------------------------------------------------------------- 3.5 Qu'est-ce que DBM? Et pourquoi dois-je utiliser DBI a sa place? Extrait de ``DBI - L'Interface de Base de Donnees pour Perl 5'' : ``A l'origine UNIX etait bienheureux avec sa "Base de Donnees" rustique reposant sur des fichiers, nommee systeme dbm. Avec dbm vous enregistrez les donnees dans des fichiers et les retrouvez rapidement. Cependant, il souffre de serieux inconvenients. Verrouillage des fichiers Les systemes dbm ne permettent par un verrouillage particulierement robuste des fichiers, de meme qu'il n'y a pas de possibilite de corriger les problemes survenants lors d'ecritures [ dans la base de donnees ] simultanees. Structures de Donnees Arbitraires Les systemes dbm permettent seulement une simple structure de donnees fixe: paires cle-valeur. Cette valeur peut etre un objet complexe, tel qu'une structure [ C ], mais la cle doit etre unique. Ce fut une grande limitation dans l'utilite des systemes dbm. Cependant, les systemes dbm continuent a offrir des fonctions utiles pour les utilisateurs ayant des ensembles de donnees simples et des ressources limitees, puisqu'ils sont rapides, robustes et extremement bien testes. Les modules Perl pour acceder aux systemes dbm font maintenant partie integrante de la distribution Perl via le module AnyDBM_File.'' Pour resumer, DBM est une solution parfaitement satisfaisante pour les bases de donnees essentiellement en lecture seule, ou pour des ensembles de donnees simples et reduits. Toutefois, pour des ensembles de donnees plus importants, sans mentionner un verrouillage des transactions robuste, on recommandera aux utilisateurs de preferer DBI. ---------------------------------------------------------------------------- 3.6 Quand mSQL-2 sera t'il supporte? De meme que pour DBD::mSQL-0.61, il y a eu un support pour mSQL-2. Cependant, il n'y a encore aucun reel support pour les nouvelles methodes func, concernant les index, ajoutees a la bibliotheque de base mSQL. Celles-ci seront prochainement disponibles et seront accessibles a DBD::mSQL au travers de methodes func privees. Vous pouvez obtenir plus d'informations concernant ces methodes func privees dans le POD DBD::mSQL en tapant : perldoc DBD::mSQL a condition d'avoir une installation correcte de DBD::mSQL. ---------------------------------------------------------------------------- 3.7 Quel systeme de gestion de base de donnees me recommandez vous? C'est un sujet particulierement epineux pour lequel une reponse objective est delicate dans la mesure ou, chaque ensemble de donnees, chaque usage et chaque configuration du systeme est different d'un utilisateur a l'autre. Du point de vue de l'auteur, si l'ensemble de donnees est relativement petit, donnant des tables de moins de 1 million de lignes, et qu'il y ait moins de 1000 tables dans une base de donnees, alors mSQL est une solution parfaitement acceptable. Ce SGBD est extremement bon marche, est merveilleusement robuste et beneficie d'un excellent support. Des informations complementaires sont disponibles sur le site WWW Hughes Technology a : http://www.hughes.com.au Si l'ensemble de donnees entraine des tables de plus de 1 million de lignes ou plus de 1000 tables, ou si vous disposez de, soit plus d'argent, soit de machines plus puissantes, je vous recommanderai le RDBMS (SGBDR en francais) Oracle7. Le site WWW Oracle's est une excellente source d'information complementaire. http://www.oracle.com Informix est un autre RDBMS de haut niveau qu'il faut envisager. Il existe plusieurs differences entre Oracle et Informix qui sont trop complexes pour etre detaillees dans ce document. On trouvera l'information sur Informix sur leur site WWW a : http://www.informix.com En cas d'utilisation dans des applications en frontal WWW, mSQL peut etre un meilleur choix du fait de ses temps de connexion courts entre le script CGI et le SGBD que Oracle RDBMS qui, a chaque connexion, reclame plus de ressources. mSQL est moins gourmand en ressources et plus rapide. Ce point de vue n'est pas forcement partage par tout le monde et n'est pas sponsorise ou dicte par une quelconque societe. Il est donne tel quel. ---------------------------------------------------------------------------- 3.8 Est-ce que est supporte par DBI? Si l'on suppose que la fonctionnalite en question n'est pas, en standard, specifique d'un SGBD, alors la reponse sera non. DBI represente un API qui doit fonctionner avec la plupart des SGBD, et n'a pas de fonctionnalite specifique a un SGDB particulier. Cependant, les auteurs d'un pilote peuvent, s'ils le desirent, ajouter une fonctionnalite specifique a un SGBD a travers les methodes func definies dans l'API DBI. Les developpeurs de Scripts doivent noter que l'utilisation de cette fonctionnalite au travers de ces methodes func a de bonnes chances d'en sacrifier la portabilite entre les differents SGDB. ---------------------------------------------------------------------------- Questions de Programmation ---------------------------------------------------------------------------- 4.1 Est-ce que DBI est d'une quelconque utilite pour la programmation CGI? En un mot, oui! DBI est extremement utile pour la programmation CGI! En fait, je serais tente de repondre que la programmation CGI est une des deux principales utilisation de DBI. DBI confere aux programmeurs CGI la possibilite d'offrir des base de donnees WWW a leurs utilisateurs, ce qui donne a ces utilisateurs la possibilite d'utiliser de grandes quantites de donnees bien organisees. DBI donne aussi la possibilite , si un site recoit un trafic trop important pour les performances du serveur, d'ameliorer ce serveur de base de donnees de facon transparente, sans modifier les scripts CGI. ---------------------------------------------------------------------------- 4.2 Comment puis-je obtenir un temps de connexion plus rapide avec DBD::Oracle et CGI CGI? Contribution de John D. Groenveld Le serveur httpd Apache maintient un ensemble de processus fils httpd pour servir les requetes clients. En utilisant le module mod_perl Apache de Doug MacEachern, l'interpreteur perl est inclus dans le processus fils httpd. Les modules CGI, DBI, et vos autres modules favoris peuvent etre charges au lancement de chaque processus fils. Ces modules ne seront pas recharges a moins d'etre modifies sur disque. Pour de plus amples informations sur Apache, consultez le site WWW du Projet Apache a : http://www.apache.org Le module mod_perl peut etre recupere de CPAN via : http://www.perl.com/cgi-bin/cpan_mod?module=mod_perl ---------------------------------------------------------------------------- 4.3 Comment puis-je obtenir une connexion persistante avec DBI et CGI? Contribution de by John D. Groenveld En utilisant le module Apache::DBI de Edmund Mergl, les connexions a la base de donnees sont enregistrees dans une table avec chacun des processus httpd fils. Si votre application utilise une base de donnees simple utilisateur, cette connexion peut etre lancee avec chaque processus fils. Actuellement, les connexions a la base de donnees ne peuvent pas etre partagees entre processus httpd fils. Apache::DBI peut etre telecharge de CPAN via : http://www.perl.com/cgi-bin/cpan_mod?module=Apache::DBI ---------------------------------------------------------------------------- 4.4 ``Quand je lance un script perl de la ligne de commande, ca marche, mais, quand je le lance sous httpd, ca echoue!" Pourquoi? Fondamentalement, il y a une bonne chance que cela provienne du fait que l'utilisateur a partir duquel vous avez lance la ligne de commande a un ensemble de variables d'environnement correctement configure, ce sont, dans la cas de DBD::Oracle, des variables telles que $ORACLE_HOME, $ORACLE_SID or TWO_TASK. Le processus httpd s'execute habituellement sous un utilisateur id ne correspondant pas a un utilisateur, ce qui implique qu'il n'y a pas d'environnement configure. Tous scripts essayant de s'executer dans ces circonstances echoueront. Pour resoudre ce probleme, initialisez l'environnement de votre base de donnees dans un bloc BEGIN ( ) en tete de votre script. Ceci devrait resoudre votre probleme. De meme, vous devriez regarder votre fichier registre d'erreurs pour y trouver des indices, ainsi que les guides ``Idiot's Guide To Solving Perl / CGI Problems'' et ``Perl CGIProgramming FAQ'' pour avoir des informations complementaires. Il est peu probable que ce probleme concerne DBI. Le guide ``Idiot's Guide To Solving Perl / CGI Problems'' peut etre trouve a : http://www.perl.com/perl/faq/index.html ainsi que ``Perl CGI Programming FAQ''. Lisez ces DEUX documents tres soigneusement! ---------------------------------------------------------------------------- 5.1 Puis-je faire de l'execution en parallele avec DBI? A la date de ce document ( voir en tete ), non. perl ne permet pas l'execution en parallele. Cependant, l'execution en parallele doit faire partie de la distribution perl de base a compter de la version 5.005, ce qui sous-entend que le support de l'execution en parallele pour DBI devrait suivre rapidement. Pour quelques exemples de code OCI pour Oracle ayant des instructions SELECT avec execution en parallele, voir : http://www.hermetica.com/technologia/oracle/oci/orathreads.tar.gz ---------------------------------------------------------------------------- 5.2 Comment manipuler des donnees BLOB avec DBI? A ecrire. ---------------------------------------------------------------------------- 5.3 Comment puis-je invoquer des procedures enregistrees avec DBI? En supposant que vous avez cree une procedure enregistree a l'interieur de la base de donnees cible, eg, une base de donnees Oracle, vous pouvez utiliser $dbh->do pour executer immediatement cette procedure. Par exemple, $dbh->do( "BEGIN someProcedure END" ); ---------------------------------------------------------------------------- 5.4 Comment puis-je recuperer les valeurs de retour de procedures enregistrees avec DBI? Contribution de Jeff Urlwin $sth = $dbh->prepare( "BEGIN foo(:1, :2, :3); END;" ); $sth->bind_param(1, $a); $sth->bind_param_inout(2, \$path, 2000); $sth->bind_param_inout(3, \$success, 2000); $sth->execute; N'oubliez pas d'effectuer un test d'erreur, strict! ---------------------------------------------------------------------------- 5.5 Comment puis-je creer ou supprimer une base de donnees avec DBI? La creation et la suppression de bases de donnees sont des concepts qui sont beaucoup trop abstraits pour etre supportes par DBI. Par exemple, Oracle ne supporte pas le concept de detruire une base de donnees du tout! Ainsi, dans Oracle, le serveur de base de donnees est essentiellement la base de donnees elle-meme alors que dans mSQL, le processus serveur s'execute tranquillement sans aucune base de donnees creee. C'est un probleme trop heterogene pour s'y attaquer. Quelques pilotes, cependant, supportent la creation et la suppression de bases de donnees a travers des methodes func privees. Il vous faut regarder dans la documentation des pilotes que vous utilisez pour verifier s'ils supportent de tels mecanismes. ---------------------------------------------------------------------------- 5.6 Comment puis-je valider ou annuler une instruction avec DBI? A ecrire. ---------------------------------------------------------------------------- 5.7 Comment les valeurs NULL sont-elles prises en compte par DBI? Les valeurs NULL dans DBI sont traitees comme la valeur undef. Des NULLs peuvent etre inseres dans les bases de donnees en tant que NULL, par exemple : $rv = $dbh->do( "INSERT INTO table VALUES( NULL )" ); mais lors d'une interrogation, les NULLs devront etre testes comme des undef. C'est un standard pour tous les pilotes. ---------------------------------------------------------------------------- 5.8 Qu'est-ce que c'est que ces histoires de methodes func? Une methode func est definie a l'interieur de DBI comme etant un point d'entree pour une fonctionnalite d'une base de donnees specifique, eg, la possibilite de creer ou supprimer des bases de donnees. L'invocation de ces methodes specifiques aux pilotes est simple. Par exemple, pour invoquer une methode createDatabase qui n'a qu'un seul argument, on ecrira : $rv = $dbh->func( 'argument', 'createDatabase' ); Les developpeurs de logiciels doivent cependant noter que ces methodes func ne sont pas portables entre SGDB. ---------------------------------------------------------------------------- Assistance et formation L'interface aux SGBD Perl5 est un logiciel LIBRE. IL EST DISTRIBUE SANS GARANTIE D'AUCUNE SORTE. Cependant, quelques organisations fournissent soit une assistance technique soit des programmes de formation pour DBI. L'auteur de ce document n'a aucune information sur la qualite de ces services (le traducteur non plus!). Les liens ci-dessous ne sont indiques qu'a titre de reference. ---------------------------------------------------------------------------- Assistance technique The Perl Clinic The Perl Clinic peut mettre en place des contrats commerciaux d'assistance pour Perl, DBI, DBD::Oracle et Oraperl. Cette assistance est effectuee par la compagnie pour laquelle Tim Bunce, auteur de DBI, travaille. Pour des informations complementaires sur leurs services, veuillez voir : http://www.perl.co.uk/tpc ---------------------------------------------------------------------------- Formation Aucun programme de formation n'est connu a ce jour. ---------------------------------------------------------------------------- Autres References Dans cette section, on trouvera des liens WWW divers pouvant presenter un interet pour les utilisateurs de DBI. Ils n'ont pas ete verifies et peuvent mener a des sites inconnus ou a des documents inexistants. http://www-ccs.cs.umass.edu/db.html http://www.odmg.org/odmg93/updates_dbarry.html http://www.jcc.com/sql_stnd.html ---------------------------------------------------------------------------- AUTEUR Alligator Descartes ---------------------------------------------------------------------------- COPYRIGHT Ce document est Copyright (c)1994-1997 Alligator Descartes, avec des parties Copyright (c)1994-1997 leurs auteurs originaux. Ce module est publie selon les conditions d'une licence 'Artistique' que vous pouvez trouver dans la distribution de perl. Ce document est Copyright (c)1997 Alligator Descartes. Tous droits reserves. La permission de distribuer ce document, en entier ou en partie, via email, Usenet, archives ftp ou http est accordee a condition que ce soit gratuitement, on a fait un effort raisonnable pour utiliser les versions les plus actuelles et tous les avis d'attribution et de copyright ont ete maintenus ( Se referer aux sections AUTEUR et COPYRIGHT ). Les demandes pour d'autres droits de distribution, y compris l'incorporation dans des produits commerciaux, tels que livres, articles de magazines ou CD-ROMs doit etre effectuee aupres de Alligator Descartes . ---------------------------------------------------------------------------- (c) 1995-97 Hermetica Alligator Descartes - Hermetica 1144.. PPGGAACCCCEESSSS -- UUnn GGUUII ppoouurr llaa ggeessttiioonn ddeePPoossttggrreeSSQQLL Il est deja inclus dans la distribution de PostgreSQL. Pour une copie plus recente, vous pouvez acceder au site web site +o +o Si vous avez des commentaires, des suggestions pour des ameliorations, n'hesitez pas a envoyer un courrier electronique a : teo@flex.ro Voici ce que dit la page d'accueil de pgaccess : PgAccess - une interface Tcl/Tk pour PostgreSQL La derniere version de PgAccess est 0.62 , du Samedi 25 Octobre 1997 Je pense qu'il y a eu quelques problemes au chargement de la bibliotheque libpgtcl. Je vous invite a lire la section speciale concernant libpgtcl Que fait PgAccess maintenant! Voici quelques images des fenetres de PgAccess : Fenetre principale, createur de tables, vue de table (interrogation), createur visuel d'interrogation . Tables - Ouverture de tables pour la visualisation, 200 enregistrements maximum ( modifiable dans le menu des preferences ) - redimensionnement d'une colonne en tirant la ligne verticale de la grille ( plus pratique a realiser a l'interieur meme de la table que dans l'en-tete) - texte encadre dans les cellules - disposition enregistree pour chacune des tables) - importation/exportation vers des fichiers externes (SDF,CSV) - possibilite de filtres (filtre de saisie, tel que (prix>3.14) - possibilites de tri (saisie manuelle de(s) champ(s) a trier) - edition en ligne - assistant generateur de table ameliore - edition de champ amelioree Requetes - definition, edition et enregistrement de "requetes definies par l'utilisateur" - enregistrement de requetes en tant que vues - execution des requetes - visualisation des resultats de requetes de type select - suppression et changement de nom de requete - NOUVEAU !!! Createur visuel de requetes avec possibilites de "glisser/deposer". Pour tous ceux d'entre vous qui ont l'extension pour Netscape Navigator de Tcl/Tk installee, vous pouvez le voir au travail en cliquant ici Sequences - definition de sequences, ainsi que leurs suppression et inspection Fonctions - definition, inspection et suppression de fonctions en langage SQL Sur la liste A FAIRE! - conception des tables (ajout de nouveaux champs, changement de nom, etc.) - definition de fonction - generateur de rapport - langage de script de base Informations complementaires concernant libgtcl Vous aurez egalement besoin de la bibliotheque d'interface de PostgreSQL a Tcl, disponible comme moduleTcl/Tk chargeable. Son nom est libpgtcl et le source est situe dans le repertoire PostgreSQL /src/interfaces/libpgtcl. Precisement, vous aurez besoin d'une bibliotheque libpgtcl qui soit "chargeable" a partir de Tcl/Tk. Ce qui est techniquement different d'un fichier objet chargeable PostgreSQL ordinaire, car libpgtcl est constituee d'un ensemble de fichiers objets. Sous Linux, on l'appelle libpgtcl.so. Vous pouvez telecharger a partir d'ici une version deja compilee pour les systemes Linux i386. La seule chose a faire est de copier libpgtcl.so dans le repertoire bibliotheque systeme (/usr/lib) et c'est tout. Une solution possible est de supprimer dans le source la ligne contenant load libpgtcl.so et de charger pgaccess.tcl non pas avec wish, mais avec pgwish (ou wishpg) le wish qui a ete lie avec la bibliotheque libpgtcl! De toute maniere, l'application devrait fonctionner sans problemes 1155.. OOuuttiill WWiinnddoowwss iinntteerraaccttiiff ddee ggeenneerraattiioonn ddee rreeqquueettee ppoouurr PPoossttggrreeSSQQLL ("Windows Interactive Query Tool" WISQL ou MPSQL) Il est identique au serveur de requete SQL de Microsoft WISQL! Il dispose d'un GUI agreable et d'un historique des commandes. Vous pouvez utiliser le coupe/colle ainsi que d'autres fonctionnalites sympathiques pour accroitre votre productivite. +o +o Email : keidav@whidbey.com +o in file tcl_syb/wisql.html +o +o Email : de@ucolick.org 1166.. OOuuttiill iinntteerraaccttiiff ddee ggeenneerraattiioonn ddee rreeqquueettee ppoouurr PPoossttggrreeSSQQLL -- IISSQQLL ISQL est destine aux terminaux fonctionnants en mode ligne de commande. C'est inclus dans la distribution et nomme PSQL. Il est tres similaire a Sybase ISQL, et a Oracle SQLplus. A l'invite unix tapez la commande 'psql' qui en retour vous affichera le caractere d'attente de commande: psql> . Tapez /h pour obtenir de l'aide sur les commandes utilisables. C'est tres convivial et d'utilisation facile. C'est aussi tres utile pour ecrire des scripts pour les interpreteurs de commandes Bourne, Korn et C-shells. 1177.. MMiissee eenn ppllaaccee ddee pplluussiieeuurrss mmaacchhiinneess PPoossttggrreeSSQQLL aavveecc uunn sseeuull mmoonnii-- tteeuurr Vous pouvez empiler plusieurs cpu et les connecter a un unique moniteur en utilisant un commutateur pour choisir la connexion avec une unite centrale particuliere. Ce qui economise de l'espace et evite l'utilisation de plusieurs ecrans(200 US dollars), claviers(60 dollars) et mulots(50 dollars) et evite aussi pas mal de pagaille. Veuillez consulter ces sites : +o (120 dollars/PC 8 ports) qui propose 'Server Switches' and 'Video only switches' +o +o +o Utilisez le moteur de recherche yahoo pour trouver d'autres compagnies en utilisant la cle de recherche 'Server Switches'. On trouvera ci-dessous un extrait du catalogue de networktechnic Inc Commandez maintenant, appelez le 800-742-8324 (appel gratuit a partir des USA) Pour recevoir notre catalogue, veuillez envoyer votre adresse par courrier electronique a : sales@networktechinc.com PILOTEZ PLUSIEURS PC's avec un seul clavier, ecran et mulot Ces commutateurs electroniques permettent de piloter jusqu'a 64 PC's avec un unique clavier, ecran et mulot. Son microprocesseur interne simule la presence constante du clavier, de l'ecran et du mulot pour chacun des PC's connectes. Fonctionnalites et Applications * Clavier, face avant ou commande a distance * utilisation de connecteurs de mulots 9 broches D Serial ou 6 broches miniDIN * utilisation de connecteurs de clavier 5 broches DIN ou 6 broches miniDIN * resolution video 1600x1200 sans degradation * Utilisation de cables standards * Boitier pour bureau ou pour montage en rack Specifications - Clavier * Tous les connecteurs dont femelles * 5 broches DIN ou 6 broches miniDIN * Permettent un redemarrage (boot) materiel ou logiciel de tous les PC's a chaque instant Controles - Boutons en face avant * Le toucher d'un bouton permet la connexion au PC correspondant * L'appui sur un bouton pendant plus de 0.5 secondes entraine le fonctionnement dans les modes SCAN, BROADCAST ou COMMAND * Les LEDs en face avant indiquent le mode d'operation du clavier * L'appui sur CTRL+* entraine le fonctionnement en mode COMMAND * Les modes SCAN, BROADCAST ou COMMAND sont disponibles Mulot * 9 broches D serie o Le commutateur NTI emule le mulot Microsoft serie pour tous les PC's o 9 broches D male pour mulot o 9 broches D femelle pour PC's * 6 broches miniDIN o Le commutateur NTI emule le mulot IBM PS/2 pour tous les PC's o Tous les connecteurs sont femelles Par cable, a distance * Optionnel--doit etre acquis separement * Fonctionnement identique a celui "Boutons en face avant" Information technique * Demander le manuel technique MAN025 Moniteur (ecran) - VGA * La bande passante est de 150 MHz * Resolution 1600X1200 sans degradation * Tous les connecteurs sont des connecteurs femelles Alimentation * 110 ou 220 VAC a 50 ou 60 Hz 1188.. OOuuttiill SSyysstteemmee ddee ssuuiivvii ddee PPrroobblleemmee//PPrroojjeett ppoouurr PPoossttggrreeSSQQLL Se trouve a l'url : +o 1199.. CCoonnvveerrssiioonn ddee ffiicchhiieerrss ddbbaassee ddbbff eenn ffiicchhiieerrss PPoossttggrreeSSQQLL Le programme dbf2msql fonctionne parfaitement avec mSQL et PostgreSQL. Vous pouvez le trouver a +o +o Ce programme a ete ecrit par Maarten Boekhold, Faculty of Electrical Engineering TU Delft, NL Computer Architecture and Digital Technique section M.Boekhold@et.tudelft.nl Vous pouvez egalement utiliser une methode python pour lire des fichiers dbf et les charger dans une base de donnees postgres. +o Voir 2200.. PPoossttggrreeSSQQLL 44GGLL ppoouurr lleess aapppplliiccaattiioonnss ddee bbaasseess ddee ddoonnnneeeess wweebb -- LLee ssyysstteemmee ddee ddeevveellooppppeemmeenntt AAppppGGEENN AppGEN peut etre telecharge de . On trouvera ci-dessous un extrait de la page d'accueil de AppGEN :- AppGEN est un langage de haut niveau de la quatrieme generation ainsi qu'un generateur d'application pour produire des applications destinees au World Wide Web (WWW). Ces applications sont typiquement utilisees a travers l'internet ou dans le cadre d'un reseau intranet d'entreprise. Les applications AppGEN sont implantees en scripts C respectants le standard Common Gateway Interface (CGI) utilise par la plupart des serveurs Web. Pour utiliser AppGEN il vous faudra disposer de :- PostgresSQL, systeme de gestion de base de donnees relationnel Un serveur web compatible CGI tel que HTTPD du NCSA D'un compilateur ansi C tel que GCC AppGEN est constitue des executables Unix (Linux) suivants :- +o defgen, qui produit une application cadre, de base, a partir de la structure logique des donnees. Ces applications sont capables d'ajouter, de mettre a jour, de supprimer et de rechercher les enregistrements d'une base de donnees tout en conservant automatiquement l'integrite referentielle de cette base. +o appgen, le compilateur AppGEN qui compile le code source appgen en code source C CGI executable et en documents formates HTML prets pour leur deploiement sur un serveur web. +o dbf2sql, un utilitaire de conversion de fichiers .dbf compatibles dBase III en scripts SQL executables. Ce qui permet de migrer les donnees stockees dans la plupart des bases de donnees DOS/Windows vers un serveur SQL tel que PostgresSQL. +o De plus, AppGEN comprend un ensemble de documents HTML , de fichiers GIF et d'applets Java qui sont utilises, a l'execution, par le systeme. Et, naturellement, comme pour tout bon logiciel, la totalite du code source est fournie. L'auteur, Andrew Whaley, peut etre conctacte a andrew@arthur.smuht.nwest.nhs.uk tous les commentaires ou suggestions concernant ce logiciel seront les bienvenus. 2211.. OOuuttiill ddee CCoonncceeppttiioonn//IImmpplleemmeennttaattiioonn ppoouurr SSGGBBDD WWeebb ppoouurr PPoossttggrreeSSQQLL -- EEAARRPP dans le repertoire 'pub/unix/earp'. On trouvera ci-dessous un extrait de la page d'accueil de EARP:- Le "Programme de Reponse Facilement Ajustable" ("Easily Adjustable Response Program" - EARP) cree par David Dougherty 2211..11.. EEAARRPP,, cc''eesstt qquuooii?? EARP est un outil de Conception/Implementation pour Base De Donnees Web, realise par-dessus le systeme de gestion de base de donnees Postgres95. Ses fonctionnalites comprennent: +o Un systeme de conception visuel. +o Une interface d'envoi de courrier electronique. (pouvant prendre en charge le courrier entrant et sortant) +o Un Mecanisme de Securite ameliore. +o Un pilote cgi. 2211..22.. IImmppllaannttaattiioonn L'implantation principale de EARP consiste en un binaire CGI qui s'execute sous le demon http pour fournir l'acces au serveur de base de donnees. Tous les outils de conception sont integres dans le pilote, aucune conception ne se fait sur le web. Les outils eux-memes requierent un navigateur graphique, la compatibilite des objets concus avec ces outils est independante de l'implantation, elle ne depend uniquement que des preferences de conception individuelles. 2211..33.. CCee ddoonntt vvoouuss aavveezz bbeessooiinn ppoouurr ffaaiirree ffoonnccttiioonnnneerr EEAARRPP EARP est sense fonctionner sur une grande variete de plates-formes avec peu de modifications sinon pas du tout. Les plates-formes pour lesquelles le fonctionnement est connu sont les suivantes: +o Solaris 2.5 +o Linux 1.2.13+ +o GNU C++ +o Postgres95 (Version 1.01 / 1.02) +o netsite server +o NCSA httpd +o GNU C++ +o Postgres95 (Version 1.01 / 1.02) +o NCSA httpd +o Apache httpd 2211..44.. NNoouuvveelllleess FFllaasshh La version courante (1.3) de Earp a ete concue au-dessus de la version de libpq livree avec Postgres95 v1.01/1.02. Si vous utilisez une version plus recente de Postgres, vous devez vous attendre a ce que le programme necessite quelques modifications pour fonctionner correctement. Dans la version de developpement (Earp 2.0), la prise en charge de libpq est en cours de prise en compte en tant que module, et de ce fait pourra supporter autant de versions de postgres que nous aurons de temps pour ecrire ces modules. La version de developpement est attendue, pour le public, aux alentours du milieu du printemps(97). 2211..55.. CCoommmmeenntt ffoonnccttiioonnnnee--tt--iill?? Une des fonctionnalites principales de EARP est d'utiliser une approche orientee objet pour produire des pages html qui s'interfacent a la base de donnees. La plupart des pages sont constituees de plusieurs objets. Chaque objet est produit par une sorte d'outil et recoit un nom, les objets sont alors lies ensembles et appeles en sequence par l'outil de gestion de pages. Les objets sont egalement reutilisables a l'interieur de plusieurs pages. Il existe des outils de base pour HTML, pour les Requetes, pour la saisie dans des formulaires, le formatage variable des requetes et des objets en entree, ainsi que pour lier des objets pour en former de nouveaux. On trouve egalement des outils plus avances tels que l'outil de courrier electronique et l'outil de creation de requetes en parallele. La gestion perfectionnee de la securite est une des autres fonctionnalites de EARP. L'acces aux differentes zones du systeme EARP peut etre limite par une grande variete de moyens. Pour faciliter cette securite perfectionnee, EARP effectue des controles a chaque connexion au systeme, et determine a quels "ids" et "groups" appartient l'agent qui se connecte. Les acces aux zones sont definis separement, et la combinaison des deux permet de decider si l'acces a une certaine zone de Earp est autorise. De plus , tout ce qui est requis pour realiser les fonctionnalites de securite se trouve dans un serveur http qui effectue une authentification de l'utilisateur minimale (ou meilleure). 2211..66.. QQuueellqquueess eexxeemmpplleess eenn lliiggnnee Partie integrante de l'aide au SGBD ICC Help Database, la Page du Catalogue de Recherche est un document EARP qui peut executer plusieurs requetes. Les boites de selection sont generees par le programme EARP a partir de listes dans la base de donnees. Comme autre exemple de ce que l'on peut faire avec EARP... vous pouvez maintenant voir la Liste des Objets de la Base de Donnees d'aide. La creation de ces trois interfaces m'a pris moins de quinze minutes. 2211..77.. OOuu ppuuiiss--jjee llee ttrroouuvveerr?? EARP est disponible via un ftp anonyme a dans le repertoire 'pub/unix/earp'. La version courante a la date de redaction de ce texte est 1.3.1 S'il vous plait, apres avoir recupere et mis en service EARP, envoyez moi un mot pour en decrire le succes ou les echecs. 2211..88.. DDooccuummeennttaattiioonn ddiissppoonniibbllee Toute la documentation a ete deplacee a la page index "User Docs and Tutorials" (Documentation Utilisateur et Cours). 2211..99.. LL''HHiissttooiirree dd''EEAARRPP Earp 0.1 a demarre en tant que programme a l'automne 1995. Je travaillais a la realisation d'un livre d'or accessible par le web, dynamiquement configurable. A ce moment la, il y avait tout un tas de programmes cgi faisant tous quelque chose de different et d'utile, agreges par un peu de colle SSI et un peu de programmation c. Je realisais alors que je faisais beaucoup de travail repetitif, et que la plupart des choses que je faisais devaient executer dans de nombreuses fenetres a la fois (netscape, emacs, shell, mail) alors que la mise au point etait rapidement devenue un cauchemar. A cette epoque mon ami et patron Don Michaels me contacta. Il etait interesse par l'automatisation d'une grosse partie de notre support utilisateur et par la tenue d'une base de donnees gerant l'historique des appels et des reponses. Peu de temps apres, j'avais termine le schema initial de ce qui est en train de devenir rapidement notre base de donnees d'aide. Seulement, je rechignais a l'idee de construire une base de donnees d'aide a partir de ce qui etait alors un ensemble tres primitif d'utilitaires. Lorsque les cours du printemps 96 debuterent, je demarrais quand meme le projet, principalement sous le coup de l'ennui, mais aussi parce que j'etais dans un cours d'architecture de base de donnees et que je voulais m'entrainer un peu les meninges. Peu de temps apres j'avais un prototype acceptable en etat de marche, ce qui rendit Don tres heureux car il avait renonce a l'idee de quelqu'un creant une base de donnees d'aide pour lui. (Le prototype tourne encore sur l'un de mes serveurs...(juin 96)) Le prototype faisait vraiment quelques choses tres interessantes, mais en avril, j'etais a nouveau decourage... A chaque fois que je desirais modifier quelque chose, j'entrais dans un lent processus de recompilation, ou je tombais sur un fichier texte particulierement distrayant. Je n'avais aussi aucun moyen d'utiliser le concept de building block si utile dans EARP... J'ai realise pas mal d'enormes coupes-colles. Vers la fin de l'annee scolaire je fus encore une fois decourage sur le deroulement des choses et decidais que ce dont j'avais besoin, c'etait d'un ensemble d'outils plus adaptes a ce que je faisais. De plus, je voulais aussi que mon prototype fonctionne sur un e VRAIE base de donnees relationnelle et je ne cherissais pas l'idee de recommencer tout ce travail d'acces codes en dur, de liens, et de methodes de sortie. J'eus un bref moment de repit, si l'on peut dire. Nous soutenions la Conference SUNY CIT et j'ai tellement ete occupe pendant une semaine et demi que je pris du recul par rapport a tout ce que j'avais ecrit sur le prototype de base de donnee d'aide excepte sur les idees que j'avais eu quand j'avais ecrit la serie d'utilitaires initiale et que ce qui m'irritait le plus etait l'etat actuel des choses. Peu de temps apres la conference, je commencais le prototype de la version actuelle de EARP(may96), en utilisant le SGBD relationnel postgres95 comme support. A la mi-juin, le prototype avait evolue en une suite integree de prototypes d'outils tout a fait seduisante, avec comme premier avantage de tous tourner en html, et de stocker leurs donnees d'initialisation dans la base de donnee. La plus grande partie de la deuxieme moitie de juin fut consacree a la mise au point du code et a l'utilisation de l'interface.( Pendant ces deux semaines j'ai accede plus de 5000 fois a notre serveur web.) A la fin juin, la plupart des bogues importants etaient chasses de EARP, et il y avait un nombre suffisant d'objets dans la "nouvelle" base de donnees d'aide que l'on pouvant en faire l'annonce officielle a notre equipe de support. A propos, j'ai egalement tenu un journal pendant le developpement de EARP et Don Michaels et moi presentons un papier decrivant la Base de Donnees d'Aide a la conference ACM/SIGUCCS a Chicago en Septembre de cette annee. 2222.. WWWWWW WWeebb iinntteerrffaaccee ppoouurr PPoossttggrreessSSQQLL -- ddbbeennggiinnee Un extrait de la page d'accueil de dbengine est donne ci-dessous:- dbengine est une interface Web plug 'n play pour Postgres95 creee par Ingo Ciechowski Version 0.82 alpha Documentation au 11/23/96 A propos de dbengine dbengine est une interface entre le WWW et Postgres95 qui permet un acces simple a n'importe quelle base de donnees existante en seulement quelques minutes. Ce petit programme Perl program est ne apres avoir essaye un tas de paquetages disponibles tels que AppGen, PHP-FI et d'autres. Alors, pourquoi ai-je, en quelque sorte, reinvente la roue ? Eh bien, PHP-FI offre une sorte de langage Perl dans vos documents, mais pas le vrai Perl alors que AppGen et wdb-p95 necessite la creation d'un fichier de configuration pour chacune de vos bases de donnees -- c'est un peu comme si vous deviez apprendre un nouveau metalangage avant de pouvoir commencer a travailler. C'est a ce moment que je commencais a me sentir plus a l'aise avec une petite applet Perl de mon cru... et maintenant mon dbengine est devenu un outil qui, je pense, est pret a etre partage avec les autres. A la difference des autres outils, vous n'avez pas a apprendre un langage de programmation particulier ou un langage de script pour commencer a utiliser dbengine. De plus, il n'y a pas a creer de fichier de configuration pour chaque base de donnees, et vous n'avez donc pas besoin de vous familiariser avec sa structure. Cependant - au cas ou vous voudriez profiter de toutes les possibilites de dbengine, ce serait une bonne idee de connaitre le langage Perl. Le systeme tout entier peut etre configure a l'aide de simples manipulations d'une base de donnees complementaire qui contient les informations de detail sur la maniere de visualiser vos acces a la base de donnees. Vous pouvez meme specifier des Champs Virtuels qui sont calcules en temps reel avant d'etre affiches a l'ecran. Licence dbengine est un logiciel libre selon les memes conditions que Perl. Lisez sa licence si vous n'etes pas sur de ce que vous pouvez ou ne pouvez pas faire. La derniere ligne indique que c'est une version plus gentille et plus moderee que celle de la licence GNU -- une de celle qui n'affecte pas votre travail si vous extrayez des parties de dbengine ou du paquetage pour l'inclure dans un produit commercial! 2233.. MMoodduullee AAppaacchhee WWeebbsseerrvveerr ppoouurr PPoossttggrreeSSQQLL -- NNeeooSSoofftt NNeeooWWeebbSSccrriipptt Apache est un serveur Web bien connu. On trouvera un module d'interface de PostgreSQL pour le serveur Web Apache a - Voici, ci-dessous, un extrait de la page d'accueil de NeoWebScript:- NeoWebScript est un langage de programmation qui permet d'inclure des programmes simples ou compliques dans des fichiers HTML. Quand une page HTML contenant un script NeoWebScript est appelee, le serveur Web , ayant le NeoWebScript active, execute le(s) script(s) inclus, produisant une page Web dont le contenu, personnalise, a ete cree par le programme. NeoWebScript est un moyen rapide, sure, facile a apprendre de creer des programmes interactifs puissants directement en code HTML dans des pages Web. Avec NeoWebScript, les compteurs, les formulaires de courrier electronique, "graffiti walls", livres d'or et suivi des visiteurs sont aises, meme pour un programmeur debutant. Regardez comment NeoWebScript se defend bien par rapport a PERL et JavaScript. NeoWebScript 2.2 vient de sortir! Le 24 juin 1997, NeoSoft rend disponible la version 2.2 de NeoWebScript 2.2, en l'integrant avec le nouveau serveur Apache 1.2.0 . Si vous utilisez un serveur web ayant NeoWebScript installe et que vous vouliez commencer a l'utiliser, il y a un tout un tas d'Informations Utilisateur disponibles. Les reponses de bases pour demarrer se trouvent dans la "FAQ Nouvel Utilisateur". Des didacticiels vous guident dans l'apprentissage du langage, alors que des Demonstrations vous apportent des applications toutes faites que vous pouvez telecharger et adapter. Le document "Commandes et les Variables" constitue la reference complete du langage, et celui de Maintenance contient des conseils et des astuces pour vous aider a resoudre tous les problemes. Au cas ou vous souhaiteriez installer NeoWebScript sur votre serveur web, votre webmestre doit lire notre "FAQ Syso" pour se lancer. Le document "Theorie de fonctionnement" explique comment NeoWebScript fonctionne, celui d'Installation est un guide pas a pas des operations a effectuer. Le guide de Gestion traite de la maniere de configurer et de faire fonctionner le serveur, celui de Tests permet de verifier le fonctionnement correct de NeoWebScript, enfin, celui de Maintenance traite des problemes de serveur. He, attendez une minute direz-vous, combien voulez-vous en contrepartie d'un tel logiciel, hein? Il n'y a aucuns frais pour l'utilisation de NeoWebScript-2.2 que ce soit pour votre ISP, votre intranet, ou votre extranet. Vous pourrez voir un licence complete quand vous vous enregistrerez pour telecharger le logiciel, mais l'essentiel est que nous aimerions recevoir la somme monstrueuse de $ 99 si vous desirez l'inclure dans votre propre produit ou l'utiliser dans un serveur commercial (eg. SSL). NeoWebScript est un module pour le serveur web Apache qui vous permet d'inclure , en tant que langage de script, pour vos pages web, le langage de programmation Tcl/Tk . Il a ete invente par Karl Lehenbauer, Directeur Technique chez NeoSoft, et documente, renforce et etendu par les programmeurs de NeoSoft et par des redacteurs techniques. Le serveur Apache est le serveur web le plus populaire au monde, totalisant 42 %des 1 044 163 sites interroges lors de l'etude "Netcraft Web Server" de Mai 1997. La deuxieme plus grande valeur enregistree concerne les differents serveurs Microsoft, totalisant legerement plus de 16 %, soit une difference d'environ 270,000 serveurs. Tcl/Tk est un langage de script puissant, libre et multi-plateformes developpe par le Dr. John Ousterhout, maintenant "Sun Distinguished Engineer" (n.d.t. : distinction honorifique de la Cie Sun). Selon ses propres termes : "Tcl/Tk permet aux developpeurs de logiciels de realiser un travail dix fois plus rapidement qu'avec des outils bases sur C ou C++. C'est aussi un grand langage de synthese permettant de faire travailler ensemble des applications existantes en les rendant plus graphiques et orientees Internet." Avec une communaute de developpement de plus de 500 000 personnes de par le monde et des milliers d'applications commerciales, Sun vient juste d'annoncer la creation d'un nouveau groupe de travail nomme SunScript, pour soutenir cette communaute avec un environnement de developpement integre et pour developper une suite de produits pour etablir un lien entre Tcl le Web et Java. Karl Lehenbauer, Fondateur et Directeur Technique de NeoSoft, a participe au developpement de Tcl/Tk des le tout debut. Avec Mark Diehkans, ils sont les auteurs de Tcl etendu (Extended Tcl), connu egalement sous le nom de TclX ou NeoSoft Tcl, qui constitue un ensemble puissant d'extensions au langage. Beaucoup des commandes courantes essentielles de Tcl proviennent de Tcl etendu, et furent introduites dans le langage par le Dr. Ousterhout. NeoSoft Inc., 1770 St. James Place, Suite 500, Houston, TX 77056 USA 2244.. HHEEIITTMMLL,, eexxtteennssiioonn,, ccoottee sseerrvveeuurr ddee HHTTMMLL eett llaannggaaggee 44GGLL ppoouurr PPoosstt-- ggrreeSSQQLL Heitml est un autre outil d'interfacage de postgres avec le monde du world wide web. Pour plus de details contacter Helmut Emmelmann H.E.I. Informationssyteme GmbH Wimpfenerstrasse 23 Tel. 49-621-795141 68259 Mannheim Germany Fax. 49-621-795161 +o E-mail Mr.Helmut Emmelmann at emmel@h-e-i.de +o Heitml site web principal +o Heitml site web secondaire Heitml est a la fois une extension, cote serveur, de HTML et un langage de la quatrieme generation (4GL). Avec lui, on peut ecrire des applications web dans un style HTML et en utilisant de nouvelles balises de style HTML. heitml (prononce "H-ail"-TML) est une extension de HTML et un langage de quatrieme generation complet permettant aux Applications utilisant le web d'interagir avec des donnees stockees dans des bases de donnees SQL, sans meriter l'ecriture de scripts CGI complexes. heitml etend HTML cote serveur, convertissant de maniere dynamique les fichiers ".hei" au format HTML et ainsi, les rendant compatibles avec n'importe quel butineur web. Il englobe la syntaxe simple et familiere de HTML et apporte un large assortiment de Balises et de Bibliotheques predeveloppees pour prendre en charge les taches qui auparavant necessitaient CGI. De meme que XML, heitml permet l'utilisation de balises definies par l'utilisateur. Avec heitml les marqueurs definis par l'utilisateur peuvent etre traduits en HTML et envoyes a un butineur. heitml est destine a la fois aux concepteurs HTML et aux programmeurs professionnels. Les concepteurs HTML peuvent utiliser les Balises heitml pour fabriquer des pages web dynamiques, des acces aux bases de donnees SQL ou creer des applications web completes. On peut creer des Compteurs, des bases de donnees d'inscriptions, des formulaires de recherche, des formulaires de courrier electronique ou des menus hierarchises en utilisant simplement des Balises de style HTML predeveloppees que l'on trouve dans les nombreuses Bibliotheques de Composants. Pour les programmeurs, heitml inclut un langage de quatrieme generation complet en HTML (e.g. , , et Balises), plus un evaluateur d'expression puissant pour les types de donnees entiers, reels, booleens chaine de caracteres et tuple. Les tuples ont une reference semantique comme dans les langages orientes objets mod- ernes et sont stockes sur un tas. Les variables heitml y compris toutes les structures de donnees complexes stockees sur le tas conser- vent leur valeur de page en page par l'utilisation du Mode Session. Il vous est possible de definir vos propres balises ou vos balises d'environnement et meme de redefinir les balises HTML. Avec heitml il devient possible de - - - developper des Sites Web de maniere structuree et modulaire, tout en reduisant de facon drastique la surcharge due a la maintenance. - - - developper des Sites Web intelligents et interactifs, dont le contenu s'adapte dynamiquement aux besoins de l'utilisateur. - - - de visualiser le contenu de bases de donnees SQL sans autre programmation que l'utilisation de notre bibliotheque de Balises predefinies "dba". - - - de developper des applications de bases de donnees complexes et de Catalogue d'Achat en utilisant les Variables Session heitml tourne sous Linux avec n'importe quel Serveur Web utilisant l'interface CGI, et il est particulierement rapide (mis a part la surcharge due a CGI) avec le Serveur Web APACHE (version 1.1.1, 1.1.3, ou 1.2.4) en utilisant l'API apache. Actuellement MSQL (Version 1 et 2), PostgreSQL (Version 6), mysql, et les bases de donnees yard sont supportes. heitml tourne sous Linux, BSDi, Solaris et SunOS, de meme que sous Windows NT avec CGI, ISAPI et ODBC et Windows 95. heitml (sous linux) est libre pour la recherche, et pour une utilisation privee et non commerciale. Les Sites Web commerciaux doivent payer une licence. La version totalement operationnelle de heitml est disponible pour une periode d'essai et peut etre telechargee librement. (Notez, cependant, que chaque page Web ".hei" que vous developperez affichera un message indiquant qu'il s'agit d'une version a usage non commerciale. Apres enregistrement, vous recevrez une cle pour effacer ce message sans avoir a reinstaller le programme.) Les nouvelles fonctionnalites de la version 1.2 sont - - - Bibliotheque de Composants pour des Formulaires de Recherche dans un Base de Donnees, menus hierarchises d'ouverture et de fermeture, formulaires de courrier electronique - - - Le Mode Session a ete reconcu et ameliore pour conserver toutes les variables (y compris le tas tout entier) au travers des differentes pages. Cela signifie que les donnees, de n'importe quelle taille sont conservees a l'interieur d'une session. Ceci offre l'opportunite d'un champ plus large pour creer de nouvelles applications, e.g. stockage complet des resultats d'une interrogation dans la memoire de la session. - - - Les instructions d'installation, la documentation et les bibliotheques d'exemples ont ete augmentees de maniere significative, un cours d'autoformation a ete ajoute - - - Des balises pour executer des commandes shell et pour envoyer des courriers electronique ont ete ajoutees - - - Le support du formatage d'impression et de la mise au point. heitml affiche votre code source en couleurs dans votre butineur et signale les erreurs de facon intuitive. En cas d'erreur a l'execution, toutes les structures de donnees internes sont affichees dans le butineur en indiquant et preservant leurs positions dans le code source original. - - - Diverses nouvelles variables serveur et fonctions integrees ont ete ajoutees - - - En mode production, heitml collecte maintenant des informations completes sur les erreurs survenues lors de l'acces, par des utilisateurs, a votre site. Voici ce que dit la page d'accueil de heitml - heitml (prononcer "H-ail"-TML) etend et augmente de facon significative les fonctionnalites de HTML grace aux balises definissables et aux possibilites completes de programmation. Ce qui permet de creer simplement des applications au contenu dynamique et orientees bases de donnees dans le monde HTML, sans CGI et sans scripts externes ou langages de programmation. Cela signifie que vous, en tant qu'auteur HTML, vous pouvez inclure des applications dans vos pages web, simplement, en utilisant quelques nouvelles balises sans CGI et sans programmation. D'un autre cote, comme utilisateur avance ou comme programmeur vous pouvez creer et programmer de puissantes bibliotheques de balises. Cette approche rend heitml souhaitable a la fois pour les utilisateurs nouveaux de HTML et pour les programmeurs professionnels. heitml tourne sur le serveur web et genere dynamiquement du HTML, aussi heitml est compatible avec les standards internet et avec n'importe quel butineur web. Il permet un acces total aux bases de donnees tout en evitant a l'utilisateur toute la complexite inutile de CGI. heitml a ete developpe selon les plus recents criteres en matiere de construction de compilateurs et de systemes transactionnels. Les pages heitml sont developpees exactement de la meme facon que les pages HTML, a l'aide d'un editeur de texte ou d'un editeur HTML, et placees comme d'habitude sur le serveur web. Cependant, maintenant, les pages peuvent contenir des balises heitml dynamiques et des acces a des bibliotheques de balises. Vous pouvez utiliser ces balises pour acceder a une base de donnees, pour creer un contenu dynamique, pour envoyer des courriers electronique, et meme pour creer de puissantes applications telles que les bases de donnees d'inscriptions ou de systemes d'achats. Les nouveaux venus a HTML et les programmeurs professionnels seront stupefaits de la vitesse et de la facilites avec lesquelles il peuvent concevoir des applications passionnantes telle que notre Livre d'Or Interactif sans necessiter la complexite et l'apprentissage difficiles des scripts CGI, simplement en utilisant les outils fournis dans notre bibliotheque dba. heitml est accompagne d'un large eventail de bibliotheques de balises, pour creer des livres d'or, des applications de maintenance de bases de donnees, des formulaires puissants de courrier electronique ou de structuration de votre site web a l'aide de menus hierarchiques. Ces outils sont prets a etre utilises, il suffit simplement d'ajouter les balises correspondantes a votre site web. En tant que programmeur experimente, vous pouvez pleinement utiliser l'architecture dynamique persistante de tuple d'heitml : heitml n'est pas simplement un langage de script a typage dynamique, avec evaluateur d'expression, procedures recursives et capacites de passage de parametres etendues, mais il apporte aussi des possibilites de tuples persistants dynamiques pour conserver automatiquement des donnees de session de n'importe quelle taille. heitml a tellement de nouvelles possibilites et d'usages que c'est impossible de les decrire tous dans une simple page web. Pour cette raison, nous avons concu ce site Web de maniere a fournir soit une simple vue d'ensemble du produit, soit a fouiller aussi profondement que vous le desirez dans les "tenants et aboutissants" du langage. Quelle que soit l'approche que vous choisirez, nous pensons que vous trouverez que heitml a beaucoup a offrir, et nous esperons que vous serez d'accord pour trouver que reellement "il porte le monde du World Wide Web a un niveau plus eleve!" Le menu, sur le cote gauche de l'ecran vous aidera a naviguer dans notre Site Web Site de maniere organisee et methodique, mais vous pouvez aussi utiliser notre Menu Rapide (Quick Menu) pour sauter directement a n'importe quelle page avec un seul clic sur le mulot. Si vous visitez ce Site pour la premiere fois, nous vous suggerons d'essayer le Livre d'Or Interactif d'heitml pour avoir une demonstration vraiment impressionnante de la facon dont heitml peut rendre vos Pages Web plus interactives. Si vous signez notre Livre d'Or, vous pouvez nous laissez vos commentaires ou nous parler de votre Site Web favori en utilisant les commandes de formatage de HTML. C'est comme si vous creiez votre propre page Web privee et que vous la voyiez publiee immediatement! La section traitant des Fonctionnalites de heitml Features fourni un Sommaire Rapide de ses Fonctionnalites et de ses Avantages, de meme que des Pages destinees a repondre aux besoins specifiques et aux questions des Concepteurs et des Programmeurs. Notre Guide du Langage offre un didacticiel, en ligne, qui montre, de maniere pratique, quelques unes des facons dont vous pouvez utiliser heitml pour developper, ameliorer et simplifier vos Pages Web et vos Applications. Le document Reference du Langage est destine a ceux qui cherchent une information specifique sur la syntaxe, la structure, et l'utilisation des differents elements du langage. Cependant, ce pourrait etre une bonne idee pour tout le monde de lire la Page concernant la Conception Generale qui offre une vue d'ensemble sur les types de problemes specifiques pour lesquels heitml a ete concu afin d'y apporter une solution. Naturellement, vous voudrez savoir si heitml tourne sur le Systeme d'Exploitation specifique, le Serveur Web, ou le SGBD SQL que vous utilisez, vous trouverez toutes ces informations dans notre section des Plates-formes Supportees. Enfin, nous vous invitons a Telecharger une copie d'essai du programme pour l'utiliser sur votre propre systeme. Nous sommes surs que vous apprecierez cette "methode d'essai avant achat", et nous sommes a l'ecoute de tout retour d'informations que vous voudrez bien nous donner. (c) 1996-1997 H.E.I. Tous droits reserves. (All Rights Reserved) 2255.. PPHHPP//FFII LLaannggaaggee ddee ssccrriipptt ccoottee sseerrvveeuurr,, aavveecc HHTTMMLL iinntteeggrree,, ppoouurr PPoossttggrreeSSQQLL Outil d'Interfacage WWW Pour les questions envoyer un courrier electronique a : rasmus@lerdorf.on.ca On trouvera ci-dessous un extrait de la page d'accueil de PHP/FI :- PHP/FI est un langage de script cote serveur, avec langage HTML integre. Il vous permet d'ecrire des scripts simples directement dans vos fichiers .HTML a la maniere JavaScript, sauf que, a la difference de JavaScript, PHP/FI n'est pas dependant du butineur utilise. JavaScript est un langage, cote client, avec HTML integre alors que PHP/FI est un langage cote serveur. PHP/FI est similaire, dans son concept, au produit LiveWire Pro pour Netscape. Si vous en avez les moyens, vous utilisez le serveur du commerce Netscape et l'un des systemes d'exploitation supportes, et vous jetterez probablement un oeil sur LiveWire Pro. Si vous preferez un logiciel libre, evoluant rapidement, qui est disponible avec la totalite de son code source, vous apprecierez probablement PHP/FI. 2255..11.. FFoonnccttiioonnnnaalliitteess pprriinncciippaalleess Support de CGI Standard, FastCGI et du module Apache. Comme programme CGI standard, PHP/FI peut etre installe sur n'importe quelle machine Unix sur laquelle tourne n'importe quel serveur web Unix. Avec le support du nouveau standard FastCGI, PHP/FI peut trouver avantage des gains de vitesse apportes par ce mecanisme. Comme module Apache, PHP/FI devient une alternative extremement puissante et brillante a la programmation CGI. +o Enregistrement des acces Avec les possibilites d'enregistrement des acces de PHP/FI, les utilisateurs peuvent entretenir leur propre compteur d'acces et l'enregistrer. Il n'utilise en aucune facon les fichiers de d'enregistrement des connexions du systeme central, et il permet un suivi des acces en temps reel. Le Script du Visualisateur de Connexions fournit un resume rapide des acces a un ensemble de pages possedees par un utilisateur individuel. De plus, le paquetage peut etre configure pour generer un pied de page, sur chaque page, qui montre l'information sur les acces. Regardez au bas de cette page pour en avoir un exemple. +o Controle d'acces Un ecran de configuration integre, base sur le web, permet la configuration du controle des acces. Il est possible de creer des regles d'acces pour toutes ou quelques unes des pages web possedees par une certaine personne qui met diverses restrictions sur qui peut voir ces pages et comment elles seront vues. Les pages peuvent etre protegees par un mot de passe, completement interdites, a connexion desactivee et l'acces base sur le domaine du client, le butineur, l'adresse de courrier electronique ou meme le document auquel on se refere. +o Support de Postgres Postgres est un SGBDR (RDBMS) avance libre. PHP/FI supporte les requetes Postgres95 et PostgreSQL SQL incluses directement dans les fichiers .html. +o RFC-1867 Support du telechargement de fichier Le telechargement de fichier est une nouvelle fonctionnalite de Netscape 2.0. Il permet aux utilisateurs de telecharger des fichiers vers le serveur web. PHP/FI realise le decodage Mime reel pour faire ce travail et fournit aussi le cadre additionnel pour faire quelque chose d'utile avec le fichier telecharge une fois que celui-ci a ete recu. +o Controle d'authentification base sur HTTP PHP/FI peut etre utilise pour creer des mecanismes d'authentification personnalises bases sur HTTP pour le serveur web Apache. +o Variables, Tableaux, Tableaux associatifs PHP/FI supporte des variables typees, des tableaux et meme des tableaux associatifs a la Perl. Ils peuvent etre passes d'une page web a l'autre en utilisant les methodes GET ou POST. +o Conditions, Boucles Tant que (While) PHP/FI possede un langage de script aux fonctionnalites completes de style C. Vous disposez des instructions de tests conditionnels if/then/elseif/else/endif ainsi que des boucles while et des instructions switch/case pour controler l'ordre logique et la maniere dont les pages html doivent etre affichees. +o Expressions Regulieres etendues Les expressions regulieres sont tres utilisees pour le filtrage, le remplacement de sequences et les manipulations generales de chaines de caracteres. PHP/FI supporte toutes les operations communes sur les expressions regulieres. +o Controle de l'En-tete HTTP brute La possibilite d'envoyer a partir de pages web des en-tetes HTTP brutes personnalisees en fonction d'une condition est essentielle pour creer un site web de haut niveau. Un usage frequent est l'envoi d'un emplacement: en-tete URL pour rediriger le client appelant vers une autre URL. Il peut aussi etre utilise pour stopper le stockage ou manipuler la derniere mise a jour de l'en tete de pages. +o Creation d'images GIF a la volee PHP/FI prend en compte la bibliotheque d'image GD de Thomas Boutell ce qui offre la possibilite de generer des images GIF a la volee. +o Prise en charge du mode securite ("Safe Mode") ISP PHP/FI prend en charge un "Mode de Securite" exceptionnel qui permet d'avoir de multiples utilisateurs executant des scripts PHP en toute securite sur le meme serveur. +o C'est Libre! Pour finir, et c'est un point essentiel. Le paquetage est entierement libre. Il est sous les conditions de la licence GPL qui vous permet d'utiliser ce logiciel pour n'importe quel objectif, commercial ou autre. Reportez-vous au document de la Licence Publique GNU pour des renseignements detailles. 2255..22.. CCrreeddiittss * De grandes parties de ce code ont ete developpees a et pour l'universite de Toronto. De grands Mercis a Lee Oattes du Departement de Developpement des Reseaux a l'universite pour ses critiques constructives permanentes. * Le code de prise en charge de Postgres95 a ete ecrit par Adam Sussman asussman@vidya.com * d'autres, innombrables, ont participe aux tests et a la mise au point du paquetage. PHP/FI Version 2.0 2255..33.. BBrreeff HHiissttoorriiqquuee PHP a commence sa vie comme simple petite enveloppe cgi ecrite en Perl. Je l'ai ecrit en un apres-midi, dans une periode entre deux contrats, alors que j'avais besoin d'un outil rapide pour avoir une idee de la personne qui etait en train de lire mon curriculum vitae en ligne. Je n'avais eu l'intention de le voir utiliser en dehors de mon propre usage. Le serveur web sur lequel j'avais mon curriculum vitae etait extremement surcharge et avait des problemes constants de creation de processus. Je reecris le petit programme Perl en C pour me debarrasser de la surcharge considerable generee par la creation d'un processus d'execution du programme Perl a chaque fois que mon curriculum vitae etait consulte. Par la suite d'autres personnes, sur le meme serveur web, prirent connaissance de mon petit programme et me demanderent s'ils pouvaient l'utiliser. Alors, comme cela devait arriver, ils commencerent a me demander plus de fonctionnalites. J'ajoutais plus de fonctionnalites et finalement constituais une semi-distribution en y incluant une documentation, une liste de diffusion et une FAQ. Le nom de ce paquetage etait "Outils pour une Page d'Accueil Personnelle" (Personal Home Page Tools), nom qui devint plus tard "Kit de Construction de Page d'Accueil Personnelle" (Personal Home Page Construction Kit). A la meme epoque, je commencais a m'amuser avec les bases de donnees et j'ecrivis un outil pour inclure facilement des requetes SQL dans des pages web. C'etait fondamentalement un autre petit programme CGI qui analysait les requetes SQL et facilitait la creation de formulaires et de tables bases sur ces requetes. Cet outil fut appele FI "Interpreteur de Formulaire" (Form Interpreter). La version 2.0 PHP/FI est une reecriture complete de ces deux paquetages combines pour former un simple programme. il a maintenant evolue au point de devenir un simple langage de programmation integre dans les fichiers HTML. L'acronyme original, PHP, lui est reste. Il n'est plus reellement approprie. PHP/FI est aujourd'hui plus utilise pour mettre en place des sites web entiers que pour de petites pages d'accueil personnelles. Quel que soit son nom, il elimine le besoin de recourir a de nombreux petits programmes cgi Perl en permettant d'inserer de simples scripts directement dans vos fichiers HTML. Ceci ameliore les performances globales de vos pages web puisque la surcharge due au lancement de processus Perl successifs a ete eliminee. La gestion de larges sites web a egalement ete facilitee en placant tous les composants d'une page web dans un fichier html unique. En incluant le support de differentes bases de donnees, il devient trivial de developper des pages web mettant en oeuvre des bases de donnees. Nombreux sont ceux qui trouvent que cette integration est plus facile a gerer que d'essayer de creer des fichiers HTML et CGI separes. Tout au long de cette documentation, toute reference a PHP, FI ou PHP/FI traite de la meme chose. La difference entre PHP et FI est seulement conceptuelle. Les deux sont construits a partir de la meme distribution du code source. Lorsque je construit le paquetage sans aucun support de connexion d'acces ou de restriction d'acces, je nomme mon binaire FI. Quand je le construit avec ces options, je l'appelle PHP. 2255..44.. BBoonn,, qquuee ppuuiiss--jjee ffaaiirree aavveecc PPHHPP//FFII?? La premiere chose que vous allez noter, si vous faites tourner une page par l'intermediaire de PHP/FI, c'est qu'il ajoute un pied de page vous informant du nombre d'acces a votre page (si vous incluez le support des connexions d'acces dans votre binaire). C'est seulement un tout petit exemple de ce que PHP/FI peut faire pour vous. Il joue egalement le role tres important d'interpreteur de formulaire cgi, d'ou la partie FI de son nom. Par exemple si vous creez un formulaire dans l'une de vos pages web, vous avez besoin de quelque chose pour traiter l'information contenue dans ce formulaire. Meme si vous desirez simplement passer l'information a une autre page web, vous aurez besoin d'un programme cgi pour le faire. PHP/FI facilite grandement le processus de prise en charge des donnees du formulaire pour en faire quelque chose. 2255..55.. UUnn ssiimmppllee eexxeemmppllee Supposons que vous ayez le formulaire :
Votre fichier display.html doit contenir quelque chose du genre : < ?echo "Hi $ name, vous avez $ age ans! " > C'est aussi simple que cela! PHP/FI cree automatiquement une variable pour chaque champ de saisie de votre formulaire. Vous pouvez alors utiliser ces variables dans le fichier ACTION URL. L'etape suivante, apres avoir vu comment utiliser ces variables, est de commencer a jouer avec quelques balises de gestion du deroulement logique de vos pages. Par exemple, si vous voulez afficher differents messages dependants de des informations entrees par l'utilisateur, vous pouvez utiliser la logique si/alors (if/else). Dans notre exemple ci-dessus, on peut afficher differentes choses dependant de l'age entre par l'utilisateur en modifiant notre fichier display.html en : 50); echo "Hi $name, vous etes un fossile!

"; elseif($age>30); echo "Hi $name, vous etes tres vieux!

"; else; echo "Hi $name."; endif; > PHP/FI fournit un langage de script tres puissant qui peut faire beaucoup plus que ce qui est expose dans l'exemple ci-dessus. Regardez la section sur le langage de Script PHP/FI pour des informations complementaires. Vous pouvez egalement utiliser PHP/FI pour configurer qui a le droit d'acceder a vos pages. Ceci est effectue en utilisant l'ecran de configuration inclus. Par son intermediaire , vous pourrez, par exemple, specifier que seulement les gens appartenant a un certain domaine seront autorises a voir vos pages, vous pouvez egalement creer une regle protegeant certaines pages par un mot de passe. Voir la section Controle d'Acces pour plus de details. PHP/FI est egalement capable de recevoir des fichiers telecharges par n'importe quel butineur conforme a la norme RFC-1867. Cette fonctionnalite permet aux gens de telecharger egalement des fichiers de texte ou binaire. Avec le controle de PHP/FI et les fonctions logiques, vous disposez d'un controle total sur qui est autorise a telecharger un fichier et sur ce que l'on peut faire de ce fichier une fois telecharge. Voir la section Telechargement de fichier pour de plus amples details. PHP/FI supporte le paquetage Postgres95. Il supporte les requetes SQL incluses dans vos fichiers .HTML. Consultez la section Support Postgres95 pour plus d'informations. PHP/FI supporte egalement le paquetage du SGBD mysql. Il supporte les requetes SQL incluses dans vos fichiers .HTML. Consultez la section Support mysql pour plus d'informations. 2255..66.. RReeddiirreeccttiioonn CCGGII Notes Apache 1.0.x Une bonne maniere de faire tourner PHP/FI est d'utiliser un module de redirection cgi avec le serveur Apache. Veuillez noter que vous n'avez pas a vous soucier des modules de redirection si vous utilisez la version module Apache de PHP/FI. Deux de ces modules de redirection sont disponibles. L'un est developpe par Dave Andersen angio@aros.net et est disponible a ftp://ftp.aros.net/pub/util/apache/mod_cgi_redirect.c et l'autre arrive inclus avec Apache et est appele mod_actions.c. Ces deux modules sont extremement similaires. Ils different tres legerement dans leur utilisation. Les deux ont ete testes et fonctionnent avec PHP/FI. Mise en garde importante: a la date de cette redaction (Apr.20/96), la version courante officielle (1.0.5) a de severes limitations qui empechent les requetes de redirection cgi d'avoir des donnees ??? post-method data associees. J'ai etudie ce problemes et l'ai resolu dans ma version d'Apache. Il y a un colmatage officiel dans les Fichiers Archives de la Page d'Accueil. Une autre mise en garde particulierement importante au sujet d'Apache 1.0.x est qu'il n'aligne pas correctement les types doubles sur la plupart des architectures. Vous decouvrirez d'etranges erreurs de bus provenant de votre httpd en utilisant mod_php. Comme solution, soit vous passez a la version Apache 1.1, soit vous editez le fichier source Apache alloc.c. Dans ce fichier vous trouverez le morceau de code suivant : union align { /* Types which are likely to have the longest RELEVANT alignment * restrictions... we don't do much with doubles. */ char *cp; void (*f)(); long l; FILE *fp; }; Il vous faudra ajouter un type double a ce source et recompiler votre serveur Apache. Le morceau de code correct est : union align { /* Types which are likely to have the longest RELEVANT alignment * restrictions... we don't do much with doubles. */ char *cp; void (*f)(); long l; FILE *fp; double d; }; Regardez dans la documentation Apache sur la maniere d'ajouter un module. En general vous ajoutez le nom de module dans un fichier appele Configuration. La ligne a ajouter si vous voulez utiliser le module mod_actions est : Module action_module mod_actions.o Si vous envisagez d'utiliser le module mod_cgi_redirect.c ajoutez cette ligne : Module cgi_redirect_module mod_cgi_redirect.o Puis compilez votre httpd et installez-le. Pour configurer la redirection cgi il vous faudra soit creer un nouveau type mime dans votre fichier mime.types soit utiliser la commande AddType dans votre fichier srm.conf pour ajouter le type mime. Le type mime a ajouter doit etre quelque chose comme : application/x-httpd-php phtml Si vous vous appretez a utiliser le module mod_actions.c il vous faudra ajouter la ligne suivante dans votre fichier srm.conf: Action application/x-httpd-php /cgi-bin/php.cgi Si vous vous appretez a utiliser mod_cgi_redirect.c vous devrez ajouter cette ligne a srm.conf : CgiRedirect application/x-httpd-php /cgi-bin/php.cgi N'essayez pas d'utiliser en meme temps mod_actions.c et mod_cgi_redirect.c . Une fois que vous avez l'un de ces modules de redirection cgi installe et configure correctement, vous pouvez specifier que vous voulez qu'un fichier soit filtre par php/fi en mettant simplement l'extension .phtml au fichier. De plus, si vous ajoutez index.phtml a votre ligne de configuration DirectoryIndex dans votre fichier srm.conf alors la page de plus haut niveau d'un repertoire sera automatiquement filtree par php si vous appelez votre fichier index index.phtml. HTTPD Netscape Vous pouvez rediriger automatiquement les requetes pour des fichiers ayant une extension donnee de facon a ce qu'ils soient pris en compte par PHP/FI en utilisant le module de Redirection du Serveur CGI Netscape. Ce module est disponible dans le Fichier Archives de la Page d'Accueil de the PHP/FI. Le fichier LIZSEZ_MOI (README) dans le paquetage explique clairement comment le configurer pour l'utiliser avec PHP/FI. HTTPD NCSA Actuellement NCSA ne supporte pas les modules, donc, pour effectuer une redirection cgi avec ce serveur, il vous faudra modifier le code source de votre serveur. Un colmatage pour faire cela avec NCSA 1.5 est disponible dans le fichier archives de PHP/FI. 2255..77.. LLaanncceerr PPHHPP//FFII aa ppaarrttiirr ddee llaa lliiggnnee ddee ccoommmmaannddee Si vous fabriquez la version CGI de PHP/FI, vous pouvez l'utiliser simplement a partir de la ligne de commande, en tapant: php.cgi nom_de_fichier ou nom_de_fichier est le fichier que vous voulez filtrer. Vous pouvez egalement creer des scripts PHP/FI autonomes en faisant ressembler la premiere ligne de votre script a quelque chose comme : #!/usr/local/bin/php.cgi -q L'option "-q" supprime l'impression des en-tetes HTTP. Vous pouvez vous passer de cette option si vous le desirez. 2266.. IInntteerrffaaccee PPyytthhoonn ppoouurr PPoossttggrreeSSQQLL PyGres95 est une interface pour PostgreSQL. Il est disponible a On trouvera ci-dessous un extrait de la page d'accueil de PyGres95:- PyGres - v1.0b : module Postgres95 pour Python PyGres95, version 1.0b Une interface Python pour la base de donnees Postgres95. Ecrit par Pascal Andre, andre@chimay.via.ecp.fr Postgres95 est un SGBD derive de Postgres4.2. Il est conforme a (pour la plupart) ANSI SQL et offre beaucoup de possibilites interessantes (Liens dynamiques C pour les fonctions ou les definitions de types, temps de reponse, ...). Ce paquetage est protege par un copyright de l'Universite de Californie (Regents of the University of California), et est diffusable librement. Python est un langage de programmation interprete. Il est oriente objet et facile d'utilisation (syntaxe legere, simple et instructions simples), et dispose de nombreuses extensions pour construire des GUIs, des interfaces WWW,... Un butineur web "intelligent" (a la HotJava) est actuellement en cours de developpement (november 1995), et cela devrait ouvrir de nombreuses portes aux programmeurs. Python est protege par un copyright de Stichting Mathematisch Centrum, Amsterdam, Pays-Bas, et est diffusable librement. PyGres95 est un module python d'interface a la base de donnees Postgres95 . Il comprend une bibliotheque de requetes Postgres95 permettant une utilisation facile des fonctionnalites puissantes de Postgres95 en cooperation avec tous les autres modules python. Il a ete developpe sur un systeme Linux 1.3/ELF, mais a ete teste sur une plate-forme Solaris 2.4. De toutes facons, il devrait fonctionner sur toute plate-forme ou python et postgres95 sont disponibles. 2266..11.. OOuu llee ttrroouuvveerr ...... ?? Les sites principaux des differents paquetages sont : +o Python : +o Postgres95 : +o PyGres95 : Vous devriez cependant essayer de trouver un site miroir proche de votre propre site. Consultez les sources d'information pour trouver ces sites. PyGres95 devrait se trouver dans les repertoires contrib des sites Python et Postgres95. 2266..22.. IInnffoorrmmaattiioonn eett ssuuppppoorrtt Si vous avez besoin d'informations concernant ces paquetages veuillez consulter leurs sites web: +o Python : +o Postgres95 : +o PyGres95 : Pour un support : +o Python : newsgroup comp.lang.python +o Postgres95 : mailing list (see package documentation for information) +o PyGres95 : contact me andre@via.ecp.fr pour des rapports d'erreurs, des idees et des remarques J'essaierai de repondre dans la mesure ou mon temps libre me le permettra. 2277.. PPaasssseerreellllee eennttrree PPoossttggrreeSSQQLL eett WWWWWW -- WWDDBB--PP9955 WDB-P95 - Une interface Web interface aux bases de donnees Postgres95. C'est a Voici un extrait de la page d'accueil de WDB-P95 :- Version 1.4b2 beta - Creee par J. Douglas Dunlop A propos de wdb-p95 C'est une version modifiee de wdb-1.3a2 qui fournit une passerelle WWW a Postgres95. Cette version necessite egalement un Butineur capable de prendre en compte les Tables HTML pour avoir une sortie tabulee. Ceci n'est pas requis pour le wdb original et on peut facilement y revenir. (Je voulais seulement les tables parce que je n'etais pas d'accord avec les commandes < et >!) Vous pouvez essayer ma Bande CASI et ma Requete d'Image. Vous pouvez jeter un coup d'oeil au Fichier de Definition de Formulaire (FDF) que j'ai utilise pour creer la Bande CASI et egalement la Requete d'Image, qui comprends une jointure (JOIN) de 2 tables. Cette version contient tous les fichiers necessaires pour installer et faire tourner WDB-P95 en tant qu'interface a vos bases de donnees Postgres95 . Le portage de ce systeme pour une autre base de donnees devrait etre relativement facile - a condition qu'elle supporte le SQL standard et possede une interface Perl. 2277..11.. LLee sseerrvveeuurr PPoossttggrreess9955,, ppggppeerrll,, eett hhttttppdd ddooiivveenntt--iillss rreessiiddeerr ssuurr llee mmeemmee hhoottee?? Non - Le serveur Postgres95 n'a pas a etre sur le meme hote. Comme WDB-P95 est appele par le demon http, ils doivent resider sur le meme hote. - Et comme WDB-P95 a ete ecrit pour utiliser Pg.pm - pgperl doit etre sur le meme hote egalement. Pgperl a ete ecrit en utilisant la bibliotheque libpq, donc, il sera capable d'acceder a n'importe quel serveur Postgres95 n'importe ou sur le reseau, juste comme n'importe quel autre client Postgres95. Comme illustre ci-dessous {WWW Client (Netscape)} => {HTTP Server (NCSA's http) + WDB-P95 + pgperl + libpq}=> {Postgres95 server} Les parentheses () representent les machines. Chaque machine peut etre d'un type different : NT, SUN, HP, ... mais il faut que vous ayez la bibliotheque d'interface libpq pour le type de machine sur lequel vous envisagez d'utiliser WDB-P95, puisqu'il vous faut compiler pgperl. (Le systeme a ete concu pour utiliser les tables HTML donc un client WWW recent est meilleur) 2277..22.. NNoouuvveellllee VVeerrssiioonn Les nouvelles versions du logiciel et des pages ci-dessus sont toujours disponibles a partir de la page d'Accueil de WDB-P95. Pour les questions et pour s'inscrire aux listes de diffusion contacter dunlop@eol.ists.ca 2288.. IInntteerrffaaccee aauu llaannggaaggee ""CC"" ppoouurr PPoossttggrreeSSQQLL Elle est incluse dans la distribution et s'appelle 'libpq'. Elle est similaire aux bibliotheques OCI Oracle, DB-lib Sybase, ou CLI Informix. 2299.. IInntteerrffaaccee aauu llaannggaaggee ""CC++++"" ppoouurr PPoossttggrreeSSQQLL Elle est incluse dans la distribution et est nommee 'libpq++'. 3300.. EESSQQLL//CC ppoouurr PPoossttggrreeSSQQLL C'est un precompilateur C integre pour PostgreSQL ESQL/C comme Pro*C d'Oracle, et ESQL/C d'Informix : +o +o Email : linus@epact.se ESQL/C pour PostgreSQLest une interface de programmation d'application SQL (API) qui permet au programmeur C de creer des applications personnalisees avec des possibilites de gestion de base de donnees. ESQL/C pour PostgreSQL vous permet d'utiliser un langage de troisieme generation avec lequel vous etes familiarise tout en profitant des avantages d'un Langage de Requetes Structure (SQL). ESQL/C est compose des elements logiciels suivants: +o Les bibliotheques ESQL/C de fonctions C fournissent les acces au serveur de base de donnees. +o Les fichiers d'en-tete ESQL/C apportent les definitions des structures de donnees, les constantes et les macros utiles dans un programme ESQL/C. +o Le preprocesseur ESQL/C, qui est un preprocesseur de code source qui transforme un fichier C contenant des instructions SQL en fichier executable. 3311.. OOppeerraatteeuurrss BBiitt--ppaarr--BBiitt ppoouurr PPoossttggrreeSSQQLL Les operateurs Bit-par-Bit ont ete ecrits par Nicolas Moldavsky nico@overnet.com.ar Ce sont des fonctions "C" qui implantent les operateurs bit-par-bit (AND, OR, XOR, bit complement) dans pgsql. Si quelqu'un desire les utiliser, il peut les recuperer par ftp anonyme de +o De plus, il y a un "Makefile" qui marche bien sous Linux. 3322.. LLeess CCooddeess KKaannjjii JJaappoonnaaiiss ppoouurr PPoossttggrreeSSQQLL Sont tres utiles pour les Japonais. On les trouvera au site suivant : 3333.. PPoorrttaaggee ddee PPoossttggrreeSSQQLL PPoorrtt ppoouurr WWiinnddoowwss 9955//WWiinnddoowwss NNTT Un portage pour Windows 95/Windows NT est en cours de realisation. Ce portage de fait en utilisant gcc, gmake pour Win NT/95. Le programme gnu-win32 est utilise pour compiler le code source sous win32. GNU gcc est disponible pour win32. Consultez ce site - +o Recuperez-y le fichier cdk.exe (fichier auto-extractible pour gnu- win32) Le portage peut egalement etre realise en utilisant l'outil "Emulateur Unix sous NT" (Unix-Emulator on NT) suivant de +o 3344.. LLiisstteess ddee DDiiffffuussiioonn eett GGrroouuppeess ddee DDiissccuussssiioonn Il y a un groupe de discussion pour PostgreSQL a news.postgresql.org Veuillez suivre les etapes suivantes pour vous inscrire 1. Choisir : Fenetre | Netscape News 2. Choisir : Fichier | Open News Host 3. Taper news.postgresql.org dans la boite de dialogue. 4. Le nom du groupe de discussion est comp.databases.postgresql.questions. Pour l'ajouter, cliquez avec le bouton de droite sur news.postgresql.org, et choisir : Add Newsgroup. Taper alors le nom du groupe de discussion dans la boite de dialogue. Le groupe de discussion sera ajoute a la liste dans l'ecran de gauche. 5. Les noms des Groupes de Discussion seront listes dans l'ecran de gauche. Tous les messages, dans les groupes selectionnes, seront affiches dans l'ecran de droite. Regardez les Titres des Listes de Diffusion sur la page web principale a : +o Envoyez vos questions par courrier electronique a: pgsql- questions@postgresql.org +o Developpeurs pgsql-hackers@postgresql.org +o Questions specifiques a un portage pgsql-ports@postgresql.org +o Questions concernant la documentation pgsql-docs@postgresql.org Vous recevrez une reponse, par courrier electronique, dans la journee qui suit!! Vous pouvez egalement vous inscrire aux listes de diffusion. Pour vous inscrire ou vous radier d'une liste, envoyez un courrier a +o pgsql-questions-request@postgresql.org +o pgsql-hackers-request@postgresql.org +o pgsql-ports-request@postgresql.org +o pgsql-docs-request@postgresql.org Le corps du message doit uniquement contenir la simple ligne subscribe (ou) unsubscribe Il y a aussi des listes de diffusion qui sont archivees au format html a l'endroit suivant - +o dans le repertoire /pub/majordomo 3355.. LLiivvrreess eett DDooccuummeennttaattiioonnss On trouve dans la distribution +o Le 'Guide Utilisateur' pour PostgreSQL, +o Le 'Guide de Realisation' detaillant la constitution interne de PostgreSQL. +o Les manuels "en ligne". +o Le manuels en ligne au format HTML. +o Egalement les manuels au format Postscript pour faire des editions papier. Documents de Reference: Ouvrages de reference utiles : +o "Understanding the New SQL: A Complete Guide" (Comprendre le Nouveau SQL: Un Guide Complet)- by Jim Melton and Alan R.Simon Morgan Kaufman Publisher. C'est un des meilleurs livres sur SQL. +o "A Guide to THE SQL STANDARD" (Un Guide du STANDARD SQL) - by C.J.Date Addison-Wesley Publishing company. C'est egalement un bon livre Stephen Cannan and Gerard Otten SQL - The Standard Handbook , Novembre 1992 (SQL - Le Manuel Standard) McGraw-Hill Book Company Europe , Berkshire, SL6 2QL, England Martin Gruber, Technical Editor: Joe Celko SQL Instant Reference , 1993 (SQL Reference Immediate) SYBEX Inc. 2021 Challenger Drive Alameda, CA 94501 Des centaines d'autres titres concernant SQL sont disponibles! Verifiez-le dans une librairie. 3366.. SSuuppppoorrtt TTeecchhnniiqquuee ppoouurr PPoossttggrreeSSQQLL +o Vous pouvez envoyer par courrier electronique les questions ou problemes techniques auxquels vous devez faire face a : pgsql- questions@postgresql.org et vous recevrez par courrier electronique une reponse dans la journee qui suit. Dans un futur proche, l'organisation PostgreSQL vendra un support technique aux petites et grandes compagnies, les revenus de cette activite serviront a entretenir plusieurs sites miroirs (web and ftp) partout dans le monde. Ces revenus pourront aussi servir a creer une documentation imprimee, des guides, des livres pour aider les clients. Les profits seront egalement a organiser des conferences annuelles ou les clients et professionnels pourront trouver et echanger des idees et des papiers techniques. Ceci devrait aider l'organisation PostgreSQL a se tenir debout. 3377.. AAssppeeccttss EEccoonnoommiiqquueess eett CCoommmmeerrcciiaauuxx Les bases de donnees commerciales paient de nombreuses taxes telles que des taxes federales, d'etat, sur les ventes, sur les salariees, la securite sociale, les taxes pour les soins medicaux, des Indemnites pour les employes, des couts de marketing et de publicite. Tous ces couts ne sont pas destines directement au developpement de la base de donnee. Quand vous achetez une base de donnees commerciale une partie du montant est destine aux taxes, aux depenses de recherche et developpement ( R&D ). Donc la valeur reelle pour la base de donnees est beaucoup plus faible. De plus les bases de donnees commerciales doivent payer pour leurs immeubles/biens et pour l'achat de machines Unix, leur installation et leur maintenance. Tous ces couts sont repercutes sur les clients. PostgreSQL possede l'avantage, sur les bases de donnees commerciales, de ne pas supporter de taxes puisque developpee sur l'internet. Un tres grand nombre de personnes contribuent a son developpement. Par exemple, dans un cas hypothetique, s'il y a un million de compagnies aux U.S.A et que chacune contribue pour environ $ 10 (en valeur de logiciel pour PostgreSQL) alors, chaque compagnie recevra dix millions de dollars!! C'est cela la magie du developpement sur internet. Actuellement, le code source de PostgreSQL est constitue d'environ 200 000 lignes de code "C" et "C++". Si le cout de chaque ligne de code "C" est evalue a $ 10, alors le cout total de PostgreSQL, tel qu'il est aujourd'hui est de $ 2 000 000 (deux millions de dollars!!). De nombreuses compagnies ont deja developpe de grandes quantites de code "C", "C++" maison. Donc, en prenant le code source de PostgreSQL et en collaborant avec les autres compagnies sur internet, cela leur beneficierait beaucoup en leur faisant economiser du temps et des efforts. 3388.. SSppeecciiffiiccaattiioonnss AANNSSII//IISSOO SSQQLL -- SSQQLL 11999922,, SSQQLL 11999988 3388..11.. DDooccuummeennttss dduu ssttaannddaarrdd NNaattiioonnaall eett IInntteerrnnaattiioonnaall AANNSSII//IISSOO SSQQLL Ces documents sont situes a l'endroit indique ci-dessous. Il y a deux documents, le premier et le second, veuillez lire les deux. +o Aller a l'endroit indique ci-dessous Et cliquer sur les deux fichiers nommes CLICK_ME_FIRST.html et CLICK_ME_SECOND.html +o +o cliquer sur le fichier cat_c.html et effectuer une recherche de "Database SQL" +o Standard SQL92 et cliquer sur le fichier sql_stnd.html 3388..22.. SSyynnttaaxxee ddee ll'' AANNSSII//IISSOO SSQQLL 11999922 Ce fichier contient la grammaire en BNF du langage, arborescence exploree d'abord en profondeur, realisee le 27-AOUT-1992 11:03:41.64. La version specifique de BNF donnee ici est : ANSI et SQL2-seulement. ::= | ::= | | ::= | ::= A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z ::= a | b | c | d | e | f | g | h | i | j | k | l | m | n | o | p | q | r | s | t | u | v | w | x | y | z ::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 ::= | | | | | | | | | | | | | | | | | | | | ::= !! (space character in character set in use) ::= " ::= % ::= & ::= ' ::= ( ::= ) ::= * ::= + ::= , ::= - ::= . ::= / ::= : ::= ; ::= < ::= = ::= > ::= ? ::= _ ::= | ::= | ::= [ ::= ] ::= | ::= | | | | | ::= ::= [ ( | )... ] ::= (!! See the Syntax Rules) ::= | ::= | ::= ABSOLUTE | ACTION | ADD | ALL | ALLOCATE | ALTER | AND | ANY | ARE | AS | ASC | ASSERTION | AT | AUTHORIZATION | AVG | BEGIN | BETWEEN | BIT | BIT_LENGTH | BOTH | BY | CASCADE | CASCADED | CASE | CAST | CATALOG | CHAR | CHARACTER | CHAR_LENGTH | CHARACTER_LENGTH | CHECK | CLOSE | COALESCE | COLLATE | COLLATION | COLUMN | COMMIT | CONNECT | CONNECTION | CONSTRAINT | CONSTRAINTS | CONTINUE | CONVERT | CORRESPONDING | COUNT | CREATE | CROSS | CURRENT | CURRENT_DATE | CURRENT_TIME | CURRENT_TIMESTAMP | CURRENT_USER | CURSOR | DATE | DAY | DEALLOCATE | DEC | DECIMAL | DECLARE | DEFAULT | DEFERRABLE | DEFERRED | DELETE | DESC | DESCRIBE | DESCRIPTOR | DIAGNOSTICS | DISCONNECT | DISTINCT | DOMAIN | DOUBLE | DROP | ELSE | END | END-EXEC | ESCAPE | EXCEPT | EXCEPTION | EXEC | EXECUTE | EXISTS | EXTERNAL | EXTRACT | FALSE | FETCH | FIRST | FLOAT | FOR | FOREIGN | FOUND | FROM | FULL | GET | GLOBAL | GO | GOTO | GRANT | GROUP | HAVING | HOUR | IDENTITY | IMMEDIATE | IN | INDICATOR | INITIALLY | INNER | INPUT | INSENSITIVE | INSERT | INT | INTEGER | INTERSECT | INTERVAL | INTO | IS | ISOLATION | JOIN | KEY | LANGUAGE | LAST | LEADING | LEFT | LEVEL | LIKE | LOCAL | LOWER | MATCH | MAX | MIN | MINUTE | MODULE | MONTH | NAMES | NATIONAL | NATURAL | NCHAR | NEXT | NO | NOT | NULL | NULLIF | NUMERIC | OCTET_LENGTH | OF | ON | ONLY | OPEN | OPTION | OR | ORDER | OUTER | OUTPUT | OVERLAPS | PAD | PARTIAL | POSITION | PRECISION | PREPARE | PRESERVE | PRIMARY | PRIOR | PRIVILEGES | PROCEDURE | PUBLIC | READ | REAL | REFERENCES | RELATIVE | RESTRICT | REVOKE | RIGHT | ROLLBACK | ROWS | SCHEMA | SCROLL | SECOND | SECTION | SELECT | SESSION | SESSION_USER | SET | SIZE | SMALLINT | SOME | SPACE | SQL | SQLCODE | SQLERROR | SQLSTATE | SUBSTRING | SUM | SYSTEM_USER | TABLE | TEMPORARY | THEN | TIME | TIMESTAMP | TIMEZONE_HOUR | TIMEZONE_MINUTE | TO | TRAILING | TRANSACTION | TRANSLATE | TRANSLATION | TRIM | TRUE | UNION | UNIQUE | UNKNOWN | UPDATE | UPPER | USAGE | USER | USING | VALUE | VALUES | VARCHAR | VARYING | VIEW | WHEN | WHENEVER | WHERE | WITH | WORK | WRITE | YEAR | ZONE ::= ADA | C | CATALOG_NAME | CHARACTER_SET_CATALOG | CHARACTER_SET_NAME | CHARACTER_SET_SCHEMA | CLASS_ORIGIN | COBOL | COLLATION_CATALOG | COLLATION_NAME | COLLATION_SCHEMA | COLUMN_NAME | COMMAND_FUNCTION | COMMITTED | CONDITION_NUMBER | CONNECTION_NAME | CONSTRAINT_CATALOG | CONSTRAINT_NAME | CONSTRAINT_SCHEMA | CURSOR_NAME | DATA | DATETIME_INTERVAL_CODE | DATETIME_INTERVAL_PRECISION | DYNAMIC_FUNCTION | FORTRAN | LENGTH | MESSAGE_LENGTH | MESSAGE_OCTET_LENGTH | MESSAGE_TEXT | MORE | MUMPS | NAME | NULLABLE | NUMBER | PASCAL | PLI | REPEATABLE | RETURNED_LENGTH | RETURNED_OCTET_LENGTH | RETURNED_SQLSTATE | ROW_COUNT | SCALE | SCHEMA_NAME | SERIALIZABLE | SERVER_NAME | SUBCLASS_ORIGIN | TABLE_NAME | TYPE | UNCOMMITTED | UNNAMED ::= | ::= [ [ ] ] | ::= ... ::= E ::= ::= ::= [ ] ::= | ::= N [ ... ] [ ( ... [ ... ] )... ] ::= | ::= !! (See the Syntax Rules.) ::= ::= ( | | )... ::= [ ... ] ::= [...] ::= | ::= !! (implementation-defined end-of-line indicator) ::= B [ ... ] [ ( ... [ ... ] )... ] ::= 0 | 1 ::= X [ ... ] [ ( ... [ ... ] )... ] ::= | A | B | C | D | E | F | a | b | c | d | e | f ::= | |