In einer kleineren Testumgebung habe ich das vor relativ langer Zeit mal so gelöst:
Keine Replication auf
DB-Ebene. Je eine
DB an jedem Standort, und diese einmal vollständig übertragen.
Jede Tabelle hat ein Lock-Feld.
Wird nun ein Datensatz an Standort A zum Bearbeiten geöffnet, so wird sowohl der Datensatz sowohl in
DB A als auch in
DB B mittels dem Lock-Feld gesperrt. Heißt er kann nur noch zum Lesen geöffnet werden. Wird er nun in
DB A gespeichert, dann wird dort das Lock direkt aufgehoben. Anschließen wird er dann in
DB B gespeichert und erst danach das Lock auch dort aufgehoben.
Das ganze muss natürlich im Client passieren, oder man muss den
DB-Zugriff über eine Server-Application regeln, die dann das Sperren und Entsperren passig übernimmt.
In die andere Richtung würde das genauso funktionieren. Und auch mit mehr als 2 Standorten.
Hat, wenn ich mich recht erinnere damals ohne Probleme funktioniert. War aber nur ein Test. Wir haben damals zwar einige an Traffic simuliert, aber ob es einem Echt-Betrieb standgehalten hätte kann ich nicht mit Sicherheit sagen. Sollte aber.
Das natürlich 2 User auf beiden Seiten zeitgleich den gleichen Kunden anlegen kann dieses Verfahren natürlich nicht verhindern. Und das Handling ist natürlich auch von der zur Verfügung stehenden Bandbreite abhängig.
Ob sich sowas auch auf
DB-Ebene realisieren ließe, kann ich nicht sagen. Dazu fehlt mir das Wissen.