2011-12-20 22 views
5

Estoy en el proceso de evaluar MongoDB para un proyecto personal. Estoy armando un sitio que permitirá a los usuarios registrar y almacenar información en mi servidor.Aplicación web MongoDB +: base de datos por usuario

Al evaluar MongoDB vi que puede crear una base de datos sobre la marcha, la primera vez que se inserta un registro. Eso me hizo pensar que podía separar los datos para cada usuario en su propia base de datos. El nombre de la base de datos se derivará de la identificación única del usuario. Después de que un usuario se registra, la primera vez que almacena información se creará su base de datos.

¿Alguien sabe si este es un diseño factible con MongoDB? ¿Sería mejor simplemente almacenar todos los datos del usuario en una única base de datos?

+0

¿Por qué no utilizar el siguiente nivel inferior, las colecciones? Las bases de datos individuales por usuario me parecen un poco exageradas. ¿Y por qué -en general- desglosar los datos de los usuarios en diferentes tiendas? En la mayoría de los casos, separa los datos por tipo y no por propiedad, ¿no es así? – asaaki

+0

MongoDB 2.2.0 introduce el bloqueo a nivel de base de datos. Si está almacenando diferentes tipos de documentos por usuario (que tendrían sus propias colecciones), la base de datos por usuario aún podría ser factible. Si está utilizando muchas bases de datos, no olvide esto: http://www.mongodb.org/display/DOCS/Too+Many+Open+Files#TooManyOpenFiles-Estimatingulimitsetting –

Respuesta

4

Sí, una sola colección es mejor, de esa manera puede usar la indexación para su ventaja.

Iterar una lista de bases de datos o colecciones siempre llevará O (N) tiempo, mientras que podría alcanzar el tiempo O (log N) para buscar documentos individuales usando índices.

Cuestiones relacionadas