Prática recomendada / Padrões para sincronização de dados bidirecional

49

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:

  • É possível detectar facilmente quais registros foram alterados nos dois sistemas (ou você terá que comparar todos os registros entre os sistemas para detectar alterações)
  • Se você deseja uma sincronização de uma vez a cada hora, como lidar com conflitos em que o mesmo registro muda mais ou menos ao mesmo tempo em ambos os sistemas
  • Se você está indo para uma sincronização em tempo real (ou seja, uma atualização em um sistema imediatamente aciona uma atualização para o outro sistema) como lidar com a divergência ao longo do tempo devido a erros ou falhas no sistema

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.

    
por codeulike 16.02.2012 / 19:09
fonte

2 respostas

8

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 .

    
por 19.02.2012 / 15:26
fonte
0

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.

    
por 18.02.2012 / 11:41
fonte