🛠️

Whiz Tools

Build • Create • Innovate

Generador de KSUIDs: Identificadors Únics Ordenables per Temps

Genera identificadors únics ordenables per temps (KSUID) per a l'ús en sistemes distribuïts, bases de dades i aplicacions que requereixen claus úniques i ordenables per temps. Els KSUID combinen una marca de temps amb dades aleatòries per crear identificadors resistents a les colisions i ordenables.

Generador de KSUID

📚

Documentació

Generador de KSUID

Introducció

KSUID (Identificador Únic K-Sortable) és un format d'identificador únic que ofereix diversos avantatges sobre el UUID (Identificador Únic Universal) i altres sistemes d'identificació. Aquesta eina et permet generar KSUIDs ràpidament i fàcilment.

Què és un KSUID?

Un KSUID és un identificador sortable de 20 bytes que consisteix en:

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

Quan es representa com una cadena, un KSUID s'codifica en base62 i té una longitud de 27 caràcters.

Estructura d'un KSUID

L'estructura d'un KSUID es pot desglossar com segueix:

  1. Timestamp (4 bytes): Això representa el nombre de segons des de l'època Unix (1 de gener de 1970, a les 00:00 UTC). El timestamp permet que els KSUIDs siguin aproximadament sortables per temps de generació.

  2. Component aleatori (16 bytes): Aquest és un número aleatori criptogràficament segur que garanteix la unicitat fins i tot quan es generen múltiples KSUIDs al mateix segon.

  3. Codificació Base62: Els 20 bytes combinats (timestamp + aleatori) es codifiquen utilitzant base62 (A-Z, a-z, 0-9) per produir la cadena final de 27 caràcters.

Fórmula KSUID

Un KSUID es pot representar matemàticament com:

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

On:

  • TT és el timestamp de 32 bits
  • RR és el component aleatori de 128 bits
  • || denota concatenació

El timestamp TT es calcula com:

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

On KSUID_epoch és 1400000000 (2014-05-13T16:53:20Z).

Diagrama de l'estructura d'un KSUID

Timestamp (4 bytes) Component aleatori (16 bytes)

Casos d'ús per a KSUIDs

Els KSUIDs són particularment útils en els següents escenaris:

  1. Sistemes distribuïts: Quan necessites identificadors únics a través de múltiples servidors o serveis sense coordinació.

  2. Dades sortable per temps: Quan vols ordenar dades per temps de creació sense emmagatzemar un timestamp separat.

  3. Claus de base de dades: Com a claus primàries en bases de dades, especialment en bases de dades distribuïdes on els enters d'auto-increment no són adequats.

  4. Identificadors segurs per a URL: Per crear identificadors curts, únics i segurs per a URL per a recursos en aplicacions web.

  5. Correlació de registres: Per correlacionar entrades de registre a través de diferents serveis en una arquitectura de microserveis.

Avantatges dels KSUIDs

Els KSUIDs ofereixen diversos avantatges sobre altres sistemes d'identificació:

  1. Sortabilitat: A diferència dels UUIDs, els KSUIDs es poden ordenar cronològicament, cosa que és útil per a la indexació de bases de dades i l'anàlisi de registres.

  2. No es requereix coordinació: A diferència dels IDs d'auto-increment, els KSUIDs es poden generar de manera independent per diferents servidors sense risc de col·lisions.

  3. Representació compacta: Amb 27 caràcters, els KSUIDs són més compactes que els UUIDs quan es representen com a cadenes.

  4. Timestamp incrustat: El timestamp incrustat permet l'ordenació i filtratge basats en el temps sense necessitat d'un camp de timestamp separat.

  5. Segur per a URL: La codificació base62 fa que els KSUIDs siguin segurs per a l'ús en URLs sense cap codificació addicional.

  6. Probabilitat de col·lisió reduïda: El component aleatori de 16 bytes fa que les col·lisions siguin extremadament poc probables, fins i tot a altes taxes de generació.

Com utilitzar aquest generador

  1. Introdueix qualsevol paràmetre addicional si cal (per exemple, timestamp personalitzat).
  2. Fes clic al botó "Generar KSUID" per crear un nou KSUID.
  3. El KSUID generat es mostrarà al camp de sortida.
  4. Pots generar múltiples KSUIDs repetint els passos 1-3.
  5. Utilitza el botó "Copia" al costat de cada KSUID per copiar-lo al teu porta-retalls.
  6. Opcionalment, utilitza la funció "Exportar" per descarregar una llista de KSUIDs generats.

Recorda que cada KSUID és únic i s'ha d'utilitzar només una vegada. Genera un nou KSUID cada vegada que necessitis un identificador únic.

Exemple de codi

Aquí hi ha exemples de generació de KSUIDs en diversos llenguatges de programació:

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

Referències

  1. Repositori de KSUID de Segment: https://github.com/segmentio/ksuid
  2. "Generant bons identificadors únics" per Peter Bourgon: https://peter.bourgon.org/blog/2019/05/20/generating-good-unique-ids.html
  3. Especificació KSUID: https://github.com/segmentio/ksuid/blob/master/README.md