sql >> Databasteknik >  >> NoSQL >> MongoDB

Mongodb - måste _id vara globalt unikt vid skärning

Om du inte byter ut dem manuellt är de automatiskt genererade _id:n UUID:n som, enligt dokumentationen , består av "en 4-byte tidsstämpel (sekunder sedan epok), ett 3-byte maskin-id, ett 2-byte process-id och en 3-byte räknare".

Som du kan se är ett unikt maskin-ID en del av UUID. Det säkerställer att inga två maskiner i fragmentet någonsin skapar samma UUID oberoende (såvida de inte har samma maskin-id - sannolikheten för det är 1:16777215 och när det händer kan det enkelt verifieras). Den enda situationen där du teoretiskt sett skulle kunna ha ett duplicerat UUID är när en enda process skapar mer än 2^24 (över 16 miljoner) UUID på en enda sekund.

tl;dr: Du behöver inte oroa dig för dubbletter av UUID - de är, som dokumentationen uttrycker det, "designade för att ha en rimligt hög sannolikhet att vara unika när de tilldelas".




  1. C# Mongo DeleteMany - utan att använda en klass

  2. Testa @Transactional med Flapdoodle Embedded MongoDB i Spring Boot

  3. arrayFilters i mongodb

  4. En samling inom en samling