blog.bressure.net

Carnet professionnel d'un informaticien

Application, Gestion de projet

Jointure sur des bases de données différentes avec WebDev 16: encore une déception !

admin

Dans la cas d’une application multibase, on peut être amené à aggréger des données en provenance de bases différentes. La sélection peut s’opérer en 2 étapes: rapatrier les données de chaques bases puis les aggréger en mémoires. Si l’aggrégation consiste à faire une jointure on préfèrerait que cela se fasse dans la « base ».

En J2EE, le développeur ferait appel à des EJB puis avec un EQL ferait la sélection interbase. Il s’appuirait ainsi sur des mécanismes de chargement paresseux afin limiter l’occupation mémoire en évitant de charger la base en mémoire! Comment webdev adresse-t-il se problème ?

Prenons un cas concrêt de 2 requêtes paramêtrées, chacune mettant en jeu des tables sur des bases de données différentes. Le test SQL de chacune de ces 2 requêtes dans l’IDE se fait sans encombre puisque aucune ne fait pas intervenir l’autre. Créons une 3e requêtes qui fait une produit cartésien sur les 2 premières. Cette 3e requête est elle-même paramêtrée afin d’assurer la jointure. Et bien le test SQL de la 3e requête dans l’IDE se passe parfaitement !

Cela donne l’illusion au développeur de pouvoir utiliser la 3e requêtes comme source pour un tableau. Que nenni ! On a droit à une belle explosion, webdev se plaigant que le fichier (table) correspondant à la 3e requête n’existe pas. Dommage que l’IDE laisse au développeur espérer une opération magique qui n’existe pas !

La solution consiste à remplir le tableau manuellement avec le résultat de l’appel à des requêtes SQL manuelles. Il faut déclarer une source de données pour chacune des requêtes et executer le SQL associé sur chacune d’elle (HExecuteEquêteSQL). Ensuite il faut faire de même avec une nouvelle source de données et un requête SQL faisant un produit cartésien sur les 2 premières sources de données.

Finalement on arrive a nos fin mais au prix d’un effort de programmation non négligeable et une rupture dans les concepts: le médecin doit abandonner le confort de la manipulation d’objet dans l’IDE (requêtes) pour écrire du SQL dans une chaine de caratères non validée par l’IDE. Quel dommage !

Tags:

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.

Back to top