Dość często w mojej pracy pojawia się pomysł dwukierunkowej synchronizacji danych między systemami baz danych. Klasycznym przykładem są dwa nieznacznie różne systemy CRM (powiedzmy Raiser's Edge i Salesforce) i potrzeba dwukierunkowej synchronizacji danych kontaktowych między nimi.
Pomijając kwestie związane z API, zakładając, że masz wspólny klucz do synchronizacji i czysto myśląc o algorytmie / wzorcu, który chcesz zastosować, jest to zadanie, które jest często niedoceniane przez osoby niebędące specjalistami.
Na przykład musisz uważać na:
- Czy możesz łatwo wykryć, które rekordy uległy zmianie w obu systemach (czy będziesz musiał porównać wszystkie rekordy między systemami, aby wykryć zmiany)
- Jeśli wybierasz synchronizację co godzinę N, jak radzić sobie z konfliktami, w których ten sam rekord zmienia się mniej więcej w tym samym czasie w obu systemach
- Jeśli wybierasz synchronizację w czasie rzeczywistym (tj. Aktualizacja w jednym systemie natychmiast powoduje aktualizację w drugim systemie), jak radzić sobie z rozbieżnościami w czasie z powodu błędów lub awarii systemu
Osobiście mogę wymyślić sposoby rozwiązania tego problemu, ale zastanawiam się, czy istnieją jakieś znane wzorce, literatura lub najlepsze praktyki, do których mógłbym się odnieść.