Supponiamo che tu abbia un numero elevato di utenti (M) e un numero elevato di documenti (N) e desideri che ciascun utente sia in grado di contrassegnare ciascun documento come leggere o non letto (proprio come qualsiasi sistema di posta elettronica). Qual è il modo migliore per rappresentarlo in MongoDB? O qualsiasi altro database di documenti?MongoDB/NOSQL: approccio migliore alla gestione dello stato letto/non letto sui messaggi
Ci sono diverse domande su StackOverflow questa domanda per i database relazionali, ma non ho visto alcuna con le raccomandazioni per i database di documenti:
What's the most efficient way to remember read/unread status across multiple items?
Implementing an efficient system of "unread comments" counters
In genere le risposte coinvolgono un elenco tavolo tutto ciò che un utente ha letto: (vale a dire tuple di id utente, id documento) con alcune ottimizzazioni possibili per una data limite che consente di contrassegnare tutto il testo per cancellare il database e ricominciare da capo sapendo che qualsiasi cosa prima di tale data è 'letta '.
Quindi, esperti MongoDB/NOSQL, quali approcci avete visto in pratica a questo problema e come hanno funzionato?
Grazie, quindi la tua raccomandazione è essenzialmente lo stesso tipo di tabella 'tuple/join' come caso relazionale, giusto? Qualche ragione particolare per cui memorizzi sia i messaggi che i prefs nella stessa collezione? –
La cosa con MongoDB è che solitamente il più piatto è possibile rendere il tuo oggetto migliore. Mentre può immagazzinare strutture nidificate, non è il migliore per interrogare o entrare in quelle strutture in seguito per modificarle. Quindi molte cose potrebbero sembrare simili a quelle relazionali, ma con meno astrazioni a causa del non utilizzo delle tabelle. Inoltre, non c'è davvero alcun motivo per archiviarli nella stessa collezione, a parte il fatto che non mi piace avere una collezione di miliardi. Se pianifichi di avere milioni di messaggi, potrebbe essere saggio utilizzare raccolte diverse in modo da poter impostare gli indici per adattarli meglio a ciascun oggetto. – Klinky