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

MS SQL Server Discussion :

Intégration de données provenant de plusieurs sites (Serveur)


Sujet :

MS SQL Server

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Octobre 2008
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Intégration de données provenant de plusieurs sites (Serveur)
    Bonjour, voici ma problématique

    Environnement : SQL server 2005

    Problématique :
    Nous disposons de plusieurs points géographiques (des points géographiques dits « distants » et un point géographique dit « central ») avec sur chacun une machine avec SQL server.
    Chaque serveur possède la même table « Utilisateurs » avec deux champs : la clé primaire « NumClient » et un champ « email ».

    Nous souhaiterions pouvoir faire des ajouts d’utilisateurs depuis chaque point géographique, que l’information soit envoyée au serveur central et qu’ensuite ce dernier redistribue les informations aux autres points géographiques.

    Problème : si deux point géographiques ajoutent le même NumClient, comment se passe la résolution de conflits sur le serveur central ?

    Nous avons exploré pour l’instant deux pistes :
    - La première en utilisant le service broker pour l’envoi et le traitement des demandes des serveurs distants vers le central (broker logue les demandes en local, les envoie sur le serveur central où l'insertion est effectuée) ; puis une réplication transactionnelle pour renvoyer les informations aux serveurs distants.
    o Intérêts :
    nous loguons les demandes distantes et si il y a une coupure entre le serveur distant et le serveur central, les demandes peuvent être « rejouées » par la suite
    il n’y a pas de problème d’ajout simultané du même NumClient puisque Broker traite tout sous forme de file.
    o Inconvénients :
    l’information n’est pas immédiatement exploitable sur le serveur distant, nous sommes dépendant du temps de réplication et donc il est impossible de « prédire » le moment ou l’information sera disponible.
    l’état de file d’attente peut créer un goulot si beaucoup de demandes arrivent en même temps et le temps de traitement sera encore allongé.

    - La seconde reprend le schéma précédent avec une système de réplication de fusion. Cette solution semble répondre en tout point à notre besoin cependant nous n’avons pas encore eu le temps de la tester complètement ; mes questions sont surtout liées à ma structure de données Utilisateurs (NumClient (PK), Email). Je me demande si le problème ne vient pas de la table elle-même et s’il ne faudrait pas rajouter un champ dans la table du style « IdPointGeo » pour avoir une unicité du couple NumClient / PointGeo et non du champ NumClient seul ; ainsi chaque point géo pourrait faire ses ajouts d’utilisateurs sans générer de problèmes d’intégrité au moment d’arriver sur le serveur central.

    Merci de vos réponses

  2. #2
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 847
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 847
    Points : 52 962
    Points
    52 962
    Billets dans le blog
    6
    Par défaut
    Problème : si deux point géographiques ajoutent le même NumClient, comment se passe la résolution de conflits sur le serveur central ?
    Ceci peut être résolu si vous êtes en auto incrément en spécifiant la valeur de départ et le pas.
    Par exemple avec 5 serveurs il suffit de décider que les auto incréments se feront de la sorte :
    IDENTITI(1, 5) => sur le serveur 1
    IDENTITI(2, 5) => sur le serveur 2
    IDENTITI(3, 5) => sur le serveur 3
    IDENTITI(4, 5) => sur le serveur 4
    IDENTITI(5, 5) => sur le serveur 5
    etc...

    Ensuite, si les données des serveurs autre que son propre lieu ne peuvent être modifiées, alors prenez une réplication transactionnelle ou peer to peer plutôt que la fusion qui modifie profondément les tables et nécessite une grosse admin (gestion des conflits).

    Dans tous les cas définissez un temps de latence d'au moins quelques minutes plutôt que "dès que possible" (instantanée).

    La dernière solution pouvant être d'utiliser service broker pour distribuer les données. Avantages considérables : asynchrone, transcationné, fiable, sécurisé, crypté et over http !

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  3. #3
    Nouveau Candidat au Club
    Inscrit en
    Octobre 2008
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Merci pour cette réponse, l'idée de l'auto incrément est tout à fait intéressante, nous allons explorer cette piste.

    Je reviens vers vous si jamais j'y vois certaines limites.

    Si toutefois certains d'entre vous ont déjà mis en place ce type d'architecture, je serais curieux d'avoir aussi leur avis.

    Merci

Discussions similaires

  1. Réponses: 0
    Dernier message: 27/06/2011, 11h36
  2. Réponses: 2
    Dernier message: 26/10/2009, 14h40
  3. Réponses: 4
    Dernier message: 15/11/2007, 11h43
  4. Réponses: 15
    Dernier message: 04/07/2007, 12h04
  5. Réponses: 2
    Dernier message: 21/02/2007, 11h22

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