2012-06-13 12 views
5

Estamos desarrollando una aplicación que es de lectura pesada y podría tener millones de documentos. Necesitamos referirnos a la información del usuario en casi cada colección. La información del usuario tiene algún atributo que puede cambiar de vez en cuando.¿Deberíamos usar dbref o un documento incrustado en una aplicación de lectura pesada?

¿Deberíamos usar DBref o insertar la información del usuario en todas las colecciones?

¿Qué tan malo es el rendimiento DBref en una aplicación de lectura pesada?

Si no usamos DBref, ¿cómo podemos actualizar cada documento, si la información del usuario cambia periódicamente?

En Mongodb, ¿hay alguna alternativa para DBref y documentos incrustados para este tipo de caso de uso?

Respuesta

6

DBref no es nada como una clave foránea en los sistemas relacionales tradicionales. Es solo una convención que le dice fácilmente a un conductor (que es capaz de) autocargar esos documentos referidos. Por favor, consulte DBRef para obtener más información sobre esto.
Dependiendo del controlador utilizado, es posible que pueda cargar esas referencias automáticamente solo cuando las necesite (flojas), por lo que la sobrecarga del rendimiento debería ser realmente pequeña. Pero la sobrecarga de almacenamiento es un poco más alta que un _id referido simple de otro documento. Básicamente, diría que solo debería usar esos DBrefs si el documento vinculado puede ser de tipo variable. Si su estática está atascada con _id-references y tal vez su propia funcionalidad de cargador lento, entonces no se repita.
No se repita usted mismo (o la duplicación de datos en términos de la base de datos) también se aplica en su contexto, como MongoDB recomienda, por lo que yo también lo haría, es solo link your documents. De lo contrario, tendría un mayor uso de almacenamiento y actualizaciones de ejecución algo largas, para actualizar solo una entidad lógica (duplicada físicamente muy a menudo).

Con el cargador perezoso personalizado mencionado anteriormente, puede agregar un poco de almacenamiento en caché para que no todos los resultados reales de búsqueda en una búsqueda mongodb. Lo más probable es que tenga que ocuparse de la coherencia de sus datos entre la memoria caché y la base de datos.

+0

Gracias por su respuesta. Fue realmente útil. – atandon

Cuestiones relacionadas