I “segreti” dei “data scientist” tra database NoSQL e linguaggi di programmazione (tipo R e Python)
Come lavora uno “scienziato dei dati”? Quali linguaggi deve conoscere ed utilizzare? Come si differenzia la sua attività rispetto a quella di un tradizionale operatore informatico che gestisce il data-base aziendale? Sono le domande poste ad Alice Porfirio, project manager della società Sogetel (Roma – www.sogetel.it) specializzata nel settore della information technology. Laureata in Ingegneria Informatica presso la università Sapienza di Roma nel 2011, con specializzazione in “Architetture e Sistemi Distribuiti”, Porfirio lavora presso Sogetel dal 2012, prima come analista, successivamente come project manager. Dal 2014 si è dedicata al mondo dei Big Data, partendo dallo studio del database NoSQL Apache Cassandra e proseguendo con la partecipazione e il coordinamento di progetti volti ad ampliare l’esperienza aziendale nel settore. Dal 2016 segue l’analisi e la progettazione di Prophecy, il nuovo prodotto per la gestione dei Big Data particolarmente rivolto alle piccole e medie imprese e basato su una struttura “open source” (intervista a Stefano Aquino, CTO di Sogetel srl) . Di seguito l’intervista concessa alla Università LUMSA.
La vostra Società ha annunciato l’imminente lancio di un prodotto per l’analisi dei Big Data basato su sistemi “open source”. Quali sono i sui principali componenti?
PORFIRIO – Prophecy, il nostro prodotto per la gestione dei Big Data, è costituito da tre componenti principali: l’applicativo web Prophecy, ovvero il “nodo di gestione”, il database NoSQL Apache Cassandra e il framework per il calcolo distribuito Apache Spark. Tramite il nodo di gestione è possibile installare, monitorare e utilizzare cluster costituiti da questi due potenti strumenti open source: le nostre installazioni usano pacchetti configurati in modo da garantire sicurezza, affidabilità ed efficienza.
Perché avete scelto Apache Cassandra e Apache Spark come strumenti di analisi?
PORFIRIO – Apache Cassandra si è affermato in questi anni come uno tra i migliori database NoSQL disponibili: lo abbiamo preferito ad altri nomi noti, come MongoDB o CouchDB, per le sue ottime performance e per la sua architettura peer-to-peer che garantisce l’assenza di single point of failure. Apache Spark è un prodotto giovane su cui abbiamo voluto scommettere: nasce per migliorare l’algoritmo di calcolo distribuito alla base del celebre Hadoop e ne diventa, di fatto, il successore. Rispetto a quest’ultimo, Spark è estremamente più veloce, sviluppare applicativi che vi si interfacciano è molto più agevole e, con un’unica installazione, offre svariate funzionalità già perfettamente integrate con il core.
Quali sono le caratteristiche di Apache Cassandra che lo differenziano dai database tradizionali?
PORFIRIO – Apache Cassandra nasce per i Big Data e questo implica che deve soddisfare due requisiti fondamentali: saper gestire una grande mole di dati e riuscire a farlo in tempi ridotti. Per arrivare a questi risultati, bisogna discostarsi dal mondo del relazionale e dalle sue regole: ad esempio, viene “ammorbidito” il vincolo sulla consistenza immediata dei dati, che verrà comunque raggiunta dopo un certo lasso di tempo, per ottenere scritture estremamente veloci. Inoltre, in Cassandra, non essendo sfruttabili altre caratteristiche tipiche dei database relazionali, la corretta modellazione del database risulta fondamentale: la velocità in scrittura ci consente di puntare sulla denormalizzazione dei dati che, quindi, verranno duplicati in varie strutture per poterli organizzare al meglio per ogni tipo di lettura. Infine, la sua natura di sistema distribuito peer-to-peer, rende Cassandra altamente affidabile (nessun single point of failure; possibilità di replicare i dati su più nodi) e scalabile (aggiungere un nodo significa aumentare in maniera lineare le performance del cluster).
Quali sono a suo giudizio i linguaggi e le tecnologie che le persone interessate a questo ambito dovrebbero approfondire?
PORFIRIO – Il mondo dei Big Data è vasto e in continua espansione: per non venir disorientati, un primo approfondimento potrebbe partire proprio dai dati e dagli strumenti creati per il loro immagazzinamento e la loro elaborazione. Parliamo dei database NoSQL, quindi Apache Cassandra, MongoDB e CouchDB, ma anche degli strumenti per l’elaborazione distribuita come Hadoop e Apache Spark. Per quanto riguarda i linguaggi di programmazione, negli ultimi anni quelli che stanno avendo un discreto successo nell’ambito Big Data, sono R e Python, seguiti da Scala (il linguaggio alla base di Spark), sebbene tutti gli strumenti citati in precedenza forniscano sempre driver e connettori che ne consentono l’utilizzo anche via Java. Infine, sarebbe bene interessarsi anche agli strumenti che consentono l’estrazione di risultati dalle proprie analisi: parliamo di strumenti di Business Intelligence come Tableau o Qlik, ma anche di algoritmi per l’analisi predittiva, una frontiera più innovativa. Per quanto riguarda quest’ultima, esistono svariate librerie che forniscono gli strumenti necessari: una di queste, ad esempio, è MLlib, integrata all’interno di Apache Spark.
Dovendo spiegare a studenti universitari o ad aspiranti manager l’utilità dei Big Data, quali fattori verrebbero maggiormente sottolineati?
PORFIRIO – Nel momento in cui impariamo a gestirli, analizzarli e sfruttarli correttamente, i Big Data diventano un’incredibile fonte di informazioni che ci permette di avanzare praticamente in qualsiasi campo, da quello economico a quello scientifico. Aziende, enti pubblici, social network, sensori: tutti ormai raccolgono o hanno la possibilità di raccogliere grandi quantità di dati sugli argomenti più disparati. Tali dati, opportunamente elaborati, ci permettono di comprendere andamenti, scoprire nuovi pattern, effettuare analisi, non solo statistiche, ma anche predittive. Tutto ciò non può che aumentare la nostra comprensione di ciò che ci circonda, favorendo ogni tipo di ricerca.
Può illustrare le competenze che un “data scientist” deve possedere in aggiunta o diversificate rispetto a quelle possedute da un tradizionale informatico che gestisce il data-base aziendale?
PORFIRIO – Mentre un tradizionale amministratore di database può conoscere i dati con cui opera quanto basta per poterli strutturare nel modo più corretto e saper intervenire nel caso sorgano problemi, un data scientist non può fermarsi a questo livello. Un data scientist deve conoscere il significato dei dati con cui opera e il contesto in cui i dati vengono generati e le regole che governano tale contesto. Inoltre, ha bisogno di strumenti potenti per effettuarne un’analisi ben strutturata: parliamo di algoritmi statistici e predittivi, che, per poter essere usati correttamente, richiedono una comprensione profonda della loro logica. Solo in questo modo, il data scientist è in grado di individuare di volta in volta gli algoritmi più adatti alla circostanza, saperne configurare i parametri di esecuzione e poterne interpretare i risultati in maniera corretta.