Pergunta

Eu estou construindo um aplicativo web intranet com um back-end Oracle. O banco de dados Oracle será replicado em outro servidor, por razões que não são importantes para esta discussão. Eu sou razoavelmente certo que estaremos usando o Oracle Replication Basic, não avançada.

Alguém pode me explicar por que a maioria das discussões em torno de chaves primárias ir algo como:

  • Use de inteiros incrementado automaticamente para PKs é apenas multa de 99% do tempo
  • exceto se você está fazendo replicação. Em seguida, use GUIDs para seus PKs.

Ninguém nunca parece explicar por que a exceção para replicação, e eu não entendo por que.

Foi útil?

Solução

Eu acredito que o argumento GUID-for-replicação única realmente se aplica se ambos os servidores vão receber novos dados. Então você não quer novas linhas para o conflito, de modo GUIDs usar como PK - replicação pode ir nos dois sentidos

.

Nós replicar tabelas de incremento automático o tempo todo, mas é uma replicação estrita master / slave, onde os dados só é escrito para o Mestre.

Outras dicas

Uma palavra: MERGE

A única maneira de mesclagem de replicação pode funcionar é se todas as caixas de "mestre" pode criar uma nova chave sem ele entrar em conflito com os outros.

Se você considerar o que acontece quando dois servidores que são replicados entre si e ter dados que estão sendo adicionados a eles entre a sincronização, o problema se torna aparente:

Time  Server  NewID
001   A       1
002   A       2
003 <sync of server A and B>
004   A       3
005   B       3
006 <sync of server A and B>

<--- dois registros diferentes têm o mesmo ID agora, por isso há um conflito!

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