2012-01-25 11 views
6

Suponiendo que tengo un usuario que tiene un ID y quiero almacenar un registro histórico (documento) sobre este usuario todos los días, lo que es mejor:Almacenamiento histórico de datos de MongoDB: ¿práctica recomendada?

  • crear un nuevo documento para cada registro y buscar el usuario carné de identidad; o
  • ¿Seguir actualizando e integrando esos datos en un único documento de usuario que sigue creciendo con el tiempo?

Principalmente quiero recuperar solo el documento actual para el usuario, pero todos los registros deben estar accesibles en cualquier momento sin una búsqueda/consulta super larga.

+0

GivEn que la mayoría de las veces solo desea el documento actual, debería estar más interesado en recuperar * que * "sin una búsqueda/consulta super larga" – APC

+0

sí, eso es lo que estaba pensando, pero solo quería asegurarme que este es, de hecho, el enfoque correcto (también gracias por la edición) –

Respuesta

3

Hay muchas variables que pueden afectar tal decisión. Un documento grande parece ser el más obvio, siempre que no crezca hasta tamaños poco prácticos o incluso no permitidos (tenga en cuenta que un documento puede tener un tamaño máximo de 16 MB).

El uso del documento por entrada también es perfectamente viable y, siempre que crea los índices adecuados, no debe dar lugar a consultas lentas.

4

Existe un límite de tamaño del documento. Es (a partir de v1.8) 16 MB. De modo que simplemente puede quedarse sin espacio si actualiza & embed. Además, mongo asigna el espacio del documento según el tamaño promedio del documento en una colección. Si sigue ajustando/redimensionando esto puede tener implicaciones negativas en el rendimiento.

Creo que es mucho más seguro crear nuevos documentos para cada registro y si/cuando desea cotejar esos datos, lo hace en un trabajo de mapa/reducir.

+3

El límite de tamaño es de 16 MB a partir del 1.8;) –

+0

Actualizado. Gracias. – z5h

+0

gracias por su respuesta. Como ambas respuestas son de igual calidad (en mi humilde opinión) marcaré a Remons como correcto solo porque a partir de ahora tienes un voto adicional más y también tiene menos puntos, espero que no te importe. Su respuesta es muy apreciada. –

Cuestiones relacionadas