Générateur KSUID - Créer des Identifiants Uniques Triables
Générez des Identifiants Uniques K-Triables (KSUIDs) en ligne. Créez des ID triables par temps, résistants aux collisions pour les systèmes distribués et les bases de données instantanément.
Générateur KSUID
Documentation
Générateur de KSUID
Un KSUID (K-Sortable Unique Identifier) est un code de 27 caractères utilisé pour étiqueter des enregistrements tels que des lignes de base de données, des entrées de journal ou des requêtes d'API. Il combine un horodatage et des données aléatoires : les identifiants se trient donc approximativement selon leur moment de génération, tout en restant chacun pratiquement unique. Cet outil génère un seul KSUID dans le navigateur et permet de le copier.
De quoi se compose un KSUID ?
Un KSUID fait 20 octets et se divise en deux parties :
- Horodatage (4 octets) : le nombre de secondes écoulées depuis un point de départ fixe appelé l’époque KSUID.
- Charge utile aléatoire (16 octets) : données produites par le générateur de nombres aléatoires cryptographiques du navigateur.
Ces 20 octets sont ensuite convertis en texte à l’aide du codage en base 62, un système qui représente les nombres avec 62 caractères : les chiffres 0-9, les lettres majuscules A-Z et les lettres minuscules a-z. Le résultat est toujours complété pour atteindre exactement 27 caractères, par exemple 0qjBBlJIfbVLKwnJn4xpLGDr00e.
Comme l'horodatage vient en premier, deux KSUID créés à une seconde d'intervalle se trient normalement dans l'ordre de leur création lorsqu'on les compare comme du texte brut. L'ordre dépend de l'horloge de l'ordinateur générateur ; ce n'est donc pas une garantie stricte. Comme les 16 derniers octets sont aléatoires, deux KSUID créés dans la même seconde ont presque toutes les chances d'être différents.
L’époque KSUID
La plupart des systèmes informatiques comptent le temps en secondes depuis le 1 janvier 1970 (l'« époque Unix »). Les KSUID utilisent un autre point de départ, l'époque KSUID : 1 400 000 000 secondes après l'époque Unix, valeur que l'implémentation de référence a choisie parce qu'elle est facile à retenir, soit le 13 mai 2014 à 16:53:20 UTC.
Un point de départ plus tardif permet au champ d'horodatage de 4 octets de couvrir davantage d'années utiles avant d'être saturé ; les auteurs du format le décrivent comme offrant plus de 100 ans de durée de vie. Un compteur de 4 octets (32 bits) peut contenir au plus 4 294 967 295 secondes. En comptant à partir de l'époque KSUID, cette période s'épuise vers le 19 juin 2150.
Formule du KSUID
Une chaîne KSUID est construite en trois étapes.
-
Trouver la valeur de l’horodatage :
T = floor(current_unix_time_in_seconds) − 1,400,000,000 -
Générer 16 octets aléatoires,
R, à l’aide d’un générateur de nombres aléatoires cryptographiquement sûr. -
Joindre l’horodatage de 4 octets et les 16 octets aléatoires en un bloc de 20 octets, puis coder ce bloc en base 62 en complétant le résultat pour atteindre 27 caractères :
KSUID = Base62( T ‖ R )
Ici, ‖ signifie « placer l’un à la suite de l’autre ». Les octets de l’horodatage viennent toujours en premier, ce qui permet à la chaîne finale d’être correctement triée par ordre chronologique.
Exemple détaillé
Supposons que la partie horodatage d’un KSUID soit 100000000. Comme l’époque KSUID commence 1 400 000 000 secondes après l’époque Unix, cet horodatage correspond au 14 juillet 2017 à 02:40:00 UTC.
En associant cet horodatage à la séquence de 16 octets 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16 (utilisée ici uniquement pour rendre l’exemple reproductible ; un générateur réel utilise à la place des octets aléatoires), le codage en base 62 produit :
0qjBBlJIfbVLKwnJn4xpLGDr00e
Cette chaîne contient 27 caractères, composés uniquement de chiffres et de lettres, et peut être utilisée directement dans une URL ou un nom de fichier.
Comment utiliser l’outil générateur de KSUID
- Ouvrez la page du générateur de KSUID.
- Sélectionnez le bouton « Générer un KSUID ».
- L’outil crée un nouveau KSUID à partir de l’heure actuelle et de nouveaux octets aléatoires, puis l’affiche sur la page.
- Sélectionnez le bouton « Copier le KSUID » pour copier la valeur dans le presse-papiers.
- Sélectionnez « Réinitialiser » pour effacer le résultat. Sélectionner de nouveau « Générer un KSUID » en crée un nouveau.
Chaque clic sur « Générer un KSUID » produit exactement un identifiant. Pour créer plusieurs KSUID, cliquez de nouveau sur le bouton pour chacun d’eux ; l’outil n’intègre ni mode de traitement par lots ni exportation de fichier.
Le générateur s’appuie sur l’API Web Crypto intégrée aux navigateurs modernes. Si cette API n’est pas disponible, l’outil affiche une erreur au lieu de produire un identifiant, car un générateur de nombres aléatoires qui n’est pas cryptographiquement sûr pourrait produire des identifiants plus faciles à deviner ou susceptibles d’entrer en collision.
KSUID et UUID
Un UUID (Universally Unique Identifier) est un autre format d'identifiant courant. Les UUID de version 4 contiennent 122 bits aléatoires et aucun horodatage : deux d'entre eux n'indiquent donc pas lequel a été créé en premier. Sous sa forme textuelle habituelle, un UUID compte 36 caractères : 32 chiffres hexadécimaux répartis en groupes séparés par des tirets.
Un KSUID diffère d’un UUID de trois façons :
- Triable chronologiquement. Ses octets d’horodatage initiaux font que le tri alphabétique simple des chaînes KSUID les trie également selon leur date de création.
- Plus court. Un KSUID comporte 27 caractères, contre 36 pour un UUID standard.
- Pas de séparateurs. Un UUID s'écrit normalement dans un format « hexadécimal avec tirets » (
xxxxxxxx-xxxx-...) ; un KSUID n'en a pas.
Les deux formats peuvent être générés indépendamment sur des ordinateurs différents sans consultation d’un serveur central ; ils évitent ainsi tous deux le goulot d’étranglement d’un compteur auto-incrémenté dans une base de données partagée.
Foire aux questions
Que signifie KSUID ? K-Sortable Unique Identifier. Le format a été créé par Segment, qui publie l'implémentation de référence en Go.
Quelle est la longueur d’un KSUID ? 27 caractères, codés en base 62 (chiffres 0-9, lettres majuscules et lettres minuscules).
Qu’est-ce que l’époque KSUID ? Le 13 mai 2014 à 16:53:20 UTC, soit 1 400 000 000 secondes après l’époque Unix standard, qui commence le 1 janvier 1970.
Deux KSUID peuvent-ils entrer en collision ? C'est extrêmement improbable. Chaque KSUID inclut 16 octets aléatoires (128 bits), générés avec un générateur de nombres aléatoires cryptographiquement sûr. Cela représente 64 fois l'espace de valeurs des 122 bits aléatoires d'un UUID de version 4. Même en générant de nombreux KSUID dans la même seconde, la probabilité que deux d'entre eux coïncident par accident reste astronomiquement faible.
Puis-je retrouver l’heure de création à partir d’un KSUID ? Oui. Les 4 premiers octets de la valeur décodée correspondent à l’horodatage. L’ajout de ce nombre de secondes à l’époque KSUID donne l’heure de création d’origine.
Cet outil permet-il de générer plusieurs KSUID à la fois ? Non. L’outil génère un KSUID par clic sur le bouton « Générer un KSUID ». Il ne comporte aucun champ de quantité, champ d’horodatage personnalisé ni fonction d’exportation ou de téléchargement.
Un KSUID peut-il être utilisé sans risque dans une URL ? Oui. Le codage en base 62 utilise uniquement des chiffres et des lettres ; un KSUID n’a donc pas besoin d’un échappement supplémentaire pour apparaître dans une URL, un nom de fichier ou une clé de base de données.
Références
- Segment. ksuid: K-Sortable Globally Unique IDs (README). github.com/segmentio/ksuid — structure de 20 octets, texte base62 de 27 caractères, époque de mai 2014 avec plus de 100 ans de durée de vie, 128 bits aléatoires, ordre chronologique approximatif.
- Segment. ksuid.go. source de l'implémentation de référence — constante d'époque 1400000000 ("14e8").
- IETF. RFC 9562: Universally Unique IDentifiers (UUIDs). rfc-editor.org — format texte hexadécimal avec tirets et les 122 bits aléatoires d'un UUID de version 4.