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

Mongodb – muss _id beim Sharding global eindeutig sein

Sofern Sie sie nicht manuell ersetzen, sind die automatisch generierten _ids UUIDs, die gemäß die Dokumentation , bestehen aus „einem 4-Byte-Zeitstempel (Sekunden seit Epoche), einer 3-Byte-Maschinen-ID, einer 2-Byte-Prozess-ID und einem 3-Byte-Zähler“.

Wie Sie sehen können, ist eine eindeutige Maschinen-ID Teil der UUID. Dadurch wird sichergestellt, dass keine zwei Maschinen im Shard jemals unabhängig voneinander dieselbe UUID erstellen (es sei denn, sie haben dieselbe Maschinen-ID – die Wahrscheinlichkeit dafür beträgt 1:16777215, und wenn es passiert, kann es leicht überprüft werden). Die einzige Situation, in der Sie theoretisch eine duplizierte UUID haben könnten, ist, wenn ein einzelner Prozess mehr als 2^24 (über 16 Millionen) UUIDs in einer einzigen Sekunde erstellt.

tl;dr: Sie müssen sich keine Gedanken über doppelte UUIDs machen - sie sind, wie es in der Dokumentation heißt, "so konzipiert, dass sie bei der Zuweisung mit ziemlich hoher Wahrscheinlichkeit eindeutig sind".