vorrei qualche consiglio su come organizzare al meglio i miei modelli Django/tabelle del database per contenere i dati della mia webappDjango database di pianificazione - dati di serie temporali
Im progettazione di un sito che conterrà un insieme di dati agli utenti di telemetria da un gioco di simulazione di corse. Quindi ci sarà un'app desktop companion che campionerà i dati del gioco ogni 0,1 secondi per una varietà di informazioni (auto, traccia, velocità, gas, freno, frizione, giri, ecc.). Ad esempio, in una gara di 2 minuti, ciascuna di queste variabili contiene 1200 punti dati (10 campioni al secondo * 120 secondi).
L'importante è che questa lista di dati possa contenere fino a 20 variabili e potrebbe potenzialmente crescere in futuro. Quindi 1200 * il numero di variabili che hai è la quantità di dati per una singola sessione di gara. Se un singolo utente invia 100 sessioni e ci sono 100 utenti ... la quantità di dati si somma molto rapidamente.
L'app spedirà quindi tutti questi dati per una sessione di gara sul database per il sito web. I dati DEVONO essere trasferiti tra gioco e sito web tramite un file CSV. Quindi strutturalmente sono limitato a ciò che CSV può fare. Il sito Web ti consentirà quindi di scegliere una sessione di gara/giro e di tracciare queste informazioni su grafici di serie temporali separati (per ciascuna variabile), e ti permetterà di tracciare la tua sessione contro qualcun altro per vedere dove si trovano le differenze
La mia domanda ecco come si struttura questo database per contenere così tante informazioni?
La struttura più semplice che ho in mente è quella di avere un tavolo separato per ogni pista, quindi ogni riga/entrata sarà una sessione di gara su quella traccia. I campi in questa tabella saranno le variabili sopra.
Il problema che ho è:
1) la maggior parte delle variabili nella lista sopra sono dati di serie temporali e non valori singoli (ad esempio, velocità var potrebbe essere simile: 70, 72, 74, 77, 72, 71, 65 dove i valori sono campioni distanziati di 0,1 secondi l'uno dall'altro durante l'intero giro). Come memorizzi questo tipo di informazioni in una tabella/campo?
2) La lunghezza di ogni var nella lista sopra sarà sempre la stessa lunghezza per ogni singola sessione di gara (se il tuo giro è durato 1min 35 allora tutti i tuoi vars cattureranno i dati solo per quel lasso di tempo), ma dato che voglio essere in grado di confrontare diversi giri l'uno con l'altro, i tempi di sessione saranno diversi per ogni giro. In altre parole, per quanto posso conservare i dati di serie temporali per quelle variabili, deve essere di dimensioni variabili
Ogni pensiero sarebbe apprezzato
Qual è la tua definizione di un tavolo enorme? Quanti dischi? Un database come PostgreSQL è realizzato per miliardi di record per tabella. Le prestazioni provengono da query intelligenti e indici utili. Le dimensioni di una tabella non contano molto, non ti preoccupare se non hai la prova che la dimensione della tabella è il tuo problema. –
beh, immagino che la dimensione non sia tanto un problema qui quanto la struttura del database per i dati delle serie temporali. Ad esempio, creo una tabella separata per ogni sessione di gara, ogni riga è una voce temporale che sale dall'inizio della corsa alla fine? In questo modo si finirebbe con centinaia di migliaia di tabelle (una per ogni razza caricata). – Simon
Oppure hai un numero finito di tavoli (uno per ogni traccia), ogni fila è una sessione di gara su quella traccia. Quindi i campi sono le variabili (velocità, gas, freno, ecc.) E trovare un modo per memorizzare i dati delle serie temporali all'interno di ciascuno di questi campi? – Simon