MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Лоша практика ли е да се използва mongo ObjectId като идентификатор на потребител?

Няколко, които съм виждал:

  1. Не е чудесно за URL адреси. Twitter ми дава URL като http://twitter.com/gatesvp , с ObjectId получавате url като http://example.com/ab12ab12ab12ab12ab12ab12 .
  2. ObjectId се разделя много лошо. Това не е наистина произволно, то е донякъде последователно, така че новите потребители ще се групират на фрагменти, вместо да се разпределят произволно.
  3. Често се нуждаете от друг уникален идентификатор. Повечето уебсайтове имат изискване за уникален имейл или уникално потребителско име. Да, можете да създадете уникален индекс на „потребителското име“, но тогава имате два уникални индекса, един полезен и един, който е просто произволно число.
  4. Ще споменавате това навсякъде. Данните на вашите потребители обикновено ще бъдат разпределени в множество колекции, всички с указател към „userId“. Наличието на ObjectIds (или Guids) означава, че непрекъснато копирате и поставяте тези големи идентификатори навсякъде и ги съхранявате в DB.

Прехвърлени къде? След като започнете да съхранявате потребителски данни в MongoDB, идентификаторите ще бъдат най-малкият от вашите проблеми при прехвърляне към друга база данни. Всички съвременни бази данни могат да обработват някаква форма на String или Binary като идентификатор на първичен ключ, така че вашият трансфер трябва да работи добре. Но по-голямата част от сложността няма да има нищо общо с идентификатора.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. $lookup, когато ForeignField е масив

  2. Преобразуване на съхранена дата от монго обратно в милисекунди от епохата на Unix при зареждане?

  3. Не може да се стартира Mongo DB

  4. MongoDB общ брой елементи в два масива в различни документи?

  5. MongoDB, Mongoose:Как да намеря поддокумент в намерен документ?