Come visualizzare i contenuti visibili e non visualizzati per ciascun utente

0

Sto cercando di trovare una tecnica efficiente per distinguere tra contenuto visto e non visto per utente. Ho una tabella di file specifici, ma devo tenere traccia degli utenti che hanno effettuato l'accesso e quindi visualizzare una notifica se sono stati aggiunti nuovi file o contenuti.

Ho preso in considerazione la creazione di una tabella che mantiene solo un ID di membro e file e se il record esiste / è stato visto e si unisce a quella tabella nella tabella dei file, ma vedo che la tabella cresce esponenzialmente più rapidamente ad ogni cambio di file. Un file decodificato JSON sarebbe un approccio migliore per tutti gli utenti che effettuano l'accesso? O qualche altro consiglio?

Modifica: Fare un DB per tenere traccia dei timestamp di quando l'utente ha visto il file, quindi se il file viene aggiornato, saprò che l'utente non ha visto il file aggiornato.

    
posta Ice76 24.11.2017 - 01:36
fonte

1 risposta

1

Se hai M membri che memorizzano F file, dovrai archiviare M × F righe nel caso generale.

L'aggiunta di un altro membro ti costa F di righe aggiuntive e l'aggiunta di un file costa M di righe aggiuntive. Questo è molto meno di una crescita esponenziale.

La funzione "visto" è monotona con il tempo - una volta visto, un file non diventa mai invisibile. Quindi nel limite, la maggior parte di quelle righe memorizzerà il valore booleano True per indicare "visto". Ciò ti consente di comprimere / riepilogare comodamente con un timestamp, memorizzando che un determinato membro ha visto tutti i file più vecchi di un certo timestamp.

Puoi scegliere di rilassare i vincoli del problema consentendo solo di leggere i file non visibili in ordine cronologico inverso, quindi piuttosto di memorizzare F bit per un membro che memorizzi solo un singolo timestamp.

Puoi scegliere di rilassare il problema tenendo traccia dettagliata di una finestra fissa di K = 100 messaggi vicino al confine visto / non visto. Un utente che sceglie di scorrere all'esterno della finestra K -file avanzerà automaticamente la finestra in modo che i file più vecchi ottengano il contrassegno di riepilogo di "visto" facendo avanzare tale timestamp. Quindi la memoria viene ridotta da M × F a M × K , indipendentemente dal numero di milioni di file antichi presenti nel sistema. La finestra dovrebbe avere un timestamp di riepilogo sul lato precedente e un altro sul lato nuovo, che rappresenta per es. il gran numero di nuovi file che Alice non ha visto quando non ha usato il tuo sistema per alcuni mesi.

    
risposta data 24.11.2017 - 17:15
fonte

Leggi altre domande sui tag