Manual MySync

Política de Conflito

Durante a sincronização, podem existir registros no DESTINO com a mesma chave do registro vindo da ORIGEM. A política de conflito define o que fazer nesses casos (ex.: inserir apenas, atualizar se existir, pular, etc.).


Conceitos importantes

  • Chave primária/chave única: campo(s) que identificam exclusivamente cada registro (ex.: id, codigo). A política de conflito parte dessa identificação.
  • Colunas de controle (opcional): timestamps de criação/atualização, versão, “hash” de conteúdo. Ajudam a decidir se deve atualizar.
  • Integridade: ao definir a política, garanta consistência com regras/índices do destino.

Políticas mais usadas

1) Inserir somente

  • Descrição: grava apenas registros que ainda não existem no destino.
  • Quando usar: cargas onde o destino só cresce com novos dados (sem revisões).
  • Vantagem: simples e rápido.
  • Cuidado: se o mesmo registro vier novamente, ele é ignorado; não corrige dados já gravados.

2) Inserir/Atualizar (Upsert)

  • Descrição: insere quando não existe; se existir, atualiza os campos definidos.
  • Quando usar: tabelas que recebem revisões/ajustes ao longo do tempo.
  • Vantagem: mantém os dados do destino alinhados com a origem.
  • Cuidado: defina bem quais colunas devem ser atualizadas e se há regras de prioridade (ex.: só atualizar se a data da origem for mais recente).

3) Sobrescrever sempre

  • Descrição: grava o registro da origem e substitui o que houver no destino, sem checar “mais atual”.
  • Quando usar: cargas integrais onde a origem é a verdade absoluta.
  • Vantagem: garante espelhamento 1:1 da origem.
  • Cuidado: pode apagar alterações locais válidas no destino.

4) Pular se existir

  • Descrição: se o registro já existe no destino, não faz nada (sem inserir/atualizar).
  • Quando usar: quando o destino possui dados “locais” que não devem ser alterados.
  • Vantagem: preserva o que já está no destino.
  • Cuidado: divergências com a origem permanecem.

Critérios de decisão (recomendado para Upsert)

  • Mais recente vence: atualizar somente se updated_at da origem > do destino.
  • Somente campos não nulos: não sobrescrever com valores vazios quando o destino já tem dados válidos.
  • Colunas sensíveis: defina lista de colunas que podem ser atualizadas e as que nunca devem.
  • Conflitos de referência: confirme que chaves estrangeiras existem no destino antes de atualizar.

Boas práticas

  • Comece pequeno: valide a política em uma tabela de teste antes de aplicar em massa.
  • Auditoria: quando possível, registre inserções/atualizações (quantidade, horários, usuário/rotina).
  • Índices: garanta índice na chave usada para decidir conflito (melhora muito a performance).
  • Log de diferenças (opcional): útil para investigar por que um registro foi atualizado ou não.

Exemplos de escolha por cenário

  • Catálogo estático (ex.: estados, países): “Inserir somente” (apenas novos códigos entram).
  • Cadastro de clientes: “Inserir/Atualizar (Upsert)” com “mais recente vence”.
  • Logs/telemetria: “Inserir somente” (não faz sentido atualizar).
  • Espelhamento completo: “Sobrescrever sempre” (origem é a verdade única).

Erros comuns

  • Duplicidades: falta de chave única no destino permite linhas repetidas — crie índice único na chave.
  • Atualizações indesejadas: política ampla demais; limite as colunas e use critério de “mais recente”.
  • Queda de performance: sem índice na chave de conflito, o upsert fica lento — crie o índice adequado.

Próximo: Performance (Lotes) • Voltar: Erros Comuns