16 votes

UUID contre numéro d'auto-incrément pour la clé primaire

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 ?

11voto

Bryan Agee Points 1941

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.

8voto

Matthew Gilliard Points 4360

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.

4voto

Andrey Points 36869

Le principal avantage est que vous pouvez les générer indépendamment. Le contre est qu'il est plus grand.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X