¿Cómo diseñaría el esquema para un sitio tipo blog con bases de datos basadas en documentos (mongodb). El sitio tiene los siguientes objetos: Usuario, Artículo, Comentario. El usuario puede agregar comentarios al artículo. Cada usuario también puede votar exactamente una vez por comentario.mongodb diseño de esquema para blogs
Quiero ser capaz de hacer estas preguntas de manera eficiente:
1. Un artículo get, comentarios sobre el artículo A y # de votos por los comentarios
2. obtener todos los comentarios de usuario B a través de todos los artículos
3. obtener todos los comentarios El usuario B votó por
Mi primer intento es poner artículos y comentarios en colecciones separadas y los comentarios pueden contener una lista de usuarios que votaron por él. Esto hace que las consultas 1 y 2 sean simples. Y para 3, agregué la colección de Votos, que mantiene un seguimiento de los votos de los usuarios.
Hay una desventaja obvia, como duplicar los datos de voto de los usuarios y la consulta 1 tomará dos llamadas a la base de datos. ¿Hay un mejor enfoque?
Article {
"user_id"
}
Comment {
"user_id",
"article_id",
[user_voted],
}
Vote {
"user_id",
"comment_id",
}
¿Qué pasa con la limitación de 16MB/documento? –
Si le preocupa que una sola publicación de blog exceda los 16MB (_eso es mucho texto_), entonces deberá hacer un diseño de esquema diferente. Muchos blogs en realidad fuente esto como consultas separadas y por lo que en realidad no acceden a ambas piezas a la vez. Si estas son tus preocupaciones, eliges un esquema diferente. –
Necesito un diseño similar para un blog, necesito buscar los comentarios ordenados por fecha de todos los artículos para moderación. Ahora este resultado también debe ser paginado. ¿Debería seguir apegado a esta arquitectura o llevar la sección de comentarios a otra colección? –