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

Développement SQL Server Discussion :

Besoin d'avis sur le suivi de changement de colonnes en base


Sujet :

Développement SQL Server

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4
    Points : 2
    Points
    2
    Par défaut Besoin d'avis sur le suivi de changement de colonnes en base
    Bonjour à tous,

    j'aurai besoin de vos avis sur deux possibilités techniques permettant de suivre les changements apportés à une table Membre (par exemple).
    Le but est ensuite d'envoyer les données modifiées à une autre application X

    L'application X veut pouvoir recevoir toutes des données de Membre (pour une synchro totale) ou seulement les données modifiées depuis le dernier envoi.


    Solution 1:
    1. Créer une table Membre_FOR_SYNCHRO qui dispose de colonnes permettant de suivre les données du membre plus la date de la dernière synchronisation.
    2. Créer une procédure stockée qui :
      • Va chercher ,via un premier SELECT, toutes les données pouvant être envoyées et les stoque dans une table temporaire en mémoire par exemple
      • Va chercher dans la table Membre_FOR_SYNCRO toutes les données qui ont été envoyées la dernière fois et les stoque dans une seconde table
      • Compare chacune des lignes et colonnes des deux tables temporaire afin de voir ce qui a été modifié entre temps et stoque les modifications dans une nouvelle table temporaire avec un tag "Update". Les ajouts de membres sont alors reconnus comme étant des lignes qui n'était pas présentes dans la table Membre_FOR_SYNCRO et sont rajoutée avec un tag "Create".
    3. les données de la table Membre_FOR_SYNCRO sont alors remplacées par les données de cette table temporaire.


    Les données renvoyées sont les données présentes dans la table Membre_FOR_SYNCRO


    Solution 2:
    1. Créer une table Membre_Shadow qui regroupes les colonnes dont on souhaite suivre les modifications.
    2. Ajouter des colonnes pour la date de modification, type de modification (insert, update...)
    3. créer des triggers pour les insertion, modifications, suppression sur la table Membre


    Il suffit ensuite de n'envoyer que les modifications ajoutées depuis le dernier envoi.

    Autres données du problème, la table Membre dispose d'entre 50000 et 100000 lignes et d'au moins 4 colonnes à tracer.


    Merci aux courageux d'avoir lu tout ce message
    Vos avis, remarques, critiques sont les bien venues.

    Merci!

  2. #2
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Points : 12 371
    Points
    12 371
    Par défaut
    Bonjour,

    Si vous travaillez sous SQL Server 2008, je vous conseille d'utiliser les deux nouvelles fonctionnalités de suivi de modifications de données.

    Si vous travaillez avec une version précédente à la version 2008 (2005 ou 2000 par exemple), j'opterai pour la seconde solution.
    La première me semble lourde à mettre en place, et les tables temporaires (si vous les entendez au sens #maTable ou @maTable) sont contre-performants (j'explique ici pourquoi).

    @++

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Merci elsuket pour ta réponse!

    Nous sommes sous SQL Server 2005 pour le moment donc on est forcé de mettre en place une solution nous même.

    Merci aussi pour ton article très intéressant, la partie sur les performances m'a appris plein de chose

    A+

  4. #4
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Points : 12 371
    Points
    12 371
    Par défaut
    Mais peut-être pouvez-vous envisager de passer à SQL Server 2008 ...

    @++

Discussions similaires

  1. besoin d'avis sur le cour que j'ai suivi
    Par xxxooorrr dans le forum C
    Réponses: 33
    Dernier message: 21/09/2007, 23h19
  2. [débutant] besoin d'avis sur architecture de base.
    Par Mathusalem dans le forum Oracle
    Réponses: 3
    Dernier message: 14/11/2006, 15h43
  3. Besoin d'avis sur mon thread
    Par SanNash dans le forum Concurrence et multi-thread
    Réponses: 1
    Dernier message: 20/06/2006, 11h44
  4. Besoin d'avis sur PC
    Par ren29 dans le forum Ordinateurs
    Réponses: 28
    Dernier message: 11/12/2005, 21h32
  5. Besoin d'avis sur un offre d'embauche en SSII
    Par Anne_so2121 dans le forum SSII
    Réponses: 14
    Dernier message: 25/07/2005, 13h09

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