Algunas reglas de oro que he encontrado útiles son esto:
Si sólo hay una copia lógica de una pieza de información, que debe estar en un solo documento (por ejemplo, si tiene comentarios en una publicación, el método más simple es insertarlos en la publicación)
Si desea desnormalizar datos en SQL land en otra tabla para evitar uniones y otras cosas, el mismo comportamiento se aplica al almacenamiento de documentos: desnormalizar de uno " principal "ubicación en copias en otros lugares. Las copias deben considerarse como copias y no como información de origen, por lo que pueden sobrescribirse con futuras acciones de desnormalización.
Si tiene que acceder a un conjunto de datos canónico, como una cuenta de usuario, desde múltiples ubicaciones, almacene referencias como ObjectId
s en mongodb, luego ejecute una segunda consulta para el documento relacionado. Usted debe tenga en cuenta en su solicitud que la segunda consulta no es una unión, y no bloqueará ambos documentos para garantizar la coherencia, por lo que puede haber incoherencias en los resultados.
Esencialmente, usted debe pensar en su base de datos como coherente a nivel de documento. Cualquier consulta de documentos relacionados puede ser inconsistente, por lo que si necesita consistencia, puede desnormalizar esos datos en un solo documento.
Si necesidad la cuenta de usuario sea exactamente consistente con sus comentarios, se tiene que copiar la información relevante junto a sus comentarios al mismo tiempo que se escriben los comentarios en el documento. Esto significa que debe pensar en la coherencia a nivel de aplicación, todo el tiempo. Si no es así, como sospecho que es el caso, solo emita otra consulta para el usuario.
Si le preocupa el rendimiento en la consulta de datos de todos los usuarios que participan en su página, recomendaría copiar algunos datos de la cuenta de usuario junto al comentario, pero solo leer de esta copia; debe escriba en sus cuentas de usuario originales.
Eso es todo lo que viene a la mente por ahora, pero puede editar como las cosas ocurren a mí :)
también similar: http://stackoverflow.com/questions/5262669/nested-comments-in-mongodb y http://stackoverflow.com/questions/5144273/mongodb-document-design-for-comments-and-their-reply-comments – Thilo