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

Requêtes MySQL Discussion :

problème de conception


Sujet :

Requêtes MySQL

  1. #1
    Membre régulier
    Inscrit en
    Mai 2010
    Messages
    177
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 177
    Points : 79
    Points
    79
    Par défaut problème de conception
    Bonjour à tous,

    Je viens vous voir car j'ai un pépin.

    Une base déjà existante a pas mal d'enregistrements (plus d'un milliard).

    Un autre serveur aura aussi ses enregistrements avec ses propres clés primaires. Pas de réplication possible.

    Pour simplifier l'exemple, considérons deux tables :
    table 1 => inscrit
    table 2 => adresses

    La table 2 contient l'id de la table 1 pour les jointures sur le champ id.

    Idem sur l'autre serveur.

    Alors trois idées sont venues :

    1) sur le deuxième serveur où les données vont devoir être mergées, les clés primaires (id) auront une valeur très supérieure. Avantage : permet de s'en sortir pendant un temps mais si les id se rejoignent, c'est la fin des haricots.

    2) se débrouiller pour que les id de chaques serveurs commencent par un chiffre, cela nous oblige à avoir 9 serveurs au max.

    3) avoir un id de type texte s1-"id" pour le serveur 1 s2-"id" pour le serveur 2 etc. Ceci nous ferait perdre massivement en performance.

    Je ne vois pas de solution pour ne pas être ennuyé avec les clés primaires lors de merge massifs. Le tout sans réplication (sinon je ne serais pas là).

    Vous avez une idée qu'on n'aurait pas vue ? On ne peut plus changer de manière drastique les base. Un nouveau modèle ne peut pas être envisagé pour le moment.

    Merci à vous,

    LeHibou2

  2. #2
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 793
    Points : 34 024
    Points
    34 024
    Billets dans le blog
    14
    Par défaut
    Il faut ajouter une colonne identifiant le serveur d'où provient la donnée et l'inclure dans la clé primaire.

    inscrit (ins_serveur, ins_id...)
    adresse (adr_id_serveur, adr_id, adr_id_inscrit...)

    On suppose ici que l'id du serveur de l'adresse est le même que l'id du serveur de l'inscrit.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  3. #3
    Membre régulier
    Inscrit en
    Mai 2010
    Messages
    177
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 177
    Points : 79
    Points
    79
    Par défaut
    C'est effectivement une excellente solution.

    Cependant comment être sûr de trouver la ligne selon que l'on se connecte sur le serveur 1 ou 2 ?

    Ca complique pas mal.


    Autre solution : prévoir 100 milliards de lignes par serveur et commencer les id du serveur 2 à 200 milliards. etc...
    Le merge ne pose plus de soucis comme ça.

    100 milliards de lignes, c'est quand même pas mal. On peut aussi encore aller plus loin avec 1000 milliards de lignes.

    Point de vue perf, cela restera correct, non ? Bien sûr un poil plus long que si on avait id=1, mais je ne pense pas que cela sera très problèmatique.

    Un point que je ne soupçonne pas ?

    Merci beaucoup,

  4. #4
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 793
    Points : 34 024
    Points
    34 024
    Billets dans le blog
    14
    Par défaut
    Citation Envoyé par LeHibou2 Voir le message
    C'est effectivement une excellente solution.

    Cependant comment être sûr de trouver la ligne selon que l'on se connecte sur le serveur 1 ou 2 ?
    Quel problème ?

    Soit je sais que j'ai besoin de la ligne 124 du serveur 2, soit je cherche l'inscrit ayant pour login "LeHibou2" et c'est la requête qui me retournera par exemple l'identifiant {124, 2}.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  5. #5
    Membre régulier
    Inscrit en
    Mai 2010
    Messages
    177
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 177
    Points : 79
    Points
    79
    Par défaut
    N'est-ce pas plus long que de simplement chercher l'id dans la base ?

    Je veux dire : id unique grâce à une plage d'id entre deux serveurs très large ?

  6. #6
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 793
    Points : 34 024
    Points
    34 024
    Billets dans le blog
    14
    Par défaut
    Dans les deux cas, c'est une recherche sur la clé primaire. C'est peut-être légèrement plus long avec deux colonnes mais pas sûr que ce soit significatif.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  7. #7
    Membre régulier
    Inscrit en
    Mai 2010
    Messages
    177
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 177
    Points : 79
    Points
    79
    Par défaut
    Merci beaucoup Cinéphil,

    On part donc sur deux solutions à creuser avec sérieux.

    La réplication aurait permis de gagner pas mal de temps. Quoique sur du wan.. avec de la réplication master-master...

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

Discussions similaires

  1. Méthode Finalize et problème de conception
    Par phryos dans le forum Langage
    Réponses: 4
    Dernier message: 19/04/2006, 12h04
  2. [VB6][UserControl et OCX]Problème de conception
    Par jacma dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 19/01/2006, 23h37
  3. Petit problème de conception sur access
    Par coooookinette dans le forum Modélisation
    Réponses: 3
    Dernier message: 18/12/2005, 19h24
  4. Gestion des départements problème de conception
    Par snoopy69 dans le forum Modélisation
    Réponses: 7
    Dernier message: 11/10/2005, 14h08
  5. Problème de conceptions de tables
    Par dtavan dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 24/05/2004, 00h13

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