sql >> Database teknologi >  >> NoSQL >> MongoDB

Er det dårlig praksis at bruge et mongo ObjectId som en brugers id?

Et par stykker, jeg har set:

  1. Det er ikke fantastisk til webadresser. Twitter giver mig en URL som http://twitter.com/gatesvp , med et ObjectId får du en url som http://example.com/ab12ab12ab12ab12ab12ab12 .
  2. Objekt-id'et sønderdeles meget dårligt. Det er ikke rigtig tilfældigt, det er noget sekventielt, så nye brugere vil gruppere sig på shards i stedet for at distribuere tilfældigt.
  3. Du har ofte brug for et andet unikt id. De fleste hjemmesider har et krav om unik e-mail eller unikt brugernavn. Ja, du kan oprette et unikt indeks på "brugernavnet", men så har du to unikke indekser, et der er nyttigt og et der kun er et tilfældigt tal.
  4. Du vil henvise til dette overalt. Dine brugeres data vil typisk være spredt på tværs af flere samlinger alle med en pointer til "bruger-id". At have ObjectId'er (eller guider) betyder, at du konstant kopierer og indsætter disse store ID'er overalt og gemmer dem i DB'en.

Overført til hvor? Når du begynder at gemme brugerens data i MongoDB, vil ID'erne være det mindste af dine problemer med at overføre til en anden DB. Alle moderne DB'er kan håndtere en form for streng eller binær som den primære nøgle-id, så din overførsel burde fungere fint. Men det meste af kompleksiteten vil ikke have noget at gøre med ID'et.




  1. MongoDB - Fuldtekstindeks - Fuldtekstsøgning - stemming

  2. Der er en måde at håndhæve referentiel integritet i MongoDB

  3. Sådan aktiverer du distribueret/clustered cache, når du bruger redis med spring data cache

  4. Hvornår skal man indeksere, hvad skal man indeksere i Mongoid?