Frage

Ich baue einen Intranet-Web-App mit einem Oracle-Backend. Die Oracle-DB wird auf einem anderen Server aus Gründen repliziert werden, das zu dieser Diskussion nicht wichtig sind. Ich bin ziemlich sicher, wir werden mit Oracle Basis Replikation, nicht Advanced.

Kann mir jemand erklären, warum die meisten Diskussionen um Primärschlüssel gehen so etwas wie:

  • Die Verwendung von auto-inkrementiert Ints für PKs ist nur gut 99% der Zeit
  • AUSSER wenn Sie die Replikation tun. Dann GUIDs für Ihre PKs verwenden.

Niemand scheint überhaupt, warum die Ausnahme für die Replikation zu erklären, und ich verstehe nicht, warum.

War es hilfreich?

Lösung

Ich glaube, das GUID-for-Replikation Argument nur wirklich gilt, wenn beiden Server neue Daten empfangen werden. Dann wollen Sie keine neuen Zeilen zu Konflikten, so verwenden GUIDs als PK -. Replikation in beide Richtungen gehen kann

Wir replizieren autoincrement Tabellen die ganze Zeit, aber es ist eine strenge Master / Slave-Replikation, wo die Daten nur an den Master geschrieben wird.

Andere Tipps

Ein Wort: MERGE

Die einzige Möglichkeit, die Mergereplikation arbeiten kann, ist, wenn alle der „Master“ aus, um einen neuen Schlüssel erstellen können, ohne sie mit den anderen in Konflikt.

Wenn man bedenkt, was passiert, wenn zwei Servern, die miteinander repliziert werden und haben für sie bestimmten Daten zwischen Synchronisation hinzugefügt wird, wird das Problem offensichtlich:

Time  Server  NewID
001   A       1
002   A       2
003 <sync of server A and B>
004   A       3
005   B       3
006 <sync of server A and B>

<--- zwei verschiedene Datensätze haben die gleiche ID jetzt, so gibt es einen Konflikt!

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