Nell’ambito del ri­le­va­men­to di dati di mi­su­ra­zio­ne scien­ti­fi­ci o tecnici mediante sensori, vengono raccolte in breve tempo grandi quantità di dati che devono essere elaborate insieme a un timestamp del punto temporale della mi­su­ra­zio­ne. Per queste serie di dati temporali sono ne­ces­sa­rie banche dati speciali. Questo articolo è dedicato a InfluxDB, un sistema di gestione di database (DBMS) svi­lup­pa­to spe­ci­fi­ca­men­te per questo compito.

Cos’è InfluxDB?

InfluxDB è un sistema di gestione di database svi­lup­pa­to dall’azienda In­flu­x­Da­ta, Inc. InfluxDB è open source e può essere uti­liz­za­to gra­tui­ta­men­te. La versione com­mer­cia­le “InfluxDB En­ter­pri­se” offre contratti di ma­nu­ten­zio­ne e speciali controlli degli accessi per i clienti aziendali e viene in­stal­la­ta su un server all’interno della rete aziendale. La nuova versione InfluxDB 2.0 gira inoltre come servizio cloud fles­si­bi­le, con un’in­ter­fac­cia utente basata sul web per la raccolta e la vi­sua­liz­za­zio­ne dei dati.

Il sistema di gestione di database InfluxDB è pro­gram­ma­to nel lin­guag­gio di pro­gram­ma­zio­ne Google Go, co­no­sciu­to anche come Golang. Nella prima versione, per le in­ter­ro­ga­zio­ni di database esterni veniva uti­liz­za­to il lin­guag­gio di in­ter­ro­ga­zio­ne InfluxQL, uno sviluppo pro­prie­ta­rio del pro­dut­to­re.

InfluxDB 2.0 introduce il nuovo lin­guag­gio di pro­gram­ma­zio­ne Flux, che l’azienda In­flu­x­Da­ta pubblica come open source con la licenza MIT su GitHub. Qui il progetto viene co­stan­te­men­te svi­lup­pa­to anche da altri svi­lup­pa­to­ri che lavorano con dati di serie temporali. Flux è un lin­guag­gio di scripting e in­ter­ro­ga­zio­ne in­di­pen­den­te per database di serie temporali (Time Series Database, TSDB).

Può essere uti­liz­za­to dalla versione InfluxDB 1.7 oppure anche in modo com­ple­ta­men­te in­di­pen­den­te o ancora in as­so­cia­zio­ne a database di altri fornitori. Flux è ot­ti­miz­za­to per il processo ETL (Extract, Transform, Load) nei database e non è re­tro­com­pa­ti­bi­le con il lin­guag­gio di in­ter­ro­ga­zio­ne InfluxQL, uti­liz­za­to in pre­ce­den­za. Per i clienti pre­e­si­sten­ti, tuttavia, il fornitore ha in pre­vi­sio­ne un percorso di mi­gra­zio­ne che consenta di tradurre anche il codice InfluxQL in Flux.

La sintassi di Flux si basa sul diffuso lin­guag­gio di scripting Ja­va­Script ed è pertanto facile da ap­pren­de­re e am­plia­bi­le con fles­si­bi­li­tà. Una ca­rat­te­ri­sti­ca fon­da­men­ta­le di Flux è co­sti­tui­ta dalla com­pa­ti­bi­li­tà con diverse fonti di dati, ad esempio con l’ausilio di API di fornitori terzi. Questo fa sì che Flux possa in­te­ra­gi­re con strumenti di analisi come Jupyter.

L’in­ter­fac­cia di scambio dati Apache Arrow permette la co­mu­ni­ca­zio­ne con altri sistemi e l’in­te­gra­zio­ne in ambienti big data.

Quando si utilizza InfluxDB?

InfluxDB è concepito per i Time Series database (TSDB) in cui vengono ar­chi­via­te serie temporali. Questi database vengono uti­liz­za­ti, tra le altre cose, per rac­co­glie­re e ana­liz­za­re dati rilevati da sensori o pro­to­col­li con marche temporali durante un de­ter­mi­na­to periodo di tempo.

In questi database possono confluire milioni di record di dati, che creano un flusso di dati costante, come ad esempio accade con i di­spo­si­ti­vi dell’Internet of Things o gli strumenti di mi­su­ra­zio­ne scien­ti­fi­ci.

Una volta confluiti nel database, questi dati devono essere elaborati in tempi re­la­ti­va­men­te rapidi. In InfluxDB è pertanto integrato un servizio temporale che, at­tra­ver­so il Network Time Protocol (NTP), assicura la sin­cro­niz­za­zio­ne del tempo su tutti i sistemi.

Un database su InfluxDB può essere estre­ma­men­te compatto e deve contenere soltanto due o tre colonne. Vengono me­mo­riz­za­te ad esempio la fonte dei dati, il valore effettivo e la marca temporale cor­ri­spon­den­te.

Sensore Valore Ora
Sensore 1 140,50 23/04/2020 @ 10:00
Sensore 2 110,02 23/04/2020 @ 10:00
Sensore 1 142,32 23/04/2020 @ 10:05
Sensore 2 110,50 23/04/2020 @ 10:05

Nelle colonne, InfluxDB distingue tra tags e fields. Mentre un tag è co­sti­tui­to solo da metadati che possono essere importati nell’indice, le colonne field con­ten­go­no valori che possono essere suc­ces­si­va­men­te ana­liz­za­ti. Nel nostro esempio, la prima colonna è quindi un tag, mentre la seconda è un field. Questa di­stin­zio­ne sem­pli­fi­ca la gestione dei database e l’analisi dei dati misurati.

Quali sono i vantaggi di InfluxDB?

Rispetto ai normali database re­la­zio­na­li, i TSDB come InfluxDB offrono evidenti vantaggi in termini di velocità per il sal­va­tag­gio e l’ela­bo­ra­zio­ne dei dati misurati con marca temporale. Un DBMS tra­di­zio­na­le risulta meno ef­fi­cien­te quando si tratta di or­ga­niz­za­re indici complessi, che tuttavia in questo ambito ap­pli­ca­ti­vo non sono necessari. InfluxDB può mantenere velocità di scrittura elevate anche per un lungo periodo di tempo, poiché utilizza un indice molto semplice.

Rispetto alla versione pre­ce­den­te 1.x, con il nuovo InfluxDB Cloud 2.0 su Amazon Web Services (AWS), sulla Google Cloud Platform (GCP) o su Microsoft Azure, In­flu­x­Da­ta offre una soluzione basata su cloud. Grazie al co­sid­det­to ser­ver­less computing, il cliente non necessita di una propria in­fra­strut­tu­ra di server.

Nella versione cloud non è ne­ces­sa­rio prenotare spazio su server, poiché il sistema si adegua au­to­ma­ti­ca­men­te al carico di dati; aspetto, questo, par­ti­co­lar­men­te rilevante per le ap­pli­ca­zio­ni IoT in­du­stria­li e il Machine Learning, in cui la quantità di dati può subire repentine va­ria­zio­ni.

Se nella prima versione erano ancora necessari diversi com­po­nen­ti (il co­sid­det­to TICK-Stack con i prodotti Telegraf, Chro­no­graf e Kapacitor), in InfluxDB 2.0 tutto il ne­ces­sa­rio è già integrato.

Anche nella versione locale, in­stal­la­bi­le su un proprio server, tutto il sistema di gestione di database è con­cen­tra­to in un unico file di programma che ad oggi è di­spo­ni­bi­le per Linux a 64 bit, Linux per pro­ces­so­ri ARM, macOS e come con­te­ni­to­re Docker. Telegraf può con­ti­nua­re a essere uti­liz­za­to come agente per la raccolta di dati per InfluxDB 2.0, come anche altri agenti.

Primi passi in InfluxDB

Per iniziare, InfluxDB offre un accesso gratuito a InfluxDB Cloud 2.0. Qui è di­spo­ni­bi­le non solo il database da provare, ma anche la piat­ta­for­ma per dati di serie temporali completa, ospitata e in grado di sup­por­ta­re più utenti. InfluxDB Cloud 2.0 comprende anche moduli per rac­co­glie­re, ana­liz­za­re e vi­sua­liz­za­re i dati ar­chi­via­ti.

La versione gratuita offre velocità di lettura e scrittura dati limitate, fino a 10.000 record di dati e una durata di con­ser­va­zio­ne massima di 30 giorni. Queste li­mi­ta­zio­ni sono ge­ne­ral­men­te suf­fi­cien­ti per i progetti ama­to­ria­li, per i quali è dunque possibile uti­liz­za­re la versione gratuita. Questa versione può tuttavia essere con­ver­ti­ta in un momento suc­ces­si­vo a un piano a pagamento basato sull’utilizzo, senza alcuna perdita di dati.

Per prima cosa, create un account utente gratuito sulla pagina di accesso di InfluxDB Cloud 2.0. Cliccate poi sul link di conferma ricevuto via e-mail.

Una volta che l’account utente è stato ve­ri­fi­ca­to, eseguite l’accesso e se­le­zio­na­te per prima cosa un fornitore cloud. In Europa, InfluxDB Cloud 2.0 funziona per ora solo tramite Amazon Web Services (AWS), aspetto che comunque non ha alcuna rilevanza in caso di utilizzo gratuito. Se uti­liz­za­te già Amazon Web Services o Google Cloud Platform (GCP), potete abbonarvi ai prodotti cloud di InfluxDB at­tra­ver­so i mar­ket­pla­ce dei fornitori dei cloud.

Dopo avere eseguito l’accesso, InfluxDB vi­sua­liz­za la dashboard personale sulla quale vengono raccolti e vi­sua­liz­za­ti i vostri dati. La raccolta dei dati può essere ef­fet­tua­ta tramite i plug-in di Telegraf, l’API di InfluxDB v2, l’in­ter­fac­cia a riga di comando di Influx (CLI) o di­ret­ta­men­te sull’in­ter­fac­cia utente di InfluxDB. Sono inoltre di­spo­ni­bi­li librerie client per diversi linguaggi di pro­gram­ma­zio­ne di uso comune.

Potete creare con­fi­gu­ra­zio­ni Telegraf in modo in­te­rat­ti­vo oppure importare con­fi­gu­ra­zio­ni già esistenti per inviare i dati nell’istanza di InfluxDB Cloud 2.0. Dopo avere con­fi­gu­ra­to InfluxDB Cloud per la raccolta dei dati, create delle dashboard personali per in­ter­ro­ga­re e rap­pre­sen­ta­re i dati.

Nell’Esplora dati di InfluxDB potete con­sul­ta­re e vi­sua­liz­za­re i dati raccolti. I tempi di refresh e le finestre temporali per la vi­sua­liz­za­zio­ne possono essere impostati in modo specifico per ciascun progetto. L’in­ter­fac­cia utente di InfluxDB offre varie opzioni di vi­sua­liz­za­zio­ne dalla grafica ac­cat­ti­van­te. Tramite l’in­ter­fac­cia web potete passare senza soluzione di con­ti­nui­tà tra il Flux Builder e l’ela­bo­ra­zio­ne manuale delle in­ter­ro­ga­zio­ni del database.

Sulla pagina “Usage” potete vi­sua­liz­za­re in ogni momento l’utilizzo corrente del database per valutare l’op­por­tu­ni­tà di passare a un piano a pagamento.

Pa­no­ra­mi­ca sulle prin­ci­pa­li nuove pos­si­bi­li­tà di InfluxDB Cloud 2.0

Piano gratuito (con li­mi­ta­zio­ni): nessun download, nessuna in­stal­la­zio­ne e nessuna in­fra­strut­tu­ra server inhouse necessari; accesso diretto alla tec­no­lo­gia InfluxDB 2.0; il piano gratuito è concepito per imparare a uti­liz­za­re InfluxDB e per i piccoli progetti ama­to­ria­li.

Com­pa­ti­bi­li­tà di Flux: Flux è un lin­guag­gio di scripting e in­ter­ro­ga­zio­ne in­di­pen­den­te per database per serie temporali, che aumenta la pro­dut­ti­vi­tà grazie alla facile riu­ti­liz­za­bi­li­tà del codice. Flux è stato svi­lup­pa­to e ot­ti­miz­za­to per lavorare con i dati in InfluxDB 2.0, ma può essere uti­liz­za­to anche insieme ad altre fonti di dati.

API standard: l’API standard di InfluxDB v2 permette di accedere a tutti i com­po­nen­ti di InfluxDB come raccolta dati, in­ter­ro­ga­zio­ne, sal­va­tag­gio e vi­sua­liz­za­zio­ne. Questo permette un passaggio senza soluzione di con­ti­nui­tà tra la versione open source in­stal­la­ta e InfluxDB Cloud 2.0.

Vi­sua­liz­za­zio­ne e dashboard: sulla base del col­lau­da­to progetto Chro­no­graf della prima versione di InfluxDB, la nuova in­ter­fac­cia utente del cloud offre risultati molto più rapidi nella vi­sua­liz­za­zio­ne e nell’in­ter­ro­ga­zio­ne in tempo reale dei dati.

Piani a pagamento basati sull’utilizzo: il costo basato sull’utilizzo offre una maggiore fles­si­bi­li­tà rispetto a un sistema di database ospitato su un proprio server e offre la certezza di pagare solo per ciò che si utilizza realmente.

Vai al menu prin­ci­pa­le