----- Il 19-mar-21, alle 7:24, Emanuele Olivetti <emanuele.olivetti@xxxxxxxxx>
ha scritto:
Salve a Tutti,
con Python sto cercando di trovare una soluzione semplice e sperabilmente
"minimalista" al problema di salvare su disco i dati provenienti rapidamente
da
più insieme di sensori anche per periodi di tempo molto lunghi.
Mi spiego meglio: ho alcuni gruppi di 4 sensori (gruppo X: S1, S2, S3, S4)
ciascuno che periodicamente (anche parecchio volte al secondo) mi mandano la
loro lettura tramite un unico websocket. Un messaggio ricevuto di esempio
potrebbe essere: messaggio=('gruppo':1, 'timestamp':123456789, 's1':15,
's2':22, 's3':12, 's4':16)
Io per ora inserisco il messaggio in una coda (queue.Queue()) per essere certo
di non perdermi messaggi e ora sto cercando un contenitore possibilmente più
snello di un database SQL per mettere questi messaggi da parte. In futuro avrò
bisogno di recuperare questi dati con query tipo "dammi tutte le letture del
gruppo X che hanno un timestamp compreso tra <timestamp 1> e <timestamp 2>".
Il flusso di dati è piuttosto rapido, tipo un milione di messaggi al giorno.
Il
timestamp è un intero che esprime il tempo in millisecondi. Purtroppo, ci
possono essere più letture con lo stesso esatto timestamp (per vari motivi
tecnici). In linea teorica, il flusso dei dati non si ferma mai e quindi devo
essere in grado di fare query anche mentre i dati vengono ricevuti e stoccati.
Sto iniziando a guardare Redis, che trovo estremamente performante. Ma sono
agli
inizi e non trovo una struttura dati di Redis che sia perfetta per il mio
caso.
Consigli? Se ci fossero tool/librerie per Python anche più minimaliste di
Redis,
sarei contento. Per ora mi accontenterei di avere una soluzione :D
Grazie e a presto,
Emanuele