4D v16SYNCHRONIZE |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
4D v16
SYNCHRONIZE
SYNCHRONIZE
La commande SYNCHRONIZE permet de synchroniser deux tables situées sur deux serveurs 4D SQL différents. Toute modification effectuée sur une table est reportée dans l’autre. Le serveur 4D SQL qui exécute la commande est appelé serveur local (LOCAL), l’autre serveur est appelé serveur distant (REMOTE). La commande SYNCHRONIZE équivaut à la combinaison de deux appels internes à la commande REPLICATE. Le premier appel réplique les données depuis le serveur distant vers le serveur local, le second effectue l’opération inverse : réplication des données du serveur local vers le serveur distant. Les tables à synchroniser doivent donc être configurées pour la réplication :
Pour plus d’informations, reportez-vous à la description de la commande REPLICATE. La commande SYNCHRONIZE accepte quatre marqueurs (stamps) en "paramètres" : deux marqueurs en entrée et deux marqueurs en sortie (dernière modification). Les marqueurs d’entrée sont utilisés pour indiquer le moment de la dernière synchronisation sur chaque serveur. Les marqueurs de sortie retournent la valeur des marqueurs de modification sur chaque serveur juste après la dernière modification. Grâce à ce principe, lorsque la commande SYNCHRONIZE est appelée régulièrement, il est possible d’utiliser les marqueurs de sortie de la dernière synchronisation en tant que marqueurs d’entrée pour la suivante. Note : Les marqueurs d’entrée et de sortie sont exprimés sous forme de valeurs numériques (stamps), et non de marqueurs de temps (timestamps). Pour plus d’informations sur ces marqueurs, reportez-vous à la description de la commande REPLICATE. En cas d’erreur, le marqueur de sortie du serveur concerné contient le marqueur de l’enregistrement à l’origine de l’erreur. Si l’erreur provient d’une cause externe à la synchronisation (problèmes réseau par exemple), le marqueur contient 0. Vous pouvez "forcer" le sens de la synchronisation à l'aide des clauses REMOTE OVER LOCAL et LOCAL OVER REMOTE en fonction des caractéristiques de votre application. Pour plus d’informations sur les mécanismes mis en oeuvre, reportez-vous à la description de la commande REPLICATE. Note : Les opérations effectuées par la commande SYNCHRONIZE ne tiennent pas compte des contraintes d’intégrité des données. Cela signifie par exemple que les règles de clés étrangères, d’unicité, etc. ne sont pas vérifiées. Si les données reçues peuvent remettre en cause l’intégrité des données, vous devez les vérifier à l’issue de l’opération de synchronisation. Le moyen le plus simple est de verrouiller via le langage 4D ou le langage SQL les enregistrements devant être modifiés. 4D retourne dans les variables ref_langage_4d des clauses LATEST REMOTE STAMP et LATEST LOCAL STAMP les valeurs des derniers marqueurs des tables distante et locale. Ces informations permettent d'automatiser la gestion de la procédure de synchronisation. Elles correspondent à la valeur des marqueurs juste après la fin de l’opération de réplication : si vous les utilisez dans une instruction REPLICATE ou SYNCHRONIZE ultérieure, vous n’avez pas besoin de les incrémenter, ils le sont automatiquement avant d’être retournés par la commande REPLICATE. Pour bien comprendre les mécanismes mis en jeu lors d'une opération de synchronisation, nous allons examiner les différentes éventualités relatives à la mise à jour d'un enregistrement existant dans les deux bases synchronisées. La méthode de synchronisation est de la forme suivante : C_LONGINT(vRemoteStamp) Les données de départ sont les suivantes :
Voici les synchronisations effectuées par la commande SYNCHRONIZE en fonction des valeurs passées dans les paramètres LOCAL STAMP et REMOTE STAMP ainsi que de l'option de priorité utilisée : ROL (pour REMOTE OVER LOCAL) ou LOR (pour LOCAL OVER REMOTE) :
Voir aussi
|
PROPRIÉTÉS
Produit : 4D
HISTORIQUE
UTILISATION DE L'ARTICLE
4D - Référence SQL ( 4D v16) |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||