Ho una domanda di base su dove dovrei incorporare una raccolta di follower/following in un db mongo. Ha senso avere una raccolta incorporata di seguito in un oggetto utente, ma ha anche senso incorporare anche la raccolta di follower converse? Ciò significherebbe che avrei dovuto aggiornare e incorporare nel record profilo sia del:mongo db design di seguito e feed, dove dovrei incorporare?
- seguente elenco incorporato nel seguace
- E i seguaci lista incorporata del followee
posso' Garantire l'atomicità su questo, a meno che non mantenga in qualche modo lo stato di una transazione o di aggiornamento da qualche parte. Vale la pena di incorporarlo in entrambe le entità oppure devo semplicemente aggiornare il n. 1, incorporare il profilo del follower e inserirvi un indice in modo da poter interrogare i converser-followers su tutti i profili? La performance colpisce troppo?
È un candidato per una raccolta che non dovrebbe essere incorporata? Dovrei avere solo una collezione di spigoli dove conservo seguendo nella sua collezione con followerid e followingbyId?
Ora, se devo aggiornare un feed a entrambi gli utenti quando vengono seguiti o seguono, come dovrei organizzarlo?
Per quanto riguarda il caso d'uso, l'utente vedrà le persone che sta seguendo durante la visualizzazione dei feed, cosa che accade abbastanza spesso, e vedrà anche i follower di un profilo quando visualizzano i dettagli del profilo di chiunque, cosa che capita spesso ma non abbastanza quanto il 1 ° caso. In entrambi i casi, il numero totale di follower e follower appare su ogni pagina del profilo.
Pur essendo di natura molto relazionale, sono totalmente d'accordo con la tua interpretazione.Questo è uno di quei posti in cui le relazioni hanno perfettamente senso, e in questo modo non si finisce con le penalizzazioni delle prestazioni. –
questo vale anche per "Mi piace"? L'esempio di voto sul sito web mongo incorpora i "mi piace" nel documento ma sembra che la stessa linea di ragionamento possa essere fatta per i Mi piace così come per il seguito. – MonkeyBonkey
@MonkeyBonkey: questo approccio potrebbe essere utilizzato anche per i "Mi piace", ma molto probabilmente vorresti solo 1 degli indici. Il vantaggio di incorporarlo per uno scenario "Mi piace" è che è possibile mantenere un conteggio accurato dei "likers" utilizzando l'operatore $ inc. Inoltre, questo dipende ovviamente dal sito, ma è improbabile che il numero di persone che amano un singolo post raggiungano lo stesso livello di # di follower per un utente con traffico elevato, quindi la performance peggiore è probabilmente meno critica. – mpobrien