Sim, um problema difícil, facilmente subestimado. E poderia ser muito trabalho. Se você estiver usando as tecnologias da Microsoft, talvez queira dar uma olhada no Microsoft aqui e no Microsoft Sync Framework. aqui .
Muitas vezes, no meu trabalho, surge a ideia da sincronização bidirecional de dados entre sistemas de bancos de dados. O exemplo clássico são dois sistemas 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 da API à parte, supondo que você tenha uma chave compartilhada para sincronizar e pensando puramente no algoritmo / padrão a ser empregado, essa é uma tarefa que é frequentemente subestimada por não técnicos.
Por exemplo, você precisa estar atento a:
Pessoalmente, posso pensar em maneiras de resolver tudo isso, mas gostaria de saber se existem padrões, literatura ou melhores práticas bem conhecidos aos quais eu possa me referir.
Existem muitas teorias sobre a sincronização de banco de dados do site remoto. Primeiro comece com INSERT. lidar com este é fácil - como você pode criar um ID único para cada site (por exemplo, uma inicial do nome do site + ID (número): site_a_177 vs. site_b_53)
Portanto, inserir não deve criar conflitos. o problema é a atualização. Eu não acredito que exista um método 100% à prova de falhas, mas você pode iniciar uma atualização "bloqueando" o registro no banco de dados remoto, e somente depois que você conseguir o controle - continue com a atualização e conclua sincronizando a atualização e só então solte o cadeado.