2011-04-25 17 views
6

Cómo hacer un mejor uso de objectId generate by MOngoDB. No soy un usuario experto, pero hasta el momento terminé creando una identificación separada para mi objeto (ID de usuario, postid), etc. porque la Id. Del objeto es demasiado larga y hace que la URL sea fea si se usa como ID principal. Guardo el _id intacto, ya que ayuda a la indexación, etc. Me preguntaba acerca de cualquier estrategia mejor para que uno pueda usar mongo objectId como una clave más fácil de recordar y fácil de recordar. Leí que la clave era una combinación de fecha, etc., por lo que cualquiera de las piezas se puede usar de forma única dentro de una colección para este fin.Mongodb: ID de objeto como clave primaria corta dentro de una colección

gracias,
BSR/

Respuesta

3

Si tiene un ID existente (decir de un conjunto de datos existentes establecen), entonces es perfectamente bien para anular _id con la que tienes.

... Keeo _ID intacta, ya que ayudan a la indexación etc

índices MongoDB el campo _id por defecto. Si comienzas a poner números enteros en el campo _id, se indexarán como todo lo demás.

Por lo tanto, la mayoría de los RDBM proporcionan una identificación de "autoincremento". Esto es bueno para conjuntos de datos pequeños, pero realmente pobre en términos de escalabilidad. Si intentas insertar datos en 20 servidores a la vez, ¿cómo mantienes intacto el "incremento automático"?

La respuesta normal es que no. En cambio, terminas usando cosas como GUID para esas ID. En el caso de MongoDB, ya se proporciona el ObjectId.

Me preguntaba acerca de cualquier estrategia mejor para que se pueda utilizar como mongo objectId más URL amigable y fácil de recordar clave

lo tanto, el problema aquí es que "fácil de recordar" ID no lo hace realmente se combina con una "base de datos altamente escalable". Cuando tiene mil millones de documentos, los ID no son realmente "fáciles de recordar".

Así que tienes que hacer la compensación aquí. Si tiene una mesa que puede ser muy grande, le sugiero usar el ObjectId. Si tiene una tabla que es relativamente pequeña y no se actualiza con frecuencia (como una tabla de "búsqueda"), puede crear su propio autoincremento.

La elección depende de usted.

0

Puede sobrescribir _ID mismo. No hay obligación de usar el identificador de objeto generado automáticamente. ¿Cuál es el problema al reemplazar _id dentro de su aplicación según sus propias necesidades?

+0

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

+0

Las bases de datos tradicionales a menudo usan monótonamente los números de secuencia creciente para las claves principales. En MongoDB, el enfoque preferido es usar identificaciones de objeto en su lugar. Los identificadores de objeto son más sinérgicos con la fragmentación y la distribución. – bsr

+0

Creo que le quita algunas ventajas, y también puede indexar y ordenar – bsr

Cuestiones relacionadas