Quando si parla di gestire grandi quantità di dati in maniera efficiente si parla sempre più insistentemente di Big Data.

Cos’è Big Data

Il concetto di Big data, che non ho affrontato praticamente mai su questo blog perché è ancora un argomento molto di nicchia, è molto semplice e lo si può tradurre in una specie di “Business Intelligence 2.0”.
Ovviamente la definizione che ho appena dato è estremamente riduttiva ma serve per capire il concetto di base. Quando si parla di Big Data si parla di quantità di dati molto grandi (a volte enormi) che spesso non vengono generate, come capitava una volta, da umani ma anche da macchine, sensori, device di ogni tipo (come anche smartphone e tablet). Uno dei problemi che sta dietro al Big Data è che, nella maggior parte dei casi, questi dati non sono strutturati: quindi non sono facilmente riconducibili a modelli di dati identificabili o a metodi classici di archiviazione (es.: le tabelle di un DB)!
I primi ad aver avuto questo tipo di problemi sono i grandi attori di internet (es.: Google e Facebook) ma l’interesse per analizzare dati di ogni tipo, forma e natura sta diventando fondamentale per la maggior parte dei business di questa terra.

Big Data quindi è uno degli argomenti più discussi nei blog d’oltreoceano e nei prossimi anni (mesi?) vedremo molte novità in questo ambito.

Di soluzioni per affrontare la problematica Big Data ne esistono di diversi tipi ma quella che va per la maggiore è sicuramente basata su Hadoop. Grazie a questo strumento (o alle sue implementazioni commerciali) è possibile implementare delle architetture scale-out che possono produrre risultati di query complesse, e su basi dati dell’ordine dei PetaByte, praticamente in tempo reale!
L’obiettivo quindi è quello di avere una BI in tempo reale su grandi quantità di dati che cambiano continuamente.

Non è facile

Quello che ho appena scritto è un sogno di molti: sapere come vengono usate le macchine che vendi in tutto il mondo in tempo reale, fare offerte al supermercato in funzione di quello che la gente sta infilando nel carrello, cambiare la circolazione del traffico cittadino in funzione dell’inquinamento istantaneo, ecc.… le opportunità sono limitate solo dalla fantasia (e magari da qualche legge sulla privacy…).

Il problema vero è che fare un cluster di questo tipo costa molto, è un lavoro complesso e, soprattutto, le applicazioni vanno scritte appositamente!
Infatti il primo grande problema all’approccio hadoop like è che di solito non si usa il linguaggio SQL (lo standard di tutti i DB relazionali) e quindi lo sforzo per integrare la base dati con gli strumenti che servono per renderla fruibile è importante. 

Alcune ex-Startup già acquisite dai grandi nomi, come Greenplum (ora EMC)Netezza (ora IBM) e Vertica (ora HP), hanno sviluppato delle soluzioni decisamente interessanti e preconfezionate (che faccio fatica comunque a chiamare appliance anche se vengono vendute come tali). Queste sono soluzioni enterprise eccellenti ma che, a volte, risultano costose, proprietarie e con un lavoro importante di integrazione. E’ proprio la difficoltà di integrazione che può far diventare il progetto troppo costoso per i più.

Come fare quindi?

Da un lato ci sono dei gateway (SQL-Hadoop) che però non brillano per efficienza e per maturità. Dall’altro ci sono soluzioni commerciali che usano SQL come linguaggio per interrogare la base dati. In questa seconda parte si va da soluzioni alla ExaData di Oracle (sicuramente più “facile” di quelle che ho menzionato sopra ma decisamente costosa) a soluzioni di ultima generazione come quella di clustrix (Un DB totalmente scale out compatibile con MySQL!).

Per quanto l’approccio SQL possa fare inorridire uno specialista bigdata e le soluzioni di questo tipo siano relativamente meno scalabili di quelle basata su architetture hadoop, è vero anche che di sistemi che devono indirizzare diversi PB di dati non ce ne sono molti in Italia! (almeno per adesso). Allo stesso tempo, la facilità di integrazione di queste soluzioni permette dei tempi rapidissimi di adozione, necessitando nel contempo di skill molto inferiori e sicuramente più comuni.

Una nota su Clustrix

Tutto quello che ho scritto sopra è una buona introduzione per parlare di un’azienda decisamente interessante che ho conosciuto a San Francisco: Clustrix.
Clustrix è una startup che produce un DB Scale-out che porta lo stesso nome dell’azienda. E’ nata nel 2006 ed è stata finanziata da importanti VC con 30M$! 
L’obiettivo che si prefigge Clustrix è proprio quello di avere gli stessi vantaggi di soluzioni molto complesse e costose come quella di Oracle ad una frazione del prezzo (e magari con performance migliori).

Clustrix è un DB SQL (compatibile con MYSQL) di tipo scale out. Il vantaggio di questa soluzione è che non c’è un unico storage condiviso per contenere i dati ma questi vengono sparpagliati su tutti i nodi del cluster in modo omogeneo. In questo modo si riescono ad ottenere performance importanti che, soprattutto, scalano in modo lineare in funzione del numero dei nodi che si aggiungono!
Clustrix ha già diversi clienti importanti (del calibro di AOL in USA) ma non è ancora distribuito in Europa (anche se, da quello che ho capito, quando c’è da vendere non si tirano indietro).

La soluzione viene distribuita in forma di appliance: ogni nodo facente parte del cluster porta con se RAM, CPU e disco e l’installazione minima è di 3 nodi. Si installa in 15 minuti e non ha limiti nelle dimensioni o nel numero dei DB gestiti (ad esempio potrebbe essere una soluzione eccellente per un cloud service provider: DBaaS).
La parte di alta affidabilità è garantita nell’architettura stessa (i dati sono sempre presenti in più di un nodo) e la riallocazione degli stessi avviene in automatico in caso di necessità.
Clustrix sta anche lavorando ad una soluzione basata su Virtual appliances anche se non so se sarà mai disponibile per gli utenti finali.
Durante l’incontro mi avevano anche parlato della prossima uscita di una versione per sviluppatori (non in cluster) per facilitare il porting delle applicazioni che però non è stata ancora resa pubblica.

Clustrix è sicuramente un’azienda da tener d’occhio e sono convinto che ne sentiremo parlare molto in futuro:  ha un bel prodotto (e sembra anche molto performante) è ovvio che non è una soluzione senza rischi (una startup, approccio innovativo, non è Oracle) ma la semplicità d’uso e i costi (sia come TCA che come TCO) sembrano decisamente dalla loro parte! Clustrix, non è propriamente il Big Data della definizione iniziale dell’articolo, ma oggi come oggi è molto più probabile trovare dati, sviluppatori e utilizzatori finali molto più avvezzi all’uso di strumenti SQL che non a quelli NoSQL/hadoop like!

Nota finale

L’argomento Big Data è sicuramente interessante e lo diventerà ancora di più mano a mano che sarà più accessibile ad aziende di dimensioni più ragionevoli. Le esigenze che fanno scaturire progetti Big Data sono fra le più disparate e vengono sempre dal management. Questo tipo di strumenti servono per prendere decisioni in modo rapido e per competere al meglio in un business sempre più complicato e in rapida evoluzione. E’ bene informarsi per tempo in modo da non dover ricorrere, con il rischio di sbagliare, quando nascerà la necessità!

Disclaimer: Sono stato invitato al meeting con Clustrix da Condor Consulting Group e loro hanno pagato per il viaggio e l’alloggio. Non sono stato ricompensato in alcun modo per il mio tempo e non sono in obbligo di scrivere articoli. In ogni caso, i contenuti di questi articoli non sono concordati, rivisti o approvati dalle aziende menzionate o da altri al di fuori del team di juku.