Tengo una pregunta básica sobre dónde debo insertar una colección de seguidores/seguidores en un mongo db. Tiene sentido tener una colección incrustada de seguidores en un objeto de usuario, pero ¿también tiene sentido incluir también la colección de seguidores conversos? Eso significaría que tendría que actualizar e insertar en el registro de perfil tanto de la:mongo db diseño de seguimiento y feeds, ¿dónde debo incrustar?
- siguiente lista incrustado en el seguidor
- Y los seguidores lista incrustado de la followee
lo que pueda' Aseguro la atomicidad sobre eso a menos que también de alguna manera mantenga una transacción o un estado de actualización en alguna parte. ¿Vale la pena incluirlo en ambas entidades o debería simplemente actualizar el n. ° 1, insertar el siguiente en el perfil del seguidor y ponerle un índice para que pueda consultar a los conversos en todos los perfiles? ¿El rendimiento se ve afectado demasiado?
¿Es esto un candidato para una colección que no debería incrustarse? ¿Debo tener una colección de bordes donde almaceno los siguientes en su propia colección con followerid y seguido de Id?
Ahora, si también tengo que actualizar un feed para ambos usuarios cuando se siguen o siguen, ¿cómo debo organizar eso?
En cuanto al caso de uso, el usuario verá a las personas que están siguiendo cuando ven sus feeds, lo que sucede bastante a menudo, y también ve a los seguidores de un perfil cuando ven los detalles del perfil de cualquier persona, lo que también sucede a menudo pero no tanto como el primer caso. En ambos casos, el número total de seguidores y seguidores aparece en cada página de perfil.
A pesar de ser de naturaleza muy relacional, estoy totalmente de acuerdo con su interpretación.Este es uno de esos lugares donde las relaciones tienen mucho sentido, y de esta manera no se terminan con las penalizaciones de rendimiento. –
¿esto también se aplicaría a los "me gusta"? El ejemplo de votación en el sitio web de mongo incluye los "Me gusta" en el documento, pero parece que se puede hacer la misma línea de razonamiento tanto para los "me gusta" como para los "siguientes". – MonkeyBonkey
@MonkeyBonkey: este enfoque podría usarse también para "Me gusta", pero lo más probable es que solo desee 1 de los índices. La ventaja de incluirlo en un escenario de "Me gusta" es que puede mantener un recuento exacto de "personas que leen" utilizando el operador $ inc. Además, esto depende del sitio, por supuesto, pero es probable que la cantidad de personas a las que les gusta una sola publicación nunca llegue al mismo nivel que el número de seguidores para un usuario de alto tráfico, por lo que el peor de los casos probablemente sea menos crítico. – mpobrien