Les UUID sont pratique pour générer des identifiants uniques, mais vous n'avez plus la possibilité de les trier à cause de leur caractère totalement aléatoire.
L'auteur de l'article propose la chose suivante: sur les 128 bits de l'UUID, on utilise les 48 premiers bits pour encoder la date, jusqu'à la microseconde, et on utilise les 80 bits restants pour l'aléa.
Avec 48 bits pour la date, on a quand même une limite: l'année 10899.
L'avantage d'y inclure la date est qu'on peut ainsi trier, ordonner les UUID par leur date de création. On imagine que cela pourrait être utile pour de l'archivage de données, ou par exemple pour partitionner une base de données.
Bien sûr, les 80 bits restants (au lieu de 128) augmentent le risque de collision, mais pour augmenter réellement le risque de collision il faudrait générer 1,208,925,820,000,000,000,000,000 de ces UUID dans la même microseconde. Le risque reste donc faible.
(
Permalink)