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:
- 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.
- 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".
- 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:
- Créer une table Membre_Shadow qui regroupes les colonnes dont on souhaite suivre les modifications.
- Ajouter des colonnes pour la date de modification, type de modification (insert, update...)
- 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!
Partager