sabato 6 febbraio 2016

Il piccolo grande database circolare: RRDtool

Il lavoro per definire la piattaforma di ClEnSensors e progettare il sistema dei Sensori per Thermocompost mi ha portato a riscoprire uno strumento che non ha una grande visibilità nei tipici ambienti di progettazione software, ma che tuttavia si dimostra un componente davvero utile e versatile proprio nella realizzazione di Reti di Sensori, dove il trasferimento di sequenze temporali di valori è il cuore della funzionalità.
Si tratta di RRDtool, il Round Robin Database, uno strumento molto diffuso tra gli integratori di sistemi OSS (Operational Support Systems) per la sua semplicità di utilizzo, le sue prestazioni e la rapidità di produzione di risultati efficaci.

Monitoraggio termico con un sistema 1-wire

RRDtool è sostanzialmente un datalogger basato su filesystem. Permette di registrare serie numeriche all'interno di un file di dimensione fissa e di visuallizzare i dati attraverso un generatore di grafici.
Il nome "Round Robin" sta ad indicare la politica di gestione dei dati. Il database, detto appunto RRD - Round Robin Database, è un semplice file binario a dimensione fissa, per cui ogni nuovo dato sostituisce il dato più vecchio nell'estensione temporale definito per il database.
Oltre che memorizzare i dati grezzi, RRDtool genera contemporaneamente una o più serie parallele ottenute attraverso funzioni di aggregazione temporale sui dati, come ad esempio media, massimo, minimo, ultimo... Queste aggregazioni vengono chiamate archivi, o meglio RRA - Round Robin Archives.
Le aggregazioni possono contenere dati per estensioni temporali anche molto maggiori rispetto a quella dei dati grezzi. Per esempio, si può definire una serie temporale di temperature di un certo ambiente con la risoluzione del minuto per la durata di un giorno e mantenere l'aggregazione della granularità dell'ora per la durata di un anno.
In fase di aggregazione e presentazione, RRDTool gestisce automaticamente l'allineamento dei dati rispetto al passo temporale utilizzato per definire il database.


Uno dei pregi principali di RRDtool è la sua semplicità di installazione e configurazione.  Una volta installati i suoi file in una directory qualunque è già pronto per l'uso senza alcuna operazione aggiuntiva! Resta solo da decidere dove sarà creato il file di memorizzazione delle serie numeriche.
Anche le prestazioni di caricamento dati sono eccellenti, essendo ridotte al minimo le operazioni da effettuare al contorno della memorizzazione di un dato.
RRDTool gestisce automaticamente i dati mancanti: al caricamento di un nuovo dato, viene stabilito automaticamente se, in base al tempo associato all'ultimo dato precedente, è necessario inserire un certo numero di "UNKNOWN" prima del dato nuovo.
Le aggregazioni possono essere configurate in modo da stabilire quanti UNKNOWN sono tollerabili in un intervallo di aggregazione per avere un valore aggregato valido, o anch'esso UNKNOWN.

L'uso di RRDtool è tutto a riga di comando. I comandi includono la possibilità di generare istogrammi grafici che mostrano le serie temporali e le aggregazioni su di esse definite.

Utilizzo della banda nella città di Perth

RRDtool esiste da tantissimo tempo. Il suo principale utilizzo è quello dell'integrazione di sistemi OSS: sistemi di monitoraggio, gestione delle presenze e dell'utilizzo di risorse e qualsiasi altra applicazione che richieda di analizzare serie temporali numeriche.
Non esiste davvero nessun limite alla fantasia sulle possibili campi di utilizzo di questo strumento. Visitando la pagina dei grafici sul sito di RRDtool ci si accorge di quanti possibili casi d'uso esistono, dal monitoraggio di reti telefoniche, dei server, dell'utilizzo di software, del traffico stradale, dell'energia... Insomma, illimitato!

La diffuzione di applicazioni IoT di sensoristica distribuita lo rende adesso particolarmente appetibile come strumento di integrazione.
Esso può essere installato efficientemente su qualsiasi scheda Linux embedded e non ha bisogno di grosse risorse macchina, per cui anche schedine embedded minimali permettono il suo utilizzo efficace. La possibilità di generare grafici da riga di comando permette, ad esempio integrandolo con un webserver on-board, di creare in poche ore un sistema completo di monitoraggi grafico distribuito.

Nel contesto di ClEnSensor, io lo utilizzerò come database tampone nel Nodo di Controllo della rete di sensori, che permetterà di far funzionare il sistema in completa autonomia e senza perdita di dati, anche in assenza di connessione tra il Nodo di Controllo ed il Server in Cloud.

Creerò a breve un tutorial essenziale su RRDtool che permette di utilizzarlo in brevissimo tempo in modo minimale. Per il resto, il sito web http://oss.oetiker.ch/rrdtool  contiene tutte le informazioni necessarie per il suo utilizzo.

Nessun commento:

Posta un commento