MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Ist es eine schlechte Praxis, eine Mongo ObjectId als Benutzer-ID zu verwenden?

Ein paar, die ich gesehen habe:

  1. Es ist nicht gut für URLs. Twitter gibt mir eine URL wie http://twitter.com/gatesvp , mit einer ObjectId erhalten Sie eine URL wie http://example.com/ab12ab12ab12ab12ab12ab12 .
  2. Die ObjectId-Shards sind sehr schlecht. Es ist nicht wirklich zufällig, es ist etwas sequentiell, sodass sich neue Benutzer auf Shards gruppieren, anstatt sie zufällig zu verteilen.
  3. Oft benötigen Sie eine andere eindeutige Kennung. Die meisten Websites verlangen eine eindeutige E-Mail-Adresse oder einen eindeutigen Benutzernamen. Ja, Sie können einen eindeutigen Index für den "Benutzernamen" erstellen, aber dann haben Sie zwei eindeutige Indizes, einen nützlichen und einen, der nur eine Zufallszahl ist.
  4. Sie werden überall darauf verweisen. Die Daten Ihrer Benutzer werden in der Regel über mehrere Sammlungen verteilt, alle mit einem Verweis auf die „userId“. ObjectIds (oder Guids) zu haben, bedeutet, dass Sie diese großen IDs ständig kopieren und überall einfügen und in der Datenbank speichern.

Wohin verlegt? Sobald Sie beginnen, Benutzerdaten in MongoDB zu speichern, werden die IDs das geringste Problem bei der Übertragung auf eine andere DB sein. Alle modernen DBs können eine Form von String oder Binär als Primärschlüssel-ID verarbeiten, sodass Ihre Übertragung problemlos funktionieren sollte. Aber die meiste Komplexität wird nichts mit der ID zu tun haben.