Anglais Francais Prosygma Italie
-
    hebergement asp
prosygma_logo
Source :
Cyril LAFFARGUE
Elève-Ingénieur Supinfo Paris
Promotion SUPINFO 2008

1 Définition et Mise en place de Réplicas

1.1 Définition de la réplication

La réplication est une technique qui consiste dupliquer une base de donnée pour pouvoir utiliser des copies sur plusieurs postes en même temps. Ainsi, plusieurs personnes sur le réseau peuvent chacun avoir leur copie de la base de donnée sans avoir à ouvrir le même fichier MDB, et récupérer ou envoyer les données supprimées, ajoutées ou modifiées à l’aide d’une synchronisation avec une base commune que l’on place sur un réseau commun aux utilisateurs de cette base de données.

Il y a plusieurs formes de Réplicas : 

Tout d’abord il y a le Réplica-Maitre. Celui-ci est crée lorsque vous créez le premier réplica de votre base de données. Celle-ci devient le Réplica-Maitre.

Le réplica maitre est la base de données d’origine et le seul réplica dont tous les objets peuvent être modifiés a souhait. Tous les objets que l’on veut qu’il réplique ont la propriété « Répliquable » 

La deuxième forme est le réplica. Celui-ci sert tout simplement à la manipulation de données et peux être synchronisé avec les autres membres du jeu de réplica et le réplica-maitre. Dans le réplica, les objets ne peuvent etre supprimés mais l’on peux rentrer dans un objet pour le modifier mais on ne peux l’enregistrer sous le meme nom qu’un objet Répliqué.

La troisième forme de réplica est le réplica partiel. Le réplica partiel est un réplica dont on a filtré les données pour pas qu’elles ne soient visibles par ses utilisateurs. Ce filtrage est réalisé à l’aide d’une condition sur une table.

Le réplica Partiel peux prendre plusieurs formes : 

réplica global : réplica dans lequel les modifications sont totalement suivies et peuvent être échangées avec n'importe quel réplica global du jeu. Un réplica global peut également échanger des modifications avec tout réplica local ou anonyme pour lequel il devient le concentrateur

réplica local : réplica qui échange des données avec son concentrateur ou avec un réplica global, mais pas avec d'autres réplicas du jeu de réplicas 

réplica anonyme : dans une base de données Access, type de réplica spécial, dans lequel vous ne gardez aucune trace d'utilisateurs individuels. Le réplica anonyme est particulièrement utile dans le cas où vous pensez que de nombreux utilisateurs vont télécharger des réplicas via Internet

1.2 Créer un Réplica

Sans titre.JPG

Allez dans le menu Outils -> Réplication -> Créer un réplica

replica.JPG

On vous demandera un emplacement pour le réplica et vous aurez comme option de mettre une chiffre de priorité a votre réplica. Cet aspect sera vu plus en profondeur dans le 3ème paragraphe.

Appuyez sur OK. Un message d'avertissement vous avertira que le réplica a été crée avec succès !

1.3 Créer un Réplica Partiel

Voici la marche à suivre pour créér un réplica partiel :

Allez dans le menu Outils -> Réplication -> Assistant réplica Partiel

Un assistant s'affiche a votre écran, faites Suivant

replicapart2.JPG

Ce deuxième écran vous demande l'emplacement et le nom que vous voulez donner à votre réplica partiel ainsi que la forme de réplica que vous voulez créer. Faites suivant après avoir choisi.

replicapart3.JPG

L'écran suivant (ci dessus) vous demande quel filtre voulez vous donner à votre réplica. Sélectionnez une table dans le champ Table à filtrer et ensuite choisissez un champ de la table. Le Champ Expression du filtre est la condition de votre réplica partiel comme sur une requête SQL

replicapart4.JPG.

Ce dernier écran vous affiche les tables qui ne sont pas liées a la table ou vous avez effectué votre conditionnement. Vous choisissez ou non de répliquer sur votre réplica partiel les tables affichées.

Faites suivant et terminer pour créer votre réplica partiel

1.4 La synchronisation de Réplicas

La synchronisation de Réplicas sert à ce que tous les réplicas aient les memes données pour les centraliser et les diffuser sur tous les memes membre du jeu de réplicas lors de la synchronisation avec le réplica Maitre.

synchro.JPG

Sur votre réplica, allez dans le menu Outils -> Synchroniser maintenant

synchro1.JPG

Cet assistant vous demandera le chemin du réplica ou réplica maitre avec lequel vous voulez synchroniser les données de votre réplica.

Faites OK. Votre base de données vous demandera sa fermeture et se synchronisera.


2 Modifications apportées lors de la réplication et de la synchronisation

2.1 Modifications sur les objets de la base de données

Lorsque vous répliquez une base de données Microsoft Access, un certain nombre de modifications sont effectuées automatiquement dans votre base de données.

Champs ajoutés à vos tables lorsque vous répliquez une base de données

s_GUID : Identificateur global unique de chaque enregistrement.
s_Lineage : Champ binaire contenant des informations sur l'historique des modifications apportées à chaque enregistrement.
s_Generation : Champ qui stocke les informations relatives aux groupes de modifications.

Tables ajoutées à votre base de données lorsque vous répliquez celle-ci:

MSysSidetables : Cette table existe uniquement en cas de conflit entre le réplica de l'utilisateur et un autre réplica du jeu. Elle n'est pas répliquée. Elle est fournie à titre d'information seulement et son contenu ne peut être ni modifié, ni supprimé par des routines de résolution de conflit personnalisées ou par l'utilisateur. Toutes les tables latérales sont nommées table_conflit, où table est le nom d'origine de la table.
MSysSchemaProb : Cette table existe uniquement en cas d'erreur lors de la mise à jour de la structure d'un réplica. Elle offre des informations supplémentaires sur l'origine de l'erreur. Il s'agit d'une table locale, qui n'est pas répliquée.
MSysReplicas : Cette table stocke des détails, tels que le chemin et l'ID de réplica, relatifs à tous les réplicas connus contenus dans le jeu. Elle apparaît dans chaque membre du jeu de réplicas mais n'est pas répliquée.
MSysTransAddress : Cette table stocke les informations d'adressage du Synchronisateur et définit le jeu des synchronisateurs connus dans ce jeu de réplicas. Cette table répliquée apparaît dans chaque membre du jeu de réplicas.
MSysTombstone : Cette table stocke les informations relatives aux enregistrements supprimés et autorise la dispersion des suppressions dans les autres réplicas lors de la synchronisation. Elle apparaît dans chaque membre du jeu de réplicas, mais elle n'est pas répliquée.
MSysRepInfo : Cette table stocke les informations relatives à l'ensemble du jeu de réplicas, notamment l'identité (GUID) du réplica-maître. Elle contient un seul enregistrement. Cette table répliquée apparaît dans chaque membre du jeu de réplicas.
MSysExchangeLog : Cette table stocke les informations relatives aux synchronisations de réplicas qui ont été exécutées. Il s'agit d'une table locale, qui n'est pas répliquée.

Propriétés ajoutées à votre base de données lorsque vous la répliquez :

Replicable ou ReplicableBool : Propriété de base de données ou d'objet. Lorsque la propriété est renseignée par V (ou Vrai pour ReplicableBool), elle indique que la base de données, la table ou la requête est à présent réplicable. Les propriétés Replicable et ReplicableBool sont interchangeables.
KeepLocal : Propriété ajoutée dans une table ou une requête. Si la propriété est renseignée par V, elle indique que l'objet ne doit pas être répliqué lorsque la base de données est répliquée. La propriété KeepLocal d'un objet déjà répliqué ne peut pas être renseignée par T.
ReplicaID : Propriété qui attribue une identification unique à chaque membre du jeu de réplicas. Cette propriété est en lecture seule et est stockée dans la table système MSysReplicas.
DesignMasterID : ID de réplica (ReplicaID) du réplica-maître. Cette propriété est stockée dans la table système MSysRepInfo comme SchemaMaster.
ColumnLevelTracking : Propriété de base de données ou de table. Lorsque cette propriété est renseignée par Vrai (valeur par défaut), elle indique que les conflits sont suivis au niveau des colonnes d'une table.
Replication ConflictFunction : Propriété qui permet de remplacer l'observateur de conflits de Microsoft Access par une procédure personnalisée qui assiste les utilisateurs dans la résolution des conflits de synchronisation.

Modifications du comportement des champs NuméroAuto en cas de réplication d'une base de données :

Lorsque vous répliquez une base de données, tous les champs NuméroAuto incrémentiels de vos tables deviennent des champs de numérotation aléatoire. Tous les champs NuméroAuto des enregistrements existants conservent leurs valeurs, mais les valeurs NuméroAuto des enregistrements ajoutés sont aléatoires. En d'autres termes, les numéros des enregistrements ne reflètent pas l'ordre dans lequel les enregistrements ont été ajoutés et, par conséquent, le dernier enregistrement ajouté ne présente pas forcément la valeur la plus élevée

2.1 Comparatif Maitre-Réplica lors de la synchronisation

tableau.JPG


3 Conflits rencontrés lors de la synchronisation des bases

Un conflit entre réplicas est généré lorsque deux personnes changent un même enregistrement sur la base de données chacune de leur coté et synchronisent.
Pour remédier à ces conflits, Microsoft à introduit un outil de résolution de conflits qui se lancera automatiquement lors de l’ouverture de la base de données et qui vous demandera quelle version de la ligne de donnée ou se trouve le conflit vous désirez garder. Le conflit est alors résolu lorsque vous aurez choisi et validé.

Mais, lors de l’établissement de compteurs sur une table en clé primaire et que l’on réplique et synchronise, il peut arriver que deux tables se trouvent avec le même NuméroAuto mais un enregistrement différent.
Pour éviter ce problème, il vous est possible de mettre un champ numérique sur votre table en numéro de réplication. C’est un numéro unique se présentant sous la forme {00000000-0000-0000-0000-000000000000}. Il est alors impossible que 2 enregistrements présentent le même numéro.

Il existe une autre solution pour réparer les conflits de données, elle se base sur la notion de priorités de chaque réplica :

Chaque réplica se voit attribuer un numéro de priorité compris entre 0 et 100, 100 étant la priorité la plus élevée. Quand une base de données est rendue réplicable, la priorité par défaut du réplica est définie à 90. Les réplicas suivants ont une priorité par défaut égale à 90 pour cent de la priorité du concentrateur. Les priorités des réplicas locaux et anonymes sont toujours 0. Les réplicas locaux et anonymes perdent automatiquement si leurs modifications sont en conflit avec leur réplica concentrateur global. Si un réplica local ou anonyme envoie une modification qui n'est pas en conflit au concentrateur, celui-ci prend la propriété de la modification.