È buona pratica salvare i dati lato client quando vengono recuperati dal database?

1

Diciamo che ho un database con utenti, gruppi e messaggi ai gruppi.

E ho 3 visualizzazioni:

Profile view: Where all the details of the user is shown.
Groups view: Where all the groups are shown.
Group view: Where all the messages are shown.

Ora ogni volta che l'utente accede a una vista, la vista si collega al database per recuperare i dati.

  1. Sarebbe una buona pratica salvare i dati sul client quando viene recuperato, così quando l'utente cambia visualizzazione dopo la prima volta non ha più bisogno di entrare in contatto con il database. Che migliora i tempi di caricamento per l'utente e riduce anche il lavoro per il database.

    E se i dati sono davvero grandi, ad esempio i messaggi, potremmo caricare solo gli ultimi 100.

    O è meglio recuperare i dati ogni volta che l'utente cambia visualizzazione?

  2. Se è buona pratica salvare i dati sul client, quale sarebbe un buon modo per verificare se i dati sono aggiornati?

posta Soundwave 06.05.2017 - 23:27
fonte

1 risposta

0

Se dovessi salvare una copia dei dati sul lato client, portando in effetti a una cache, dipende da molti fattori, alcuni dei quali sono i seguenti:

  • Il tuo business case ti consente di mostrare qualsiasi cosa tranne i dati più recenti? Quanto è grave se i tuoi utenti visualizzano dati non validi / precedenti?
  • Di quanti dati stai parlando? Qual è la dimensione, il conteggio e il tipo di messaggi e altri dati?
  • È obbligatorio mostrare gli ultimi valori noti quando il database non è disponibile? Cosa dovrebbe accadere se il client non è in linea o se si esegue una manutenzione del database e non si accettano le connessioni dai client?
  • I tuoi dati sono difficili da recuperare? Hai bisogno di unirti a centinaia di tabelle o di calcolare molte cose per ogni richiesta?
  • Quanto è potente il tuo database? quanti clienti hai in media e al massimo carico? Quante richieste producono?
  • Quale tipo e velocità di connessione di rete hanno i client nel tuo database? Quanto ti influenza la latenza?
  • Quali sono i requisiti per le prestazioni? Quanto ci vorrà per caricare e mostrare tutti i dati?
  • Hai prove del fatto che la memorizzazione nella cache dei dati non è troppo lenta?

Se non sei sicuro di queste cose, probabilmente non ne hai bisogno in questo momento. Aggiungete complessità se aggiungete la memorizzazione nella cache ai vostri client e molta più complessità per invalidarla nei momenti appropriati. L'invalidazione della cache è difficile per avere ragione. È una forma di ottimizzazione prematura e tu potrebbe non averne bisogno , quindi è probabilmente meglio mantenerlo semplice adesso ma aderire a una buona codifica pratiche per semplificare i cambiamenti futuri.

    
risposta data 13.05.2017 - 14:29
fonte

Leggi altre domande sui tag