MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Mongodb — musi _id być globalnie unikalny podczas shardingu

O ile nie zastąpisz ich ręcznie, automatycznie wygenerowane identyfikatory _id są identyfikatorami UUID, które zgodnie z dokumentacja , składa się z „4-bajtowego znacznika czasu (sekundy od epoki), 3-bajtowego identyfikatora maszyny, 2-bajtowego identyfikatora procesu i 3-bajtowego licznika”.

Jak widać, unikalny identyfikator maszyny jest częścią UUID. Gwarantuje to, że żadne dwie maszyny we shardu nigdy nie utworzą tego samego UUID niezależnie (chyba że mają ten sam identyfikator maszyny - prawdopodobieństwo tego wynosi 1:16777215, a kiedy to nastąpi, można to łatwo zweryfikować). Jedyną sytuacją, w której teoretycznie możesz mieć zduplikowany UUID, jest sytuacja, gdy pojedynczy proces tworzy więcej niż 2^24 (ponad 16 milionów) UUID w ciągu jednej sekundy.

tl;dr: Nie musisz się martwić o zduplikowane identyfikatory UUID — są one, jak to określa dokumentacja, „zaprojektowane tak, aby mieć dość wysokie prawdopodobieństwo bycia unikalnymi po przydzieleniu”.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB $atanh

  2. Mongo Database zapisują dane z mapy

  3. Agregacja MapReduce na podstawie atrybutów zawartych poza dokumentem

  4. Czy Mongoose obsługuje metodę Mongodb `findAndModify`?

  5. MongoDB i Robomongo:nie można się połączyć (uwierzytelnianie)