- Buildkite a adopté la nouvelle norme UUIDv7 comme clé primaire, remplaçant l’ancien système de clé primaire séquentielle et de clé secondaire UUID
- Les UUID (Universally Unique Identifiers) sont des identifiants uniques pouvant être générés indépendamment, largement utilisés dans les systèmes distribués et les bases de données
- Les UUID offrent plusieurs avantages par rapport aux identifiants entiers séquentiels, notamment l’imprévisibilité, la prévention de l’exposition d’informations internes sensibles et une couche de défense supplémentaire
- Cependant, le caractère aléatoire des UUID standard non ordonnés dans le temps peut entraîner des problèmes de performance des bases de données
- Pour résoudre ce problème, Buildkite a expérimenté des UUID compatibles UUIDv4 mais ordonnés dans le temps, ce qui a réduit de 50 % le volume du Write Ahead Log (WAL) de sa base de données principale
- La version 7 des UUID (UUIDv7) encode un timestamp Unix en millisecondes dans les 48 bits les plus significatifs, tandis que les 74 bits restants sont générés aléatoirement
- Buildkite a décidé d’utiliser UUIDv7 comme clé primaire pour toutes les nouvelles tables, ce qui supprime le besoin de coordination dans la génération des identifiants et simplifie la logique applicative
- Des alternatives comme l’implémentation ShardingID d’Instagram et l’implémentation de clés primaires composites de Shopify ont été envisagées, mais l’équipe a choisi UUIDv7
- La transition vers UUIDv7 nécessite davantage d’espace de stockage en raison de la longueur de 128 bits des UUID, mais cela reste négligeable par rapport au reste de l’espace occupé par une ligne de base de données
- L’entreprise est actuellement en train de sharder sa plus grande base de données Postgres et pourrait à l’avenir utiliser UUIDv8 pour inclure un numéro de shard dans les identifiants si nécessaire
1 commentaires
Commentaires sur Hacker News
uuidde Postgres, qui accepte toute donnée de la bonne longueur.