MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Mongodb ObjectID è univoco tra i documenti?

È unico per tutti gli scopi pratici. La non unicità menzionata è piuttosto teorica.

L'ObjectId è costruito fuori

  • un timestamp (secondi dall'epoca)
  • un identificatore di macchina
  • l'ID del processo
  • e un contatore di 3 byte che inizia con un valore casuale ogni secondo

Quindi, a mediana, a meno che tu non scriva più di 3080 documenti al secondo per cliente, dovresti essere salvato. È da notare che _id ha un vincolo unico:Anche se proveresti a scrivere lo stesso ObjectId due volte, ci sarebbe un'eccezione.

Nota a margine:anche algoritmi hash come MD5 o (in misura minore) SHA256 hanno una leggera possibilità di collisione. Ma con un vincolo unico, sei al sicuro.

Modifica :Poiché viene generata un'eccezione nel caso molto, molto, MOLTO raro in cui due ObjectId identici vengono generati e tentati di essere scritti contemporaneamente, è sufficiente gestirli generando un nuovo ObjectId e provare a salvare nuovamente il documento.