Il valore del poliglottismo tecnologico nell’era dei “Big Data”

L’uscita di questo recente post  nel sito Dzone che parla di come sia percepita e gestita all’interno delle più importanti organizzazioni internazionali la tematica della persistenza dei dati mi permette di approfondire il suo valore strategico nell’ottica di sfruttare al meglio il fenomeno big data.
Partiamo dalla definizione di persistenza dei dati: la capacità di rendere utilizzabile e accessibile un dataset nel tempo e su diversi tipi di memorie e di sistemi. In particolare, in ottica big data, la capacità di rendere accessibile una base dati in diversi tipi di sistemi di memorizzazione  è il fattore chiave per sfruttare al meglio quello che l’evoluzione tecnologica ci ha messo a disposizione. Avevo già parlato in uno dei primi post di come una delle direzioni in cui si sta sviluppando il fenomeno big data sia proprio quello della tecnologie NoSQL ovvero quei database che si differenziano dai database relazionali che hanno (e continuano parzialmente a farlo) dominato la scena dagli anni ’80. Sarebbe tra l’altro più corretto sia dal punto di vista etimologico che semantico definire questo tipo di database “Not only SQL” proprio per sottolineare come esistono diversi casi d’uso, soprattutto quando le quantità di dati crescono, per i quali il modello relazionale non rappresenta la soluzione migliore. Come si può vedere dalla classifica più diffusa a livello mondiale dei sistemi di gestione dati, db.engine.com, i database relazionali sono largamente utilizzati ma non sono più l’unica scelta a disposizione e soprattutto il trend è tutto a favore dei sistemi NoSQL
Poli2
Tipicamente si  classificano i sistemi NoSQL  in 5 categorie:
1) Graph database: sistemi che memorizzano i dati in nodi e relative relazioni e che sono molto adatti a supportare algoritmi che “attraversano” in modo intensivo la rete del grafo. Un esempio tipico di questi algoritmi è  il calcolo del cammino minimo tra due o più nodi che sfrutta strutture più efficientin presenti  nei graph database rispetto al  classica “join” dei database relazionali.
2) Document database: sistemi che non memorizzano i dati in tabelle con campi uniformi per ogni record come nei database relazionali, ma in cui ogni record è memorizzato come un documento che possiede determinate caratteristiche. Tipicamene la forma in cui sono memorizzati i dati è XML o Json. Questa tipologia di sistemi è molto adatta a dati in cui non è molto importante e dinamica la parte relativa alle relazioni e dove sono molto frequenti gli accessi in lettura.
3) Key-value database: sono abbastanza simili ai document database ma il volume di dati associato a ciascuna chiave è tipicamente molto più piccola e sono ancora meno adatti a gestire le relazioni. La loro struttura è praticamente quella, per chi conosce Python, della struttura dato dizionario. Sono adatti per grandi volumi di operazioni sia di scrittura che di lettura .
4) Columnar database: hanno una tipologia di memorizzazione dei dati orientata alla colonna piuttosto che alla riga, come succede nei database relazionali. Questo li porta ad essere più efficienti nell’analizzare e aggregare i dati per colonna piuttosto che analizzare il singolo record in tutti i suoi campi. Sono molto più adatti quindi ad utilizzi di tipo OLAP (online analytical processing) più che che OLTP (online transactional processing).
5) Search engine database: sono molto orientati alla ricerca di dati anche e soprattutto attraverso un utilizzo di fitri in successione da parte degli utenti (faceting). Questa tipologia di sistemi non sono veri database primari ma sono sempre più affiancanti a database NOSQL o relazionali perchè facilitano e rendono efficiente una delle operazioni che in questi non è sempre ottimale e  cioè la ricerca in grossi moli di dati.

La numerosità di queste nuove forme di sistemi di gestione dei dati rende quanto mai importante saper scegliere la tipologia che più si adatta allo scopo della nostra applicazione. Addirittura è sempre più frequente la presenza di più sistemi di persistenza dei dati all’interno di una sola applicazione.Come si può vedere da questa figura
Poliglottismo1in una recente indagine, condotta a livello mondiale sul numero di sistemi di persistenza dati usati all’interno della stessa applicazione il numero due è appaiato con il 38%  all’uno  con il 40%. Ormai più del 50% delle applicazioni usano più di un sistema di persistenza dati! Con ormai oltre 150 sistemi di gestione dati con una importanza e diffusione rilevante (assumendo come soglia lo score 0.50 della classifica di db.engine.com) a livello mondiale saper scegliere al momento giusto non basta più perchè l’inerzia dovuta ad acquisire le conoscenze necessarie per usare questi sistemi all’interno di progetti è alta. Diventa sempre più strategico investire a livello aziendale e anche di singoli team nella conoscenza delle diverse tipologie e di alcuni istanze di queste magari anche utilizzandoli in proof of concept per essere pronti a sceglierli ma soprattutto ad averne una buona esperienza pratica.
Il poliglottismo tecnologico e in particolare il poliglottismo dei sistemi di persistenza dati è sempre più un fattore strategico di successo soprattutto per le data-driven company che vogliono sfruttare a pieno la grande e diversificata mole di dati che sempre più in tempo reale guida il business e le relative strategie. E se con i DBaas (Db as a service) la complessità sistemistica si abbassa, si alza sempre di più all’interno di questa diversificazione tecnologica a crescita esponenziale la capacità di scegliere e usare in tempi rapidi il sistema più adatto.

Annunci
Il valore del poliglottismo tecnologico nell’era dei “Big Data”

Rispondi

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...