phpcompta-contrib
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Phpcompta-contrib] problematique base de donnees


From: Marc Barilley
Subject: [Phpcompta-contrib] problematique base de donnees
Date: Thu, 11 May 2006 15:31:49 +0200
User-agent: Thunderbird 1.5.0.2 (Windows/20060308)

Hervé, Dany et les autres

Merci pour l'accueil.
Hervé, je connais en effet ton aversion pour l'utilisation des objets ;-) mais dans notre cas, je pense que ça serait vraiment adapté. En effet, si j'ai bien compris, tu proposes une architecture de fichiers contenant des fonctions, certaines génériques et d'autres spécifiques au SGBD. Une arborescence d'objet remplit ce rôle parfaitement :
class DB
 |
 +-> class PsqlDB
 |
 +-> class MysqlDB
 |
 +-> class SqlliteDB
 |
 +-> ...

Avantages :
- les fonctions "communes" aux différents SGBD sont codées dans la classe mère ; - en dérivant de la classe mère, on spécialise les fonctions pour un type de SGBD en particulier ; - si, au cours du portage vers un SGBD supplémentaire, on se rend compte qu'une fonction mérite une implémentation particulière pour une meilleure efficacité, on peut la surcharger uniquement dans la classe dérivée tout en gardant une compatibilité totale avec le code déjà existant : pas de risque de conflit entre la fonction déjà implémentée dans le fichier commun et sa spécialisation pour un SGBD particulier, qui demanderait alors : + soit de recopier la fonction (qui n'est plus commune) dans les différents fichiers d'implémentation de SGBD et d'écrire la spécialisation dans le fichier du SGBD concerné + soit de se passer de cette spécialisation, si le nombre de fichiers impactés devient trop important (parce qu'on aurait trop de SGBD différents supportés) ; - corollaire du point précédent : on peut commencer à écrire des fonctions très génériques dans la classe mère et les spécialiser pour Psql ou Mysql ensuite, dans l'optique d'un gain de performance ; - l'interface de l'objet DB étant parfaitement définie et documentée, il y a moins de risque d'"oublier" de coder telle ou telle fonction dans une classe dérivée. Au pire, on tombe sur la fonction par défaut, ce qui ne casse pas le code métier ; - si deux SGBD sont vraiment très similaires (et il me semble que c'est le cas par exemple entre SQLlite et MySQL), on peut très bien imaginer un troisième niveau de dérivation pour mutualiser encore plus de code ; - en appliquant le point précédent on peut aisément supporter plusieurs versions d'un même SGBD : je pense en particulier à MySQL (disponible qu'en version 3 chez de nombreux hébergeurs) avec une classe DB dérivée en MysqlDB dérivée en Mysql3DB, Mysql4DB, Mysql5DB, ...

Inconvénients :
- il faut penser la classe DB comme une interface avec des fonctionnalités de la base de données et non comme un simple wrapper de SGBD. En effet, on doit y trouver des fonctions du type "insertClient()" mais jamais une fonction "sqlExec()" car, pour prendre l'exemple de psql et mysql pour les incréments d'identifiants, l'un utilise des séquences et l'autre des champs auto-incrémentés, ce qui constitue deux approches philosophiquement opposées. Cela suppose vraisemblablement une ré-écriture assez conséquente du code métier (j'avoue, je n'ai pas encore eu le temps d'y jeter un oeil...) mais cette ré-écriture peut aussi être incrémentale ;
 - Hervé va contester l'approche objet ;-)

S'il existe un "document" résumant les réflexions qui ont été menées à ce sujet, je suis preneur ! Sinon, il me semble qu'il faudrait en écrire un résumé afin que, in fine, Dany puisse trancher.

Pour résumer ma position, je pense que, comme on a à faire à un logiciel de compta, il est fort probable que les utilisateurs potentiels souhaitent installer ce logiciel en mode "off-line", c'est à dire non hébergé. Et vraisemblablement sur une plate-forme de type Windows. Par conséquent, il est à mon avis nécessaire de supporter aussi les SGBD qu'on trouve habituellement sur ces plate-formes, à savoir MySQL (facile à installer grâce à EasyPHP), Access (hé oui...), SQLserver voire Excel via ODBC (mais je m'emporte un peu, là ;-)). Ainsi, l'utilisateur peut installer très rapidement (à condition que l'installeur puisse configurer correctement l'application), tester puis adopter PHPCompta, sans avoir à faire trop de bidouilles sur son PC.

Voilà ma première contrib :)

Marc Barilley
Océbo





reply via email to

[Prev in Thread] Current Thread [Next in Thread]