¿Es posible que un servidor ASP.NET genere el mismo GUID para más de un usuario?

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

  •  07-07-2019
  •  | 
  •  

Pregunta

He visto las Colisiones GUID discusiones, pero solo quería saber si podría haber una colisión de GUID si ambos clientes accedieran a la misma página web que genera el GUID exactamente al mismo tiempo (¿probablemente hasta el microsegundo)?

¿Fue útil?

Solución

Es teóricamente posible, pero altamente improbable.

Otros consejos

No. Si eso sucede, ¡apúrate y compra un boleto de lotería!

En un solo servidor, no, no es posible. Versión 4 Las guías están compuestas (entre otras cosas) de un valor pseudoaleatorio de 54 bits, y según tengo entendido, recorren todos los valores antes de repetir.

Si se crea en más de un servidor, entonces es posible tener un choque guido, aunque eso es altamente improbable.

Consulte RFC 4122 , específicamente la sección 4.1.5. Windows moderno usa UUID v4, creo.

De Wikipedia, la enciclopedia libre

Un identificador o GUID globalmente único (pronunciado / & # 712; gu & # 720; & # 618; d / o / & # 712; gw & # 618; d /) es un tipo especial de identificador utilizado en aplicaciones de software en ordene para proporcionar un número de referencia que sea único en cualquier contexto (por lo tanto, " Globalmente "), por ejemplo, al definir la referencia interna para un tipo de punto de acceso en una aplicación de software, o para crear claves únicas en una base de datos. Si bien no se garantiza que cada GUID generado sea único, el número total de claves únicas (2128 o 3.4 & # 215; 1038) es tan grande que la probabilidad de que se genere el mismo número dos veces es muy pequeña . Por ejemplo, considere el universo observable, que contiene alrededor de 5 & # 215; 1022 estrellas; cada estrella podría tener 6.8 & # 215; 1015 GUID universalmente únicos.

Si genera muchos GUID, la probabilidad de colisión es bastante alta debido a Paradoja de cumpleaños . Teóricamente, la colisión con GUID debería ser altamente improbable (sin intuición), pero prácticamente ocurre de vez en cuando.

Claro, es una pérdida de tiempo manejar estas colisiones programáticamente, pero aún así debe escribir su código de una manera que si sucede, entonces su código debe fallar en voz alta, no en silencio y sin ser detectado.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top