Un buon modo per gestire il contatore delle notifiche come fa Facebook

4

Voglio costruire un meccanismo di notifica simile a quello gestito da Facebook.

Conservo effettivamente la notifica dell'utente in una tabella SQL (in realtà si tratta di un database grafico ma tutti conoscono i termini RDBMS).

Sono interessato al caso in cui l'utente fa clic sull'icona: Il contatore dovrebbe ottenere un valore di 0 internamente e visivamente scomparire.

Come si dovrebbe effettuare la compensazione di questo contatore?

  • Facendo clic, chiama un'API di ripristino che contrassegna ciascuna notifica come read (colonna della tabella READ )?
    L'inconveniente sarebbe che ci sarebbe voluto del tempo se ci fosse un'enorme quantità di notifiche da contrassegnare per ottenere il contatore a 0 e farlo sparire.
  • Avere un tipo di colonna per ogni utente chiamato HAS_NEW_NOTIFICATION che è valutato come false ogni volta che si fa clic sull'icona (tramite una chiamata API REST), se il contatore era presente.
    Pertanto, il contatore sarebbe presente solo se il valore del flag è true .

Quale sarebbe una buona pratica?

    
posta Mik378 13.07.2014 - 00:30
fonte

1 risposta

5

La procedura consigliata è quella di archiviare un timbro datetime nella tabella dell'utente che indica l'ultima estrazione da parte del browser per le notifiche. Qualsiasi notifica creata dopo questo indicatore datetime verrà conteggiata come nuova e non letta.

Il database può indicizzare le notifiche con il loro timbro datetime creato in modo efficiente e aggiungere un flag se letto non dovrebbe influire sulle prestazioni. Dal momento che sei sempre alla ricerca di notifiche dopo un determinato datetime, le prestazioni dovrebbero essere accettabili.

Devi solo aggiornare la tabella dell'utente su quale sia il timbro datetime non letto più vecchio. Ciò ti consente di interrogare le notifiche per gli elementi nuovi e non letti.

Se non ci sono elementi non letti, il timestamp dell'utente viene aggiornato fino all'ultima volta in cui il browser ha effettuato un controllo.

    
risposta data 13.07.2014 - 00:39
fonte

Leggi altre domande sui tag