MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Mongodb ObjectID est-il unique entre les documents ?

Il est unique à toutes fins pratiques. La non-unicité mentionnée est plutôt théorique.

L'ObjectId est construit sur

  • un horodatage (secondes depuis l'époque)
  • un identifiant de machine
  • l'identifiant du processus
  • et un compteur de 3 octets commençant par une valeur aléatoire chaque seconde

Donc, à la médiane, à moins que vous n'écriviez plus de 3080 documents par seconde par client, vous devriez être économisé. Il est à noter que _id a une contrainte unique :Even if vous essaieriez d'écrire deux fois le même ObjectId, il y aurait une exception.

Remarque :même les algorithmes de hachage comme MD5 ou (dans une moindre mesure) SHA256 ont un léger risque de collision. Mais avec une contrainte unique, vous êtes en sécurité.

Modifier  :Puisqu'une exception est levée dans le très, très, TRÈS rare cas où deux ObjectId identiques sont générés et essayés d'être écrits simultanément, vous les gérez simplement en générant un nouvel ObjectId et essayez à nouveau d'enregistrer le document.