J'aurais pu intituler mon poste "Comment faire compliqué quand on peut faire simple" comme aurait dit mon prof de math à la fac.
Je travaille actuellement sur un projet où le développeur/architecte a décidé d'abstraire très fortement la base de données. En fait il a utilisé un modèle dont je ne connais pas le nom mais que j'ai déjà vu. Ca consiste à ne pas avoir de tables reliées directement à des objets mais plutôt une table par type de données:
- tbl_data_int contient tous les entiers
- tbl_data_varchar contient tous les chaines de caractères
Par exemple pour un objet de type Adresse, le code postal sera stocké dans la tbl_data_int et la ville dans la table tbl_data_varchar. Ca a le gros avantage d'une extrême flexibilité. Vous êtes autorisé à modifier à la volée les propriétés de votre objet.
La clé de la réussite réside dans une couche d'accès aux données sans faille. Il faut pouvoir récupérer facilement n'importe quel objet. Vous pouvez imaginer la tache quand les propriétés sont éclatées sur plusieurs tables.
Voir cet bon exemple : http://wiki.freeglobes.net/index.php/Database_kernel
Je travaille donc sur un projet qui utilise cette merveilleuse méthode mais l'architecte a foiré la couche d'accès aux données. Si bien que c'est impossible de faire des tâches aussi simples qu'un tri sur colonne ou ajouter un filtre pour ne récupérer que certaines données. Au final même ajouter une nouvelle propriété est pénible.
Magento pour ce qui ne connaisse pas est un CMS dédié aux magasins virtuels (http://www.magentocommerce.com/). Il utilise ce système, la complexité des produits qui peuvent être vendu dans un magasin en ligne justifie ce choix. Un magasin de vêtements ou un magasin de musique en ligne vendent des produits très différents mais les deux utiliseront le même Objet "Produit".
Moi je travaille pour un média en ligne, les données sont ultra simples et n'évoluerons que très peu. Video, Blog, Forum, User...Je n'ai toujours pas compris pourquoi un choix aussi étrange a été fait. Un collègue m'a dit que certains développeurs aiment se sentir intelligent. Pour eux c’est une vraie reconnaissance sociale. Moi je pense tout le contraire "Keep it simple". Réussir une architecture simple et robuste dans un environnement complexe est pour moi une grande réussite. Les projets doivent être simple à comprendre, facile à maintenir et surtout coller aux besoins.
- Travaillez-vous avec des gens qui pensent être dans un labo de recherche?
- Qui font ou ont fait des choix certes impressionnants (pour ceux qui se laissent impressionnés) mais qui amèneront au final plus de problèmes qui en ont résolus.
Partager