🛠️

Whiz Tools

Build • Create • Innovate

Generador de Identificadores Únicos Ordenables KSUID

Genera Identificadores Únicos Ordenables por Clave (KSUID) para su uso en sistemas distribuidos, bases de datos y aplicaciones que requieren claves únicas y ordenables por tiempo. Los KSUID combinan una marca de tiempo con datos aleatorios para crear identificadores resistentes a colisiones y ordenables.

Generador de KSUID

📚

Documentación

Generador de KSUID

Introducción

KSUID (Identificador Único Ordenable por K) es un formato de identificador único que ofrece varias ventajas sobre el UUID (Identificador Único Universal) y otros sistemas de identificadores. Esta herramienta te permite generar KSUIDs de manera rápida y sencilla.

¿Qué es un KSUID?

Un KSUID es un identificador ordenable de 20 bytes que consta de:

  1. Un timestamp de 32 bits (4 bytes)
  2. 16 bytes de aleatoriedad

Cuando se representa como una cadena, un KSUID se codifica en base62 y tiene 27 caracteres de longitud.

Estructura de un KSUID

La estructura de un KSUID se puede desglosar de la siguiente manera:

  1. Timestamp (4 bytes): Esto representa el número de segundos desde la época Unix (1 de enero de 1970, a las 00:00 UTC). El timestamp permite que los KSUIDs sean aproximadamente ordenables por tiempo de generación.

  2. Componente Aleatorio (16 bytes): Este es un número aleatorio criptográficamente seguro que garantiza la unicidad incluso cuando se generan múltiples KSUIDs en el mismo segundo.

  3. Codificación Base62: Los 20 bytes combinados (timestamp + aleatorio) se codifican utilizando base62 (A-Z, a-z, 0-9) para producir la cadena final de 27 caracteres.

Fórmula de KSUID

Un KSUID se puede representar matemáticamente como:

KSUID=Base62(TR)KSUID = Base62(T || R)

Donde:

  • TT es el timestamp de 32 bits
  • RR es el componente aleatorio de 128 bits
  • || denota concatenación

El timestamp TT se calcula como:

T = \text{floor}(\text{current_time} - \text{KSUID_epoch})

Donde KSUID_epoch es 1400000000 (2014-05-13T16:53:20Z).

Diagrama de Estructura de KSUID

Timestamp (4 bytes) Componente Aleatorio (16 bytes)

Casos de Uso para KSUIDs

Los KSUIDs son particularmente útiles en los siguientes escenarios:

  1. Sistemas Distribuidos: Cuando necesitas identificadores únicos en múltiples servidores o servicios sin coordinación.

  2. Datos Ordenables por Tiempo: Cuando deseas ordenar datos por tiempo de creación sin almacenar un timestamp separado.

  3. Claves de Base de Datos: Como claves primarias en bases de datos, especialmente en bases de datos distribuidas donde los enteros autoincrementales no son adecuados.

  4. Identificadores Seguros para URL: Para crear identificadores cortos, únicos y seguros para URL para recursos en aplicaciones web.

  5. Correlación de Registros: Para correlacionar entradas de registro a través de diferentes servicios en una arquitectura de microservicios.

Ventajas de los KSUIDs

Los KSUIDs ofrecen varias ventajas sobre otros sistemas de identificadores:

  1. Ordenabilidad: A diferencia de los UUIDs, los KSUIDs se pueden ordenar cronológicamente, lo cual es útil para la indexación de bases de datos y el análisis de registros.

  2. Sin Coordinación Requerida: A diferencia de los IDs autoincrementales, los KSUIDs se pueden generar de manera independiente por diferentes servidores sin arriesgar colisiones.

  3. Representación Compacta: Con 27 caracteres, los KSUIDs son más compactos que los UUIDs cuando se representan como cadenas.

  4. Timestamp Incorporado: El timestamp incorporado permite la ordenación y filtrado basado en el tiempo sin necesidad de un campo de timestamp separado.

  5. Seguro para URL: La codificación base62 hace que los KSUIDs sean seguros para su uso en URLs sin codificación adicional.

  6. Probabilidad Reducida de Colisiones: El componente aleatorio de 16 bytes hace que las colisiones sean extremadamente improbables, incluso a altas tasas de generación.

Cómo Usar Este Generador

  1. Ingresa cualquier parámetro adicional si es necesario (por ejemplo, un timestamp personalizado).
  2. Haz clic en el botón "Generar KSUID" para crear un nuevo KSUID.
  3. El KSUID generado se mostrará en el campo de salida.
  4. Puedes generar múltiples KSUIDs repitiendo los pasos 1-3.
  5. Usa el botón "Copiar" junto a cada KSUID para copiarlo a tu portapapeles.
  6. Opcionalmente, usa la función "Exportar" para descargar una lista de KSUIDs generados.

Recuerda que cada KSUID es único y debe usarse solo una vez. Genera un nuevo KSUID cada vez que necesites un identificador único.

Ejemplos de Código

Aquí hay ejemplos de generación de KSUIDs en varios lenguajes de programación:

1## Python
2import ksuid
3
4new_id = ksuid.ksuid()
5print(f"KSUID generado: {new_id}")
6

Referencias

  1. Repositorio de KSUID de Segment: https://github.com/segmentio/ksuid
  2. "Generando buenos identificadores únicos" por Peter Bourgon: https://peter.bourgon.org/blog/2019/05/20/generating-good-unique-ids.html
  3. Especificación de KSUID: https://github.com/segmentio/ksuid/blob/master/README.md