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

Czy Mongodb ObjectID jest unikalny między dokumentami?

Jest wyjątkowy pod każdym względem praktycznym. Wspomniana nieunikalność jest raczej teoretyczna.

ObjectId został skonstruowany z

  • znacznik czasu (sekundy od epoki)
  • identyfikator maszyny
  • identyfikator procesu
  • i 3-bajtowy licznik zaczynający się od losowej wartości co sekundę

Tak więc przy medianie, chyba że piszesz więcej niż 3080 dokumentów na sekundę na klienta, powinieneś być zapisany. Należy zauważyć, że _id ma unikalne ograniczenie:Nawet jeśli próbowałbyś napisać ten sam ObjectId dwa razy, byłby wyjątek.

Uwaga dodatkowa:nawet algorytmy haszujące, takie jak MD5 lub (w mniejszym stopniu) SHA256, mają niewielką szansę na kolizję. Ale dzięki unikalnemu ograniczeniu jesteś bezpieczny.

Edytuj :Ponieważ wyjątek jest rzucany w bardzo, BARDZO rzadkim przypadku, gdy dwa identyczne identyfikatory ObjectId są generowane i próbują być zapisywane jednocześnie, po prostu radzisz sobie z nimi, generując nowy ObjectId i próbujesz ponownie zapisać dokument.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. How-to:Użytkownik ma fanów

  2. Meteor używa funkcji pobierania lub znajdowania w funkcjach pomocniczych szablonu?

  3. MongoDB z Dockerem nie udało się połączyć z serwerem [localhost:27017] przy pierwszym połączeniu

  4. Co to jest błąd Mongoose Cast to ObjectId nie powiodło się dla wartości XXX w ścieżce _id?

  5. Spring Data MongoDB z Java 8 LocalDate MappingException