Symmetricds - resolução de conflitos
-
23-12-2019 - |
Pergunta
Eu estou tentando implementar a sincronização bidirecional multi-mestre para um nó central e muitos clientes usando o Symmetricds. Os clientes estão se comunicando apenas com o nó central (topologia de estrelas). Eu tenho problema em lidar com conflitos em chaves primárias.
Por exemplo, o banco de dados contém a tabela "Pessoa" com as colunas ID, nome, ... no banco central DB, tenho linhas:
- .
- aaa
- bbb
- ccc
- aaa
- bbb
- ccc
- ddd
- aaa
- bbb
- ccc
- eee
- aaa
- bbb
- ccc
- ddd
- eee
primeiro cliente conecta e baixou a carga inicial, por isso tem o mesmo dB. Segundo cliente faz o mesmo.
Agora primeiro e segundo clientes criam nova linha em seu banco de dados local. Primeiro:
- .
segundo:
- .
Eles vão tentar sincronizar, mas há conflito na 4. linha. Esse conflito pode ser facilmente detectado em simétricos, mas agora quero resolvê-lo por chave de incremento até que seja inserido e envie alterações de volta para os clientes ... Portanto, o resultado será:
- .
em todos os dados de dados. Como pode ser feito? Obrigado.
Solução
Ao lidar com um cenário bidirecional multi-mestre, não é uma boa ideia usar um PK de incrementação automática.
prática padrão é criar um GUID para o PK para evitar conflitos entre seus clientes.
Veja o seguinte site para mais detalhes.
Selecionando uma chave primária apropriada para um ambiente distribuído