2011-04-25 17 views
6

Come utilizzare in modo migliore objectId generato da MOngoDB. Non sono un utente esperto, ma fino ad ora ho finito per creare un id separato per il mio oggetto (userid, postid) ecc. Perché l'ID dell'oggetto è troppo lungo e rende l'url brutto se usato come ID principale. Mi piace il _id intatto in quanto aiuta l'indicizzazione ecc. Mi chiedevo qualsiasi strategia migliore in modo che si possa usare mongo objectId come più url friendly e facile da ricordare key. Ho letto che la chiave era una combinazione di data, ecc., Quindi qualsiasi parte può essere utilizzata come unica all'interno di una raccolta per questo scopo.Mongodb: ID oggetto come chiave primaria corta all'interno di una raccolta

grazie,
BSR/

risposta

3

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.

0

È possibile sovrascrivere il _id soli. Non vi è alcun obbligo per l'utilizzo dell'id oggetto generato automaticamente. Qual è il problema con l'override di _id all'interno della tua app in base alle tue esigenze?

+0

http://www.mongodb.org/display/DOCS/Object+IDs#ObjectIDs-SequenceNumbers – bsr

+0

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

+0

Penso che tolga alcuni vantaggi, e possa anche per l'indicizzazione e l'ordinamento – bsr

Problemi correlati