Comment éviter les doublons lors d'une réplication ?
Comment éviter les doublons lors d'une réplication ? - SQL/NoSQL - Programmation
MarshPosté le 19-01-2006 à 01:34:54
Salut à tous,
Je n'ai toujours pas trouvé comment éviter les doublons quand deux articles identiques sont créés dans deux réplicas Access différents puis envoyés à la base maître.
Je m'explique:
J'ai plusieurs utilisateurs sous Access qui utilisent chacun un réplica d'une base maître. Ils n'accèdent pas directement à la base maître car celle-ci ne supporterait pas la charge et que le réseau serait vite engorgé vu le nombre d'articles de chaque table. Donc, utilisations de réplicas. Tout va bien tant qu'il s'agit de faire des modifs. Par contre, l'insertion de données pose un problème majeur. Si User1 crée un client et que User2 crée exactement le même client, après réplication je me retrouve avec deux fois le même client. J'utilise des clés aléatoires comme clés primaires (Access ne laisse pas trop le choix de toute façon pour les tables répliquées). Donc, stricto sensu, les deux articles sont différents. J'ai bien pensé faire une recherche de doublons après chaque synchronisation pour éliminer le surplus, mais on ne peut pas éliminer ces clients en double sans éliminer les commandes qui leur sont rattachées. Il faudrait donc rattacher les commandes à la première occurence du client, mais vu que le client (un mandataire) représente une société, cela ajoute des tables jointes entre le client et sa commande et on peut avoir aussi des doublons sur la société, ce qui complexifie le problème. Donc, on a vite fait de construire une usine à gaz pour un traitement très lourd (recherche de doublons, modification de plusieurs clés pour rattacher les commandes à un client unique, élimination des doublons inutiles) que je ne peux pas me permettre (l'utilisateur n'a pas envie d'attendre trois heures après chaque synchronisation avec la base maître). Et en plus, toute modif d'un autre utilisateur sur le client ou les demandes qui sont en cours de réorganisation risque de finir à la poubelle. Donc gros souci.
Marsh Posté le 19-01-2006 à 01:34:54
Salut à tous,
Je n'ai toujours pas trouvé comment éviter les doublons quand deux articles identiques sont créés dans deux réplicas Access différents puis envoyés à la base maître.
Je m'explique:
J'ai plusieurs utilisateurs sous Access qui utilisent chacun un réplica d'une base maître. Ils n'accèdent pas directement à la base maître car celle-ci ne supporterait pas la charge et que le réseau serait vite engorgé vu le nombre d'articles de chaque table. Donc, utilisations de réplicas. Tout va bien tant qu'il s'agit de faire des modifs. Par contre, l'insertion de données pose un problème majeur. Si User1 crée un client et que User2 crée exactement le même client, après réplication je me retrouve avec deux fois le même client. J'utilise des clés aléatoires comme clés primaires (Access ne laisse pas trop le choix de toute façon pour les tables répliquées). Donc, stricto sensu, les deux articles sont différents. J'ai bien pensé faire une recherche de doublons après chaque synchronisation pour éliminer le surplus, mais on ne peut pas éliminer ces clients en double sans éliminer les commandes qui leur sont rattachées. Il faudrait donc rattacher les commandes à la première occurence du client, mais vu que le client (un mandataire) représente une société, cela ajoute des tables jointes entre le client et sa commande et on peut avoir aussi des doublons sur la société, ce qui complexifie le problème. Donc, on a vite fait de construire une usine à gaz pour un traitement très lourd (recherche de doublons, modification de plusieurs clés pour rattacher les commandes à un client unique, élimination des doublons inutiles) que je ne peux pas me permettre (l'utilisateur n'a pas envie d'attendre trois heures après chaque synchronisation avec la base maître). Et en plus, toute modif d'un autre utilisateur sur le client ou les demandes qui sont en cours de réorganisation risque de finir à la poubelle. Donc gros souci.
Avez-vous des idées ?
Merci d'avance,
Fred