dati
Le uniche informazioni che devi sapere sono il timestamp per ogni carico / scarico e il tasso di riempimento per ciascuno (per un evento di scarico, il tasso di riempimento sarà negativo per compensare l'evento di caricamento).
Ordina tutti i tuoi dati con questo timestamp con il suo tasso di riempimento. La somma corrente è il totale parziale corrente dopo aver aggiunto tutte queste tariffe di riempimento.
Trucchi! - Somma corrente
Certo, per grandi serie di dati come il tuo, questo potrebbe richiedere del tempo per calcolare, ma non temere! Ci sono trucchi!
Una volta che hai la somma corrente, salva il timestamp corrente ! Questo è importante. La prossima volta che è necessario determinare la somma corrente, utilizzare la somma corrente corrente e applicare tutti gli eventi di carico / scarico che si sono verificati dopo quel timestamp. In questo modo sarai sicuro di includere tutti gli eventi.
Se vogliamo essere precisi, devi creare il timestamp prima di interrogare i dati, e poi prendi solo i dati meno recenti di quel timestamp (così non rischierai che vengano aggiunti nuovi eventi dopo aver interrogato il dati che non vengono presi in considerazione).
Trucchi! - Riorganizzazione
Se i query richiedono molto tempo, è necessario riorganizzare i dati in modo che gli eventi che non sono ancora stati considerati nella somma parziale siano facilmente accessibili. Se stai usando un database, questo potrebbe significare metterlo nella propria tabella o partizionare la tabella esistente per data.
Se hai difficoltà a convertire i dati per caricare / scaricare la data / ora dell'evento e il tasso di riempimento, non aver paura di riorganizzare i dati come meglio credi. Puoi farlo usando le viste se stai usando un database, oppure puoi semplicemente reindicizzare i tuoi dati in memoria prima di ordinare i dati.
Conclusione
Fammi sapere se questo ti aiuta! In caso contrario, chiedi nei commenti e proverò a rispondere a qualsiasi domanda tu possa avere aggiornando la mia risposta.