Requete ok sous PHP4, et ne fonctionne plus sous PHP5
(LA GLOBULE) C'est moi qui ai parlé d'InnoDB. J'ai l'habitude d'utiliser ce moteur en raison des contraintes de clé.
Développeur récurrent, procédural et relationnel. Caustique soupe-au-lait.
LupusMic > Au niveau des recherches, tu utilises une technique spéciale avec InnoDB ? un algo de recherche ?
Peut etre pourrais tu m'aiguiller niveau algo de recherche PHP ?
. Je vais essayer de trouver quelque chose à ce sujet...
Merci !
Je vais déjà me tourner vers Phonex pour voir
Sammuel, tout comme Lupus mic, j'utilise beaucoup innodb (ne serait ce que pour les transactions), et pour le moteur de recherche du site, je duplique en fait mes tables en MyISAM avec un FULLTEXT.
Comment ca marche : quand un message est inséré dans mon forum, je l'insert dans une table innodb et je met aussi à jour d'autres tables, le tout dans une transaction. Ensuite, j'insere également le message dans une table MyISAM (et la, si la requete merde, ben elle merde, au pire les recherches du site seront moins précises, mais je perds pas l'intégrité de ma base principale innoDB).
Les raisons de ce choix :
- simplicité de mise en place
- faible cout CPU lors des recherches
- j'ai une petite base de données à la base (sans table dupliquée) et donc ma base n'est pas forcement beaucoup plus grosse avec ces tables dupliquées (la base pour lephpfacile : 100 Mo environ).
PS : cette technique était utilisée par wikipedia il n'y a pas ci longtemps que ca. Eux par contre, ils remplissaient les tables MyISAM toutes les nuits au lieu de les remplir à chaque insertion d'article => leur recherche était moins précise jusqu'à ce que la nuit arrive, mais le lendemain, la recherche donnait tous les résultats possibles.
PPS : les deux techniques sont combinables => tu peux insérer dans la table MyISAM au fur et à mesure et lancer toutes les nuits un script qui calculera le diff entre les deux tables et compléter la table MyISAM.
Et pour encore simplifier les choses, et rendre l'opération atomique, on peut imaginer remplir la table MyISAM depuis une procédure stockée appelée via un trigger.
Développeur récurrent, procédural et relationnel. Caustique soupe-au-lait.
Oui pour le trigger, j'ai vu un exemple !
Sinon ce qui me dérange dans cette technique de stockage innoDB/MyISAM c'est de devoir dupliquer la table la plus importante de ma BDD pour pouvoir utiliser FULLTEXT. Et comme elle aura plus d'1 million d'enregistrements, ce n'est pas génial niveau poids !
La seule alternative a ça, est de trouver, coder un algo PHP ! Maintenant, si l'algo va utiliser plus de ressources que FULLTEXT. Là, je suis ok pour dupliquer une table en FULLTEXT au format MyISAM.
Je vais déjà tenté l'aventure innoDB pour voir... si cela peux simplifier mes requetes. Ensuite, je vais tester FULLTEXT en dupliquant une table au format MyISAM et en utilisant un trigger pour la mettre à jour. Et ensuite, je ferai un test de comparaison entre FULLTEXT et un algo PHP !
Ecrire un message
Votre message vient d'être créé avec succès.
BB-Code
Pour insérer une URL clickable
Pour insérer une adresse E-mail
Pour annoter
Pour écrire du code
Pour faire un lien vers une fonction PHP
Pour écrire du texte préformaté
Pour écrire du texte en gras
Pour écrire du texte en italique
Pour écrire du texte souligné
Pour écrire du texte barré
Pour écrire un titre principal
Pour écrire un titre secondaire
Pour écrire une liste
Smiley
:bond:
:boxe:
:bsmile:
:bump:
:clap:
:coeur:
:cool:
:cry:
:eek:
:evil:
:fleur:
:fou2:
:fou:
:grin:
:grrr:
:hammer:
:hippy:
:hum:
:idee2:
:idee:
:kdo:
:king:
:ko:
:lol:
:love2:
:love:
:mad:
:maitre:
:noel:
:oops:
:raa:
:razz:
:roll:
:sad:
:skull:
:smile:
:timide:
:trink:
:vice:
:vomi:
:wink:
:zzz: