sql >> Database >  >> NoSQL >> MongoDB

Mongodb - moet _id wereldwijd uniek zijn bij sharding

Tenzij u ze handmatig vervangt, zijn de automatisch gegenereerde _id's UUID's die, volgens de documentatie , bestaat uit "een tijdstempel van 4 bytes (seconden sinds epoche), een machine-ID van 3 bytes, een proces-ID van 2 bytes en een teller van 3 bytes".

Zoals u kunt zien, maakt een uniek machine-ID deel uit van de UUID. Dat zorgt ervoor dat geen twee machines in de shard ooit onafhankelijk dezelfde UUID maken (tenzij ze hetzelfde machine-ID hebben - de kans daarop is 1:16777215 en als het gebeurt, kan het eenvoudig worden geverifieerd). De enige situatie waarin u theoretisch een gedupliceerde UUID zou kunnen hebben, is wanneer een enkel proces meer dan 2^24 (meer dan 16 miljoen) UUID's in één seconde creëert.

tl;dr: U hoeft zich geen zorgen te maken over dubbele UUID's - ze zijn, zoals de documentatie stelt, "ontworpen om een ​​redelijk grote kans te hebben om uniek te zijn wanneer ze worden toegewezen".




  1. Mongo-fout bij gebruik van aggregatie:sortering overschreden geheugenlimiet

  2. MongoDB pull-element van array twee niveaus diep

  3. Hoe vraag je naar is niet null in Mongo?

  4. MongoDB + Node.js:kan datum niet correct invoegen