sql >> Base de Datos >  >> NoSQL >> MongoDB

¿Dónde debo poner la línea de tiempo de actividades en mongodb, incrustado en el usuario o por separado?

Ambos artículos tienen razón y ambos están equivocados.

¿Incrustar o no incrustar? Esta es siempre la pregunta clave y se reduce a sus necesidades, consultas y almacenamiento e incluso a su conjunto de trabajo.

Al final del día, solo podemos darte consejos que en realidad no puedes decirte cuál es el mejor.

Sin embargo, teniendo en cuenta el tamaño de un feed de actividades, personalmente no lo incrustaría, ya que fácilmente podría superar los 16 megas (por usuario), sin embargo, por la velocidad y el poder de consulta, podría agregar, digamos, las últimas 20 actividades de un usuario y luego incrustar eso en la fila de usuarios (ya que los últimos 20 son normalmente los que más se consultan).

Pero incrustar un agregado depende, la fragmentación puede encargarse de consultar enormes colecciones escaladas horizontalmente y usar las consultas correctas significa que no obtiene ningún beneficio real de la incrustación y potencialmente podría hacer su vida más difícil al tener que mantener los índices, el almacenamiento y consultas requeridas para mantener ese subdocumento.

En cuanto a la incrustación hasta el punto de la muerte. Muchas de las consultas de MongoDB en este momento se basan principalmente en la incrustación de uno o dos niveles, por lo que podría ser difícil mantener, por ejemplo, 12 tablas anidadas, momento en el que comienza a ver preguntas aquí y en el grupo de Google sobre cómo mantener tales un documento enorme (la respuesta es del lado del cliente si realmente lo desea).

Teniendo en cuenta esto, alojaría un agregado en el usuario, lo que significa que el usuario puede ver su propia actividad o la de otros usuarios individualmente con un viaje de ida y vuelta.

Sin embargo, considerando que un maestro probablemente tendría que tener resultados de páginas de todos los usuarios, albergaría una colección de actividades separada y consultaría sobre eso para ellos. Paginar un conjunto de subdocumentos requiere algunas consultas y, en este caso, sería mejor hacerlo de esta manera.

Con suerte, eso debería ayudarlo a comenzar.