In uno dei nostri recenti progetti ci siamo trovati a dover implementare una soluzione di realtime analytics. Il progetto, a fronte di un dataset multitenance di notevoli dimensioni, richiedeva di dare all’utente finale la possibilità di crearsi in modo autonomo delle dashboard tramite un’interfaccia web.

Ognuno dei grafici della dashboard doveva venire preventivamente costruito tramite un sistema di drag&drop delle variabili degli assi. Le dashboard così prodotte venivano poi condivise con le persone di interesse le quali potevano visualizzarle in una pagina web.

La parte più critica dell’intero progetto è stata quella di creare un’infrastruttura di backend a supporto delle operazioni di costruzione dei singoli grafici, delle dashboard e delle loro visualizzazioni. La criticità era dovuta al fatto che la mole di dati su cui ogni utente poteva operare era notevole e le prestazioni richieste dovevano essere quelle di un’interfaccia web: la struttura multitenance doveva dar modo agli utenti delle company di analizzare milioni di righe di database se non, in alcuni casi, alcuni miliardi.

Dashboard

Dashboard

Dopo uno scouting tecnologico alla ricerca del database più adatto a supportare le operazioni richieste dall’interfaccia web, la scelta è ricaduta su Micro Focus Vertica (https://www.vertica.com). Vertica è un database colonnare analitico di tipo MPP (Massively Parallel Processing). Questo database è stato scelto soprattutto per la sua capacità di scalare le performance su volumi di dati dell’ordine degli exabyte, per l’interfaccia di accesso ai dati che è di tipo SQL e per le funzioni analitiche built-in che permettono tempi d’esecuzione delle query di qualche centinaio di millisecondi su centinaia di milioni di records.

L’architettura dell’applicativo è stata costruita a layer in quanto prima di rendere disponibili i dati per un’analisi in tempo reale, si dovevano applicare delle operazioni di trasformazione su quest’ultimi. I dati dovevano essere caricati da sorgenti eterogenee dando la possibilità all’utente di configurare l’ingestion (mappatura dei valori, frequenza di importazione, ecc.).

Schema architetturale

Microfocus Vertica

Vertica è risultato essere il compromesso ideale per le performance richieste in quanto era importante offrire tempi di risposta bassi, anche a fronte di query complesse, per non danneggiare la user experience dell’utente finale. Questo non poteva essere ottenuto con tecnologie di aggregazione dei dati lato client in quanto i dati su cui le query dovevano essere eseguite avevano dimensioni troppo grandi. Tramite interfaccia web l’utente poteva costruire un semplice grafico che eseguiva il conteggio, la somma, la media, il massimo o il minimo di un attributo, ma anche grafici più complessi quali l’heatmap, il treemap, il sankey, il bubble chart che richiedevano query molto più complesse per essere rappresentati.
Durante la visualizzazione di una dashboard la complessità delle query costruite per il singolo grafico veniva poi moltiplicata per gli N grafici che costituivano una dashboard. Vertica si è sempre dimostrato capace di renderizzare una dashboard formata da 6-8 grafici, ognuno dei quali eseguiva una query su circa 300 milioni di records, in qualche secondo.

In questa esperienza di progetto abbiamo potuto constatare il valore di Vertica nelle applicazioni  di realtime analytics. In particolare abbiamo apprezzato:

  • la capacità di eseguire query di aggregazione complesse in realtime (ordine di qualche centinaio di millisecondi);
  • la capacità di scalare e gestire grandi quantità di dati che per noi era importante in quanto ogni tenant contenente i dati di una company conteneva centinaia di gigabyte di dati;
  • il linguaggio d’interazione che è SQL;
  • la possibilità di eseguirlo su hardware non proprietario e quindi ridurre i costi di gestione (noi abbiamo creato un ambiente di test su 3 nodi c4.4xlarge sul cloud di Amazon Web Services).

Come abbiamo visto Micro Focus Vertica si adatta bene a contesti di realtime analytics in cui i volumi di dati in gioco sono dell’ordine di terabyte, petabyte. I principali ambiti in cui Vertica viene utilizzato sono l’IoT, l’analisi del comportamento dei clienti, l’analisi di serie temporali oppure la modernizzazione del proprio data warehouse attraverso l’aggiunta di funzioni analitiche in tempo reale. Ci sono comunque molti altri ambiti in cui Vertica può essere applicato perchè le integrazioni con i principali sistemi Big Data (Hadoop, Kafka, Spark) e cloud (AWS, GCP, Azure) sono molteplici.

Nei prossimi post approfondiremo le caratteristiche di Micro Focus Vertica sia a livello tecnico sia a livello di use cases. Vedremo come si affianca ad un data warehouse per supportare i processi decisionali e permettere cambiamenti repentini.

Leave a Comment