Big Data, perché è un valore il poliglottismo tecnologico
Il poliglottismo dei sistemi di persistenza dati è un fattore strategico sia per le data-driven company, sia per le PA che devono a migrare da sistemi legacy e spesso a silos a soluzioni che integrino tutti i dati a disposizione
8 Aprile 2016
Stefano Gatti, Innovation & Data Sources Manager, Cerved Group
L’uscita di questo Normal 0 false false false /* Style Definitions */ table.MsoNormalTable {mso-style-name:”Table Normal”; mso-tstyle-rowband-size:0; mso-tstyle-colband-size:0; mso-style-noshow:yes; mso-style-priority:99; mso-style-parent:””; mso-padding-alt:0cm 5.4pt 0cm 5.4pt; mso-para-margin:0cm; mso-para-margin-bottom:.0001pt; mso-pagination:widow-orphan; font-size:10.0pt; mso-bidi-font-size:12.0pt; font-family:”Liberation Serif”,”serif”; mso-fareast-language:ZH-CN; mso-bidi-language:HI;}recente post nel sito Normal 0 false false false /* Style Definitions */ table.MsoNormalTable {mso-style-name:”Table Normal”; mso-tstyle-rowband-size:0; mso-tstyle-colband-size:0; mso-style-noshow:yes; mso-style-priority:99; mso-style-parent:””; mso-padding-alt:0cm 5.4pt 0cm 5.4pt; mso-para-margin:0cm; mso-para-margin-bottom:.0001pt; mso-pagination:widow-orphan; font-size:10.0pt; mso-bidi-font-size:12.0pt; font-family:”Liberation Serif”,”serif”; mso-fareast-language:ZH-CN; mso-bidi-language:HI;}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 anche nelle strutture complesse come le pubbliche amministrazioni.
Il termine big data incomincia ad essere associato a progetti e a relativi prodotti a partire dalla seconda metà degli anni 2000 per differenziarli da quei progetti dati realizzabili con tecnologie mature già presenti sul mercato. Questo fenomeno si sta espandendo su più direttrici:
- quella relativa ai dati. Cioè l’aumentata disponibilità in termini sia di volumi che di frequenza di aggiornamento dei dati su cui possono fare leva progetti e analisi. Fenomeni come Normal 0 false false false /* Style Definitions */ table.MsoNormalTable {mso-style-name:”Table Normal”; mso-tstyle-rowband-size:0; mso-tstyle-colband-size:0; mso-style-noshow:yes; mso-style-priority:99; mso-style-parent:””; mso-padding-alt:0cm 5.4pt 0cm 5.4pt; mso-para-margin:0cm; mso-para-margin-bottom:.0001pt; mso-pagination:widow-orphan; font-size:10.0pt; mso-bidi-font-size:12.0pt; font-family:”Liberation Serif”,”serif”; mso-fareast-language:ZH-CN; mso-bidi-language:HI;}Open Data, il web stesso e Internet of Things hanno e stanno accelerando questa direttrice;
- quella umano-organizzativa. Cioè l’evoluzione delle tradizionali figure di data-analyst verso le più poliedriche figure dei Normal 0 false false false /* Style Definitions */ table.MsoNormalTable {mso-style-name:”Table Normal”; mso-tstyle-rowband-size:0; mso-tstyle-colband-size:0; mso-style-noshow:yes; mso-style-priority:99; mso-style-parent:””; mso-padding-alt:0cm 5.4pt 0cm 5.4pt; mso-para-margin:0cm; mso-para-margin-bottom:.0001pt; mso-pagination:widow-orphan; font-size:10.0pt; mso-bidi-font-size:12.0pt; font-family:”Liberation Serif”,”serif”; mso-fareast-language:ZH-CN; mso-bidi-language:HI;}datascientist secondo la migliore definizione data nel 2010 da Drew Conway in un celebre post del suo blog. Queste figure riuscendo ad unire la capacità di usare nuovi algoritmi alle nuove tecnologie di elaborazione e memorizzazione dei dati, conoscendone la semantica e il contesto riescono a chiudere il cerchio del valore di questi progetti;
- quella algoritmica. Cioè la nascita o il grande miglioramento di metodologie che riescono ad estrarre valore da grandi moli di dati e che sono tipicamente definiti Normal 0 false false false /* Style Definitions */ table.MsoNormalTable {mso-style-name:”Table Normal”; mso-tstyle-rowband-size:0; mso-tstyle-colband-size:0; mso-style-noshow:yes; mso-style-priority:99; mso-style-parent:””; mso-padding-alt:0cm 5.4pt 0cm 5.4pt; mso-para-margin:0cm; mso-para-margin-bottom:.0001pt; mso-pagination:widow-orphan; font-size:10.0pt; mso-bidi-font-size:12.0pt; font-family:”Liberation Serif”,”serif”; mso-fareast-language:ZH-CN; mso-bidi-language:HI;}machine-learning;
- quella tecnologica. Cioè nella capacità di gestire grandi volumi dati e/o veloci volumi di dati. Le nuove tecnologie di persistenza dei dati rappresentano al meglio questa direttice.
Approfondiamo proprio quest’ultima che ha impatti sempre più importanti anche sulle prime direttrici. 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 sembra essere il fattore chiave per sfruttare al meglio quello che l’evoluzione tecnologica ci ha messo a disposizione.
Evoluzione o forse più propriamente rivoluzione che è stata alla base della capacità di “scalare” su grandi moli di dati creando nuovi business da parte delle data-driven big corporation del Web quali Google, Facebook, Linkedin e Yahoo. Alla base di questo ci sono le tecnologie
Normal
0
false
false
false
/* Style Definitions */
table.MsoNormalTable
{mso-style-name:”Table Normal”;
mso-tstyle-rowband-size:0;
mso-tstyle-colband-size:0;
mso-style-noshow:yes;
mso-style-priority:99;
mso-style-parent:””;
mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
mso-para-margin:0cm;
mso-para-margin-bottom:.0001pt;
mso-pagination:widow-orphan;
font-size:10.0pt;
mso-bidi-font-size:12.0pt;
font-family:”Liberation Serif”,”serif”;
mso-fareast-language:ZH-CN;
mso-bidi-language:HI;}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 nuovo tipo di database “Not only SQL” proprio per sottolineare come esistono diversi casi d’uso, soprattutto quando i dati crescono in quantità e tipologia, per i quali il modello relazionale non rappresenta più la soluzione migliore. Come si può vedere dalla classifica più diffusa a livello mondiale dei sistemi di gestione dati,
Normal
0
false
false
false
/* Style Definitions */
table.MsoNormalTable
{mso-style-name:”Table Normal”;
mso-tstyle-rowband-size:0;
mso-tstyle-colband-size:0;
mso-style-noshow:yes;
mso-style-priority:99;
mso-style-parent:””;
mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
mso-para-margin:0cm;
mso-para-margin-bottom:.0001pt;
mso-pagination:widow-orphan;
font-size:10.0pt;
mso-bidi-font-size:12.0pt;
font-family:”Liberation Serif”,”serif”;
mso-fareast-language:ZH-CN;
mso-bidi-language:HI;}db.engine.com, i database relazionali sono ancora largamente utilizzati ma non sono più l’unica scelta a disposizione e soprattutto il trend è tutto a favore dei sistemi NoSQL.
Tipicamente si classificano i sistemi NoSQL in 5 categorie:
- Normal 0 false false false /* Style Definitions */ table.MsoNormalTable {mso-style-name:”Table Normal”; mso-tstyle-rowband-size:0; mso-tstyle-colband-size:0; mso-style-noshow:yes; mso-style-priority:99; mso-style-parent:””; mso-padding-alt:0cm 5.4pt 0cm 5.4pt; mso-para-margin:0cm; mso-para-margin-bottom:.0001pt; mso-pagination:widow-orphan; font-size:10.0pt; mso-bidi-font-size:12.0pt; font-family:”Liberation Serif”,”serif”; mso-fareast-language:ZH-CN; mso-bidi-language:HI;}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ù efficienti presenti nei graph database rispetto al classica “join” dei database relazionali.
- Normal 0 false false false /* Style Definitions */ table.MsoNormalTable {mso-style-name:”Table Normal”; mso-tstyle-rowband-size:0; mso-tstyle-colband-size:0; mso-style-noshow:yes; mso-style-priority:99; mso-style-parent:””; mso-padding-alt:0cm 5.4pt 0cm 5.4pt; mso-para-margin:0cm; mso-para-margin-bottom:.0001pt; mso-pagination:widow-orphan; font-size:10.0pt; mso-bidi-font-size:12.0pt; font-family:”Liberation Serif”,”serif”; mso-fareast-language:ZH-CN; mso-bidi-language:HI;}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.
- Normal 0 false false false /* Style Definitions */ table.MsoNormalTable {mso-style-name:”Table Normal”; mso-tstyle-rowband-size:0; mso-tstyle-colband-size:0; mso-style-noshow:yes; mso-style-priority:99; mso-style-parent:””; mso-padding-alt:0cm 5.4pt 0cm 5.4pt; mso-para-margin:0cm; mso-para-margin-bottom:.0001pt; mso-pagination:widow-orphan; font-size:10.0pt; mso-bidi-font-size:12.0pt; font-family:”Liberation Serif”,”serif”; mso-fareast-language:ZH-CN; mso-bidi-language:HI;}Key-value databas: 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 .
- Normal 0 false false false /* Style Definitions */ table.MsoNormalTable {mso-style-name:”Table Normal”; mso-tstyle-rowband-size:0; mso-tstyle-colband-size:0; mso-style-noshow:yes; mso-style-priority:99; mso-style-parent:””; mso-padding-alt:0cm 5.4pt 0cm 5.4pt; mso-para-margin:0cm; mso-para-margin-bottom:.0001pt; mso-pagination:widow-orphan; font-size:10.0pt; mso-bidi-font-size:12.0pt; font-family:”Liberation Serif”,”serif”; mso-fareast-language:ZH-CN; mso-bidi-language:HI;}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).
- Normal 0 false false false /* Style Definitions */ table.MsoNormalTable {mso-style-name:”Table Normal”; mso-tstyle-rowband-size:0; mso-tstyle-colband-size:0; mso-style-noshow:yes; mso-style-priority:99; mso-style-parent:””; mso-padding-alt:0cm 5.4pt 0cm 5.4pt; mso-para-margin:0cm; mso-para-margin-bottom:.0001pt; mso-pagination:widow-orphan; font-size:10.0pt; mso-bidi-font-size:12.0pt; font-family:”Liberation Serif”,”serif”; mso-fareast-language:ZH-CN; mso-bidi-language:HI;}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. L’alta competizione di queste nuove tipologie di database e la possibilità di sfruttare soluzioni in cloud abbassa tra l’altro la soglia di ingresso degli investimenti anche per i budget non enormi della Pubblica Amministrazione. Inoltre consentendo spesso di attingere a soluzioni open-source queste soluzioni tecnologiche sono anche in linea con la direzione indicata dal CAD (Codice Amministrazione Digitale).
In aggiunta è 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, tratta dall’articolo che citavo all’inizio, in 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 a livello mondiale (assumendo come soglia lo score 0.50 della classifica di Normal 0 false false false /* Style Definitions */ table.MsoNormalTable {mso-style-name:”Table Normal”; mso-tstyle-rowband-size:0; mso-tstyle-colband-size:0; mso-style-noshow:yes; mso-style-priority:99; mso-style-parent:””; mso-padding-alt:0cm 5.4pt 0cm 5.4pt; mso-para-margin:0cm; mso-para-margin-bottom:.0001pt; mso-pagination:widow-orphan; font-size:10.0pt; mso-bidi-font-size:12.0pt; font-family:”Liberation Serif”,”serif”; mso-fareast-language:ZH-CN; mso-bidi-language:HI;}db.engine.com) 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 dell’organizzazione nel suo complesso 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 e 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 sia 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 sia per le pubbliche amministrazione che devono riuscire velocemente a migrare da sistemi legacy e spesso a silos a soluzioni che integrino, facilmente per il cittadino, tutti i dati a disposizione. Inoltre per il settore pubblico si apre una straordinaria possibilità di aumentare, a costi ridotti, la trasparenza integrando facilmente basi dati disomogenee che fino a poco tempo fa erano difficilmente interrogabili in maniera integrata.
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.