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

 MySQL Discussion :

Requete sur plusieurs bases distantes


Sujet :

MySQL

  1. #1
    Membre éclairé
    Avatar de keaton7
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    743
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 743
    Points : 689
    Points
    689
    Par défaut Requete sur plusieurs bases distantes
    Bonjour,

    (J'aurai pas mis longtemps a revenir ^^)

    J'ai besoin (dans l'idéal) de faire une jointure entre 2 bases distantes. Je pensais que c'était de la science fiction mais j'ai trouve sur ce forum des sujet a ce propos disant que la syntaxe "FROM base.table" était possible.

    Je pense cependant que on parlait de bases differentes mais hébergées sur le même serveur avec le même user ayant des droits sur les deux tables.

    Comment gérer ça sur des tables distantes a votre avis, pour deux hébergements mutualises distincts ?

    Pour l'exemple, j'ai besoin de mélanger des articles d'une base locale a ceux d'une base distante par un table intermédiaire en spécifiant ceux actifs ou non du type :

    tousArticles(idArticle,activiteArticle,type)

    Le type détermine si l'article est global ou local, et donc l'endroit ou aller le chercher.

    D'avance merci.

  2. #2
    Membre expert
    Avatar de Maljuna Kris
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2005
    Messages
    2 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 613
    Points : 3 950
    Points
    3 950
    Par défaut
    Avec Access, j'imagine que tu peux attacher deux tables issues de bases et de serveurs différents (via ODBC), et donc ensuite faire une jointure sur ces tables attachées.
    Mais avec MySQL je ne vois pas comment s'y prendre.

  3. #3
    Membre éclairé
    Avatar de keaton7
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    743
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 743
    Points : 689
    Points
    689
    Par défaut
    Mais je suis sous php-mysql ...

  4. #4
    Membre éclairé
    Avatar de keaton7
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    743
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 743
    Points : 689
    Points
    689
    Par défaut
    L'un dans l'autre, on se situe dans une optique site Général <=> site Client et mettre les informations de connexion au site global dans un fichier sur le site d'un client me parait complètement déraisonnable ! il suffit qu'un jour ce ne soit plus notre client pour que je ne dorme plus la nuit ^^.

    Je pense donc a faire un système de transfert d'infos via http (file_get_content), c'est a dire faire une requête sur une base locale des éléments a aller chercher (par id), envoyer une requête http au serveur qui me renverrai un flux XML des données a afficher (ou des objets serialises, peut importe) ... mais j'ai peur que ce système soit super lent, on aurait :
    - la requête locale
    - la requête http client vers serveur
    - la requête sur le site général
    - la requête http serveur vers client
    - l'affichage de la page

    C'est pas franchement super non plus de ce point de vue ... Avez vous déjà été confrontes a ce type de questionnement a tout hasard ?

  5. #5
    ced
    ced est déconnecté
    Rédacteur/Modérateur

    Avatar de ced
    Homme Profil pro
    Gestion de bases de données techniques
    Inscrit en
    Avril 2002
    Messages
    6 034
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Gestion de bases de données techniques
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2002
    Messages : 6 034
    Points : 23 779
    Points
    23 779
    Par défaut
    Bonjour,

    A ma connaissance, la seule façon native de faire ça dans MySQL, c'est par le moteur de table FEDERATED. Mais je n'ai jamais testé et je n'en sais pas plus.

    Une autre solution : sélectionner les données dans des tableaux PHP par 2 connexion et croiser ensuite les tableaux en PHP...

    ced

  6. #6
    Membre éclairé
    Avatar de keaton7
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    743
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 743
    Points : 689
    Points
    689
    Par défaut
    Ça ressemble a ce que j'aimerai mettre en place, mais comme je le disais dans mon post au dessus, ca m'oblige a passer des mots de passe importants en clair ... Et si je peux éviter ...

  7. #7
    Membre expert
    Avatar de Maljuna Kris
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2005
    Messages
    2 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 613
    Points : 3 950
    Points
    3 950
    Par défaut
    Citation Envoyé par keaton2000 Voir le message
    Mais je suis sous php-mysql ...
    ODBC permet d'attacher à Access des tables provenant d'autrer SGBDR.
    Tel était le sens de ma remarque, déclarer via ODBC les tables MySQL distantes comme attachées dans une base Access et y réaliser la jointure.
    C'est une usine à gaz, ça doit être d'une lenteur épouvantable et ça requiert Access (licence payante).
    Je ne sache pas qu'on puisse faire la même chose avec Open Office, mais c'est à étudier.

  8. #8
    Membre éclairé
    Avatar de keaton7
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    743
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 743
    Points : 689
    Points
    689
    Par défaut
    Ok, je comprend bien. Cependant, le choix délibéré de me tourner vers une connexion directe a ma deuxième base est de gagner du temps de chargement. Si cela rame encore plus et me crée une faille de sécurité (mots de passe), l'intérêt et moins évident, et je me rabattrai sur des flux de données via HTTP.

    C'est pourquoi pour comparer les solutions les plus performantes, et par rapport a ce que vous me proposez, la question se transforme en : Laquelle de ces méthodes est la plus performante et surtout la plus logique pour charger des contenus dynamiques ? (celle que vous même vous n'hésiteriez pas a utiliser )

    (A noter que tout se passe chez le client)
    • Une requête vers une table locale pour récupérer les id d'éléments a charger, puis une deuxième requête sur une table distante pour charger ces éléments.
      Avantages : Facile a mettre en place ^^
      Inconvénients : Ecris le mot de passe de la bdd principale en clair dans le code des fichiers du client
    • Une jointure grace a la fonction FEDERATED
      Avantages : Une seule requete
      Inconvénients : La requete est surement longue, Ecris le mot de passe de la bdd principale en clair dans le code des fichiers du client, le mot d epasse passe en clair dans la requete.
    • Une requete HTTP pour chaque élément a charger, c'est a dire que le client envoi une liste d'elements au serveur principal qui lui renvoi une liste d'objets serialises ou un flux XML.
      Avantages : Methode la plus securisee
      Inconvénients : Cette methode devrai etre plus lente et tres imprevisible en fonction du traffic du site

      Avez vous des suggestions personnelles de votre cote pour m'aider a faire mon choix ? Des solutions supplementaires ? Parce typiquement ce qu'il me manque face a ce genre de probleme, c'est l'expérience d'avoir déjà fait ou vu des cas similaires ^^

  9. #9
    Membre expert
    Avatar de Maljuna Kris
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2005
    Messages
    2 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 613
    Points : 3 950
    Points
    3 950
    Par défaut
    Ma seule expérience de communication entre applications (et donc entre leurs bases de données) était en tant qu'utilisateur.

    L'une des bases offrait un web-service à l'autre et elles échangeaient par ce biais.
    Concrètement il s'agissait de la base de données du CNOUS pour les demandes de bourses et de logement des étudiants et l'application de gestion des réservations dans les cités universitaires.

    Je sais que le même type de web-service a été mis en place entre les bases d'inscription dans les universités et la base nationale des demandes de bourses.

  10. #10
    Membre éclairé
    Avatar de keaton7
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    743
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 743
    Points : 689
    Points
    689
    Par défaut
    Le truc c'est que la je ne récupère pas un élément isole, ce sont les listes d'éléments que j'utilise ... Effectivement, la solution du web service est intéressante, et je suis en train de la tester, mais avec de moins en moins de conviction a vrai dire ...

    EDIT :

    Je continue ce sujet pour le meilleur choix de bdd ou de requête distante.

    Mais concernant les performances d'une requête HTTP en php, j'en ai crée un nouveau : http://www.developpez.net/forums/d71...l/#post4150825


  11. #11
    Membre éclairé
    Avatar de keaton7
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    743
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 743
    Points : 689
    Points
    689
    Par défaut
    Pour reprendre les choses depuis le début, je vous expose ma problématique, peut-être que je m'y prend mal quelque part et ça expliquerai pourquoi mon probleme me semble sans issues (ptet même qu'en l'écrivant ça va me débloquer qui sait ^^)


    La problématique :
    J'ai une base Principale qui contient des éléments. Disons des articles. Des admins travaillent sur la mise a jour de cette base spécifiquement.

    Un client a un site qui dépend de cette base principale et a également une base a lui (Locale). Ce client veut afficher certains articles mais pas tous. Pour cela, il a un admin lui aussi ou il coche dans la liste de tous les articles, ceux qu'il veut afficher sur son site.

    A l'affichage de la page de lecture du site client, le visiteur ne verra donc que les articles sélectionnés.

    La solution a laquelle j'ai pense :
    Créer une table sur la base Locale (client) : articlesActifs(A_idArticle)
    Lire la liste des articles actifs et chercher sur la base distante les articles correspondants par les méthodes controverses dont j'ai parle précédemment.

    Voyez vous une autre façon de faire a laquelle je n'aurai pas pense, qui poserai moins de questions ?

    Merci déjà pour vos suggestions jusque la

  12. #12
    Membre éclairé
    Avatar de keaton7
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    743
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 743
    Points : 689
    Points
    689
    Par défaut
    Bon apres mure reflexion, il semblerai que le plus fiable soit le dupliquer les entrees du site principal dans les sites clients a partir de ce site principal. Ca permet de ne donner aucun acces au client, d'effectuer uniquement des reuquetes locale, permet une suspension du service en cas de litige tres simplement mais cree autant de fois une entree qu'il y a de site qui en dependent ...

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

Discussions similaires

  1. Requetes sur plusieurs bases de données
    Par Fala fala dans le forum Langage SQL
    Réponses: 5
    Dernier message: 13/09/2010, 15h48
  2. Requete sur plusieurs bases de donnees
    Par jonathankrief dans le forum Langage SQL
    Réponses: 0
    Dernier message: 03/08/2010, 14h32
  3. requete sur plusieurs bases
    Par Rocou dans le forum Langage SQL
    Réponses: 4
    Dernier message: 21/10/2008, 12h03
  4. requete sur plusieurs bases de données
    Par bankette dans le forum Requêtes
    Réponses: 4
    Dernier message: 15/06/2007, 14h06
  5. Une requete sur plusieurs base
    Par MaitrePylos dans le forum PostgreSQL
    Réponses: 6
    Dernier message: 06/10/2006, 16h11

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