InfluxDB: spiegazione, vantaggi e primi passi
Nell’ambito del rilevamento di dati di misurazione scientifici 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 misurazione. Per queste serie di dati temporali sono necessarie banche dati speciali. Questo articolo è dedicato a InfluxDB, un sistema di gestione di database (DBMS) sviluppato specificamente per questo compito.
Cos’è InfluxDB?
InfluxDB è un sistema di gestione di database sviluppato dall’azienda InfluxData, Inc. InfluxDB è open source e può essere utilizzato gratuitamente. La versione commerciale “InfluxDB Enterprise” offre contratti di manutenzione e speciali controlli degli accessi per i clienti aziendali e viene installata su un server all’interno della rete aziendale. La nuova versione InfluxDB 2.0 gira inoltre come servizio cloud flessibile, con un’interfaccia utente basata sul web per la raccolta e la visualizzazione dei dati.
Il sistema di gestione di database InfluxDB è programmato nel linguaggio di programmazione Google Go, conosciuto anche come Golang. Nella prima versione, per le interrogazioni di database esterni veniva utilizzato il linguaggio di interrogazione InfluxQL, uno sviluppo proprietario del produttore.
InfluxDB 2.0 introduce il nuovo linguaggio di programmazione Flux, che l’azienda InfluxData pubblica come open source con la licenza MIT su GitHub. Qui il progetto viene costantemente sviluppato anche da altri sviluppatori che lavorano con dati di serie temporali. Flux è un linguaggio di scripting e interrogazione indipendente per database di serie temporali (Time Series Database, TSDB).
Può essere utilizzato dalla versione InfluxDB 1.7 oppure anche in modo completamente indipendente o ancora in associazione a database di altri fornitori. Flux è ottimizzato per il processo ETL (Extract, Transform, Load) nei database e non è retrocompatibile con il linguaggio di interrogazione InfluxQL, utilizzato in precedenza. Per i clienti preesistenti, tuttavia, il fornitore ha in previsione un percorso di migrazione che consenta di tradurre anche il codice InfluxQL in Flux.
La sintassi di Flux si basa sul diffuso linguaggio di scripting JavaScript ed è pertanto facile da apprendere e ampliabile con flessibilità. Una caratteristica fondamentale di Flux è costituita dalla compatibilità con diverse fonti di dati, ad esempio con l’ausilio di API di fornitori terzi. Questo fa sì che Flux possa interagire con strumenti di analisi come Jupyter.
L’interfaccia di scambio dati Apache Arrow permette la comunicazione con altri sistemi e l’integrazione in ambienti big data.
Quando si utilizza InfluxDB?
InfluxDB è concepito per i Time Series database (TSDB) in cui vengono archiviate serie temporali. Questi database vengono utilizzati, tra le altre cose, per raccogliere e analizzare dati rilevati da sensori o protocolli con marche temporali durante un determinato 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 dispositivi dell’Internet of Things o gli strumenti di misurazione scientifici.
Una volta confluiti nel database, questi dati devono essere elaborati in tempi relativamente rapidi. In InfluxDB è pertanto integrato un servizio temporale che, attraverso il Network Time Protocol (NTP), assicura la sincronizzazione del tempo su tutti i sistemi.
Un database su InfluxDB può essere estremamente compatto e deve contenere soltanto due o tre colonne. Vengono memorizzate ad esempio la fonte dei dati, il valore effettivo e la marca temporale corrispondente.
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 è costituito solo da metadati che possono essere importati nell’indice, le colonne field contengono valori che possono essere successivamente analizzati. Nel nostro esempio, la prima colonna è quindi un tag, mentre la seconda è un field. Questa distinzione semplifica la gestione dei database e l’analisi dei dati misurati.
Quali sono i vantaggi di InfluxDB?
Rispetto ai normali database relazionali, i TSDB come InfluxDB offrono evidenti vantaggi in termini di velocità per il salvataggio e l’elaborazione dei dati misurati con marca temporale. Un DBMS tradizionale risulta meno efficiente quando si tratta di organizzare indici complessi, che tuttavia in questo ambito applicativo 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 precedente 1.x, con il nuovo InfluxDB Cloud 2.0 su Amazon Web Services (AWS), sulla Google Cloud Platform (GCP) o su Microsoft Azure, InfluxData offre una soluzione basata su cloud. Grazie al cosiddetto serverless computing, il cliente non necessita di una propria infrastruttura di server.
Nella versione cloud non è necessario prenotare spazio su server, poiché il sistema si adegua automaticamente al carico di dati; aspetto, questo, particolarmente rilevante per le applicazioni IoT industriali e il Machine Learning, in cui la quantità di dati può subire repentine variazioni.
Se nella prima versione erano ancora necessari diversi componenti (il cosiddetto TICK-Stack con i prodotti Telegraf, Chronograf e Kapacitor), in InfluxDB 2.0 tutto il necessario è già integrato.
Anche nella versione locale, installabile su un proprio server, tutto il sistema di gestione di database è concentrato in un unico file di programma che ad oggi è disponibile per Linux a 64 bit, Linux per processori ARM, macOS e come contenitore Docker. Telegraf può continuare a essere utilizzato 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 è disponibile non solo il database da provare, ma anche la piattaforma per dati di serie temporali completa, ospitata e in grado di supportare più utenti. InfluxDB Cloud 2.0 comprende anche moduli per raccogliere, analizzare e visualizzare i dati archiviati.
La versione gratuita offre velocità di lettura e scrittura dati limitate, fino a 10.000 record di dati e una durata di conservazione massima di 30 giorni. Queste limitazioni sono generalmente sufficienti per i progetti amatoriali, per i quali è dunque possibile utilizzare la versione gratuita. Questa versione può tuttavia essere convertita in un momento successivo 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 verificato, eseguite l’accesso e selezionate 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 utilizzate già Amazon Web Services o Google Cloud Platform (GCP), potete abbonarvi ai prodotti cloud di InfluxDB attraverso i marketplace dei fornitori dei cloud.
Dopo avere eseguito l’accesso, InfluxDB visualizza la dashboard personale sulla quale vengono raccolti e visualizzati i vostri dati. La raccolta dei dati può essere effettuata tramite i plug-in di Telegraf, l’API di InfluxDB v2, l’interfaccia a riga di comando di Influx (CLI) o direttamente sull’interfaccia utente di InfluxDB. Sono inoltre disponibili librerie client per diversi linguaggi di programmazione di uso comune.
Potete creare configurazioni Telegraf in modo interattivo oppure importare configurazioni già esistenti per inviare i dati nell’istanza di InfluxDB Cloud 2.0. Dopo avere configurato InfluxDB Cloud per la raccolta dei dati, create delle dashboard personali per interrogare e rappresentare i dati.
Nell’Esplora dati di InfluxDB potete consultare e visualizzare i dati raccolti. I tempi di refresh e le finestre temporali per la visualizzazione possono essere impostati in modo specifico per ciascun progetto. L’interfaccia utente di InfluxDB offre varie opzioni di visualizzazione dalla grafica accattivante. Tramite l’interfaccia web potete passare senza soluzione di continuità tra il Flux Builder e l’elaborazione manuale delle interrogazioni del database.
Sulla pagina “Usage” potete visualizzare in ogni momento l’utilizzo corrente del database per valutare l’opportunità di passare a un piano a pagamento.
Panoramica sulle principali nuove possibilità di InfluxDB Cloud 2.0
Piano gratuito (con limitazioni): nessun download, nessuna installazione e nessuna infrastruttura server inhouse necessari; accesso diretto alla tecnologia InfluxDB 2.0; il piano gratuito è concepito per imparare a utilizzare InfluxDB e per i piccoli progetti amatoriali.
Compatibilità di Flux: Flux è un linguaggio di scripting e interrogazione indipendente per database per serie temporali, che aumenta la produttività grazie alla facile riutilizzabilità del codice. Flux è stato sviluppato e ottimizzato per lavorare con i dati in InfluxDB 2.0, ma può essere utilizzato anche insieme ad altre fonti di dati.
API standard: l’API standard di InfluxDB v2 permette di accedere a tutti i componenti di InfluxDB come raccolta dati, interrogazione, salvataggio e visualizzazione. Questo permette un passaggio senza soluzione di continuità tra la versione open source installata e InfluxDB Cloud 2.0.
Visualizzazione e dashboard: sulla base del collaudato progetto Chronograf della prima versione di InfluxDB, la nuova interfaccia utente del cloud offre risultati molto più rapidi nella visualizzazione e nell’interrogazione in tempo reale dei dati.
Piani a pagamento basati sull’utilizzo: il costo basato sull’utilizzo offre una maggiore flessibilità rispetto a un sistema di database ospitato su un proprio server e offre la certezza di pagare solo per ciò che si utilizza realmente.