heavy_hat_icon1.png?w=150Dans l’article précédent nous avons vus la liste des erreurs de développement les plus communes rencontrées dans les applications webs PHP. Dans les articles suivants nous allons revenir sur chacune d’entre elles avec un peu de détails quand cela est nécessaire. **2) Faire des tables **monolithiques Celui là est plus complexe. Au début d’un projet tout est beau tout est magnifique. Notre schéma de base de données est toujours le meilleur du monde et marche très bien avec 10 enregistrements de test. Mais on ne sort pas des projets juste pour occuper les développeurs ;-) Il faut espérer que votre site va vivre et trouver son public. Et s’il est suffisamment large (le public), votre serveur de base de données va être soumis à dure épreuve ! Pour vous donner une idée dans tous les projets que j’ai pu voir, afin d’améliorer la QoS et le ressenti utilisateur, il est 100 fois plus rentable d’optimiser un tout petit peu une requête de base de donnée que de diviser par 100 la complexité d’un algorithme dans votre PHP. La CPU des serveurs webs est souvent peu sollicitée. Par contre celle des serveurs MySQL c’est autre chose. Un INSERT dans une base trop grande ou trop complexe, ou manquant d’indexs … Et c’est le drame assuré. En revanche il n’y a ma connaissance pas d’outils ou de techniques parfaite pour cela. Quelques conseils cependant :

  • Ne pas abuser des champs de type TEXT à longueur non définie
  • Ne pas coller tous les champs dans la même table si cela concerne des choses différentes. Vous vous privez de pouvoir faire de bonnes jointures et vous trimbalez des informations qui sont parfois inutiles.
  • Pensez GRAND et LOIN !!! Une fois que votre projet aura vieilli comment va évoluer votre table LOGS ou toutes les connections au site sont stockées ??? Plutôt préférer une table LOGS_2012_07_08 qui sera limitée en taille et donc plus gérable (et je ne parle même pas des sauvegardes, restaurations et archivage où le gain de ce genre d’architecture est énorme).

Quelques liens :

Frederic pour l’équipe webofmars