Al lavoro mi sto occupando di una situazione in cui disponiamo di una grande quantità di dati di serie temporali e dobbiamo visualizzarne sezioni per l'utente alla volta. I dati hanno essenzialmente un numero infinito di record e quindi non è possibile che il client carichi l'intero set di dati contemporaneamente. Tuttavia, la chiamata dell'API per richiedere sezioni di dati è lenta / costosa, quindi desidero memorizzare nella cache il client di dati già caricato e non doverlo ri-richiedere.
Un'analogia sarebbe quando guardi un video online e salta avanti e indietro. Il player scarica frammenti del video in base a ciò che l'utente sta attualmente cercando di guardare e li memorizza nel caso in cui l'utente guardi di nuovo quel segmento.
Tuttavia ci sono alcune differenze tra il mio caso d'uso e l'esempio del video:
-
Il mio set di dati è scarso. Ci possono essere regioni di diverse settimane senza punti di dati in esse. Devo differenziare tra "nessun dato" e "non caricato".
-
Il mio set di dati non ha segmenti discreti. In un video HLS o DASH il flusso viene suddiviso in segmenti (in genere lunghi 10 secondi) che forniscono intervalli discreti in cui deve avvenire il caricamento. I miei dati possono essere caricati tra due punti qualsiasi nel tempo e, poiché l'utente può ingrandire o ridurre i dati, la distanza tra questi punti potrebbe non essere uguale.
-
Il mio set di dati non è limitato. In un video, c'è un inizio e una fine chiari al video. Nel mio set di dati, puoi andare avanti e indietro teoricamente all'infinito. (Anche se in pratica la lunghezza è limitata da quali date possono essere memorizzate nel nostro back-end, è ancora molto tempo)
Sono autodidatta nella programmazione e non conosco il nome di questo concetto, ma sento che deve essercene uno. Sono in grado di implementare ciò di cui ho bisogno, ma spero di evitare di reinventare la ruota.