Open Database Connectivity sur Jaguar - Partie 2
Dans mon article précédent, j’ai expliqué les détails de la configuration de MySQL avec ODBC sous Jaguar. Puisque MySQL n’est pas la seule base de données open source disponible, je vais maintenant étudier la configuration de ODBC avec PostgreSQL, qui, par bien des aspects, est bien moins frustrante.
Si vous ne l’avez pas encore fait, je vous recommande de lire le premier article, “Open Database Connectivity sur Jaguar,” qui couvre quelques unes des bases de ODBC et explique comment configurer les composants ODBC. Pour référence, nous allons une fois de plus utiliser l’Administrrateur iODBC, qui se comporte mieux et a plus de fonctionnalités que l’outil d’Apple.
Le Gestionnaire psqlodbc
La première chose à pour configurer PostgreSQL a été de récupérer le gestionnaire. Je suis allé sur le site web de PostgreSQL, ai cherché le gestionnaire psqlodbc , et l’ai trouvé sur la section de projet psqlodbc du site PostgreSQL de GBorg. GBorg héberge les “projets en relation avec PostgreSQL”, et contient toutes sortes de projets intéressants en plus du projet psqlodbc .
A la section téléchargement de la page, cinq distributions différentes étaient disponibles: quatre distributions Windows différentes et une distributions source. J’ai tout d’abord été un peu effrayé de tout ceci, puis je me suis souvenu que la distribution standard PostgreSQL que j’utilisais avait été récupérée comme source aussi. La première fois que j’avais installé PostgreSQL, j’avais utilisé l’article des pages développeurs d’Apple, en substituant la version 7.3.3 à la version 7.3.1, et ça avait très bien fonctionné.
Avant de tenter le télé,chargement et l’installation, j’ai pensé qu’il serait sage de m’assurer que je n’avais pas déjà les gestionnaires ODBC installés avec la configuration originelle. Pourquoi réinstaller si c’est inutile? J’ai lancé une recherche sur pgsqlodbc à partir du finder, mais ça n’a rien donné, donc j’ai téléchargé la version 7.2.5 de la distribution source de pgsqlodbc en espérant que tout se passe bien.
Une fois la distribution dézippée et détarrée, l’étape suivante fut de compiler, d’éditer les liens et d’installer le source. PostgreSQL, comme de nombreuses distributions au code source open source, a un processus de compilation, d’édition de liens et d’installation en trois étapes:
- Exécution de la commande configure .
- Une fois ceci accompli, exécution de la commande make .
- Une fois ceci accompli, exécution de la commande make install .
Bien sûr, ces trois commandes masquent tous les processus sous-jacents : configure analyse votre machine et détermine ses type, système d’exploitation, librairies, compilateurs, et des douzaines d’autres critères; make effectue la compilation et l’édition de liens réelles, et make install met le code compilé dans sa forme finale.
Note: Avant de compiler et de configurer le gestionnaire, vous devez vous assurer d’avoir installé les Outils de Développement d’Apple. La manière la plus simple de le faire est de voir si vous avez un répertoire /Developer ; si vous n’en avez pas, vous devrez alors télécharger les Outils de Développement d’Apple à partir du site Développement d’Apple. Si ce n’est pas déjà fait, souscrivez à un Compte Développeur Apple gratuit. Une fois ceci fait et le téléchargement commencé, allez dîner — il y a plus de 300 megs à télécharger.
Pour commencer le processus de compilation, je suis allé dans le répertoire source et ai exécuté la commande configure suivie de la commande make . Leur exécution pris quelques minutes et afficha un tas de messages à l’écran, mais elle a réussi sans rapport d’erreur. Après cela, j’ai lancé la comande make install, qui était supposée installer les fichiersrécemment compilés dans /usr/local/lib. Après son exécution, je suis allé vérifier dans /usr/local/lib et effectivement, psqlodbc.la et psqlodbc.so y étaient. La compilation et l’installation terminées, j’étais maintenant prêt à configurer PostgreSQL pour l’utilisation du gestionnaire ODBC.
La Configuration de PostgreSQL
Pour utiliser les gestionnaires ODBC, PostgreSQL doit être capable d’accepter les connections par sockets TCP/IP. Par défaut, cette fonctionnalité est inactive, aussi ai-je dû l’activer. Ceci fut facile. J’ai juste dû changer un paramètre dans postgresql.conf et de relancer PostgreSQL. J’ai tout d’abord localisé
postgresql.conf, qui se trouve dans le répertoire de données par défaut de la base de données PostgreSQL que j’utilisais. Dans ce cas, le fichier se trouvait dans /usr/local/pgsql/data. J’ai ensuite ouvert le fichier à la recherche de tcpip_socket. Dans mon cas, la ligne était:
#tcpip_socket = false
Pour autoriser les connections par sockets TCP/IP, j’ai dû décommenter la ligne et changer la valeur en true, ce qui a donné :
tcpip_socket = true
Une fois ceci fait, il ne me restait qu’à relancer PostgreSQL. Il y a plusieurs moyens de le faire; je vous recommande d’éteindre complètement PostgreSQL, puis de le relancer. Pour cela, j’ai fait ce qui suit:
sudo -u postgres /usr/local/pgsql/bin/pg_ctl -D /usr/local/pgsql/data stop
sudo -u postgres /usr/local/pgsql/bin/pg_ctl -D /usr/local/pgsql/data start
J’étais maintenant prêt à configurer le gestionnaire et le DSN dans l’administrateur iODBC.
La Configuration de iODBC
Une fois le gestionnaire installé, l’étape suivante a été de configurer le gestionnaire ODBC pour PostgreSQL dans l’administrateur iODBC, ce qui à la base est le même processus que la configuration du gestionnaire pour MySQL dans mon article précédent. j’ai lancé l’administrateur ODBC, choisi l’onglet “Gestionnaires”, puis cliqué sur “Ajouter”. J’ai ensuite donné un nom au gestionnaire puis ai sélectionné le gestionnaire PostgreSQL. Comme nous l’avons vu précédemment, le make install par défaut met psqlodbc.so dans /usr/local/lib. Comme pour l’installation MySQL, je n’ai pas eu besoin de configurer des paires clé-valeur à ce niveau, puisque je n’avais aucune option universelle pour toutes les instances de ce gestionnaire.
Il était maintenant temps de configurer un DSN, aussi suis-je passé à l’onglet “DSN Utilisateur”, ai choisi “Ajouter”, puis ai configuré le Nom de la Source de Données et les paires clé-valeur. Les paires clé-valeur que j’utilise pour PostgreSQL sont :
- database: test
- servername: localhost
- username: user
- password: password
- port:5432
Test du DSN
Une fois toute la configuration terminée, la suite a consisté à tester la connection. Comme dans l’article précédent, il y a deux manières de tester une connexion ODBC — en utilisant le bouton de test de l’administrateur iODBC, ou le programme odbctest . Puisque j’étais déjà dans l’administrateur iODBC, j’ai choisi de cliquer sur le bouton de test, et j’ai obtenu le message suivant :
DSN:postgrestest
The connection DSN was tested successfully, and can be used at this time
Cela semblait prometteur; il fallait maintenant tester la connection dans odbctest.
[troll:~] aaa% /usr/bin/odbctest
iODBC Demonstration program
This program shows an interactive SQL processor
Enter ODBC connect string (? shows list): ?
DSN | Description
---------------------------------------------------------------
postgrestest | postgresql
Enter ODBC connect string (? shows list): dsn=postgrestest
Have a nice day.
[troll:~] aaa%
Ce résultat avait l’air étrange, puisque normalement odbctest nous aurait faits passer dans un processeur SQL interactif ou aurait renvoyé un quelconque message d’erreur ou de status. Je me suis dit que, puisqu’il n’y avait pas de message d’erreur spécial dans
odbctest et que le premier test semblait réussi, la seule manière de voir si la connection était effective était de la tester avec un programme compatible ODBC à interface utilisateur.
Accéder aux Données PostgreSQL dans Excel
Pour cela, je suis allé dans Excel, ai ouvert un nouveau document, ai choisi “Get External Data” à partir du menu “Data”, et ai choisi l’option de menu
“New Database Query”. A ce niveau, Microsoft Query s’est lancé et a ouvert un écran, ”Select a Data Source.” J’ai choisi mon DSN de test PostgreSQL, ai j’ai été amené dans Microsoft Query. J’ai choisi l’onglet “SQL View” et ai lancé une requête de test, qui a parfaitement fonctionné.
Une chose bizarre, cependant, est que normalement, quand vous lancez Microsoft Query, il arrive avec une liste de tableaux dans la base de données courante à laquelle vous adressez une requête; ce n’est pas arrivé quand je l’ai lancé avec le gestionnaire PostgreSQL. La boîte de liste de tableaux est apparue, mais vide. Je ne sais pas si c’est un problème PostgreSQL ou Excel, mais ça n’a affecté mes requêtes de tests en aucune manière. Je devais juste savoir que les tableaux se trouvaient dans la base de données.
MySQL contre PostgreSQL
Quand on en arrive là, quelle est la meilleure base de données à utiliser sur Jaguar si vous voulez le support ODBC ?
Evidemment, il n’y a pas de réponse simple, mais vous pouvez circoncire vos choix avec quelques questions simples:
- Voulez-vous réellement avoir le choix entre deux produits?PostgreSQL et MySQL, bien que similaires, possèdent un ensemble de fonctionnalités spécifiquement différentes qui peuvent affecter votre application cible. Certaines de ces autres fonctionnalités sont souvent plus importantes que le support ODBC, aussi vais-je m’avancer à faire une comparaison tout d’abord des bases de données, puis m’inquiéter ensuite de ODBC
- Avez-vous des données existantes dans l’un des programmes?Si l’une de ces bases de données est déjà configurée dans un environnement de production, pensez aux bénéfices à en tirer avant de passer à une autre pour le support ODBC. Bien que passer à une version différente de MySQL reste un changement de bases de données, il n’est pas aussi sévère que le changement de votre plate-forme de base de données complète.
- Quelle est l’importance du support ODBC pour vous à ce niveau?Bien que ODBC soit crucial pour certaines applications, il existe d’autres applications et langages de programmation qui savent accéder aux données à partir des deux produits sans utiliser le cadre ODBC (ces méthodes ont aussi l’avantage d’être plus rapides. Si vous avez besoin d’utiliser MySQL et que vous pouvez attendre pour le support ODBC, en ce qui me concerne j’attendrais.
Et si vous avez le choix entre les deux produits, que vous n’avez pas de données existantes, et que vous avez désespérément besoin de ODBC à l’instant? Que recommanderais-je alors?
Dans ce cas, je tendrais à utiliser PostgreSQL. Bien que cela puisse sembler maladroit pour certains de compiler le gestionnaire psqlodbc , il fonctionne sans problèmes, la configuration est directe, et il n’y a pas de problèmes avec le gestionnaire. Mais ce n’est pas une critique contre MySQL/MyODBC. Après mes problèmes initiaux avec, il a vraiment bien fonctionné. Nous savons que MyODBC/MySQL marche sous Jaguar, aussi selon moi, une fois que l’équipe de développement de MySQL présente une version de MySQL/MyODBC qui fonctionne, cela sera un choix parfait.

Textes originaux en anglais sur O’Reilly : Open Database Connectivity in Jaguar, Part 2 par Andrew Anderson
Chargement
Commentaires récents