IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

SQL Procédural MySQL Discussion :

Index Fulltext MyIsam vs InnoDB


Sujet :

SQL Procédural MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27
    Par défaut Index Fulltext MyIsam vs InnoDB
    Bonjour à tous,

    J'ai dévellopé une application pour laquelle le choix c'est porté sur le moteur InnoDB pour des raisons évidentes d'efficacité. Le revert de la médaille est que malheureseument les index Fulltext ne sont pas gère sur ce moteur de stockage... Chose que j'ignorais

    J'arrive à une étape de mon projet ou je dois réaliser des moteurs de recherche "complexe".

    J'ai donc une idée simple : copier régulièrement la base avec les tables InnoDB vers une copie utilisant MyIsam.

    Je me pose donc des questions sur la façon d'effectuer une telle manipulation ?

    Hypothèse 1 : lancer, via un cron, toutes les X heures, un script qui :

    - fera un dump de la base avec les tables InnoDB
    - supprimera la base les tables MyIsam
    - rechargera les tables en changeant les "InnoDB" par des MyIsam et en supprimant les contraintes d'intégrité

    Hypothèse 2 : utiliser la réplication mais dans ce cas comment mettre le slave en MyIsam ?

    Hypothèse 3 : pas d'hypothèse 3 pour le moment.

    Merci d'avance pour vos idées !

    ++

  2. #2
    Membre éprouvé
    Avatar de berceker united
    Profil pro
    SQL
    Inscrit en
    Février 2005
    Messages
    3 509
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : SQL
    Secteur : Finance

    Informations forums :
    Inscription : Février 2005
    Messages : 3 509
    Par défaut
    Pourquoi tu ne fais pas un trigger dans le seul cas ou tu utilises mysql 5

  3. #3
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 287
    Par défaut
    Tu peux parfaitement mêler dans la même base des tables de moteurs de stockage différents, et donc mettre en MyISAM la table sur laquelle tu as besoin de faire de la recherche FULLTEXT, tout en laissant les autres en InnoDB (ALTER TABLE machin ENGINE = MyISAM).

    Tu peux également fairer un partitionnement vertical, càd garder ta table en InnoDB, mais déplacer les colonnes concernées par la recherche FULLTEXT dans une table MyISAM.

    Finalement, si tu préfères copier tes données, berceker a raison, le plus simple c'est de mettre des triggers.

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27
    Par défaut
    Merci pour vos réponses.

    La première chose : l'application est finie à 95% donc je ne souhaite pas pour le moment changer radicalement la structure de données.

    Ensuite, la structure de données est assez complète et les requêtes pour les recherches utilisent parfois 5/6 tables diffèrentes. Il y a des relations un peu partout

    Concernant l'éventualité de mélanger table MysIsam et InnoDB, je ne pense pas que ce soit possible. Exemple : j'ai une table "texts" sur laquelle je dois effectuer des recherches sur le champ titre mais qui a des liaisons avec 5 ou 6 autres tables (idpublisher/idcontact/idauthor...) et il y a des contraintes d'intégrités. Sur une même recherche, je vais "taper" dans le champ titre de la table texts, le nom de l'auteur (table authors), le nom d'un "publisher" (table "contacts", la production ect...

    Si j'utilise des triggers, il me faudra un paquet de règles ? non ?

    Je n'ai encore jamais utilisé de trigger Est-ce qu'il est possible de faire des règles "globales" ? Genre : "si n'importe quoi de la table est modifié alors faire la même modification sur l'autre table..."

    C'est le premier projet ou j'utilise globalement InnoDB et les contraintes d'intégrité. pardonnez donc mon ignorance sur les triggers et les subtilités

    ++

  5. #5
    Membre éprouvé
    Avatar de berceker united
    Profil pro
    SQL
    Inscrit en
    Février 2005
    Messages
    3 509
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : SQL
    Secteur : Finance

    Informations forums :
    Inscription : Février 2005
    Messages : 3 509
    Par défaut
    Citation Envoyé par YvesTan Voir le message
    Merci pour vos réponses.

    La première chose : l'application est finie à 95% donc je ne souhaite pas pour le moment changer radicalement la structure de données.

    Ensuite, la structure de données est assez complète et les requêtes pour les recherches utilisent parfois 5/6 tables diffèrentes. Il y a des relations un peu partout

    Concernant l'éventualité de mélanger table MysIsam et InnoDB, je ne pense pas que ce soit possible. Exemple : j'ai une table "texts" sur laquelle je dois effectuer des recherches sur le champ titre mais qui a des liaisons avec 5 ou 6 autres tables (idpublisher/idcontact/idauthor...) et il y a des contraintes d'intégrités. Sur une même recherche, je vais "taper" dans le champ titre de la table texts, le nom de l'auteur (table authors), le nom d'un "publisher" (table "contacts", la production ect...

    Si j'utilise des triggers, il me faudra un paquet de règles ? non ?

    Je n'ai encore jamais utilisé de trigger Est-ce qu'il est possible de faire des règles "globales" ? Genre : "si n'importe quoi de la table est modifié alors faire la même modification sur l'autre table..."

    C'est le premier projet ou j'utilise globalement InnoDB et les contraintes d'intégrité. pardonnez donc mon ignorance sur les triggers et les subtilités

    ++
    Dans ton trigger tu peux declencher une procedure stockée. Ainsi tu developpe qu'une fonction pour tous le monde.

    Personnellement, je m'étais posé un peut pret la même question que toi concernant le moteur de recherche. J'ai pris la décision pour deux choses.
    L'utilisation du Full-Text. Plus, une taxinomie de mot.
    Je peux accrocher a mon objet des hierarchies de mot. Exemple :
    J'ai un objet Television. A cette tele je vais accrocher les mots suivant TV, DVD, TNT. Mais comme le monde est fait ainsi, il y a des gens qui ne savent pas écrirent (comme moi) . Donc, je fais des dérivés : TV => Tévé, Télé,Televiseur=>Télé viseur.
    Pour DVD => Dévédé, DVDé ainsi de suite. Les dérivés peuvent être encore dérivé.
    De là, tu enrichies un dictionnaire à laquelle tu peux accrocher n'importe quel objet. Quelqu'un tape un meut tu peux remonter toute la chaine jusqu'a trouver les objets accroché au bout.

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27
    Par défaut
    Bon. Je vais mettre le nez dans les triggers et les procédures stockées pour voir si je peux obtenir ce que je veux.

    Ton exemple est intéressant mais comment tu remplis le dictionnaire ?

    Je ne pense pas cependant que ca puisse me servir car les recherches sont assez précises (texte, nom d'artiste, spectacle...)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. De MyIsam vers InnoDB
    Par cocomsa dans le forum Administration
    Réponses: 2
    Dernier message: 03/08/2006, 13h12
  2. [Débutante] Stockage images et vidéos : MyISAM ou InnoDB
    Par ultracoxy dans le forum SQL Procédural
    Réponses: 5
    Dernier message: 19/06/2006, 15h18
  3. [index fulltext] Can't create table
    Par clemsouz dans le forum Administration
    Réponses: 11
    Dernier message: 16/05/2006, 17h37
  4. MyIsam ou InnoDB?
    Par Julien.alkaza dans le forum Requêtes
    Réponses: 4
    Dernier message: 01/01/2006, 18h18
  5. Probleme d'index fulltext assez bizarre
    Par Clovis37 dans le forum Débuter
    Réponses: 4
    Dernier message: 08/07/2005, 19h59

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo