Frage

Ich versuche, Multi-Master-bidirektionale Synchronisation für einen zentralen Knoten und viele Clients mit symmetrischen zu implementieren. Kunden kommunizieren nur mit dem zentralen Knoten (Sterntopologie). Ich habe ein Problem mit dem Umgang mit Konflikten in Primärschlüsseln.

Zum Beispiel enthält die Datenbank Tabelle "Person" mit Säulen-ID, Name, ... in Central DB Ich habe Zeilen:

    .
  1. aaa
  2. bbb
  3. ccc
  4. erster Client verbindet und lädt die anfängliche Last an, sodass es gleich db hat. Der zweite Client macht dasselbe.

    Jetzt erstellen die ersten und zweiten Clients in ihrem lokalen DB eine neue Zeile. Zuerst:

      .
    1. aaa
    2. bbb
    3. ccc
    4. ddd
    5. Sekunde:

        .
      1. aaa
      2. bbb
      3. ccc
      4. eee
      5. Sie werden es synchronisieren, es gibt jedoch Konflikte in 4. Reihe. Dieser Konflikt kann in symmetrischen Konflikten leicht erkannt werden, aber jetzt möchte ich es mit dem Inkrement-Schlüssel auflösen, bis er eingefügt und Änderungen an die Clients zurücksenden ... Ergebnis wird also sein:

          .
        1. aaa
        2. bbb
        3. ccc
        4. ddd
        5. eee
        6. in jeder Datenbank. Wie kann es gemacht werden? Danke.

War es hilfreich?

Lösung

Wenn Sie sich mit einem bidirektionalen Multi-Master-Szenario befassen, ist es keine gute Idee, ein automatisches Inkrementieren von PK zu verwenden.

Standard-Praxis besteht darin, eine GUID für die PK zu erstellen, um Konflikte zwischen Ihren Kunden zu vermeiden.

Weitere Informationen finden Sie auf der folgenden Site.

Auswählen eines entsprechenden Primärschlüssels für eine verteilte Umgebung

.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top