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

Różnica między przechowywaniem identyfikatora ObjectId a jego postacią ciągu w MongoDB

Osobiście obwiniam twój kod. Poradzę sobie z tym doskonale w moich aplikacjach, kodując we właściwy sposób. Konwertuję na ciąg w kodzie do porównania i upewniam się, że wszystko, co wygląda jak ObjectId jest faktycznie używany jako ObjectId .

Warto zauważyć, że pomiędzy ObjectId (http://docs.mongodb.org/manual/reference/object-id/) i jego reprezentacja szesnastkowa ma w rzeczywistości 12 bajtów różnicy, ObjectId ma 12 bajtów, a jego reprezentacja szesnastkowa to 24.

Nie chodzi tylko o wydajność pamięci masowej, ale także o indeksy; nie tylko dlatego, że są mniejsze, ale także dlatego, że ObjectId może być używany w specjalny sposób, aby zapewnić, że ładowane są tylko części indeksu; używane części. Staje się to najbardziej zauważalne podczas wstawiania, gdzie tylko najnowsza część tego indeksu musi zostać załadowana, aby zapewnić niepowtarzalność. Nie możesz zagwarantować takiego zachowania z jego reprezentacją szesnastkową.

Zdecydowanie polecam nie używać OjbectId szesnastkowa reprezentacja. Jeśli chcesz „ułatwić sobie życie”, lepiej byłoby utworzyć inny _id który jest mniejszy, ale jakoś tak samo wyjątkowy i przyjazny dla indeksów.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Pymongo / MongoDB:utworzyć indeks czy zapewnić indeks?

  2. MongoDB konwertuje datę na ciąg

  3. jak iterować kursor mongo w pętli w pythonie

  4. Przegląd zarządzania użytkownikami MongoDB

  5. NodeJS i MongoDB FindAndModify() wymagają usunięcia lub aktualizacji