Disponible avec une licence Standard ou Advanced.
Pour la réplication monodirectionnelle et bidirectionnelle, les filtres et les règles de classes de relations utilisés lors de la création de réplica sont également appliquées pendant la synchronisation. Au moment de déterminer quelles modifications sont à envoyer, une évaluation de toutes les mises à jour de chaque jeu de données du réplica ayant été appliquées depuis la dernière synchronisation est effectuée. Si une mise à jour correspond aux filtres du réplica, celle-ci est synchronisée.
Remarque :
Pour les réplicas d’extraction/insertion, toutes les mises à jour apportées au réplica enfant sont synchronisées. En conséquence, les règles suivantes, sauf celles de la section Conserver les relations, ne s’appliquent pas aux réplicas d’insertion/extraction.
L’image ci-dessous représente l’application du filtre de la zone de réplication pendant la synchronisation, lorsque des entités sont déplacées dans une session de mise à jour. Les mises à jour suivantes sont envoyées au réplica associé pendant la synchronisation :
- Une entité est déplacée vers un nouvel emplacement dans la zone de réplication.
- Une entité est déplacée à l’extérieur de la zone de réplication. Le nouvel emplacement de l’entité est mis à jour dans le réplica associé pendant la synchronisation, même si cet emplacement est à l’extérieur de la zone de réplication.
Remarque :
La mise à jour est envoyée uniquement si l’entité a existé à l’intérieur du filtre du réplica au moment de la précédente synchronisation. Par exemple, si vous insérez une entité que vous déplacez ensuite à l’extérieur et que vous effectuez une synchronisation avec le réplica, aucune de ces modifications n’est envoyée.
- Une entité est déplacée de l’extérieur à l’intérieur de la zone de réplica.
- Lorsqu’une entité n’appartenant pas à la zone de réplication est déplacée, elle n’est pas mise à jour dans le réplica associé pendant 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 doté d’un filtre de structure uniquement et elle est impliquée dans au moins une classe de relations.
- Elle répond également à l’un des critères suivants :
- Elle est reliée à une ligne d’un autre jeu de données qui correspond aux filtres. Il n’est pas nécessaire que la ligne reliée ait été mise à jour depuis la dernière synchronisation.
- Elle est dans un jeu de données relié à un jeu de données doté d’un filtre de structure uniquement.
Par conséquent, les lignes de classes d’entités ou de tables possédant des filtres autres que de structure uniquement ne peuvent être synchronisées que si elles correspondent aux critères de filtre.
Ces règles permettent également de créer des enchaînements de données reliées. Cela peut se produire notamment lorsqu’il est possible, via des classes de relations, de remonter une ligne d’une classe de destination distante sur plusieurs relations jusqu’à son origine dans le réplica.
Conserver les relations
La synchronisation conserve les relations. Par exemple, si une nouvelle relation est ajoutée au réplica associé, elle est conservée lorsque les lignes impliquées sont synchronisées. Pour conserver la relation, il peut être nécessaire de modifier la valeur de clé étrangère du 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 pendant la synchronisation :
Exemples
Trois bâtiments sont sélectionnés pour ê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 mis à jour dans le réplica enfant. Lors de la synchronisation des réplicas, ces mises à jour sont appliquées à la classe de destination associée dans le réplica parent.
Exemple 1
Dans ce premier exemple, certaines entités d’une classe d’origine, des bâtiments, ont été sélectionnées pour être répliquées. 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. Pendant la mise à jour du réplica enfant, un bâtiment a été supprimé. Lors de la synchronisation, afin d’annuler la relation avec l’entité supprimée, l’entrée correspondante figurant 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 de lignes représentant des relations dans une table de classes de relations attribuées (comme illustré dans l’exemple suivant).
Exemple 2
Dans cet exemple, la relation entre la classe d’entités d’origine et la table des classes de destination est attribuée, ce qui signifie que la relation elle-même est associée à une table. La relation et la classe de destination sont toutes deux exclues du processus de création de réplica. À la suite de mises à jour apportées à la classe d’entités d’origine dans le réplica enfant, une entité a été supprimée. Lors de la synchronisation, la ligne dans la table des classes de relations attribuées qui représente la relation de cette entité à un objet dans la classe de destination est supprimée.
Pendant la synchronisation, seules les relations sont supprimées ; les objets associés eux-mêmes ne sont jamais supprimés.
Vous avez un commentaire à formuler concernant cette rubrique ?