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:

    .
  1. aaa
  2. bbb
  3. ccc
  4. 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:

      .
    1. aaa
    2. bbb
    3. ccc
    4. ddd
    5. segundo:

        .
      1. aaa
      2. bbb
      3. ccc
      4. eee
      5. 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á:

          .
        1. aaa
        2. bbb
        3. ccc
        4. ddd
        5. eee
        6. em todos os dados de dados. Como pode ser feito? Obrigado.

Foi útil?

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

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top