Choix de conception : MyISAM ou InnoDB ?

Mammouth du PHP | 19672 Messages

16 août 2005, 10:45

Bonjour tout le monde.
Une fois n'est pas coutume, je pose une question. Je suis face à un choix. Pour une base de données MySQL de site de commerce en ligne, je m'interroge sur l'opportunité de choisir des tables de type MyISAM ou InnoDB. Cette interrogation concerne surtout les performances bien entendu. Les limitations des tables MyISAM concernant l'intégrité référentielles ou le support des clés étrangères étant un problème réglé : pas de support. Les tables MyISAM sont optimisées pour une lecture rapide des données. Mais justement, un site de commerce en ligne est appelé à faire des d'écritures dans une proportion plus importante que pour un site d'informations.

Je suis également bien conscient que l'intégrité référentielle ne facilitera pas nécessairement la programmation PHP. Mais si je veux créer un système propre et durable avec des tables MyISAM, il me faudra gérer en PHP une pseudo-intégrité référentielle.

Votre avis :?:
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Administrateur PHPfrance
Administrateur PHPfrance | 977 Messages

16 août 2005, 11:58

ben pour la gestion des produits etc... je prendrais MyISAM pour ce qui concerne les transaction, panier, commande etc j'utiliserai plutot InnoDB. Mais bon c'est mon humble avis.
pro : http://www.ohweb.fr -> studio de développement en PHP, expertise en e-commerce, certifié PrestaShop
perso : http://www.olecorre.com -> un dico de termes informatiques

J'ai toujours rêvé d'un ordinateur qui soit aussi facile à utiliser qu'un téléphone. Mon rêve s'est réalisé : je ne sais plus comment utiliser mon téléphone. [Bjarne Stroustrup]

Mammouth du PHP | 19672 Messages

16 août 2005, 12:16

Et donc avoir une table mixte contenant deux type de tables... pourquoi pas :-k
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Invité
Invité n'ayant pas de compte PHPfrance

16 août 2005, 22:00

Cette interrogation concerne surtout les performances bien entendu
...
Votre avis Question
si par performance tu entends vitesse, la vitesse est surtout visible à l'échelle du processeur et certainement pas à l'échelle humaine(si tu dois faire des centaines de requêtes sur un script ou que tu disposes d'un vieux p1 alors on peut discuter).
mon avis:
myisam, innodb, postgres, oracle...peu importe pour un humain ça se vaut.

si par performance tu entends bonne intégrité.
mon avis:
innodb(qui supporte aussi les transactions).
Mais si je veux créer un système propre et durable avec des tables MyISAM, il me faudra gérer en PHP une pseudo-intégrité référentielle
dans ce cas mieux vaut laisser le moteur faire sa cuisine(une recette à base de c/c++ ce qui ne gache rien).
mon avis:
innodb

Mammouth du PHP | 1885 Messages

16 août 2005, 22:08

Bonjour,
Et donc avoir une table mixte contenant deux type de tables... pourquoi pas :-k
Jamais entendu parler.

Je conseillerais InnoDB pour le support des transactions.
La programmation est l'expression de la poésie d'un programmeur
Génération PHP

Mammouth du PHP | 19672 Messages

16 août 2005, 22:21

Je remercie chacun pour vos avis. L'idée de la base mixte ne me déplait pas, je dois l'avouer. Techniquement, je ne crois pas que ce soit un problème. InnoDB semble avoir beaucoup d'avantages, L'inconvénient est au niveau de la programmation, parce que travailler avec l'intégrité référentielle est très contraignant et j'ai tout à fait horreur de ça ;) Mais ça oblige à une rigueur dans le codage qui n'est certes pas une mauvaise chose.

Quoiqu'il en soit, MySQL permet la transformation au besoin de tables InnoDB en tables MyISAM, si j'ai trop de problèmes avec l'intégrité automatique, je ferai la transformation et je gèrerai l'intégrité par programmation.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Invité
Invité n'ayant pas de compte PHPfrance

16 août 2005, 22:43

L'inconvénient est au niveau de la programmation, parce que travailler avec l'intégrité référentielle est très contraignant et j'ai tout à fait horreur de ça ;)
je suis curieux de savoir ce qui te pose souci(ou ce que tu entends par intégrité référentielle, parce que pour moi ça se limite aux contraintes de clefs étrangères) et pourquoi tu zap les transactions?

Mammouth du PHP | 19672 Messages

16 août 2005, 23:31

Je ne suis pas familier avec l'intégrité et ça me rappelle de fort mauvais souvenirs de MS-Access en particulier. J'ai toujours géré l'intégrité manuellement en PHP pour des tables MyISAM et j'ai jamais eu de soucis de ce coté là.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Invité
Invité n'ayant pas de compte PHPfrance

17 août 2005, 00:23

après tout c'est toi qui voit.

<ceci n'est pas un troll>
t'es sûr qu'access c'est une vrai base?
en cherchant sur le net je suis tombé sur ça.
c'est pas que je sois contre de tout faire à la main, mais là je trouve le concept un peu limite.
</ceci n'est pas un troll>

Mammouth du PHP | 19672 Messages

17 août 2005, 08:47

MS-Access est un système très utilisé par le petit artisan local qui a sa suite office pour sa gestion. Ce n'est pas conçu pour des accès concurents sans se vautrer lamentablement, mais ça existe et c'est encore très utilisé. J'ai appris à un moment donné à l'utiliser, même si ça ne me l'a pas fait apprécier vraiment. J'ai même vu en librairie un livre prétendre vouloir montrer comment mettre en ligne sa base accès :shock:

Pour le lien, j'avoue que j'ai vu la valisette, mais pas Access, un détail a dû m'échapper :P
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Administrateur PHPfrance
Administrateur PHPfrance | 977 Messages

17 août 2005, 09:34

Vous seriez etonné de vori ce qu'on peut faire avec access mais bon des qu'il s'agit de web faut l'oublié !
pro : http://www.ohweb.fr -> studio de développement en PHP, expertise en e-commerce, certifié PrestaShop
perso : http://www.olecorre.com -> un dico de termes informatiques

J'ai toujours rêvé d'un ordinateur qui soit aussi facile à utiliser qu'un téléphone. Mon rêve s'est réalisé : je ne sais plus comment utiliser mon téléphone. [Bjarne Stroustrup]

Mammouth du PHP | 19672 Messages

17 août 2005, 10:19

Ha mais absolument, Access est un outil extrêmement puissant: mais il a deux défauts majeurs : il n'est pas du tout fait pour le web, ce qui est un moindre mal puisque ça n'a jamais été sa destination première, et il tolère très mal les accès concurrents, ce qui est beaucoup plus ennuyeux dans une entreprise où plusieurs personnes utilisent la même base. Pour la secrétaire-comptable d'une pme dans sont petit bureau qui gère ses commandes , ses factures, les listes de clients ou les devis, très bien, parfait même, tant qu'elle est la seule à l'utiliser. Si l'entreprise prend de l'expansion et que les bureaux doivent avoir un ajout de personnel administratif pour se partager le travail sur ces mêmes éléments, si une migration vers un système plus adapté n'est pas fait dans la foulée, les galères apparraissent assez rapidement.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe: