InfluxDB un database per serie temporali
InfluxDB è un database open source per serie temporali (TSDB Time Series Database in gergo) sviluppato dalla InfluxData e scritto interamente in linguaggio Go.
Una delle sue peculiarità è la totale assenza di dipendenze esterne quindi si tratta di un singolo file eseguibile. Sono disponibili delle versioni compilate per tutte le piattaforme e dalla versione 0.11 anche per armhf, quindi può essere installato su schede embedded come Raspberry Pi, Udoo, ecc.
Si presta bene a gestire grossi volumi di dati e quindi trova vasta applicazione nell'ambito del monitoraggio di server e sensori ma anche dell'analisi in real time.
La presenza di un linguaggio molto simile ad SQL rende semplicissima la scrittura di query anche molto complesse.
Va subito precisato che InfluxDB rientra nella categoria dei database NoSQL quindi dobbiamo farci un'idea ben precisa della sua struttura prima di sfruttarne tutte le potenzialità.
Sostanzialmente è costituito da una serie di punti (points) che in un certo senso sono assimilabili alle righe di un database relazionale. In particolare le serie temporali sono costituite da coppie "chiave-valore".
La misura (measurement) corrisponde al concetto di tabella nel modello relazionale mentre la chiave primaria è costituita dal relativo timestamp che può essere generato automaticamente dal db stesso.
In InfluxDB è possibile aggiungere tag e field che sono assimilabili alle colonne dei database relazionali e sono molto utili nella costruzione delle query e di conseguenza nel filtraggio dei dati. Si differenziano per il fatto di essere campi indicizzati o meno.
L'installazione è semplicissima perchè a partire dalla pagina https://portal.influxdata.com/downloads si accede a tutti i binari compilati per le varie piattaforme oltre ad un'immagine Docker già pronta all'uso. Per ciascuno sono indicati i comandi da eseguire.
Procediamo con la creazione del database e degli utenti con relativi privilegi utilizzando la CLI richiamabile con
influx $ influx Connected to http://localhost:8086 version 0.13 InfluxDB shell version: 0.13 > CREATE DATABASE freedomotic > CREATE USER admin WITH PASSWORD 'PasswordSegretaAmministratore' WITH ALL PRIVILEGES > CREATE USER freedomotic WITH PASSWORD 'PasswordUtenteFreedomotic' > CREATE USER grafana WITH PASSWORD 'PasswordLetturaDatiGrafana' > GRANT ALL ON freedomotic TO freedomotic > GRANT READ ON freedomotic TO grafana > exit
Nel precedente esempio abbiamo creato due utenti con diversi privilegi in modo da gestire in modo controllato gli accessi al database.
Per abilitare l'autenticazione occorre modificare la sezione [http] del file di configurazione /etc/influxdb/influxdb.conf
[http]
enabled = true
bind-address = ":8086"
auth-enabled = true // questa è la riga da modificare
...
Infine riavviamo il servizio per rendere effettive le modifiche. D'ora in poi la CLI richiederà l'autenticazione
influx -username admin -password PasswordSegretaAmministratore