Nachdem ObjectId
verwendet wurde s in RESTful-APIs mehrmals verwendet wird, ist der größte Nachteil wirklich, dass sie sehr laut sind, wenn es darum geht, eine saubere URL zu haben. Sie lassen es entweder als HEX-Zahl oder wandeln es in eine sehr große Ganzzahl um, was beides zu einer etwas unfreundlichen URL führt:
/rest/resource/52435dbecb970072ec3a780f
/rest/resource/25459211534898951476729247759
Ich habe der URL einen "Titel" hinzugefügt (wie es StackOverflow tut), um sie etwas freundlicher zu gestalten:
/rest/resource/52435dbecb970072ec3a780f/FriendlyResourceName
Natürlich wird der "Titel" in der Software ignoriert, aber der Benutzer sieht ihn und kann das verrückte ID-Segment mental ignorieren.
Es gibt sehr wenig Nützliches, das man aus der Infrastruktur lernen könnte, indem man sie offenlegt:
- Zeitstempel
- Maschinen-ID
- Prozess-ID
- Zufälliger inkrementierender Wert
Abgesehen vom potenziellen Sammeln von Maschinen-IDs (die im Allgemeinen die Anzahl der Clients angeben würden, die ObjectId
erstellen s), da ist nicht viel drin.
ObjectId
s sind nicht zufällig, also könnten Sie sie nicht aus Sicherheitsgründen verwenden. Sie müssen die Daten immer sichern. Während sie sich möglicherweise nicht auf offensichtliche Weise erhöhen, wäre es einfach, andere Ressourcen durch rohe Gewalt zu finden. Wenn Sie jedoch zuvor IDs mit automatischer Erhöhung verwendet haben, ist dies kein neues Problem für Sie.
Wenn Sie wissen, dass Sie zu einem bestimmten Zeitpunkt nicht viele neue Dokumente erstellen, kann es sich lohnen, eines der Muster hier zu verwenden, um eine einfachere ID zu erstellen. In einer von mir geschriebenen App habe ich eine Auto-Inc-Technik für einige der Dokument-IDs verwendet, die in URLs angezeigt wurden, und für diejenigen, die nur Ajax waren, habe ich ObjectId
verwendet s. Ich wollte wirklich, dass einige URLs einfach "getippt" werden können. Keine Form einer ObjectId
kann leicht von einem Endbenutzer eingegeben werden. Das ist eine der Stärken von MongoDB – dass Sie jede _id
verwenden können gewünschten Format. :)