¿Ha habido alguna vez una colisión UUID?

Sí, vea esta cuenta de frecuentes colisiones UUID4 …

Estamos generando aproximadamente 1M UUID4 por día, y estamos recibiendo varios cientos de colisiones por día.

Las colisiones ocurrieron debido a errores en el software subyacente, no debido a la pura casualidad aleatoria. El problema parece ser con hilos bifurcados y OpenSSL.

Suponiendo que el RNG se siembra correctamente, la posibilidad de una colisión es bastante baja.

Los UUID tienen 122 bits de entropía, por lo que la posibilidad de que colisionen dos UUID aleatorios es de aproximadamente 10 ^ -37.

Si genera 2 ^ 46 UUID (aproximadamente 1 petabyte de entropía), la posibilidad de colisión es de 1 en 50 mil millones. [1] Tienes 170 veces más probabilidades de ganar el premio gordo en Powerball. [2]

[1] Identificador universalmente único (Random_UUID_probability_of_duplicates)
[2] Números ganadores y resultados de Powerball

Si cada persona en el planeta genera un nuevo UUID4 cada segundo, esperaríamos que ocurriera una colisión después de unos 10 años.

UUID4 es la variante de uso común de la especificación UUID que utiliza números generados aleatoriamente para elegir el UUID en lugar de información sobre la máquina generadora o lo que tiene. Los UUID4 dejan 122 de los 128 bits disponibles para datos aleatorios, lo que para la paradoja del cumpleaños significa que deberíamos esperar una colisión después de que se hayan generado aproximadamente 2 ^ (122/2). Eso es 10 ^ 18.4 aproximadamente. La tierra tiene alrededor de 10 ^ 9.9 personas, y un año tiene casi exactamente 10 ^ 7.5 segundos.

9.9 + 7.5 = 17.4

10 ^ (18.4–17.4) = 10

Entonces unos 10 años.

Es extremadamente improbable que haya habido colisiones para UUID generados correctamente hasta ahora. (Pero el código defectuoso ciertamente ha generado colisiones.) Sin embargo, al mirar hacia un futuro no muy lejano donde todos generan datos todo el tiempo, está claro que necesitaremos más de 128 bits para nuestro espacio UUID.

Las posibilidades de que se produzca un número UUID duplicado son miles de millones a uno en contra.

La posibilidad de que estos sean adquiridos por la misma aplicación es de un millón a uno.

La posibilidad de que esto cause una falla podría ser de 1 en 100.

La posibilidad de que alguien investigue una falla única que provocó el fallo de una sola transacción y descubrió que un UUID duplicado fue la causa también es bastante pequeña.

Los UUID se hacen lo suficientemente grandes como para que sea extremadamente improbable que ocurra un duplicado. Además de eso, con los millones emitidos cada año, la posibilidad de que aparezcan en la misma aplicación y causen un problema también es extremadamente baja.

Entonces no es un problema en la práctica.