Je suis en train de refondre une petite application interne pour mon équipe et j’ai un doute sur la structure. Actuellement, tout est dans une seule grosse table et les requêtes commencent à ramer sérieusement quand on croise les données. J’ai lu qu’il fallait appliquer un processus de normalisation, mais j’ai peur que ça devienne trop compliqué à gérer et que les jointures soient lentes aussi. Certains collègues me disent de tout laisser tel quel et de juste ajouter plus d’index, mais ça me semble être un pansement sur une jambe de bois. Je ne sais pas si je dois sauter le pas et tout repenser, ou si je sur-optimise pour un outil qui fonctionne encore à peu près.
|
Comment choisir entre normaliser la base et refondre le schéma ou indexer ?
|
|
Le principe de normalisation peut aider à réduire la redondance et à clarifier les règles métier mais il faut aussi accepter des jointures plus lourdes et planifier l indexation et les caches, commence par identifier les entités clés et leurs dépendances puis teste sur des charges réalistes et envisage une transition progressive vers un schéma normalisé ou une architecture en couches.
On parle beaucoup de normalisation mais parfois on passe plus de temps à modéliser qu à faire évoluer le produit et une approche pragmatique peut être d ajouter des indexes et tester des vues matérialisées pour les requêtes critiques.
Et si le vrai problème n est pas la structure mais les patterns d accès et les requêtes lourdes qui lisent trop de données et si la normalisation n y changerait rien ?
J'en ai marre des tables qui s entremêlent et des requêtes qui bloquent sur des jointures simples la normalisation paraît séduisante mais c est dur de changer quand tout fonctionne encore.
Pour démarrer mesure les requêtes critiques et les cardinalités puis teste un schéma normalisé partiel et compare avec l etat actuel en utilisant des indexes et des vues la normalisation peut être progressive.
Ce sujet touche aussi le domaine métier et les habitudes de lecture prendre le temps de discuter ce que normalisation signifie pour les domaines métiers et pour les attentes des lecteurs peut aider à trouver un compromis sans être dogmatique.
|
|
« Sujet précédent | Sujet suivant »
|

