Molto spesso nel mio lavoro nasce l'idea della sincronizzazione dei dati bidirezionale tra i sistemi di database. L'esempio classico sono due sistemi CRM leggermente diversi (diciamo, Raiser's Edge e Salesforce) e la necessità di avere una sincronizzazione bidirezionale dei dati di contatto tra loro.
Considerazioni API a parte, supponendo che tu abbia una chiave condivisa su cui sincronizzare e pensando semplicemente all'algoritmo / modello da utilizzare, questo è un compito che è spesso sottovalutato dai non-tecnici.
Ad esempio, devi fare attenzione a:
- Riesci a rilevare facilmente quali record sono stati modificati in entrambi i sistemi (o dovrai confrontare tutti i record tra i sistemi per rilevare le modifiche)
- Se stai per eseguire una sincronizzazione una volta ogni N, come gestire i conflitti in cui lo stesso record cambia più o meno nello stesso momento in entrambi i sistemi
- Se stai cercando una sincronizzazione in tempo reale (ovvero un aggiornamento in un sistema attiva immediatamente un aggiornamento all'altro sistema) come gestire la divergenza nel tempo a causa di bug o arresti anomali del sistema
Personalmente riesco a pensare a come affrontare tutto ciò, ma mi chiedo se ci siano modelli, letteratura o buone pratiche ben noti a cui potrei fare riferimento.