Pourquoi devrais-je choisir l'UUID plutôt qu'un numéro à incrémentation automatique pour la clé primaire de mon entité ? Quels sont les avantages et les inconvénients ?
Réponses
Trop de publicités?Andrey et Mjg ont tous deux soulevé de bons points, mais je voudrais ajouter un problème de performance connexe qui est significatif.
Le découplage de la base de données et de la génération des clés permet également aux applications qui ont des relations complexes entre les objets de les créer toutes avec les clés en place, de sorte que les insertions en masse sont possibles.
Dans le cas de l'auto-incrémentation, tous les objets qui possèdent des relations (c'est-à-dire les tables avec des clés étrangères) doivent attendre que l'autre côté de la relation (c'est-à-dire la table d'où provient la clé étrangère) enregistre, interroge les identifiants attribués, puis mette à jour individuellement les anciens enregistrements.
Les UUID sont uniques au monde et peuvent être générés en parallèle sans communication entre les serveurs de bases de données en grappe. Ainsi, "Les identifiants d'objets sont plus synergiques avec le sharding et la distribution". . Les UUID sont généralement stockés sur 128 bits.
Les nombres entiers auto-incrémentés sont plus conviviaux (de toute façon, ils sont plus courts et plus faciles à mémoriser) et permettent un tri automatique par ordre d'insertion. Les nombres entiers sont généralement stockés sur 32 ou 64 bits.