Pour la réplication bidirectionnelle et monodirectionnelle, les filtres et règles de classes de relations qui sont utilisés dans la création du réplica sont également appliqués au cours de la synchronisation. Lorsque vous déterminez les modifications à envoyer, toutes les mises à jour dans chaque jeu de données de réplicas qui ont été appliquées depuis la dernière synchronisation sont évaluées. Si une mise à jour correspond aux filtres du réplica, elle est synchronisée.
Remarque :
Pour les réplicas d’extraction/insertion, toutes les mises à jour effectuées sur le réplica enfant sont synchronisées. Par conséquent, les règles suivantes, à l’exception de celles énoncées dans la section Gestion des relations, ne s’appliquent pas aux réplicas d’extraction/insertion.
L’image ci-dessous explique comment le filtre de la zone de réplica est appliqué au cours de la synchronisation lorsque des entités sont transférées dans une session de mise à jour. Les mises à jour suivantes sont envoyées au réplica associé au cours de la synchronisation :
- Une entité est transférée dans un nouvel emplacement à l’intérieur de la zone de réplica.
- Une entité est sortie de la zone de réplica. La nouvelle position de l’entité est mise à jour dans le réplica associé au cours de la synchronisation même s’il réside en dehors de la zone de réplica.
Remarque :
Pour la mise à jour à envoyer, l’entité doit avoir existé dans le filtre de réplica au moment de la précédente synchronisation. Par exemple, si vous insérez une entité, la sortez, puis effectuez une synchronisation avec le réplica associé, ces modifications ne sont pas envoyées.
- Une entité qui se trouvait à l’extérieur de la zone de réplica est intégrée à l’intérieur de la zone de réplica.
- Lorsqu’une entité qui ne se trouve pas dans la zone de réplica est transférée, elle n’est pas mise à jour sur le réplica associé au cours de la synchronisation.
Si une mise à jour ne correspond pas aux filtres, elle peut tout de même être synchronisée si elle répond aux critères suivants :
- Elle appartient à un jeu de données avec un filtre de structure uniquement et est impliquée dans au moins une classe de relations.
- Elle répond également à l’une des conditions suivantes :
- Elle est associée à une ligne dans un autre jeu de données qui correspond aux filtres. La ligne à laquelle elle est associée n’a pas besoin d’avoir été mise à jour depuis la dernière synchronisation.
- Elle se trouve dans un jeu de données qui est associé à un jeu de données doté d’un filtre de structure uniquement.
En d’autres termes, les lignes dans les classes d’entités ou les tables dont les filtres ne sont pas des filtres de structure uniquement peuvent uniquement être synchronisées si elles répondent aux critères de filtrage.
Ces règles permettent également d’enchaîner les données reliées. Ceci peut se produire lorsque, via les classes de relations, une ligne dans une classe de destination distante peut être retracée à travers plusieurs relations jusqu’à l’origine dans le réplica.
Gestion des relations
La synchronisation permet de gérer les relations. Par exemple, si une nouvelle relation est ajoutée au réplica associé, elle est gérée lorsque les lignes concernées sont synchronisées. La gestion de la relation peut nécessiter la modification de la valeur de clé étrangère sur le réplica qui reçoit les modifications si la clé d’origine est le champ objectID.
Les exemples suivants illustrent le comportement des enregistrements associés au cours de la synchronisation :
Exemple
Dans cet exemple, trois bâtiments sont sélectionnés afin d’être répliqués via un ensemble de définition. Comme les enregistrements associés sont inclus dans le processus de création du réplica, la classe de destination associée est également répliquée. Les champs de la classe de destination associée aux entités d’origine sont mises à jour sur le réplica enfant. Lors de la synchronisation des réplicas, ces mises à jour sont actualisées sur la classe de destination associée dans le réplica parent.
Exemple 1
Dans ce premier exemple, certaines entités dans une classe d’origine, des bâtiments, ont été sélectionnés pour être répliqués. Les bâtiments sont associés via une classe de relations simples à des enregistrements attributaires d’une table qui ont été exclus de la réplication. Au cours de la mise à jour du réplica enfant, un bâtiment a été supprimé. Lors de la synchronisation, pour annuler la relation avec l’entité supprimée, l’entrée correspondante dans le champ de clé étrangère de la classe de destination associée, la table, est définie sur NULL.
Ce comportement de synchronisation peut également entraîner la suppression des lignes représentant les relatons dans une table de classes de relations attribuées (comme dans l’exemple suivant).
Exemple 2
Dans cet exemple, la relation entre la classe d’entités d’origine et la table de classe de destination est attribuée, ce qui signifie que la relation même possède une table associée. La relation et la classe de destination ont été exclues au cours de la création du réplica. Les mises à jour apportées à la classe d’entités d’origine sur le réplica enfant ont engendré la suppression d’une entité. Au cours de la synchronisation, la ligne dans la table de classes de relations attribuées qui représente la relation de cette entité à un objet dans la classe de destination est retirée.
Seules les relations sont supprimées au cours de la synchronisation. Les objets associés même ne sont jamais supprimés.
Rubriques connexes
Vous avez un commentaire à formuler concernant cette rubrique ?