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

WinDev Discussion :

2 bases sur 2 serveurs différents. Comment faire un ALIAS [WD15]


Sujet :

WinDev

  1. #1
    Membre habitué
    Inscrit en
    Juin 2009
    Messages
    346
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 346
    Points : 163
    Points
    163
    Par défaut 2 bases sur 2 serveurs différents. Comment faire un ALIAS
    Bonjour,

    Je dois mettre à jour BASE2 selon BASE1. Base 1 et 2 ont la même structure, les fichiers (en l’occurrence ici le fichier CLIENT) ont le même nom mais ces 2 bases sont sur 2 serveurs différents.

    Je voudrais faire un :

    hCopieEnreg(CLIENT sur BASE1, CLIENT sur BASE2)

    Seulement mes fichiers CLIENT ont le même nom sur les 2 bases donc je ne sais pas comment lui dire que le second doit être sur BASE2 et le premier rester sur BASE1.

    Je pense que le code doit inclure du hChangeConnexion, HAlias et hCopieEnreg
    avant de faire du Hajoute(CLIENT sur BASE2, hForceIdAuto) ou Hmodifie(CLIENT sur BASE2) suivant s'il trouve l'ID ou pas.

    Amicalement,

    Eric.

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 287
    Points : 12 998
    Points
    12 998
    Par défaut
    Bonjour,
    Pourquoi ne pas utiliser la réplication entre les deux bases ?

    Tatayo.

  3. #3
    Membre habitué
    Inscrit en
    Juin 2009
    Messages
    346
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 346
    Points : 163
    Points
    163
    Par défaut
    Et bien j'avais déjà échangé sur ce même forum avec une personne qui m'a expliqué en détail la réplication (et je l'en remercie !) mais je pense que je vais avoir un problème...

    L'informaticien en chef de ma boîte me dit que ca va poser un problème au niveau des ID.

    En effet si sur BASE1 il y a les ID : 1 2 4 (car le 3 aura été supprimé), alors sur BASE2 j'aurai les ID : 1 2 3 et ensuite je n'aurai plus de correspondance...

    Enfin voilà j'aimerais bien savoir si je peux mettre un ALIAS afin de faire la manip exposée plus haut.

    Je pourrai faire hForceIdAuto et je n'aurai pas ce problème.

    Amicalement,

    Eric.

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 287
    Points : 12 998
    Points
    12 998
    Par défaut
    Citation Envoyé par EriCstoFF Voir le message
    L'informaticien en chef de ma boîte me dit que ca va poser un problème au niveau des ID.

    En effet si sur BASE1 il y a les ID : 1 2 4 (car le 3 aura été supprimé), alors sur BASE2 j'aurai les ID : 1 2 3 et ensuite je n'aurai plus de correspondance...
    Je ne veux pas mettre en doute les compétences de l'informaticien de ta boîte, mais je doute fort que l'id d'un enregistrement change pendant la réplication.
    Si je suis ton exemple, que je crée une commande associée au client 4 dans la base 1, elle sera associée à un client inexistant dans la base 2.

    Je n'utilise pas la réplication, mais je ne pense pas que l'ID d'un enregistrement change durant la réplication, sinon bonjour le bordel pour retrouver ses petits.

    Est-ce que quelqu'un qui utilise la réplication peut nous confirmer le fait ?

    Tatayo.

  5. #5
    Membre chevronné Avatar de EDM-TAHITI
    Homme Profil pro
    Directeur Service informatique et projet développement
    Inscrit en
    Janvier 2010
    Messages
    994
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Directeur Service informatique et projet développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2010
    Messages : 994
    Points : 1 998
    Points
    1 998
    Par défaut
    Hello,
    Et heureusement que les ID changent, car sinon, ce serait une vraie catastrophe au niveau des réplications. Mais, car il y a un mais, je suis aussi dans ce cas là, et mes ID ne changent pas car je gére la réplication à la main (liaisons, filtres, etc.) ainsi pas de surprise sur ce qui est répliqué ou pas.
    maintenant, il fait que les liaisons des fichiers soient réalisées de telles sortes que si un id change, il faut que l'id du fichier relié change aussi (mais on peut empecher cela dans les liaisons...)
    Voilà ce que je peux dire

  6. #6
    Membre habitué
    Inscrit en
    Juin 2009
    Messages
    346
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 346
    Points : 163
    Points
    163
    Par défaut
    Pour te répondre EDM-TAHITI, voilà comment je procède sans réplication :

    BASE2 est ma base archive où il y a tous les enregistrements.

    BASE1 ne contient plus les vieux dossiers et lorsqu'un nouvel xml arrive, soit il y a un hmodifie si le dossier existe déjà soit il y a un hajoute en cas de nouveau dossier.

    si BASE2 s'arrête à l'ID 3000000 et que BASE1 contient les ID de 2000000 à 4000000.

    Je fais : RQ1 = SELECT * FROM DOSSIERS WHERE ID BETWEEN 2000000 AND 3000000.

    Hchange connexion BASE2

    Puis
    POUR TOUT RQ1
    Hlitrecherchepremier(DOSSIERS,ID,RQ1.ID)
    DOSSIERS.CHAMP1 = RQ1. CHAMP1
    DOSSIERS.CHAMP2 = RQ1. CHAMP2
    ...
    Hmodifie(DOSSIERS)
    FIN

    Ensuite pour les nouveaux ID de BASE1 qui ne sont pas dans BASE2 :

    Je fais : RQ1 = SELECT * FROM DOSSIERS WHERE ID BETWEEN 3000001 AND 4000000.

    Hchange connexion BASE2

    Puis
    POUR TOUT RQ1
    DOSSIERS.CHAMP1 = RQ1. CHAMP1
    DOSSIERS.CHAMP2 = RQ1. CHAMP2
    ...
    Hajoute(DOSSIERS,hForceIdAuto)

    Pour la première partie, les Hmodifie, cela traite 1500 dossiers à la seconde soit 5,4 millions par heure donc ca trace.

    Pour les Hajoute c'est plus lent : 20 à la seconde soit 72 000 par heure. Ca par contre c'est chiant c'est très lent (14h pour 1 million de dossiers).

    Pour les fichiers reliés à DOSSIERS (genre FACTURES, CLIENTS)... je procède pareil.

    Je reçois genre 3 000 000 de nouveaux dossiers par an donc en 2 jours une fois par an, ma BASE2 est nickel.

    Cette technique est-elle si bête ?

    Amicalement,

    Eric.

  7. #7
    Membre expérimenté
    Inscrit en
    Août 2010
    Messages
    732
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 732
    Points : 1 653
    Points
    1 653
    Par défaut
    Bonjour,

    HAlias permet de spécifier un nouveau nom (un alias).
    Et vous pouvez donc avoir 2 fichiers avec la même description, et changer la connexion pour l'un.
    Mais vous saviez déjà quelles fonctions utiliser, alors je ne comprends pas la question.

    En gros :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Fic2 est une Source de Données
    HAlias(Fic, Fic2)
    HChangeConnexion(Fic2, Connexion2)
    POUR TOUT Fic AVEC Id > 42
        HCopieEnreg(Fic2, Fic)
        HAjoute(Fic2)
    FIN
    HAnnule...

  8. #8
    Membre habitué
    Inscrit en
    Juin 2009
    Messages
    346
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 346
    Points : 163
    Points
    163
    Par défaut
    Merci, en fait je vais passer pour un noob mais je pensais que ca allait me créer Fic2 dans ma BASE1... en fait j'avais pas bien compris ce qui se passait.

    Juste pour revenir à mon dernier post où j'expliquais que Hajoute me faisait 20 dossiers par seconde... en fait j'ai fait HEcrit(DOSSIERS,HNbEnr(DOSSIERS)+1,hForceIdAuto)
    et du coup ca m'a ajouté 3300 fichiers par seconde... je clos le tout par un HRéindexe(DOSSIERS,hNdxNormal) qui dure 5 minutes afin de faire apparaître les enregistrements et le tour est joué.

    J'ai l'impression que je maîtrise mieux le bazar qu'avec la réplication... le tout étant très rapide !

    Amicalement,

    Eric.

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

Discussions similaires

  1. [MySQL] Connexion entre 2 bases sur 2 serveur différents
    Par legrandse dans le forum PHP & Base de données
    Réponses: 13
    Dernier message: 23/04/2012, 17h54
  2. Réponses: 21
    Dernier message: 16/02/2011, 14h21
  3. Comment stopper seulement une base sur un serveur multibase?
    Par korntex5 dans le forum Administration
    Réponses: 3
    Dernier message: 26/01/2009, 18h14
  4. Réponses: 1
    Dernier message: 15/05/2008, 19h45
  5. Réponses: 8
    Dernier message: 10/04/2008, 11h11

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