Se si dispone di un ID esistente (dicono da un set di dati esistente), allora è perfettamente OK per ignorare _id
con quello che hai.
... keeo intatto _id come aiutare l'indicizzazione, ecc
indici MongoDB campo _id
per impostazione predefinita. Se inizi a inserire numeri interi nel campo _id
, verranno indicizzati come qualsiasi altra cosa.
Quindi la maggior parte degli RDBM fornisce un ID di "incremento automatico". Questo è utile per dataset di piccole dimensioni, ma davvero scadente in termini di scalabilità. Se stai cercando di inserire i dati su 20 server contemporaneamente, come mantenere intatto l'auto-incremento?
La risposta normale è che non è così. Invece, si finisce per utilizzare cose come GUID per quegli ID. Nel caso di MongoDB, lo ObjectId
è già fornito.
Mi chiedevo di qualsiasi strategia migliore in modo che si può usare mongo objectId come più url amichevole e facile da ricordare chiave
Così il problema qui è che "facile da ricordare" ID non lo fa veramente mesh con "database altamente scalabile". Quando hai un miliardo di documenti, gli ID non sono veramente "facili da ricordare".
Quindi devi fare il trade-off qui. Se hai una tabella che può diventare veramente grande, ti suggerisco di usare l'ObjectId. Se hai una tabella relativamente piccola e non viene aggiornata spesso (come una tabella di "ricerca"), puoi creare il tuo incremento automatico.
La scelta dipende solo da voi.
fonte
2011-04-26 06:24:38
http://www.mongodb.org/display/DOCS/Object+IDs#ObjectIDs-SequenceNumbers – bsr
I database tradizionali utilizzano spesso numeri di sequenza monotonicamente crescenti per chiavi primarie. In MongoDB, l'approccio preferito è utilizzare invece gli ID oggetto. Gli ID oggetto sono più sinergici con lo sharding e la distribuzione. – bsr
Penso che tolga alcuni vantaggi, e possa anche per l'indicizzazione e l'ordinamento – bsr