Quali sono i database migliori o quale fra i tanti sul mercato è meglio usare per l'IoT? Esistono diverse soluzioni al mondo e le variabili da considerare sono altrettanto variegate.
Il mondo dell'IoT va a braccetto con i dati. In un articolo in particolare ho avuto il piacere di approfondire quanto sia semplice generare terabyte di dati da un singolo motore in poche ore di volo: è sorprendente e qui trovi maggiori dettagli.
Ma non solo: è giusto capire anche quali supporti usare per salvare i dati stessi, per poi ragionare su quali database usare per il nostro progetto.
E per non farci mancare nulla, è giusto fare questa scelta anche in base alle tue conoscenze.
Ma prima di cominciare, permettimi di presentarmi: sono Lorenzo Neri: chief education officer di Elettronica Open Source, mi occupo di realizzare contenuti educativi per aiutare persone come te a comprendere meglio questo mondo!
Realm
Realm è una soluzione che fa parte dei database NoSQL, ma mantiene la struttura ACID delle transazioni al suo interno. Questo significa che, nonostante mantenga questa particolarità, se non sei avvezzo a imparare un nuovo modo di costruire database e quindi spostarti dalle realtà SQL-based, dovrai considerare l'impegno di imparare una nuova realtà.
Fra i punti di forza di Realm, c'è la sua struttura "object-oriented" per i dati: la struttura del database quindi segue quella delle classi che hai intenzione di realizzare e NON delle tabelle.
Ma non solo: Realm non ha bisogno di un ORM ed è stato pensato soprattutto per i dispositivi mobile quindi con poche risorse hardware.
Passiamo ad un'altra realtà per creare e gestire database per l'IoT.
MySQL
MySQL, devo essere sincero: non è stato pensato per l'IoT, ma si presta molto bene per lo scopo.
MySQL è la tipologia più nota, diffusa e considerata "quasi classica" come modello di database relazionale.
È la scelta da fare nel caso in cui ti senti a tuo agio con i linguaggi SQL e quindi i database a struttura relazionale. Un altro punto di forza di MySQL è una community vasta su scala mondiale: il che significa non essere mai solo se hai o avrai un problema di qualsiasi tipo, questo gli studenti di Making IoT lo sanno bene!
In aggiunta a ciò, MySQL è pressoché la base, quindi LA soluzione offerta da pressoché la totalità degli hosting provider. In sintesi: se acquisti un sito web o desideri averne uno gratis, avrai nel 99% dei casi almeno un database MySQL gratis a tua disposizione.
InfluxDB: il database per l'IoT
InfluxDB deriva in parte dalla realtà SQL ma è la soluzione più diretta per questo mondo.
Anziché mantenere una struttura relazionale, InfluxDB offre una struttura più snella, ma mantiene logica delle query e della sintassi in modo quasi identico ai database SQL.
I dati vengono trattati come time-series: hai un sensore, gli dai un nome, gli puoi dare degli attributi (es. il nome del nodo su cui è presente) e un timestamp che rappresenta il momento in cui è stato creato il dato stesso.
In questo modo, potrai creare serie temporali vere e proprie: la forma ottimale per gestire i dati nel mondo dell'IoT se ci pensi bene.
Non ho mai usato Realm nei progetti IoT che ho seguito e seguo al contrario di InfluxDB che uso spessissimo e si sposa benissimo per lo store di dati di serie temporali.
È una realtà che ho scoperto anche io da poco, mi trovo tra l’altro parecchio affezionato a MySQL ma anche InfluxDB non scherza 🙂