É possível que um servidor ASP.NET para gerar o mesmo GUID para mais de um usuário?

StackOverflow https://stackoverflow.com/questions/272169

  •  07-07-2019
  •  | 
  •  

Pergunta

Eu vi o GUID Collisons discussões, mas só queria seus pensamentos sobre se poderia haver uma colisão GUID se ambos os clientes acessaram a mesma página web que gera o GUID exatamente no mesmo tempo (- provavelmente até o micro-segundo)?

Foi útil?

Solução

É teoricamente possível, mas altamente improvável.

Outras dicas

No. Se isso acontecer sair correndo e comprar um bilhete de loteria!

Em um único servidor, não, não é possível. Versão 4 Guids são feitos (entre outras coisas) de um valor de 54 bits pseudo-aleatórios, e como eu entendo aqueles, eles percorrer todos os valores antes de repetir.

Se a criação de mais de um servidor, então é possível ter um confronto guid, apesar de que é altamente improvável.

Consulte RFC 4122 , especificamente secção 4.1.5. Modern Windows usa UUIDs v4, eu acredito.

Origem: Wikipédia, a enciclopédia livre

Um identificador exclusivo ou GUID (pronunciado / gu??d / ou / gw?d /) é um tipo especial de identificador utilizado em aplicações de software, a fim para proporcionar um número de referência que é único em qualquer contexto ( Assim, "Globalmente"), por exemplo, na definição da referência interna para um tipo de ponto de acesso de uma aplicação de software, ou para a criação de chaves únicas numa base de dados. Embora cada GUID gerado não é garantido para ser único, o número total de chaves únicas (2128 ou 3.4 × 1038) é tão grande que a probabilidade do mesmo número que está sendo gerado duas vezes é muito pequena . Por exemplo, considere o universo observável, que contém cerca de 5 × 1022 estrelas; cada estrela poderia então ter 6,8 × 1015 GUIDs universalmente únicas.

Se você gerar lotes e lotes de GUIDs, então a probabilidade de colisão está ficando bastante elevado devido à paradoxo de aniversário . Teoricamente colisão GUID deve ser altamente improvável (intuição ingênua), mas praticamente isso acontece de vez em quando.

Claro, é desperdício de tempo para lidar com essas colisões programaticamente, mas você ainda deve escrever o seu código de uma maneira que se isso acontecer, então o seu código deve falhar em voz alta, não em silêncio e sem ser detectado.

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