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

Czy używanie mongo ObjectId jako identyfikatora użytkownika jest złą praktyką?

Kilka, które widziałem:

  1. To nie jest dobre dla adresów URL. Twitter podaje mi adres URL, taki jak http://twitter.com/gatesvp , z ObjectId otrzymasz adres URL, taki jak http://example.com/ab12ab12ab12ab12ab12ab12 .
  2. Shardy ObjectId są bardzo słabe. Nie jest to tak naprawdę losowe, jest nieco sekwencyjne, więc nowi użytkownicy będą skupiać się na fragmentach, a nie dystrybuować losowo.
  3. Często potrzebujesz innego unikalnego identyfikatora. Większość stron internetowych wymaga unikalnego adresu e-mail lub unikalnej nazwy użytkownika. Tak, możesz utworzyć unikalny indeks dla „nazwy użytkownika”, ale wtedy masz dwa unikalne indeksy, jeden, który jest użyteczny, a drugi, który jest po prostu liczbą losową.
  4. Będziesz odwoływał się do tego wszędzie. Dane użytkowników są zwykle rozłożone na wiele kolekcji, wszystkie ze wskaźnikiem do „identyfikatora użytkownika”. Posiadanie identyfikatorów ObjectId (lub Guids) oznacza, że ​​stale kopiujesz i wklejasz te duże identyfikatory wszędzie i przechowujesz je w bazie danych.

Dokąd przeniesiony? Gdy zaczniesz przechowywać dane użytkownika w MongoDB, identyfikatory będą najmniejszym z twoich problemów z przeniesieniem do innej bazy danych. Wszystkie nowoczesne bazy danych mogą obsłużyć jakąś formę String lub Binary jako identyfikator klucza podstawowego, więc transfer powinien działać dobrze. Ale większość złożoności nie będzie miała nic wspólnego z identyfikatorem.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. docker-compose blokuje wyjście mongodb

  2. MongoDb — Zmień typ z Int na Double

  3. Dokument aktualizacji Mongoose nie powiódł się z findByIdAndUpdate

  4. Wkładka z mangusty Wiele limitów

  5. Lumen - mongodb - jenssegers/laravel-mongodb - listonosz