"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > Todo lo que necesitas saber sobre UUID.

Todo lo que necesitas saber sobre UUID.

Publicado el 2024-11-07
Navegar:394

Everything you need to know about UUID.

Un Identificador único universal (UUID) es una etiqueta de 128 bits utilizada en sistemas informáticos para identificar información de forma única. Los UUID están diseñados para ser únicos en el espacio y el tiempo, lo que permite generarlos de forma independiente sin una autoridad central, lo que minimiza el riesgo de duplicación.

Los UUID sirven para varios propósitos, entre los que se incluyen:

  • Identificación de registros en bases de datos.
  • Etiquetado de objetos en sistemas distribuidos.
  • Funcionan como claves principales en aplicaciones donde la unicidad es crítica.

Casos de uso del mundo real

  • Bases de datos: UUID se utiliza como clave principal en bases de datos relacionales para garantizar la identificación única de los registros.
  • Microservicios: facilita la comunicación del servicio proporcionando identificadores únicos para solicitudes y recursos.
  • Dispositivos IoT: identifica dispositivos de forma única en una red, lo que garantiza que los datos de múltiples fuentes se puedan agregar sin conflictos.

Ventajas y desventajas del uso de UUID

Ventajas:

  • Singularidad global: Es extremadamente improbable que los UUID colisionen, lo que los hace adecuados para sistemas distribuidos donde varios nodos generan identificadores de forma independiente.
  • No se requiere autoridad central: Se pueden generar sin coordinación, lo que simplifica las operaciones en entornos distribuidos.
  • Escalabilidad: Funcionan bien en sistemas que requieren escalamiento en múltiples servidores o servicios.

Desventajas:

  • Tamaño de almacenamiento: Los UUID consumen más espacio (128 bits) en comparación con los ID enteros tradicionales (normalmente 32 bits), lo que puede generar mayores costos de almacenamiento.
  • Problemas de rendimiento: La indexación de UUID puede degradar el rendimiento de la base de datos debido a su aleatoriedad y tamaño, lo que genera tiempos de consulta más lentos en comparación con los ID secuenciales.
  • Amigable con el usuario: Los UUID no son fáciles de recordar ni fáciles de usar cuando se presentan en las interfaces de usuario.

El estándar

La representación estándar de un UUID consta de 32 caracteres hexadecimales divididos en cinco grupos, separados por guiones, siguiendo el formato 8-4-4-4-12, dando como resultado un total de 36 caracteres (32 alfanuméricos más 4 guiones) .

El formato UUID se puede visualizar de la siguiente manera:

xxxxxxxx-xxxx-Mxxx-Nxxx-xxxxxxxxxxxx

Dónde:

  • M indica la versión del UUID.
  • N indica la variante, lo que ayuda a interpretar el diseño del UUID.

Componentes de un UUID

  1. TimeLow: 4 bytes (8 caracteres hexadecimales) que representan el campo bajo de la marca de tiempo.
  2. TimeMid: 2 bytes (4 caracteres hexadecimales) que representan el campo medio de la marca de tiempo.
  3. TimeHighAndVersion: 2 bytes (4 caracteres hexadecimales) que incluyen el número de versión y el campo alto de la marca de tiempo.
  4. ClockSequence: 2 bytes (4 caracteres hexadecimales) que se utilizan para ayudar a evitar colisiones, especialmente cuando se generan varios UUID en rápida sucesión o si se ajusta el reloj del sistema.
  5. Nodo: 6 bytes (12 caracteres hexadecimales), que normalmente representan la dirección MAC del nodo generador.

Tipos de UUID

  1. Versión 1: UUID basados ​​en tiempo que utilizan una combinación de la marca de tiempo actual y la dirección MAC del nodo generador. Esta versión garantiza la singularidad en el espacio y el tiempo.

  2. Versión 2: Similar a la versión 1 pero incluye identificadores de dominio local; sin embargo, se usa con menos frecuencia debido a sus limitaciones.

  3. Versión 3: UUID basados ​​en nombres generados utilizando un hash MD5 de un identificador de espacio de nombres y un nombre.

  4. Versión 4: UUID generados aleatoriamente que proporcionan alta aleatoriedad y unicidad, con solo unos pocos bits reservados para el control de versiones.

  5. Versión 5: Como la versión 3, pero usa SHA-1 para hash, lo que la hace más segura que la versión 3.

Variantes

El campo variante en un UUID determina su diseño e interpretación. Las variantes más comunes incluyen:

  • Variante 0: Reservado para compatibilidad con versiones anteriores de NCS.
  • Variante 1: El diseño estándar utilizado para la mayoría de los UUID.
  • Variante 2: Se utiliza para UUID de seguridad DCE, que son menos comunes.
  • Variante 3: Reservado para futuras definiciones.

Ejemplo

Para la Versión 4, un UUID podría verse así:

550e8400-e29b-41d4-a716-446655440000

Aquí:

  • 41d4 indica que es una versión 4.
  • a7 representa la variante, en este caso, la variante común "Leach-Salz".

Cómo se calculan los UUID

  1. Versión 1 (basada en tiempo):

    • La marca de tiempo suele ser el número de intervalos de 100 nanosegundos desde el 15 de octubre de 1582 (la fecha de la reforma del calendario gregoriano).
    • El nodo es la dirección MAC de la máquina que genera el UUID.
    • La secuencia del reloj ayuda a garantizar la unicidad cuando cambia la hora del reloj (por ejemplo, debido a reinicios del sistema).
  2. Versión 3 y Versión 5 (basada en nombre):

    • Un espacio de nombres (como un dominio DNS) se combina con un nombre (como una ruta de archivo o URL) y se aplica un hash.
    • El hash (MD5 para la versión 3, SHA-1 para la versión 5) luego se estructura en un formato UUID, lo que garantiza que los campos de versión y variante estén configurados correctamente.
  3. Versión 4 (basada en aleatorio):

    • Se generan números aleatorios o pseudoaleatorios para los 122 bits del UUID.
    • Los campos de versión y variante se configuran en consecuencia, lo que garantiza el cumplimiento de los estándares UUID.

Ejemplo de cálculo de UUIDv4

Paso 1: Genera 128 bits aleatorios

Supongamos que generamos el siguiente valor aleatorio de 128 bits:

11001100110101101101010101111010101110110110111001011101010110110101111011010011011110100100101111001011

Paso 2: Aplicar versión y variante de UUIDv4

  1. Versión: Reemplace los bits 12-15 (cuarto carácter) con 0100 (para UUID versión 4).
    Original: 1100 se convierte en 0100 → Valor actualizado en esta posición.

  2. Variante: Reemplace los bits 6-7 del noveno byte con 10 (para la variante RFC 4122).
    Original: 11 se convierte en 10 → Valor actualizado en esta posición.

Paso 3: Formatear en hexadecimal

Convierte el binario de 128 bits en 5 grupos hexadecimales:

  1. Grupo de 32 bits: 11001100110101101101010101111010 → ccda55ba
  2. Grupo de 16 bits: 1011101101101110 → b76e
  3. Grupo de 16 bits: 0100010101000101 → 4545 (con 0100 para la versión 4)
  4. Grupo de 16 bits: 1010110111110010 → adf2 (con 10 para la variante)
  5. Grupo de 48 bits: 11010011011110100100101111001011 → d39d25cb

Paso 4: Combina los grupos

El UUID final se vería así:
ccda55ba-b76e-4545-adf2-d39d25cb

Declaración de liberación Este artículo se reproduce en: https://dev.to/rosselli00/what-is-uuid-cng?1 Si hay alguna infracción, comuníquese con [email protected] para eliminarla.
Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3