MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Ist Mongodb ObjectID zwischen Dokumenten eindeutig?

Es ist einzigartig für alle praktischen Zwecke. Die erwähnte Nichteindeutigkeit ist eher theoretischer Natur.

Die ObjectId wird erstellt aus

  • ein Zeitstempel (Sekunden seit Epoche)
  • eine Maschinenkennung
  • die Prozess-ID
  • und einen 3-Byte-Zähler, der jede Sekunde mit einem zufälligen Wert beginnt

Wenn Sie also im Durchschnitt nicht mehr als 3080 Dokumente pro Sekunde und Client schreiben, sollten Sie auf der sicheren Seite sein. Beachten Sie, dass _id hat eine eindeutige Einschränkung:Even if Sie würden versuchen, dieselbe ObjectId zweimal zu schreiben, es würde eine Ausnahme geben.

Nebenbemerkung:Auch Hash-Algorithmen wie MD5 oder (in geringerem Maße) SHA256 haben eine leichte Kollisionsgefahr. Aber mit einer eindeutigen Einschränkung sind Sie sicher.

Bearbeiten :Da in dem sehr, sehr, SEHR seltenen Fall, dass zwei identische ObjectIds generiert und versucht werden, gleichzeitig geschrieben zu werden, eine Ausnahme ausgelöst wird, handhaben Sie sie einfach, indem Sie eine neue ObjectId generieren und versuchen, das Dokument erneut zu speichern.