Primero, para ser claros, todo este debate está limitado a la versión 3 & 5 UUID. En mi experiencia (anecdótica), los UUID de la versión 4 (al azar) son los más comúnmente utilizados.
4122 's namespaced algoritmo de generación de UUID empieza ambiguamente:
Asignar un UUID para usar como un "nombre de ID de espacio"
No hay otra mención de "ID de espacio de nombre de" asignación , y ni yo ni python he encontrado espacios estandarizados más allá de los cuatro enumerados en RFC 4122.
Así que la respuesta a su primera pregunta,
- Si estoy generando mi propio UUID de espacio de nombres, ¿debo evitar algo en particular?
Solo necesita evitar los cuatro espacios de nombres estándar.
La siguiente pregunta,
- Soy consciente de cuán grande es el espacio UUID es, pero ¿Esto tiene ninguna incidencia en las colisiones?
tiene dos partes:
Will UUID dentro de su espacio de nombres colisionar? Verbatim de 4122:
Los UUID generados a partir de dos nombres diferentes en [su] espacio de nombres deben ser diferentes (con muy alta probabilidad).
¿Tu espacio de nombres UUID colisionará con otros espacios de nombres? No pude encontrar una respuesta directa, ya que no hay un estándar para la asignación de "ID de espacio de nombre", pero el argumento en section 4.1.1 parece relevante:
Interoperabilidad, en cualquier forma, con las variantes distintas de la definido aquí no está garantizado, y no es probable que sea un problema en la práctica .
- ¿Por qué han elegido el cuarto octeto para aumentar como una especie de UUID 'número de versión'?
Este es un misterio. Afortunadamente, tenemos una especificación para UUID, por lo que podemos extraerlos para obtener información.
Tenga en cuenta que el (0-índice) octavo octeto comienza con 8
en todos los casos, por lo que estamos tratando con RFC 4122 variante UUID. Uf.
Ahora compruebe el octeto 6 para la versión: 1
, estamos tratando con versión 1 basado en tiempo UUID.
Este answer tiene un algoritmo útil para extraer las fechas de pitón de los UUID de la versión 1. La aplicación del algoritmo produce un tiempo en 4 de febrero de 1998. Aún no he encontrado significado en esta fecha. Incrementar el tercer octeto agrega el menor intervalo de tiempo codificable (100ns) a la fecha.
- hacer mi pregunta implica que me falta algo fundamental acerca de UUID?
Nope. Hay muy poca discusión sobre los espacios de nombres de UUID, ya que los UUID aleatorios son muy fáciles.
El rfc4122 dice: "Los mecanismos o convenciones que se utilizan para la asignación de nombres y asegurar su singularidad dentro de sus espacios de nombres están más allá del alcance de esta especificación ." en 4.3 ^^ Pero no sé dónde está especificado. –