Muitas vezes, no meu trabalho, surge a idéia de sincronização de dados bidirecional entre sistemas de banco de dados. O exemplo clássico é de dois sistemas de CRM ligeiramente diferentes (por exemplo, Raiser's Edge e Salesforce) e a necessidade de ter uma sincronização bidirecional de dados de contato entre eles.
Considerações sobre a API de lado, supondo que você tenha uma chave compartilhada para sincronizar e pensando puramente no algoritmo / padrão a ser empregado, essa é uma tarefa que geralmente é subestimada por não-técnicos.
Por exemplo, você precisa prestar atenção:
- Você pode detectar facilmente quais registros foram alterados nos dois sistemas (ou precisará comparar todos os registros entre os sistemas para detectar alterações)
- Se você estiver realizando uma sincronização uma vez a cada N horas, como lidar com conflitos em que o mesmo registro é alterado mais ou menos ao mesmo tempo nos dois sistemas
- Se você estiver fazendo uma sincronização em tempo real (ou seja, uma atualização em um sistema aciona imediatamente uma atualização no outro sistema), como lidar com divergências ao longo do tempo devido a bugs ou falhas no sistema
Pessoalmente, posso pensar em maneiras de resolver tudo isso, mas estou me perguntando se existem padrões, literatura ou práticas recomendadas bem conhecidas que eu poderia me referir.