Pourquoi le _id
par défaut une chaîne hexadécimale de 24 caractères ?
L'identifiant unique par défaut généré comme clé primaire (_id
) pour un document MongoDB est un ObjectId
. Il s'agit d'une valeur binaire de 12 octets qui est souvent représentée par une chaîne hexadécimale de 24 caractères et l'un des types de champs standard pris en charge par MongoDB Spécification BSON
.
Les 12 octets d'un ObjectId sont construits à l'aide de :
- une valeur de 4 octets représentant les secondes depuis l'époque Unix
- un identifiant de machine de 3 octets
- un identifiant de processus de 2 octets
- un compteur de 3 octets (commençant par une valeur aléatoire)
Quelle est l'importance d'un ObjectId ?
ObjectIds (ou identifiants similaires générés selon un GUID formule) permettent de générer indépendamment des identifiants uniques dans un système distribué.
La possibilité de générer indépendamment un identifiant unique devient très importante lorsque vous évoluez vers plusieurs serveurs d'applications (ou peut-être plusieurs nœuds de base de données dans un cluster partitionné ). Vous ne voulez pas avoir un goulot d'étranglement de coordination central comme un compteur de séquences (par exemple, comme vous pourriez en avoir pour une clé primaire auto-incrémentée), et vous voudrez insérer de nouveaux documents sans risquer qu'un nouvel identifiant se révèle être un dupliquer.
Un ObjectId est généralement généré par votre MongoDB pilote client
, mais peut également être généré sur le serveur MongoDB si votre pilote client ou code d'application n'a pas déjà ajouté un _id
champ.
Dois-je utiliser l'ObjectId par défaut ?
Non. Si vous avez un identifiant unique plus approprié à utiliser, vous pouvez toujours fournir votre propre valeur pour _id
. Il peut s'agir d'une valeur unique ou d'une valeur composite utilisant plusieurs champs.
Les principales contraintes sur _id
les valeurs sont qu'elles doivent être uniques pour une collection et vous ne pouvez pas mettre à jour ou supprimer le _id
pour un document existant.