Nuestro grupo de especialistas pasados muchos días de trabajo y recopilar de datos, obtuvimos la respuesta, deseamos que te resulte útil en tu proyecto.
Solución:
uuid1()
está garantizado que no producirá ninguna colisión (suponiendo que no cree demasiadas al mismo tiempo). No lo usaría si es importante que no haya conexión entre el uuid
y la computadora, ya que la dirección mac se usa para que sea única en todas las computadoras.
Puede crear duplicados creando más de 214 uuid1 en menos de 100 ns, pero esto no es un problema para la mayoría de los casos de uso.
uuid4()
genera, como dijiste, un UUID aleatorio. La posibilidad de una colisión es realmente, realmente, De Verdad pequeña. Lo suficientemente pequeño como para que no debas preocuparte por eso. El problema es que un mal generador de números aleatorios hace que sea más probable que haya colisiones.
Esta excelente respuesta de Bob Aman lo resume muy bien. (Recomiendo leer la respuesta completa).
Francamente, en un solo espacio de aplicación sin actores maliciosos, la extinción de toda la vida en la tierra ocurrirá mucho antes de que ocurra una colisión, incluso en un UUID de la versión 4, incluso si está generando bastantes UUID por segundo.
Una instancia en la que puede considerar uuid1()
más bien que uuid4()
es cuando los UUID se producen en máquinas separadaspor ejemplo, cuando se procesan múltiples transacciones en línea en varias máquinas con fines de escalado.
En tal situación, los riesgos de tener colisiones debido a malas elecciones en la forma en que se inicializan los generadores de números pseudoaleatorios, por ejemplo, y también los números potencialmente más altos de UUID producidos hacen más probable la posibilidad de crear ID duplicados.
Otro interés de uuid1()
, en ese caso es que la máquina donde se produjo inicialmente cada GUID se registra implícitamente (en la parte “nodo” de UUID). Esto y la información de tiempo pueden ayudar, aunque solo sea con la depuración.
Mi equipo acaba de tener problemas para usar UUID1 para un script de actualización de base de datos donde generamos ~120k UUID en un par de minutos. La colisión UUID condujo a la violación de un primario key restricción.
Hemos actualizado cientos de servidores, pero en nuestras instancias de Amazon EC2 nos encontramos con este problema varias veces. Sospecho que la mala resolución del reloj y el cambio a UUID4 lo solucionaron.
Te mostramos las comentarios y valoraciones de los usuarios
Al final de la página puedes encontrar los informes de otros desarrolladores, tú incluso puedes insertar el tuyo si te gusta.