Aumentar o tamanho do incremento para coincidir com vantagem GUID
-
05-07-2019 - |
Pergunta
Eu estive pensando em implementar este sistema, mas não pode ajudar, mas sinto que há um algum lugar captura. Um dos pontos de usar GUID sobre o incremento int é que, no futuro, se você fosse para mesclar bancos de dados juntos, você não teria quaisquer confrontos sobre a chave / identificador primário. No entanto, a minha abordagem é definir o tamanho do incremento de X, onde X é o número de servidores que eu provavelmente vai ter no futuro. Então, em cada servidor, tem a semente ser um incremento sobre o número de sementes no servidor anterior. Dessa forma, durante a fusão, não haveria confrontos com a chave primária. I É este um cofre, método normal ou ter :) mentais foi? Graças
Solução
Na replicação SQL multi-mestre, você normalmente tem chaves primárias definidas como:
- GUIDs
- int é com um tamanho de incremento> número de instalações
- int é com um deslocamento fixo
A desvantagem de GUIDs é que eles podem ser mais difíceis de ler e levar até um pouco mais espaço. No entanto, ele permite que você dimensione a n casos.
Inteiros são um pouco mais fácil de lidar. Eles também têm a vantagem de ser capaz de facilmente dizer qual servidor criou um recorde. A desvantagem é que você deve ou prever o número máximo de bancos de dados que pode ser incorporada, ou adivinhar o número máximo de linhas de uma única instância pode inserir.
Um exemplo de um deslocamento fixo é: Local A começa em 0, começa Site B em 1.000.000 e começa site C em 2.000.000. Este esquema funciona bem até que um local insere um milhão de linhas. Este esquema pode funcionar bem para carros nas concessionárias de automóveis, onde é improvável que qualquer um negociante nunca iria vender mais de 1.000.000 carros, e você pode ter centenas de concessionárias ao longo da vida da aplicação.
Outras dicas
O que me assusta aqui é o seu uso de "mais provável". Você está assumindo sobre o futuro aqui e, normalmente, isso não é uma boa coisa a ver com coisas como esta. Por que não usar um GUID?
E se você adicionar um servidor extra sobre o que você pensou que teria? Eu podia ver as coisas ficando muito complicado muito rapidamente.