Question

J'essaie de mettre en œuvre une synchronisation bidirectionnelle multi-maître pour un nœud central et de nombreux clients à l'aide de symétrictrices. Les clients communiquent uniquement avec le nœud central (topologie star). J'ai du mal à faire face aux conflits dans les clés primaires.

Par exemple, la base de données contient la table "Personne" avec ID de colonnes, Nom, ... dans Central DB, j'ai des rangées:

  1. AAA
  2. BBB
  3. CCC
  4. Le premier client connecte et télécharge la charge initiale, de sorte qu'il a même dB. Deuxième client fait la même chose.

    Maintenant, les premier et deuxième clients créent une nouvelle ligne dans leur DB locale. Premièrement:

    1. AAA
    2. BBB
    3. CCC
    4. DDD
    5. secondaire:

      1. AAA
      2. BBB
      3. CCC
      4. Eee
      5. Ils vont essayer de synchroniser, mais il y a un conflit dans 4. Rangée. Ce conflit peut être facilement détecté dans des symétrics, mais je souhaite maintenant le résoudre par une clé d'incrément jusqu'à ce qu'il soit inséré, puis envoie des modifications aux clients ... Donc, le résultat sera:

        1. AAA
        2. BBB
        3. CCC
        4. DDD
        5. Eee
        6. Dans chaque base de données. Comment ceci peut être fait? Merci.

Était-ce utile?

La solution

Lorsque vous traitez avec un scénario bidirectionnel multi-maître, il n'est pas une bonne idée d'utiliser un pk d'incrémentation automatique.

La pratique standard consiste à créer un GUIG pour le PK pour éviter les conflits entre vos clients.

Voir le site suivant pour plus de détails.

Sélection d'une clé primaire appropriée pour un environnement distribué

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top