Generador de ULID – ULIDs ordenables en línea

Genere ULIDs con propiedades de orden lexicográfico como alternativa a UUIDs.

Pruebe estos ejemplos:

¿Qué es ULID?

ULID (Identificador Sorteable Lexicográficamente Universalmente Único) es un formato de identificador de 128 bits diseñado para superar las limitaciones de los UUIDs. Consiste en:

  • Marca de tiempo: 48 bits de tiempo Unix con precisión de milisegundos
  • Aleatoriedad: 80 bits de datos aleatorios criptográficamente seguros
  • Codificación: Representación en Base32 (26 caracteres)

Ejemplo de formato: 01ARZ3NDEKTSV4RRFFQ69G5FAV

Cómo funciona ULID

  1. Genera 48 bits para la marca de tiempo (tiempo Unix en milisegundos)
  2. Genera 80 bits de datos aleatorios criptográficamente seguros
  3. Combina la marca de tiempo (más significativa) con la aleatoriedad (menos significativa)
  4. Codifica el valor completo de 128 bits usando el alfabeto Base32 de Crockford
  5. El resultado es una cadena de 26 caracteres (los primeros 10 caracteres son la marca de tiempo, los últimos 16 son aleatoriedad)

Ventajas y Consideraciones

VentajasConsideraciones
  • Lexicográficamente ordenable
  • Conjunto de caracteres seguro para URL
  • No requiere codificación especial
  • Insensible a mayúsculas/minúsculas
  • Sin preocupaciones de privacidad
  • Más nuevo, menos ampliamente utilizado
  • Soporte limitado de bibliotecas
  • Sin compatibilidad con UUID
  • No puede retroceder antes de 1970

Estructura de ULID

ComponenteBitsCaracteresDescripción
Marca de tiempo48 bits10 caracteresMarca de tiempo Unix (ms) codificada en Base32
Aleatoriedad80 bits16 caracteresBytes aleatorios codificados en Base32

Comparación entre ULID y UUID

CaracterísticaULIDUUID v1UUID v4UUID v7
Tamaño128 bits128 bits128 bits128 bits
Longitud de cadena26 caracteres36 caracteres36 caracteres36 caracteres
Basado en tiempo
Ordenación natural
Seguro para URL
Exposición de dirección MAC
Componente aleatorio
Estándar canónico⚠️ Borrador

Casos de uso comunes

  • Claves primarias de bases de datos: Índices optimizados para rendimiento
  • Sistemas distribuidos: Generación sin coordinación
  • APIs: Identificadores limpios y seguros para URL
  • Datos de series temporales: Ordenación cronológica nativa
  • Sistemas de registros: Identificadores de eventos ordenables
  • Aplicaciones modernas: Donde las limitaciones de UUID son problemáticas

¿Por qué elegir ULID?

  • Ordenación: Se ordena lexicográficamente por tiempo de creación
  • Seguridad para URL: No necesita codificación URL (a diferencia de los UUID con guiones)
  • Compacidad: 26 caracteres frente a 36 para UUID
  • Insensibilidad a mayúsculas/minúsculas: Reduce errores de entrada del usuario
  • Monotonicidad: Ordenación monotónica opcional dentro del mismo milisegundo
  • Sin caracteres especiales: Formato simple, solo alfanumérico

Preguntas frecuentes

¿Cómo se compara ULID con UUID v7?

Ambos utilizan marcas de tiempo Unix para ordenación y tienen componentes aleatorios. Las diferencias clave son la codificación (Base32 vs hexadecimal), el formato (26 caracteres vs 36) y la estandarización (UUID v7 está en especificación RFC en borrador).

¿Puedo extraer el tiempo de creación de un ULID?

Sí. Los primeros 10 caracteres representan una marca de tiempo Unix con precisión de milisegundos que puede decodificarse y convertirse a un formato de fecha y hora estándar.

¿Son los ULIDs compatibles con campos UUID de bases de datos?

No. Los ULIDs utilizan un formato diferente y necesitarían almacenarse como cadenas o datos binarios en lugar de en tipos nativos UUID de bases de datos.

¿Qué es la monotonicidad en ULIDs?

Algunas implementaciones de ULID ofrecen una opción monotónica que asegura un orden de clasificación secuencial incluso dentro del mismo milisegundo, incrementando el componente aleatorio para ULIDs creados en la misma marca de tiempo.

¿Qué conjunto de caracteres utiliza ULID?

ULID utiliza la codificación Base32 de Crockford (0-9, A-Z excluyendo I, L, O, U) que está diseñada para minimizar la confusión y los errores de transcripción cuando los IDs se leen o ingresan manualmente.

Recursos

Alfabeto Base32 de Crockford

Valor de codificaciónCarácterNotas
0-90-9Dígitos decimales
10-31A-ZExcluyendo I, L, O, U para mejor legibilidad

Caracteres: 0123456789ABCDEFGHJKMNPQRSTVWXYZ

Esta codificación es insensible a mayúsculas/minúsculas para decodificación (pero los ULIDs típicamente se generan en mayúsculas).