Sehr oft taucht in meiner Arbeit die Idee der bidirektionalen Datensynchronisation zwischen Datenbanksystemen auf. Das klassische Beispiel sind zwei leicht unterschiedliche CRM-Systeme (z. B. Raiser's Edge und Salesforce), zwischen denen eine bidirektionale Synchronisierung der Kontaktdaten erforderlich ist.
Abgesehen von API-Überlegungen ist dies eine Aufgabe, die von Nicht-Technikern oft unterschätzt wird, vorausgesetzt, Sie haben einen gemeinsamen Schlüssel für die Synchronisierung und denken nur an den zu verwendenden Algorithmus / das zu verwendende Muster.
Zum Beispiel müssen Sie auf Folgendes achten:
- Können Sie leicht erkennen, welche Datensätze sich in beiden Systemen geändert haben (oder müssen Sie alle Datensätze zwischen den Systemen vergleichen, um Änderungen zu erkennen)?
- Wenn Sie alle N Stunden eine Synchronisierung durchführen möchten, wie Sie mit Konflikten umgehen, bei denen sich derselbe Datensatz in beiden Systemen mehr oder weniger zur gleichen Zeit ändert
- Wenn Sie eine Echtzeitsynchronisierung durchführen möchten (dh ein Update auf einem System löst sofort ein Update auf dem anderen System aus), wie Sie mit zeitlichen Abweichungen aufgrund von Fehlern oder Systemabstürzen umgehen können
Persönlich kann ich mir überlegen, wie ich das alles angehen kann, aber ich frage mich, ob es bekannte Muster, Literatur oder Best Practices gibt, auf die ich mich beziehen könnte.
Antworten:
Ja, ein hartes Problem, leicht unterschätzt. Und könnte eine Menge Arbeit sein. Wenn Sie mit Microsoft-Technologien arbeiten, sollten Sie sich hier und hier das Microsoft Sync Framework ansehen .
quelle
Es gibt viele Theorien zur DB-Synchronisation an entfernten Standorten. Beginnen Sie zuerst mit INSERT. Die Handhabung ist einfach, da Sie für jede Site eine eindeutige ID erstellen können (z. B. eine Initiale aus Site-Name + ID (Nummer): site_a_177 vs. site_b_53).
Einfügen sollte also keine Konflikte verursachen. das problem ist das update. Ich glaube nicht, dass es eine 100% ausfallsichere Methode gibt, aber Sie können ein Update starten, indem Sie den Datensatz in der Remote-Datenbank "sperren" und erst, wenn Sie das Handle haben, mit dem Update fortfahren und das Update synchronisieren und erst dann die sperre aufheben.
quelle