Università degli Studi Mediterranea di Reggio Calabria Dipartimento di Ingegneria dell’Informazione, delle Infrastrutture e dell’Energia Sostenibile Corso di Laurea in Ingegneria dell’Informazione Tesi di Laurea Progettazione e realizzazione di software multimediali per l’apprendimento di MongoDB e Splunk Relatore Candidato Prof. Domenico Ursino Davide Parisi Anno Accademico 2015-2016 Indice Introduzione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 Introduzione ai Big Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1 Cosa sono i Big Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.1 Concetti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.2 Caratteristiche . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.3 Tipi di dati . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.3.1 Dati strutturati . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.3.2 Dati non strutturati . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.3.3 Dati semi-strutturati . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.3.4 Metadati . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.4 Processo di analisi dei Big Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.4.1 I passi del processo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.4.2 Tecnologie utilizzate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.5 Memorizzazione dei Big Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.5.1 Concetti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.5.2 Tecnologie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.6 Utilizzo dei Big Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.6.1 Open Big Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 7 8 9 12 12 12 13 14 14 14 18 19 20 21 23 24 Camtasia Studio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1 Perchè Camtasia Studio? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2 Il software . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2.1 Installazione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2.2 Interfaccia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.3 Caratteristiche principali . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.3.1 Screen recorder . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.3.2 Video editor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.3.3 Audio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.3.4 Effetti visivi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.4 Funzionalità . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.5 Case study: costruzione di un video di esempio . . . . . . . . . . . . . . . . . . . 27 27 27 28 28 30 31 32 32 33 35 37 IV Indice MongoDB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.1 I modelli NoSQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.1.1 I vantaggi dei database NoSQL . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.1.2 Classificazione dei DBMS NoSQL . . . . . . . . . . . . . . . . . . . . . . . . 3.2 Introduzione a MongoDB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.2.1 Cos’è MongoDB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.2.2 Caratteristiche principali . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.2.3 Funzionalità avanzate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.2.4 Amministrazione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.2.5 Dettagli tecnici . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 41 44 47 50 52 55 57 62 66 Progettazione di un software multimediale per l’apprendimento di MongoDB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.1 Definizione di una metodologia per la progettazione del software multimediale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.2 Progettazione della vista logica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.3 Progettazione della vista fisica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.4 Progettazione della vista utente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.4.1 DBMS NoSQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.4.2 DBMS documentali . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.4.3 MongoDB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.4.4 Installazione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.4.5 Configurazione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.4.6 Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.4.7 Client . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.4.8 MongoChef . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.4.9 Intellishell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.4.10 Aggregation Framework . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.4.11 Implementazione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.4.12 Operazioni CRUD e successive . . . . . . . . . . . . . . . . . . . . . . . . . . . 69 71 71 72 72 72 72 72 72 73 73 73 73 74 74 74 Realizzazione di un software multimediale per l’apprendimento di MongoDB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.1 Realizzazione del software multimediale . . . . . . . . . . . . . . . . . . . . . . . . . 5.1.1 Creazione della presentazione PowerPoint . . . . . . . . . . . . . . . . . 5.1.2 Registrazione della schermata . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.1.3 Case study descrittivo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.1.4 Editing dei video . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.2 Uno sguardo al software realizzato . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81 81 81 82 82 83 84 Splunk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.1 Big Data e Splunk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.2 Cos’è Splunk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.2.1 I dati per Splunk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.2.2 Search Processing Language . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.3 Caratteristiche principali . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.3.1 Ricerca e analisi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.3.2 Report e dashboard . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89 89 90 92 94 97 97 99 69 Indice V 6.4 Funzionalità avanzate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100 6.4.1 Monitoraggio e allarmi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103 6.4.2 Sicurezza . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104 6.5 SplunkApp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106 Progettazione di un software multimediale per l’apprendimento di Splunk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109 7.1 Premessa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109 7.2 Progettazione della vista logica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109 7.3 Progettazione della vista fisica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110 7.4 Progettazione della vista utente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111 7.4.1 Big Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111 7.4.2 Analisi dei Big Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111 7.4.3 Splunk Enterprise . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111 7.4.4 Assistenza . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111 7.4.5 Docs e SplunkLive . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111 7.4.6 Installazione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112 7.4.7 SplunkWeb . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112 7.4.8 Panoramica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112 7.4.9 Aggiunta dati . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112 7.4.10 Caricamento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113 7.4.11 Monitoraggio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113 7.4.12 Streaming . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113 7.4.13 Ricerca . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114 7.4.14 Lookup e successivi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114 7.4.15 Troubleshooting e sicurezza . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114 7.4.16 SplunkApp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115 7.4.17 Aggiunta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115 7.4.18 Gestione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115 Realizzazione di un software multimediale per l’apprendimento di Splunk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123 8.1 Realizzazione del software multimediale . . . . . . . . . . . . . . . . . . . . . . . . . 123 8.1.1 Creazione della presentazione PowerPoint . . . . . . . . . . . . . . . . . 123 8.1.2 Registrazione della schermata . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124 8.1.3 Applicazione d’esempio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125 8.1.4 Editing dei video . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125 8.2 Uno sguardo al software realizzato . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127 Conclusioni e uno sguardo al futuro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131 Riferimenti bibliografici . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133 Elenco delle figure 1.1 1.2 1.3 1.4 1.21 1.22 1.23 Una “nuvola” rappresentativa del mondo dei Big Data . . . . . . . . . . . . . Esempi di dataset . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Simbolo rappresentativo dell’analisi dei dati . . . . . . . . . . . . . . . . . . . . . . Rappresentazione dei passaggi da seguire durante il processo di Business Intelligence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Rappresentazione delle caratteristiche dei Big Data . . . . . . . . . . . . . . . . Rappresentazione del legame tra veridicità e valore dei dati . . . . . . . . . Tutti i tipi di dati elaborati attraverso i Big Data . . . . . . . . . . . . . . . . . Simbolo rappresentativo dei dati strutturati . . . . . . . . . . . . . . . . . . . . . . Esempi di dati non strutturati . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Esempi di dati semi-strutturati . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Simbolo rappresentativo dei metadati . . . . . . . . . . . . . . . . . . . . . . . . . . . . Grafico rappresentativo del ciclo di vita dei Big Data . . . . . . . . . . . . . . Classificazione della fase dedicata all’analisi dei dati . . . . . . . . . . . . . . . Il processo di OLAP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Rappresentazione delle operazioni di ETL . . . . . . . . . . . . . . . . . . . . . . . . Rappresentazione di un Data Warehouse . . . . . . . . . . . . . . . . . . . . . . . . . Simbolo rappresentativo dei cluster . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Simbolo rappresentativo dei file system distribuiti . . . . . . . . . . . . . . . . . Esempi di archiviazione dei dispositivi di memorizzazione su disco . . . Simbolo rappresentativo dei dispositivi di memorizzazione “in-memory” . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Simbolo rappresentativo dei dispositivi IMDG . . . . . . . . . . . . . . . . . . . . . Simbolo rappresentativo dei dispositivi IMDB . . . . . . . . . . . . . . . . . . . . . Rappresentazione degli Open Big Data . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1 2.2 2.3 2.4 2.5 2.6 2.7 Logo di Camtasia Studio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Tutorial introduttivo del software . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Interfaccia di Camtasia Studio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Cattura degli strumenti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Cattura degli strumenti legati alla gestione delle transizioni . . . . . . . . . Tasto per iniziare la registrazione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Cattura degli strumenti legati alla gestione dell’audio . . . . . . . . . . . . . . 1.5 1.6 1.7 1.8 1.9 1.10 1.11 1.12 1.13 1.14 1.15 1.16 1.17 1.18 1.19 1.20 7 8 9 10 10 11 12 13 13 13 14 15 17 18 19 19 20 21 22 22 23 23 24 28 29 29 30 30 31 32 VIII Elenco delle figure 2.8 2.9 2.10 2.11 2.12 Cattura degli strumenti legati alla gestione dei cursori . . . . . . . . . . . . . Cattura degli strumenti legati alla gestione dei caption . . . . . . . . . . . . . Cattura dell’area denominata ’canvas’ . . . . . . . . . . . . . . . . . . . . . . . . . . . . Cattura degli strumenti legati alla gestione dei callout . . . . . . . . . . . . . Cattura degli strumenti legati alla gestione dello Zoom & Pan e dello Smart Focus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.13 Cattura degli strumenti legati alla condivisione del filmato . . . . . . . . . . 2.14 Cattura degli strumenti legati alla registrazione dello schermo . . . . . . . 2.15 Utilizzo della transizione nel video di esempio . . . . . . . . . . . . . . . . . . . . . 34 34 34 35 3.1 3.2 3.3 3.4 3.5 3.6 3.7 3.8 3.9 3.10 3.11 3.12 3.13 3.14 3.15 Rappresentazione della quantità di informazioni presenti online . . . . . . Differenze tra RDBMS e NoSQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Big Data e NoSQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Rappresentazione del CAP Theorem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . NoSQL e le sue qualità . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Classificazione dei DBMS NoSQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Caratteristiche dei vari database NoSQL messe a confronto . . . . . . . . . Alcuni dei DBMS NoSQL più diffusi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Infrastruttura Amazon AWS che impiega MongoDB . . . . . . . . . . . . . . . Logo del DBMS MongoDB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Esempio di struttura di un documento con formato JSON . . . . . . . . . . Rappresentazione della pratica denominata “Two-phase commit” . . . . Grafico che descrive i principali appellativi da attribuire a MongoDB Rappresentazione di B-tree, utilizzato da MongoDB per gli indici . . . . Rappresentazione della sequenza di passaggi eseguiti dall’ Aggregation Framework . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.16 Esempio esplicativo dell’operato svolto dall’ Aggregation Framework . 3.17 Raffigurazione di un replicaset . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.18 Raffigurazione dello sharding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 42 43 44 47 48 49 50 51 52 53 54 55 58 4.1 4.2 4.3 4.4 4.5 4.6 4.7 4.8 4.9 4.10 4.11 4.12 4.13 4.14 70 71 72 73 74 75 75 76 76 77 77 78 78 5.1 5.2 Esempio di utilizzo della Depth-First Search . . . . . . . . . . . . . . . . . . . . . . Visualizzazione dell’albero connesso alla vista logica . . . . . . . . . . . . . . . Progettazione della vista fisica relativa al nostro software multimediale Mockup relativo ai DBMS NoSQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Mockup relativo ai DBMS documentali . . . . . . . . . . . . . . . . . . . . . . . . . . . Mockup introduttivo su MongoDB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Mockup rappresentativo dell’installazione di MongoDB . . . . . . . . . . . . . Mockup rappresentativo della configurazione di MongoDB . . . . . . . . . . Mockup rappresentativo dell’avvio del server di MongoDB . . . . . . . . . . Mockup rappresentativo della connessione del client di MongoDB . . . . Le principali funzioni di MongoChef . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Mockup rappresentativo dell’Intellishell di MongoChef . . . . . . . . . . . . . Mockup rappresentativo dell’Aggregation Framework di MongoChef . Mockup rappresentativo della finestra di implementazione di MongoChef . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 37 38 39 61 61 63 64 79 Indice della presentazione PowerPoint . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85 Installazione di MongoDB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85 Elenco delle figure 5.3 5.4 5.5 5.6 6.1 6.2 6.3 6.4 6.5 6.6 6.7 6.8 6.9 6.10 6.11 6.12 6.13 6.14 6.15 6.16 6.17 6.18 6.19 6.20 7.1 7.2 7.3 7.4 7.5 7.6 7.7 7.8 7.9 7.10 7.11 7.12 7.13 7.14 7.15 Utilizzo dello zoom e del cursore durante la configurazione di MongoDB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . MongoChef nella presentazione PowerPoint . . . . . . . . . . . . . . . . . . . . . . . Aggregate di MongoChef . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Cattura di una query eseguita durante il case study . . . . . . . . . . . . . . . . IX 86 86 87 87 Big Data e Splunk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90 Logo di Splunk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90 Pagina principale di Splunk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91 Metodo di caricamento dei dati in Splunk . . . . . . . . . . . . . . . . . . . . . . . . 93 Tabella rappresentativa dei principali tipi di dati . . . . . . . . . . . . . . . . . . 94 Tabella rappresentativa dei principali tipi di dati . . . . . . . . . . . . . . . . . . 95 Esempio di utilizzo dell’SPL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96 Esempio di utilizzo dell’SPL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96 Barra degli strumenti dell’applicazione di ricerca di Splunk . . . . . . . . . 98 Esempio di ricerca che correla ed analizza . . . . . . . . . . . . . . . . . . . . . . . . 99 Esempio di zoom in sulla linea temporale degli eventi . . . . . . . . . . . . . . 100 Utilizzo delle dashboard personalizzate . . . . . . . . . . . . . . . . . . . . . . . . . . . 101 Rappresentazione di dashboard personalizzate . . . . . . . . . . . . . . . . . . . . . 101 Personalizzazione di un grafico ottenuto da una ricerca . . . . . . . . . . . . . 102 Splunk fornisce interfacce “responsive” e permette l’accesso da dispositivi differenti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102 Modifica delle tempistiche relative agli eventi . . . . . . . . . . . . . . . . . . . . . 103 Report relativo ad un’operazione di monitoraggio di eventi forniti da più sorgenti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104 Splunk in un dispositivo mobile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105 Alcuni esempi di applicazioni realizzate con Splunk . . . . . . . . . . . . . . . . 107 Altri esempi di applicazioni realizzate con Splunk . . . . . . . . . . . . . . . . . . 107 Visualizzazione dell’albero connesso alla vista logica . . . . . . . . . . . . . . . 110 Progettazione della vista fisica relativa al nostro software multimediale110 Mockup relativo ai Big Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112 Mockup relativo all’analisi dei Big Data . . . . . . . . . . . . . . . . . . . . . . . . . . 113 Mockup introduttivo su Splunk Enterprise . . . . . . . . . . . . . . . . . . . . . . . . 114 Mockup rappresentativo all’assistenza fornita da Splunk . . . . . . . . . . . . 115 Mockup rappresentativo degli strumenti “SplunkLive” e “Docs” di Splunk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116 Mockup rappresentativo dell’installazione di Splunk . . . . . . . . . . . . . . . . 116 Mockup rappresentativo della prima apertura di browser attraverso Splunk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117 Una panoramica generale della schermata principale di Splunk . . . . . . 117 Mockup rappresentativo dell’aggiunta dei dati in Splunk . . . . . . . . . . . 118 Mockup rappresentativo del caricamento dei dati in Splunk . . . . . . . . . 118 Mockup rappresentativo del monitoraggio dei dati in Splunk . . . . . . . . 119 Mockup rappresentativo dello streaming dei dati in Splunk . . . . . . . . . 119 Mockup rappresentativo della ricerca degli eventi in Splunk . . . . . . . . . 120 X Elenco delle figure 7.16 Mockup rappresentativo della risoluzione dei problemi e della sicurezza in Splunk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120 7.17 Mockup rappresentativo della pagine delle applicazioni di Splunk . . . . 121 7.18 Mockup rappresentativo del caricamento delle applicazioni in Splunk . 121 7.19 Mockup rappresentativo della gestione delle applicazioni in Splunk . . . 122 8.1 8.2 8.3 8.4 8.5 8.6 8.7 Logo della FireEye App for Splunk Enterprise v3 . . . . . . . . . . . . . . . . . . 125 Indice della presentazione PowerPoint . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127 Assistenza fornita da Splunk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127 Installazione di Splunk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128 Utilizzo dello zoom e del cursore durante la panoramica di Splunk . . . 128 FireEye App for Splunk Enterprise v3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129 Cattura della finestra principale dedicata alla gestione delle applicazioni . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129 Elenco dei listati 3.1 3.2 3.3 3.4 3.5 3.6 3.7 3.8 Query necessaria per inserire i documenti nel database . . . . . . . . . . . . . Query necessaria per eliminare le collezioni dal database . . . . . . . . . . . . Query necessaria per la ricerca di documenti nel database . . . . . . . . . . Query necessaria per la modifica di documenti nel database . . . . . . . . . Query necessaria per la ricerca e la contemporanea modifica di documenti nel database . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Query necessaria per l’aggregazione di documenti nel database . . . . . . Query necessaria per l’ordinamento, il conteggio e la paginazione dei risultati . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Query necessaria per la creazione di indici nel database . . . . . . . . . . . . 66 66 66 67 67 67 67 68 Introduzione I software didattici multimediali sono quei programmi utilizzati per il moderno apprendimento di specifiche discipline o per realizzare progetti interdisciplinari; sono, quindi, dei veri e propri strumenti di supporto che velocizzano l’acquisizione di informazioni. Ciò che, innanzitutto, contraddistingue questa categoria di software è “l’usabilità” per raggiungere la quale essi devono basarsi su una notevole qualità tecnica di programmazione. Tale “qualità” va intesa come la capacità di rendere semplice all’utente ciò che, viceversa, è basato su una notevole complessità tecnica, comunicativa, strutturale, cognitiva, critico-culturale e documentativa. La nostra è, oggi, a tutti gli effetti, una società multimediale. Molteplici sono i canali per mezzo dei quali viene trasmessa l’informazione, e questi sono ormai tutti completamente digitali. I media rappresentano l’evidenza più frequente di utilizzo delle nuove tecnologie. Essi, infatti, ci forniscono costantemente, ed ormai in tempo reale, l’informazione, o una delle infinite possibili interpretazioni della stessa facilmente realizzabili attraverso l’attuale tecnologia. Ciò fa parte di un processo del quale l’utenza visualizza il più delle volte il risultato finale come un miglioramento dell’esperienza sensoriale, con performance sempre maggiori della fruibilità dei contenuti audiovisivi, effetti speciali, e realizzazioni sempre più audaci che la tecnologia permette. I “media”, intesi come contenuti, si possono identificare in audio (brani musicali), video (film, videoclip, concerti interi), animazioni (sequenze animate), gallerie fotografiche (slideshow ), presentazioni (sequenza di diapositive con immagini e testo). La multimedialità consiste nell’utilizzo contemporaneo, nello stesso “prodotto”, di due o più di tali contenuti. Appare evidente come la possibilità di stimolare contemporaneamente più sensi, come risultato finale di un prodotto destinato all’apprendimento, ne faciliti enormemente lo stesso, oltre ad abbreviarne i tempi, rendendo, al contempo, l’esperienza dell’utente molto più entusiasmante. Aggiungendo a quanto sopra l’interattività, ovvero il coinvolgimento dell’utente che, da mero spettatore, può divenire protagonista dell’esperienza cognitiva, modificandone addirittura i percorsi, i tempi ed i possibili risultati, appare chiaro come le potenzialità di tali sistemi divengano virtualmente infinite. L’esempio più aderente di utilizzo di una multimedialità interattiva sempre più sofisticata sono stati, da sempre, i giochi per elaboratori, che spesso hanno inventato le routine che oggi ci appaiono come normalità ed utilizziamo quotidianamente: dalla 4 Introduzione lettura online di un quotidiano, all’utilizzo di social come YouTube o Facebook, all’acquisto online, all’interattività della televisione digitale. Tra gli innumerevoli ambiti nei quali si utilizzano i software multimediali per l’apprendimento, appare evidente come bisogni considerare il loro utilizzo nell’ICT, cioè l’insieme delle tecnologie che consentono il trattamento e lo scambio delle informazioni in formato digitale. Bisogna sottolineare come esista un forte ritardo nell’utilizzo delle ultime tecnologie e supporti didattici multimediali nell’ambito didattico per eccellenza, ovvero la Scuola. In realtà, tale importantissimo settore ha sempre evidenziato un macroscopico ritardo rispetto l’utilizzo delle nuove tecnologie. Gli attuali laboratori didattici multimediali, utilizzati nel settore dell’educazione pubblica, sono, infatti, ed in forma quasi standardizzata, corrispondenti alla tecnologia esistente quattro-cinque anni fa, che, in termini di ICT, equivale davvero ad un periodo temporale enorme. Ciò nonostante, l’enorme diffusione e successo dei social network ha contribuito a rendere possibile l’accesso all’odierna tecnologia world wide web (che incorpora una multimedialità interattiva di ultima generazione) ad una platea di utenti amplissima ed eterogenea. Paradossalmente, permane il divario di conoscenza dell’utenza “standard” che, pur utilizzando quotidianamente e per lunghi periodi di tempo i social media ed anche i giochi sempre più avanzati ad essi collegati, conferma una scarsa conoscenza di ciò che sta alla base dell’Information Technology. Ci riferiamo alla, ancora, scarsa conoscenza dei programmi di produttività individuale (leggasi Office & Co.). Parimenti, il continuo ed inesorabile aumento dell’utenza e dei conseguenti dati da memorizzare, gestire e modificare, ha reso indispensabile ampliare la platea delle applicazioni che si occupano, appunto, di Big Data, dalle grosse multinazionali, che un tempo erano gli unici utilizzatori di tali database, ad un potenziale pubblico sempre maggiore. La gestione di grandi masse di dati, a seguito dell’autentica esplosione della quantità di dati da archiviare, è a sua volta collegata all’aumento a dismisura di utenti e alla conseguente necessità di gestione dei loro dati nei più svariati sistemi di archiviazione (terminali mobili, social network a centinaia, cloud). Basti pensare che, praticamente, ogni marca di smartphone ha il suo “cloud”, e lo stesso dicasi per i fornitori di servizi, i provider, i gestori di email. Apprendere ad utilizzare i vari software per la gestione dei Big Data non è, quindi, come appare evidente, un’attività estremamente semplice. Ecco, quindi, che la tecnologia multimediale ed interattiva viene in aiuto a chi si avvicina a questa parte certamente complessa dell’ICT. Infatti i tool di apprendimento di tali software sono riservati ai professionisti del settore, in termini di comprensione degli stessi. I Big Data, combinati con sofisticate analisi di business, forniscono il potenziale per suggerire alle imprese intuizioni sul comportamento dei clienti e sulle condizioni di mercato, permettendo di prendere decisioni più velocemente ed efficacemente rispetto alla concorrenza, con un’apparente semplicità e precisione nell’informazione, prima impensabile. La presente tesi si colloca proprio in questo scenario applicativo. Essa, infatti, illustra la progettazione, e la relativa realizzazione, per mezzo di Camtasia Studio, di due software multimediali interattivi, ciascuno dei quali adatto all’apprendimento di due piattaforme molto importanti nel contesto dei Big Data, ovvero MongoDB e Splunk. Introduzione 5 Camtasia Studio è un programma in grado di realizzare software multimediali interattivi, che permettono l’intervento diretto dell’utente durante la visione, intervenendo in tempo reale e potendo, quindi, scegliere diversi percorsi di apprendimento. Le principali operazioni che Camtasia Studio svolge sono la registrazione della schermata del dispositivo su cui è in azione e l’attività di editing sulle registrazioni stesse e su eventuali video importati e miscelati alla registrazione. Per rendere interattivi i software finali, esso permette l’inserimento di un sottofondo musicale, con relative operazioni di modifica sulla musica stessa, cosı̀ come commenti dinamici, frecce, cerchi ed operazioni di zoom intelligenti. Tutte queste funzionalità consentono di realizzare dei software multimediali che forniscano un efficace supporto nell’apprendimento dei due software di cui sopra. MongoDB è un sistema gestionale di basi di dati NoSQL, senza schema e non basato sul modello relazionale. È un DBMS “document-oriented”; in esso i dati vengono memorizzati sotto forma di documenti, i quali sono raggruppati all’interno di collezioni che, a loro volta, sono raggruppate all’interno di database; il server MongoDB, a sua volta, può gestire più database. Tra le caratteristiche principali di MongoDB ci sono l’auto-sharding, ossia un sistema per automatizzare la distribuzione dei dati su più server, la replication, ovvero la semplice replicazione del database per mantenerne un’alta disponibilità, e l’assenza di schema dei suoi documenti. Splunk, invece, è la piattaforma leader nel settore dell’operational intelligence. I tuoi sistemi IT e l’infrastruttura tecnologica (siti Web, applicazioni, server, reti, sensori, dispositivi mobili e simili) generano quantità enormi di dati macchina. Attraverso il monitoraggio e l’analisi di tutti i dati, dai clickstream e dalle transazioni dei clienti all’attività di rete fino alle registrazioni delle chiamate, Splunk Enterprise trasforma i dati macchina in informazioni significative. Esso identifica e risolve i problemi ed esegue indagini sulle violazioni della sicurezza in pochi minuti, anzichè in ore o giorni. Inoltre, effettua il monitoraggio dell’infrastruttura end-to-end per evitare una riduzione nelle prestazioni o periodi di indisponibilità del servizio, acquisendo visibilità in tempo reale a livello di esperienza, transazioni e comportamento dei clienti. Nella realizzazione dei due video multimediali procederemo quindi, con un’attenta progettazione, che definirà gli obiettivi, i contenuti e le attività necessarie per poter creare i due software scelti. Di conseguenza, definiremo un percorso con un inizio e una fine per entrambi i software MongoDB e Splunk, che possa rendere chiaro tutto ciò che è fattibile grazie ad essi. Dal momento, però, che la progettazione risulta essere complessa date le numerose componenti teoriche e pratiche da illustrare, si è reso necessario decidere una metodologia progettuale da seguire. A tal proposito, abbiamo scelto di progettare i software multimediali grazie all’utilizzo di tre tipi di viste tra loro collegate, denominate vista logica, fisica e utente. Infine, avendo con noi sia lo strumento per la creazione dei software didattici sia il corrispettivo progetto, siamo nelle condizioni di realizzarli. Entrambi i software durano circa venti minuti e sono caratterizzati da numerose animazioni, tali da rendere l’apprendimento di MongoDB e Splunk il meno noioso e più coinvolgente possibile. Abbiamo, inoltre, pensato di inserire delle slide per dare all’utente delle spiegazioni dettagliate riguardo ciò che viene registrato, oltre ad un sottofondo musicale. La presente tesi è strutturata come di seguito specificato: 6 • • • • • • • • • Introduzione nel primo capitolo verranno introdotti i Big Data, insieme alle loro caratteristiche e alle problematiche che essi pongono; nel secondo capitolo viene proposta una dettagliata descrizione del software Camtasia Studio volta ad illustrare, anche, le sue funzionalità più complesse; nel terzo capitolo vengono presentate le principali caratteristiche di MongoDB, insieme ad un piccolo manuale per il suo utilizzo; nel quarto capitolo verrà progettato il software multimediale per l’apprendimento di MongoDB attraverso lo sviluppo delle tre viste; nel quinto capitolo vi sarà la realizzazione vera e propria di questo software, adoperando Camtasia Studio; nel sesto capitolo verrà illustrato in dettaglio Splunk; nel settimo capitolo verrà progettato il software multimediale per l’apprendimento di Splunk; nell’ottavo capitolo verrà illustrata la realizzazione di tale software multimediale servendosi di Camtasia Studio; infine, nell’ultimo capitolo verranno tratte le conclusioni e verranno esaminati alcuni possibili sviluppi futuri. 1 Introduzione ai Big Data Questo capitolo presenta, dapprima, una visione generale di tutto ciò che interessa il fenomeno dei Big Data. In seguito, verrà fatta una descrizione del loro ciclo di vita e delle tecniche di memorizzazione degli stessi. Il capitolo si concluderà con una presentazione dei più diffusi contesti di utilizzo, appunto, dei Big Data. 1.1 Cosa sono i Big Data Negli ultimi venti anni lo sviluppo di nuove tecnologie e servizi, insieme alla diffusione capillare della rete Internet, hanno determinato un consistente aumento della quantità di dati raccolti e, conseguentemente, della potenziale conoscenza che si può dedurre da essi. Si tratta di dati provenienti dalle interazioni con i clienti, dati dei social network, dati prelevati dai siti web, in particolare dai motori di ricerca o provenienti da vari sensori. Nonostante molte organizzazioni governative, bancarie o di ricerca già da moltissimi anni abbiano a che fare con queste ingenti quantità di dati, solo da poco più di un decennio è stato coniato il termine “Big Data”, per sottolineare quanto, al giorno d’oggi, si è sempre più sommersi da un mare di dati di diverso genere (Figura 1.1). Figura 1.1. Una “nuvola” rappresentativa del mondo dei Big Data 8 1 Introduzione ai Big Data Il termine “Big Data”, sicuramente abusato nelle moderne strategie di mercato, indica grandi aggregazioni di dati che non possono essere elaborati o analizzati con i tradizionali processi e strumenti di analisi. I Big Data aprono le porte verso nuovi modi di percepire il mondo e di prendere decisioni. Essi sono ovunque, e ogni giorno sempre più applicazioni vengono create per trarne valore e arricchire la vita personale e professionale degli utenti. Da un lato, alcuni fattori, quali la crescita dei dati scientifici, hanno fortemente contribuito all’accelerazione della produzione di questi dati. Dall’altro, tale crescita esponenziale è il risultato di alcuni mutamenti sociali ed economici estremamente positivi avvenuti nella nostra società. Si consideri, ad esempio, la rapida diffusione dei dispositivi mobili, ricchi di contenuti multimediali e compatibili con i sistemi GPS, e dei social network, che hanno consentito a miliardi di persone in tutto il mondo di tenersi in contatto in modo digitale. I Big Data sono il nuovo strumento che rende “misurabile” la società. Ci indirizzano verso una nuova scienza dei dati in grado di misurare e, in prospettiva, prevedere crisi economiche, epidemie e pandemie, diffusione di opinioni, distribuzione delle risorse economiche o energetiche, bisogni di mobilità. 1.1.1 Concetti Come punto di partenza per comprendere il mondo dei Big Data, è necessario definire e comprendere una serie di contetti e termini fondamentali. Dataset Le collezioni o i gruppi di dati correlati vengono, generalmente, denominati dataset. Ogni membro di un gruppo, o dataset, condivide lo stesso insieme di attributi o proprietà (Figura 1.2). Figura 1.2. Esempi di dataset 1.2 Caratteristiche 9 Analisi dei dati L’analisi dei dati è il processo di esame dei dati per trovare fatti, relazioni, modelli, idee e tendenze. L’obiettivo generale dell’analisi dei dati è quello di sostenere il migliore processo decisionale. La realizzazione dell’analisi dei dati consente di definire modelli e relazioni tra i dati analizzati (Figura 1.3). Figura 1.3. Simbolo rappresentativo dell’analisi dei dati Business Intelligence La Business Intelligence (BI) consente a un’organizzazione di comprendere le prestazioni di un’impresa attraverso l’analisi di dati generati da processi aziendali e sistemi informativi. I risultati dell’analisi possono essere utilizzati dall’amministrazione per guidare il business nel tentativo di correggere i problemi rilevati o, altrimenti, per migliorare le prestazioni organizzative. La BI applica le analisi a grandi quantità di dati in tutta l’azienda; questi, generalmente, sono stati consolidati in un Data Warehouse aziendale per eseguire query analitiche. L’output di un processo di BI può essere esposto in una dashboard che consente agli amministratori di accedere ed analizzare i risultati e, potenzialmente, ridefinire le query analitiche per esplorare ulteriormente i dati; tutto ciò è rappresentato in Figura 1.4. 1.2 Caratteristiche Nonostante non esista una definizione universale di Big Data, questo termine si usa per indicare tutte quelle situazioni in cui le tradizionali tecniche di memorizzazione ed elaborazione dei dati (come, ad esempio, i tradizionali RDBMS, cioè i sistemi di gestione di database relazionali) non sono sufficienti. Talvolta, infatti, tale difficoltà 10 1 Introduzione ai Big Data Figura 1.4. Rappresentazione dei passaggi da seguire durante il processo di Business Intelligence Figura 1.5. Rappresentazione delle caratteristiche dei Big Data è data non solo dal volume ma anche da altre caratteristiche che rendono i dati coinvolti particolarmente complessi da poter essere trattati (Figura 1.5). Ad esempio, l’altissima velocità con la quale questi dati vengono aggiornati, e l’estrema varietà degli stessi, possono essere alcune delle cause di tale ostacolo. In dettaglio, le principali grandezze che caratterizzano i Big Data sono le seguenti: • • Volume: per dare un’idea dell’incremento della quantità di dati che si è avuto negli ultimi anni, basti pensare che, secondo alcuni studi, si è passati da database dell’ordine dei terabyte a collezioni di dati dell’ordine dei petabyte. L’eccessiva quantità di dati rappresenta un problema per molte compagnie che, spesso, sono costrette a scartare i dati in eccesso non avendo le capacità e le risorse adeguate per contenerli. Analizzare una tale quantità di dati porta, sicuramente, a un gran numero di scoperte ma, per farlo, è necessario possedere le risorse adeguate in termini di capacità di memorizzazione ed elaborazione dei dati. Velocità: alcuni tipi di dati sono relativamente statici, come, ad esempio, la data di nascita o il genere di una persona. Altri tipi di dati cambiano occasionalmente, cioè vengono aggiornati con poca frequenza, come, ad esempio, l’indirizzo di residenza di una persona, il numero di telefono e il numero dei componenti familiari. Alcuni tipi di dati, tuttavia, cambiano in modo cosı̀ rapido da non essere sempre percepibile dagli strumenti di analisi (ad esempio, la musica che si sta ascoltando, la velocità di guida e i dati biologici). Con il termine “velocità” si vogliono rappresentare due aspetti utili allo studio dei Big Data. Il primo è il throughtput, cioè la quantità di dati che passa da 1.2 Caratteristiche • • • 11 un determinato canale nell’unità di tempo. Il secondo aspetto da prendere in considerazione è la latenza, ossia il tempo massimo durante il quale i dati restano immutati. Creare dei tool che riescano ad usare i dati nel minor tempo possibile ed ottenere i dati in tempo reale, nonostante la complessità di questi ultimi, rappresenta una grande sfida per gli analisti che si pongono l’obiettivo di “scavare” dentro i Big Data. Varietà: i Big Data comprendono molti diversi tipi di dati, strutturati e non. Inoltre, essi racchiudono un numero elevatissimo di possibili formati differenti in cui si possono presentare i dati: testi, suoni, video, e molti altri ancora. Ulteriore compito degli analisti è quello di formalizzare questa enorme varietà di informazioni in modo da poter essere compresi anche in maniera automatica. Veridicità: si riferisce alla qualità o alla fedeltà dei dati. I dati che entrano in ambienti di gestione dei Big Data devono essere valutati per la qualità, che può portare ad attività di elaborazione dei dati per gestire l’eventuale presenza di dati non validi e rimuovere il rumore. In relazione alla veridicità, i dati possono essere parte del segnale o il rumore di un dataset. Il rumore sono dati che non possono essere convertiti in informazioni e, pertanto, non hanno alcun valore, considerando che i segnali hanno valore e portano informazioni significative. I dati con un elevato rapporto segnale-rumore sono caratterizzati da una veridicità maggiore rispetto ai dati con un rapporto inferiore. I dati che vengono acquisiti in modo controllato contengono, solitamente, meno rumore rispetto a dati acquisiti tramite fonti incontrollate. Cosı̀ il rapporto segnale-rumore dei dati dipende dall’origine dei dati e dal relativo tipo. Valore: è definito come l’utilità dei dati per un’organizzazione. La caratteristica di valore è intuitivamente legata alla caratteristica di veridicità, in quanto maggiore è la fedeltà dei dati, e più valore essi hanno per il business. Il valore dipende anche da quanto tempo impiega l’elaborazione dei dati affinchè i risultati analitici abbiano una shelf-life. Più tempo impiegano i dati per essere trasformati in informazioni significative, meno valore hanno per il business (Figura 1.6). I risultati stantii inibiscono la qualità e la velocità del processo decisionale informativo. Figura 1.6. Rappresentazione del legame tra veridicità e valore dei dati 12 1 Introduzione ai Big Data Tenendo conto della qualità dei dati e della loro rappresentatività, dobbiamo essere consapevoli delle grandi opportunità, cosı̀ come dei nuovi rischi. Occorrono tecnologie a sostegno della privacy, una sorta di “new deal” sui temi della privacy, della trasparenza e della fiducia necessaria per creare e accedere alla conoscenza dei Big Data come ad un bene pubblico per tutti. Certo, i problemi relativi alla qualità, alla privacy e alla proprietà dei Big Data risultato essere decisivi. 1.3 Tipi di dati I dati elaborati da soluzioni di Big Data possono essere generati dall’uomo o dal computer, anche se è, in definitiva, responsabilità delle macchine quella di generare i risultati analitici. I dati generati dall’uomo e dal computer possono provenire da una varietà di fonti ed essere rappresentati in vari formati o tipi. Questa sezione esamina la varietà dei tipi di dati che vengono elaborati da soluzioni di Big Data e che vediamo rappresentati in Figura 1.7. Figura 1.7. Tutti i tipi di dati elaborati attraverso i Big Data Tipi di dati fondamentali sono: • • • • dati strutturati; dati non strutturati; dati semi-strutturati; metadati. Questi verranno esaminati in dettaglio nelle prossime sottosezioni. 1.3.1 Dati strutturati I dati strutturati sono conformi a uno schema o modello dei dati e vengono spesso archiviati in forma tabellare. Essi sono utilizzati per acquisire le relazioni tra entità diverse e, pertanto, sono più spesso archiviati in un database relazionale (Figura 1.8). Essi vengono generati da applicazioni aziendali, come sistemi ERP e CRM. 1.3.2 Dati non strutturati I dati che non sono conformi a un modello o schema di dati sono noti come dati non strutturati. Si stima che i dati non strutturati costituiscono l’80% dei dati all’interno di qualsiasi organizzazione. Questa forma di dati è testuale o binaria, e spesso trasportata tramite i file che sono indipendenti e non relazionali. I dati non strutturati non possono essere direttamente elaborati o eseguiti tramite una query, utilizzando SQL (Figura 1.9). 1.3 Tipi di dati 13 Figura 1.8. Simbolo rappresentativo dei dati strutturati Figura 1.9. Esempi di dati non strutturati 1.3.3 Dati semi-strutturati I dati semi-strutturati hanno un livello definito di struttura e consistenza, ma non sono relazionali nella loro natura (Figura 1.10). Anzi, i dati semi-strutturati sono gerarchici o basati sui grafi. Questo tipo di dati è comunemente archiviato nei file che contengono testo. A causa della natura testuale di questi dati, e della loro conformità a qualche livello di struttura, essi sono più facilmente elaborati rispetto ai dati non strutturati. Figura 1.10. Esempi di dati semi-strutturati 14 1.3.4 1 Introduzione ai Big Data Metadati I metadati forniscono informazioni sulle caratteristiche e sulla struttura di un dataset. Questo tipo di dati è, in gran parte, generato dalla macchina e può essere visto come un livello aggiunto ai dati “grezzi”. Il tracciamento dei metadati è cruciale per l’elaborazione, l’archiviazione e l’analisi dei Big Data perchè fornisce informazioni circa il “pedigree” dei dati e la loro provenienza durante l’elaborazione. Le soluzioni Big Data si basano sui metadati, particolarmente per l’elaborazione di dati semi-strutturati e non strutturati (Figura 1.11). Figura 1.11. Simbolo rappresentativo dei metadati 1.4 Processo di analisi dei Big Data L’analisi dei Big Data è diversa dall’analisi tradizionale dei dati, principalmente a causa delle caratteristiche di volume, velocità e varietà dei dati che vengono elaborati. Una metodologia dettagliata è necessaria per organizzare le attività e i compiti coinvolti con l’acquisizione, l’elaborazione, l’analisi e il riutilizzo dei dati. Le prossime sottosezioni illustrano, passo dopo passo, il ciclo di vita relativo all’analisi dei dati (schematicamente mostrato in Figura 1.12). Quest’ultimo organizza e gestisce i compiti e le attività connesse con l’analisi dei Big Data. 1.4.1 I passi del processo Valutazione del Business Case Ogni ciclo di vita analitico della Big Data Analytics deve iniziare con un ben definito Business Case; questo ha l’obbiettivo di presentare una chiara comprensione delle giustificazioni, delle motivazioni e degli obiettivi che spingono ad effettuare l’analisi in corso. Questa valutazione aiuta chi prende le decisioni a capire le risorse aziendali che dovranno essere utilizzate e quali sfide di business dovranno essere affrontate. Un altro risultato di questa fase è la determinazione del bilancio sottostante, necessario per realizzare il progetto di analisi. 1.4 Processo di analisi dei Big Data 15 Figura 1.12. Grafico rappresentativo del ciclo di vita dei Big Data Identificazione dei dati L’identificazione dei dati è rivolta ad identificare i dataset richiesti per il progetto di analisi e per le loro risorse. Identificare una più ampia varietà di origini dei dati può aumentare la probabilità di trovare correlazioni e schemi nascosti. A seconda dell’ambito di attività del progetto di analisi e della natura dei problemi aziendali affrontati, i dataset richiesti e le relative sorgenti possono essere interni e/o esterni all’impresa. 16 1 Introduzione ai Big Data Acquisizione e filtraggio dei dati Durante questa fase i dati vengono raccolti da tutte le fonti che sono state identificate durante la fase precedente. I dati acquisiti vengono, quindi, sottoposti a filtraggio automatizzato, per la rimozione di dati corrotti o che sono stati considerati senza alcun valore per il conseguimento degli obiettivi di analisi. Pertanto, è opportuno conservare una copia integrale del dataset originale prima di procedere con il filtraggio. Per ridurre al minimo lo spazio di archiviazione richiesto, la copia integrale può essere compressa, pur preservandone accuratezza e qualità. Estrazione dei dati Questa fase è dedicata all’estrazione dei dati più disparati e alla loro trasformazione in un formato che la soluzione di Big Data sottostante può utilizzare ai fini dell’analisi dei dati. Il grado di estrazione e trasformazione necessarie dipende dai tipi di funzionalità della soluzione di Big Data adottata. Convalida e pulizia dei dati I dati non validi possono inclinare e falsificare i risultati dell’analisi. A differenza dei dati aziendali tradizionali, dove la struttura dei dati è predefinita e i dati sono preconvalidati, i dati in input per l’analisi dei Big Data possono essere non strutturati senza alcuna indicazione sulla loro validità. La loro complessità può rendere difficile arrivare a un insieme di vincoli di convalida appropriati. Questa fase è dedicata a stabilire le regole di convalida e a rimuovere qualsiasi dato che risulta non valido in modo evidente. Le soluzioni di Big Data spesso ricevono dati ridondanti provenienti da dataset differenti. Tale ridondanza può essere sfruttata per esplorare dataset interconnessi, per assemblare i parametri di convalida e per riempire eventuali dati mancanti. Aggregazione e rappresentazione dei dati I dati possono essere distribuiti in più dataset, connessi tra loro tramite campi comuni, ad esempio un identificatore o una data. In altri casi, ci potrebbero essere gli stessi campi in più dataset (si pensi, ad esempio, alla data di nascita). In entrambi i casi, è necessario un metodo di riconciliazione dei dati oppure la determinazione del dataset che rappresenta il valore corretto. Questa fase integra più dataset per arrivare ad una visione unificata. L’esecuzione di questa fase può diventare complicata a causa delle differenze tra: • • la struttura dei dati; la semantica dei dati. Conciliare tali differenze può richiedere una logica complessa che viene eseguita automaticamente senza la necessità dell’intervento umano. 1.4 Processo di analisi dei Big Data 17 Analisi dei dati Questa fase è dedicata all’attività di analisi vera e propria che, tipicamente, coinvolge uno o più tipologie di attività di elaborazione. La fase di analisi dei dati può essere intrinsecamente iterativa, soprattutto se è esplorativa, nel qual caso l’analisi viene ripetuta fino a quando il modello appropriato o la correlazione non vengono scoperti. L’analisi dei dati (Figura 1.13) può essere classificata in: • • Convalidante: è un’analisi deduttiva, dove la causa del fenomeno indagato viene proposta in anticipo e, successivamente, viene approvata o disapprovata; Esplorativa: è un’analisi induttiva associata al data mining, dove la causa del fenomeno viene individuata durante l’esplorazione dei dati. Figura 1.13. Classificazione della fase dedicata all’analisi dei dati Visualizzazione dei dati La capacità di analizzare enormi quantità di dati e di trovare spunti utili arreca poco valore se gli unici in grado di interpretare i risultati sono gli analisti. Questa fase è dedicata all’utilizzo di tecniche di visualizzazione di dati e di strumenti per comunicare graficamente i risultati dell’analisi, per l’interpretazione efficace dda parte degli utenti aziendali. Questi ultimi devono essere in grado di fornire un feedback, a partire dai grafici. A tal fine è opportuno tenere in considerazione che gli stessi risultati possono essere presentati secondo modalità differenti, le quali possono influenzare l’interpretazione degli stessi. Utilizzo dei risultati dell’analisi Successivamente i risultati dell’analisi vengono resi disponibili agli utenti di business, tramite dashboard, per supportare il processo decisionale aziendale. Questa fase è dedicata a determinare come e dove i dati elaborati durante l’analisi possono essere ulteriormente utilizzati. Questi risultati possono produrre dei “modelli” che richiedono nuovi approfondimenti e comprensioni sulla natura delle relazioni esistenti tra i dati analizzati. I suddetti modelli possono porre le basi per nuovi software. 18 1.4.2 1 Introduzione ai Big Data Tecnologie utilizzate In questa sezione verranno discusse le tecnologie adottate per supportare tutte le attività descritte in precedenza. Online Analytical Processing (OLAP) Questi sistemi vengono utilizzati per effettuare le query di analisi dei dati, cosı̀ come si può vedere in Figura 1.14. Essi fanno parte della Business Intelligence, del Data Mining e dei sistemi di machine learning. Tali sistemi sono rilevanti per i Big Data, dove possono servire come fonte di dati, cosı̀ come per la realizzazione di un Data Warehouse. Essi utilizzano database che memorizzano i dati in strutture multidimensionali. Figura 1.14. Il processo di OLAP Extract Transform and Load Extract Transform and Load (ETL) è un processo di caricamento dei dati da un sistema iniziale in un sistema finale. Il sistema di partenza può essere un database o un’applicazione. L’ETL converte i dati da un determinato tipo ad un altro differente. I dati richiesti vengono dapprima estratti dalle sorgenti, successivamente vengono modificati ed, infine, trasformati dall’applicazione delle regole. Al termine di questo processo, essi sono inseriti o caricati in un sistema di destinazione (Figura 1.15). Nel case study che verrà esposto nel seguito della tesi questo processo viene utilizzato per ripulire i dataset. Data Warehouse Un data wharehouse (Figura 1.16) è un archivio centrale aziendale costituito da dati storici e correnti. Esso è molto utilizzato dalla BI per eseguire varie query analitiche ed è, di solito, interfacciato con un sistema OLAP per supportare le query di analisi multi-dimensionale. Attraverso le importazioni di dati periodici da tutta l’organizzazione, la quantità di dati contenuta in un determinato Data Warehouse continuerà ad aumentare. Per evitare rallentamenti, esso solitamente contiene database ottimizzati, detti database analitici, per gestire le attività di analisi di dati. 1.5 Memorizzazione dei Big Data 19 Figura 1.15. Rappresentazione delle operazioni di ETL Figura 1.16. Rappresentazione di un Data Warehouse 1.5 Memorizzazione dei Big Data Il secondo tema fondamentale dei Big Data, dopo la loro analisi, riguarda la memorizzazione dei dataset. In questo contesto, gli storage presentano caratteristiche profondamente differenti rispetto a quelli dei database relazionali, tipici dei tradizionali sistemi informativi aziendali. 20 1 Introduzione ai Big Data 1.5.1 Concetti Dalla prospettiva della memorizzazione, i dati di interesse devono dapprima essere memorizzati nel loro formato originario e, dopo le attività di riconciliazione, devono essere ulteriormente memorizzati nel formato globale previsto per l’analisi dei dati. La memorizzazione è richiesta ogni volta che si verifica uno dei seguenti eventi: • • • vengono acquisiti dataset esterni; i dati vengono manipolati per essere resi trattabili dall’analisi dei dati; i dati vengono processati da un’attività di ETL. Nelle prossime sottosezioni cercheremo di introdurre i concetti fondamentali che stanno alla base delle attività di memorizzazione dei Big Data. Cluster In informatica, un cluster (Figura 1.17) è un insieme di server, o nodi, tra loro collegati. Questi server, di solito, hanno le stesse specifiche hardware e sono collegati tra loro tramite una rete, per lavorare come una singola unità. Ogni nodo dispone di proprie risorse dedicate. Figura 1.17. Simbolo rappresentativo dei cluster File system distribuiti Un file system è un metodo di archiviazione e organizzazione dei dati su un dispositivo. Un file system distribuito (Figura 1.18) è un file system che può memorizzare file di grandi dimensioni, distribuiti attraverso i nodi di un cluster; esso permette di accedere ai corrispettivi file da postazioni differenti. 1.5 Memorizzazione dei Big Data 21 Figura 1.18. Simbolo rappresentativo dei file system distribuiti Sharding e Replicazione In breve, lo sharding è il processo di partizionamento orizzontale dei dataset in collezioni più piccole. La replicazione, invece, è la creazione di più copie dello stesso dataset. Entrambi i concetti verranno ripresi, ampiamente, in seguito, nel capitolo dedicato a MongoDB. 1.5.2 Tecnologie La tecnologia relativa alla memorizzazione dei dati ha continuato ad evolversi nel tempo, passando dall’utilizzo di un singolo server all’adozione di una rete di dispositivi di memorizzazione. Questa sezione approfondisce l’uso di dispositivi di archiviazione per i Big Data sia su disco che in memoria. Dispositivi di memorizzazione su disco L’archiviazione su disco utilizza, generalmente, unità a disco rigido, a basso costo, per l’archiviazione a lungo termine. L’archiviazione su disco può essere realizzata tramite un file system distribuito o un database; questa tecnologia si basa sulla elaborazione “batch-oriented” (Figura 1.19). Dispositivi di memorizzazione in-memory L’archiviazione “in-memory” (Figura 1.20) è vista come un mezzo per fornire opzioni con performance elevate e modalità avanzate di archiviazione dei dati. Un dispositivo di archiviazione “in-memory” utilizza generalmente la RAM come suo supporto di memorizzazione, per fornire un rapido accesso ai dati. Tali dispositivi eliminano la 22 1 Introduzione ai Big Data Figura 1.19. Esempi di archiviazione dei dispositivi di memorizzazione su disco latenza di I/O tipica dei dischi, nonchè il tempo di trasferimento dei dati tra la memoria principale e il disco rigido. Ciò rende molto più veloce l’elaborazione dei dati. Figura 1.20. Simbolo rappresentativo dei dispositivi di memorizzazione “in-memory” La loro capacità può essere aumentata in maniera massiccia tanto da scalare orizzontalmente un cluster che ospita il dispositivo di archiviazione “in-memory”. Questi strumenti consentono di garantire un flusso veloce di dati in un ambiente di Big Data, fornendo un supporto di memorizzazione che agevola l’elaborazione dei dati in tempo reale. Ciò supporta decisioni aziendali rapide per mitigare una minaccia o approfittare di un’occasione. Un dispositivo di archiviazione “in-memory”, a seconda di come è implementato, è in grado di supportare archiviazioni schema-less. Questi dispositivi possono essere implementati attraverso dei data grid (IMDG) o mediante dei database (IMDB) (Figure 1.21 e 1.22). 1.6 Utilizzo dei Big Data 23 Figura 1.21. Simbolo rappresentativo dei dispositivi IMDG Figura 1.22. Simbolo rappresentativo dei dispositivi IMDB 1.6 Utilizzo dei Big Data I Big Data si configurano come un’importante risorsa per l’innovazione, la competizione e la produttività tra le aziende e vengono considerati come dati che potrebbero generare un grande valore. Allo stato attuale i dati digitali sono ovunque, in ogni settore, in ogni lavoro e in ogni organizzazione; l’abilità di generare, comunicare, condividere e accedere ai dati è stata rivoluzionata ulteriormente dall’aumento del numero di persone che fanno uso di dispositivi mobili e dai sensori che sono connessi con le reti digitali. La rete gioca un ruolo chiave ai fini dello sviluppo del potenziale dei Big Data. Innanzitutto, essa può raccogliere dati a velocità elevata; i dati raccolti consentono alla rete di determinare il contesto, ad esempio abbinando ad essi le informazioni sull’identità o sulla presenza. Inoltre, la rete consente alle imprese di intervenire immediatamente sulle informazioni ricavate dai dati. Le applicazioni per l’utilizzo dei Big Data si possono suddividere nelle seguenti macro-categorie: • • Applicazioni basate su attribuzioni. queste devono recuperare e analizzare le serie di attività prendendo in considerazione fattori quali la frequenza, la sequenza, l’attualità, le soglie e la perdita di efficacia nel tempo trascorso. L’obiettivo finale è quello di accreditare un valore a ciascuna attività. Applicazioni basate su suggerimenti : queste individuano e generano serie di utenti e prodotti simili in base a comportamenti, dati demografici o altri attributi percepibili. A partire dalle tendenze rilevate, le applicazioni riescono a fornire 24 • • • 1 Introduzione ai Big Data suggerimenti su prodotti (come nel caso di Amazon e Netflix) o persone (come accade con Linkedln e Facebook). Applicazioni basate su predizioni e previsione: queste acquisiscono un’ampia gamma di variabili a supporto dei processi decisionali in svariati scenari di mercato. Esse utilizzano al meglio le tecniche statistiche e di data mining per estrarre dalla moltitudine di variabili solo quelle più efficaci per prevedere le prestazioni in particolari situazioni. Le applicazioni predittive avanzate integrano valutazioni su rischi e dati sensibili affinchè i responsabili delle decisioni possano determinare le variabili più importanti nel processo decisionale. Applicazioni basate su approfondimenti : queste fanno leva su tecniche statistiche e di data mining per identificare situazioni o comportamenti “insoliti”. La crescente importanza di queste applicazioni è legata al volume in continuo aumento dei dati dettagliati provenienti da fonti quali click nelle pagine web. Applicazioni basate su benchmark : queste utilizzano al meglio l’analitica che confronta le prestazioni di un’entità rispetto a uno standard di settore, un periodo o un evento precedente. 1.6.1 Open Big Data In realtà, i dati non solo sono sempre più “Big” ma spesso sono anche “open”. Gli Open Big Data (Figura 1.23), cioè i Big Data che vengono messi a disposizione di tutti in modo aperto da parte di organizzazioni, rispettano il principio secondo il quale i dati prodotti dalle istituzioni pubbliche appartengono alla collettività e, pertanto, devono essere resi disponibili, fruibili e riutilizzabili. Alcuni esempi di dati pubblici la cui fruibilità migliorerebbe sensibilmente la vita della comunità sono citati nel rapporto “Open Data, Open Society”, scritto ad Ottobre 2010 da Marco Fioretti per il laboratorio di economia e management presso la scuola Sant’Anna di Pisa. Figura 1.23. Rappresentazione degli Open Big Data 1.6 Utilizzo dei Big Data 25 Per quasi tutti gli ambiti applicativi esiste nel mondo almeno un’iniziativa di Open Data. Si tratta di un patrimonio pubblico, un bacino di dati e applicazioni che si accresce ogni giorno grazie alla volontà delle istituzioni e dei governi, ma anche per merito del contributo dei singoli cittadini. Nell’ambito istituzionale la prima iniziativa in materia di Open Data nasce negli Stati Uniti e si chiama data.gov. Questo progetto ha l’obiettivo di accrescere l’accesso pubblico alle banche dati aperte e ad alto valore aggiunto prodotte dal governo federale degli Stati Uniti. Inoltre, data.gov mira a portare il governo degli Stati Uniti ad un livello di trasparenza senza precedenti, nella convinzione che la chiarezza e l’apertura derivanti da una simile iniziativa rafforzino la democrazia e favoriscano l’efficienza del governo. Questo è un progetto che vuole crescere e basa le proprie prospettive di crescita sulla partecipazione e sulla collaborazione delle persone, sui loro feedback e sui suggerimenti relativamente ai settori per i quali, si vorrebbe che il governo pubblicasse e rendesse accessibili i propri dati. 2 Camtasia Studio Questo capitolo definisce cos’è il software Camtasia Studio, quali sono le sue caratteristiche principali e i suoi scopi. In seguito, vengono esposte le sue funzionalità e viene presentato un video di esempio creato con Camtasia Studio. 2.1 Perchè Camtasia Studio? Il software Camtasia Studio è stato scelto per la presente tesi in quanto è risultato idoneo, grazie alle qualità che descriveremo in seguito, al raggiungimento del nostro obiettivo. Esso è un software semplice da utilizzare ed intuitivo, che, appunto, servirà a creare i nostri “filmati”. Dunque, l’obbiettivo di Camtasia Studio è la creazione di questi software multimediali, i quali dovranno possedere le seguenti qualità: • • • professionalità; chiarezza; interattività. Grazie alle caratteristiche di Camtasia Studio, che vedremo successivamente, sarà chiaro che, tale software è ideale per la realizzazione di video professionali, chiari ed interattivi. 2.2 Il software Camtasia Studio (il cui logo si trova in Figura 2.1) è una suite di software creata e publicata da Techsmith, una società di software che sviluppa strumenti di screencasting, compresi la cattura dello schermo, la registrazione dello stesso e i sistemi di editazione. Questo software serve per la creazione di video tutorial e presentazioni direttamente tramite screencast, o tramite un plug-in di registrazione diretta per Microsoft PowerPoint. L’area dello schermo da registrare può essere scelta liberamente; registrazioni audio o multimediali possono essere effettuate contemporaneamente 28 2 Camtasia Studio Figura 2.1. Logo di Camtasia Studio oppure aggiunte separatamente da qualsiasi altra fonte e integrate nel componente Camtasia Studio del prodotto. Entrambe le versioni di Camtasia (per Windows e per Mac) hanno iniziato come programmi di acquisizione avanzata dello schermo e si sono evoluti per integrare strumenti di acquisizione e post-processing dello schermo, mirati al mercato di sviluppo multimediale educativo e d’informazione. 2.2.1 Installazione Il primo passo per iniziare ad operare con Camtasia è, ovviamente, la sua installazione. Essa presenta un ulteriore punto di forza al software, in quanto, è estremamente semplice e veloce; essa, inoltre, non richiede alcuna configurazione o passaggio particolare ed è alla portata di tutti. Al termine della stessa verrà proposto un video tutorial (Figura 2.2) che descrive, per grandi linee, come muoversi con l’interfaccia del sistema, che introduciamo nella seguente sottosezione. 2.2.2 Interfaccia Al primo avvio, come già affermato, Camtasia propone un breve video introduttivo grazie al quale è possibile cominciare a prendere confidenza anche con l’inferfaccia del programma (Figura 2.3). In basso c’è la timeline attraverso cui gestire i flussi video e quelli audio caricati nel software; in alto ci sono tutti i file multimediali importati nell’applicazione (video, tracce audio, etc.) con l’anteprima del video di output in tempo reale. Nella parte inferiore dello schermo è situata la barra degli strumenti (Figura 2.4) con tutte le funzioni più importanti di Camtasia. Questi sono: • • • • • • Clip bin, per visualizzare i file multimediali importati nel programma; Library, per accedere a tutti i contenuti multimediali inclusi di default nell’applicazione (titoli, frecce etc.); Callout, per inserire descrizioni e frecce all’interno del filmato; Zoom-n-pan, per aggiungere al video vari effetti di zoom; Audio, per accedere alla libreria con gli effetti audio inclusi in Camtasia; Transizioni, per visualizzare tutti gli effetti di transizione applicabili ai video (Figura 2.5). 2.2 Il software 29 Figura 2.2. Tutorial introduttivo del software Figura 2.3. Interfaccia di Camtasia Studio Dopo aver fatto “conoscenza” con l’editor di Camtasia Studio, termina il video di presentazione del programma e ci si può preparare a creare, stavolta per davvero, la prima registrazione. 30 2 Camtasia Studio Figura 2.4. Cattura degli strumenti Figura 2.5. Cattura degli strumenti legati alla gestione delle transizioni 2.3 Caratteristiche principali Camtasia cattura lo schermo, edita e personalizza i video con qualità professionale e permette di condividerli. Questo software consente di: • • • ottenere video di qualità professionale; condividere le proprie creazioni e interagire con gli spettatori; focalizzare l’attenzione degli spettatori realizzando zoom, applicando filtri, effetti o mettendo in risalto i movimenti del mouse o le finestre attive; 2.3 Caratteristiche principali • • 31 includere un’interfaccia di tipo editor video con transizioni e varie opzioni per inserire note o Callouts; integrare le proprie immagini per personalizzare i video, usando un croma. A seguito della descrizione realizzata, si possono, adesso, delineare le funzionalità principali che Camtasia Studio offre ai suoi utenti. 2.3.1 Screen recorder Con Camtasia Recorder si può registrare tutto ciò che si vuole: l’intero schermo, specifiche parti, una regione, una finestra o un’applicazione. Il recorder è disegnato per essere semplice e facile da utilizzare: basta cliccare il tasto REC (Figura 2.6), in alto, per iniziare la registrazione. Figura 2.6. Tasto per iniziare la registrazione Esso, in pratica, è uno dei migliori software professionali per la creazione di screencast, cioè le registrazioni digitali dell’output dello schermo. Come uno screenshot è un’istantanea del monitor dell’utente, lo screencast è un insieme di fotogrammi, registrato in un video, di ciò che l’utente visualizza sul proprio monitor. Lo screencast può essere utilizzato, cosı̀ come in questo caso, per mostrare ed insegnare l’uso di alcune funzioni di un software, ma anche per aiutare gli sviluppatori di software a mostrare i loro lavori. In Camtasia Recorder il presentatore può avviare e fermare la registrazione in qualsiasi momento, mediante una combinazione di tasti di scelta rapida. Inoltre, è possibile interrompere (e riprendere dal punto in cui era stata interrotta) una registrazione. Inoltre, Camtasia Recorder può eseguire il rendering dell’input che è stato catturato in un formato CAMREC. Il file CAMREC può essere salvato su disco, o importato direttamente nel componente di Camtasia Studio per l’editing. 32 2.3.2 2 Camtasia Studio Video editor Grazie al suo potente editor integrato, al termine della registrazione dell’attività nel proprio schermo, Camtasia permette l’editazione dei video stessi, a cui è possibile aggiungere indicazioni e commenti per semplificare l’apprendimento di chi guarda, applicando vari effetti di altissima qualità a questi ultimi, rimuovendone le imperfezioni e ottimizzando il loro formato per vari dispositivi e siti di destinazione. Camtasia permette di ottenere filmati studiati appositamente per la pubblicazione su YouTube, video da condividere su Google Drive e filmati in qualità Full HD da proiettare nel corso di presentazioni pubbliche. Camtasia Studio editor è il componente grazie al quale l’intero prodotto è denominato; esso è ora un multimedia authoring tool con l’interfaccia standard nel settore della timeline per la gestione di più clip impilate a forma di traccia, oltre a ciò, esso presenta una serie di funzionalità aggiuntive di seguito riassunte. Nell’editor di Camtasia Studio è possibile importare oggetti multimediali di vari formati nella libreria, sotto forma di clip, e disporli in ordine di tempo e in tracce impilate, utilizzando il modulo della timeline, che è abbastanza comune tra gli editor video moderni, per i controlli dell’utente. Un’altra caratteristica, molto utile, è la possibilità di salvare i clip multimediali all’interno della scheda “libreria”, evitando di costringere un utente a dover ripetutamente importare i clip/file multimediali comunemente usati. 2.3.3 Audio Camtasia Recorder consente la registrazione audio mentre la cattura dello schermo è in corso; cosı̀, il presentatore può catturare la narrazione dal vivo durante una dimostrazione o una presentazione (Figura 2.7). Camtasia offre, anche, i supporti per il doppiaggio di altre tracce audio o di voci “fuori campo” che si inseriscono durante la registrazione. Figura 2.7. Cattura degli strumenti legati alla gestione dell’audio 2.3 Caratteristiche principali 33 È importante creare delle registrazioni con la migliore qualità audio possibile, perché il codec audio utilizzato nella produzione del video finale può compromettere la qualità audio, e portarla a degradare. Se la fonte audio è accesa ed è impostata correttamente, il misuratore di origine appare attivo nel registratore e per tutte le fonti attive nel menu a tendina “Audio”. Di seguito, vengono riportati alcuni consigli per la registrazione audio: • • • utilizzare un microfono in ottime condizioni; utilizzare le impostazioni di default per l’audio; registrare in un luogo tranquillo; Una particolare funzionalità legata all’audio è l’aggiunta della narrazione; grazie a tale funzionalità, una voce consente di raccontare il video, mentre si impostano le clip sulla timeline secondo l’ordine stabilito. Una volta completata la narrazione, il file audio verrà aggiunto alla timeline, in sintonia con il video clip. In genere, se si vuole raccontare l’intero video, è meglio aspettare e creare la narrazione all’ultimo momento, dopo che tutte le clip sono state aggiunte e modificate. Ci possono essere dei momenti, come quando si mostra un flowchart o un diagramma, in cui non c’è alcuna narrazione. In tal caso, è corretto aggiungere un po’ di musica in background per dare al video un tocco più professionale. 2.3.4 Effetti visivi Durante l’editazione del video, sovrapposizioni di vario tipo possono essere aggiunte dall’utente, che decide le impostazioni da assegnare ad esse. Egli, ad esempio, può decidere quando e come visualizzare il cursore o gli effetti di panoramica e di zoom (come l’effetto Ken Burns). Camtasia Studio offre numerose opzioni per migliorare le sezioni dello schermo registrato, e quindi per attirare l’attenzione dell’utente finale, tramite un cursore o un puntatore, al fine di evidenziare sezioni dello schermo o di illustrare al meglio le azioni del presentatore. Le opzioni sopracitate vengono di seguito elencate: • • • Cursori : vengono definitivamente “accesi” nella registrazione; essi servono, soprattutto, per migliorare la visibilità, utilizzando evidenziatori, riflettori, effetti sonori, e altro ancora (Figura 2.8). Caption: sono didascalie (Figura 2.9) che vengono utilizzate per creare video accessibili a un pubblico più vasto, come: 1. spettatori con problemi di udito; 2. pubblico internazionale che può fruire di sottotitoli e traduzioni sullo schermo. Marker : sono indicatori che servono a: 1. Creare punti di navigazione: se si include un sommario nel video finale, i marcatori vengono visualizzati come voci del sommario. 2. Contrassegnare un’area nella registrazione che deve essere tagliata durante l’editing. 3. Impostare i punti per dividere un video lungo in alcuni video più brevi. 34 2 Camtasia Studio Figura 2.8. Cattura degli strumenti legati alla gestione dei cursori Figura 2.9. Cattura degli strumenti legati alla gestione dei caption Figura 2.10. Cattura dell’area denominata ’canvas’ • • Canvas: rappresenta l’area nella quale si modificano gli elementi contenuti nella timeline, per ottenere un risultato grafico differente (Figura 2.10). Callout: sono “commenti” (Figura 2.11), cioè elementi grafici che vengono visualizzati in primo piano per attirare l’attenzione degli spettatori riguardo importanti oggetti o processi in un video. Tutte queste opzioni possono essere impostate sulla base dei gusti dell’uten- 2.4 Funzionalità 35 Figura 2.11. Cattura degli strumenti legati alla gestione dei callout te; ad esempio, è possibile effettuare rotazioni, capovolgimenti, animazioni durante l’ingresso e l’uscita, disegni, ingrandimenti e riduzioni. 2.4 Funzionalità La grande popolarità di Camtasia Studio e i conseguenti aggiornamenti che ne sono derivati, hanno consentito l’introduzione di parecchie funzionalità. In questa sezione prendiamo in considerazione le più importanti. Zoom & Pan Lo Zoom & Pan (Figura 2.12) permette di ingrandire e rimpicciolire alcune aree del video, richiamando l’attenzione e permettendo al pubblico di vedere nello schermo importanti movimenti o azioni che, altrimenti, potrebbero non suscitare l’attenzione. L’opzione di Zoom & Pan funziona inserendo i fotogrammi-chiave che indicano a Camtasia Studio quando eseguire lo zoom-in e quando eseguire lo zoom-out. I fotogrammi-chiave sono, semplicemente, i marcatori che si mettono sui fotogrammi desiderati nel video clip. In genere, i fotogrammi-chiave vengono utilizzati in coppia, un fotogramma-chiave per eseguire lo zoom-in e uno per lo zoom-out. Smart Focus È una tecnologia che tiene traccia di dove si svolge l’azione durante la registrazione. Essa, quindi, produce un video che consente di ingrandire le parti che si ha bisogno 36 2 Camtasia Studio di mostrare. Lo Smart Focus (Figura 2.12) è ideale per i video dove le dimensioni sono grandi (ad esempio, le registrazioni dello schermo intero ) e si desidera produrre il video finale in dimensioni più piccole (ad esempio, per il Web). Durante la registrazione, Smart Focus raccoglie i dati sulle azioni completate e sul movimento del cursore durante la registrazione stessa. Esso predice dove aggiungere l’animazione data dallo Zoom & Pan, risparmiando il tempo necessario per aggiungerla manualmente. Figura 2.12. Cattura degli strumenti legati alla gestione dello Zoom & Pan e dello Smart Focus Quizzing Per sottolineare l’interattività dei video che Camtasia è in grado di creare, è possibile inserire nei video stessi dei quiz per testare la conoscenza degli spettatori attraverso scelte multiple, spazi bianchi da riempire, risposte brevi e domande vero/falso. Inoltre, si possono aggiungere domande aperte per ottenere un feedback o raccogliere informazioni sull’utente. PowerPoint button Gli utenti possono anche scaricare un componente aggiuntivo per Microsoft PowerPoint, il PowePoint button, che permetterà loro di avviare facilmente la registrazione di una presentazione all’interno di PowerPoint stesso. Quando si utilizza questa funzionalità conviene che la presentazione utilizzi contrasti forti, sfondi semplici, 2.5 Case study: costruzione di un video di esempio 37 immagini ben ritagliate, animazioni semplici e una stessa transizione dall’inizio alla fine. Produce & Share Il processo di produzione, chiamato anche rendering, crea un file di output basato sulla sequenza di clip video, clip audio, immagini ed effetti presenti sulla timeline. Dopo aver prodotto i clip video, è possibile esportarli in una varietà di formati (MP4, WMV, MOV, AVI, ecc.) con le impostazioni di produzione personalizzate di Camtasia. Si possono condividere le registrazioni o aggiungere le stesse alle presentazioni di Microsoft PowerPoint, cosı̀ tutti possono vederle in una sola volta. Inoltre, è consentito inviare le registrazioni direttamente agli account che più si utilizzano, come YouTube, Vimeo, Google Drive, e molto altro ancora (Figura 2.13). Figura 2.13. Cattura degli strumenti legati alla condivisione del filmato 2.5 Case study: costruzione di un video di esempio Dopo aver discusso ampiamente sulle possibili operazioni che consente di effettuare Camtasia Studio, possiamo creare un video di base, come esempio di ciò che si ottiene con questo software. Nell’effettuare tale case study, verranno ricoperti i seguenti argomenti: • effettuare una registrazione; 38 • • • 2 Camtasia Studio editare il video usando le opzioni di ritaglio e divisione; aggiungere una transizione al video; produrre il video finale. Il primo passo nella creazione di un progetto di Camtasia Studio è quello di registrare lo schermo. Camtasia Studio registra automaticamente tutte le attività dinamiche sullo schermo del PC, tra cui il movimento del mouse, l’immissione di testo e lo scorrimento delle finestre. Viene visualizzata la finestra di registrazione guidata, nella quale viene scelta l’opzione schermo (Figura 2.14). Figura 2.14. Cattura degli strumenti legati alla registrazione dello schermo Cosı̀ il cursore si trasformerà in un mirino. Trasciniamo il puntatore a croce per selezionare l’area dello schermo da registrare e rilasciamo dopo che la selezione è stata effettuata. Abilitiamo la disattivazione dell’accelerazione del display durante l’opzione di cattura. Questo darà i migliori risultati di registrazione. Adesso clicchiamo Fine e, una volta che la procedura guidata si riduce al minimo, si è pronti per iniziare la registrazione e premere il tasto Record. Dopo aver registrato i movimenti sullo schermo, verrà richiesto di salvare il video. Immettiamo il nome di questo video nel campo fornito, cerchiamo e selezionamo una cartella in cui archiviare questo film e clicchiamo su Salva. A questo punto il video verrà visualizzato all’interno del Clip Bin ed è pronto per essere editato. 2.5 Case study: costruzione di un video di esempio 39 L’editing consente di ritagliare i pezzi del video da eliminare. Esso consente, anche, di dividere il video in due o più pezzi, rendendo facile l’inserimento di transizioni o grafici tra le scene. La prima cosa che dobbiamo fare è trascinare il video e rilasciarlo sulla timeline, poichè la modifica può avvenire solo sulle clip che si trovano in essa. Una volta che la clip è sulla timeline, il video viene visualizzato all’interno dell’area di anteprima dello schermo. Utilizziamo l’opzione di taglio per rimuovere le parti indesiderate del video, selezionandole dalla timeline. Successivamente, scegliamo l’opzione di divisione del video per suddividerlo in due pezzi, che verranno, entrambi, posizionati nella timeline. A questo punto, procediamo con l’aggiunta di una transizione. All’interno dell’elenco delle attività, clicchiamo su Transizioni. Si passerà alla visualizzazione storyboard e verrà mostrata la finestra degli effetti delle transizioni. Clicchiamo su un effetto per vedere come funzionerà (Figura 2.15), lo trasciniamo nella storyboard, nella zona tra le due clip, e scegliamo Fine per tornare alla schermata principale. Figura 2.15. Utilizzo della transizione nel video di esempio A questo punto, salviamo il progetto, sul quale potremo tornare indietro e continuare a lavorarci in un secondo momento. Finora, abbiamo lavorato con un file di progetto. Fino a quando non produciamo il video, non abbiamo un file video che possa essere riprodotto in un lettore. Per produrre il video come file AVI, scegliamo File e, dopo, Produci il video come. Una volta effettuato ciò, inseriamo il titolo e tutte le informazioni possibili ed otteniamo il nostro video di esempio. Ccompletata la produzione, il video verrà riprodotto per una revisione. 3 MongoDB Questo capitolo presenta, dapprima, un’attenta analisi dei modelli NoSQL. In seguito, verrà fatta una descrizione del DBMS MongoDB e dei dettagli tecnici ad esso relativi. 3.1 I modelli NoSQL I DBMS relazionali hanno dominato in modo indiscusso il settore delle basi di dati per circa quarant’anni, ma i cambiamenti avvenuti nell’informatica durante l’ultimo decennio ne hanno messo in luce alcuni limiti. Con la nascita del web 2.0, l’affermarsi ed il diffondersi in modo sempre più massivo e permeante del mobile e dei social network abbiamo assistito ad una crescita esponenziale delle moli di dati disponibili in rete. Ora tutto è informazione, i dati da elaborare e gestire non sono dati strutturati, ma anche, e soprattutto, dati non strutturati e semi-strutturati, generati dalle sorgenti più disparate(Figura 3.1). L’immane quantità di informazioni rese disponibili on-line dagli utenti ne esprimono pensieri, gusti, opinioni ed interessi; essa costituisce, quindi, una vera e propria miniera d’oro per le aziende che, attraverso opportune analisi di tali dati, possono ottenere un feedback ampio ed immediato per le loro politiche di marketing. Di fronte alla crescita smodata delle informazioni da mantenere ed elaborare, assieme all’aumento del numero di utenti che chiedono di avere accesso ad esse in modo concorrente, nonchè all’incremento della quantità di operazioni che su tali dati devono essere eseguite, la scalabilità acquisisce un ruolo fondamentale. Una possibilità è offerta dallo scaling verticale, ossia dall’adozione di macchine più potenti; tuttavia, questa soluzione rischia di essere molto costosa e, comunque, dalle possibilità inevitabilmente limitate. Una seconda e più efficace opportunità è rappresentata dallo scaling orizzontale, ossia dalla distribuzione del dataset, e delle operazioni che su di esso si ha necessità di applicare, su un cluster di macchine, senza che vi sia nessuna porzione di memoria condivisa fra i server, al fine di parallelizzare le operazioni e ottenere un minore quantitativo di dati da elaborare per singolo server. Uno dei maggiori limiti del modello relazionale è, proprio, la difficoltà di realizzazione della scalabilità orizzontale; esso non è progettato per operare in modo 42 3 MongoDB Figura 3.1. Rappresentazione della quantità di informazioni presenti online Figura 3.2. Differenze tra RDBMS e NoSQL efficiente sui cluster. La rigidità dello schema, propria di questo modello, inoltre, mal si adatta alla dinamicità e flessibilità della rete, e dei requisiti dei dati che ne vengono attualmente estratti. Tutto ciò, insieme alla incapacità dei sistemi relazionali di continuare a garantire prestazioni elevate anche di fronte a moli di dati cosı̀ ingenti, ha fatto nascere la necessità di cercare nuove soluzioni. Da quı̀, la nascita di una molteplicità di nuove tecnologie che si distaccano dai tradizionali RDBMS e che si riuniscono sotto il termine NoSQL, acronimo di “Not only SQL”(Figura 3.2). Il movimento NoSQL nasce nel 2009 come conseguenza di una serie di conferenze tenute da Jon Oskarsson e, in breve tempo, se ne sviluppano numerose soluzioni alternative dalle caratteristiche più disparate, per poter affrontare la gestione dei Big Data(Figura 3.3). Per stabilire un punto di partenza, considereremo la definizione di DBMS NoSQL fornita da Pramod e Fowler: 3.1 I modelli NoSQL 43 Un insieme poco definito di database principalmente open-source, principalmente sviluppati nel XXI secolo, principalmente che non fanno uso di SQL . Per completare questa, occorre aggiungere che: • • • Essi non utilizzano il modello relazionale. Essi non presuppongono una struttura rigida o uno schema dove si descrivono le proprietà che i dati dovranno avere e le relazioni tra di essi. I DBMS non relazionali puntano in fatti ad essere più flessibili, in quanto ormai i flussi di dati che arrivano dalle sorgenti massive del web presentato notevoli irregolarità e sono più sparpagliati e sparsi (Big Data). La maggior parte di essi è stata progettata da subito per funzionare “bene” in cluster. Figura 3.3. Big Data e NoSQL Per aumentare il livello della prestazione nella gestione e nell’interrogazione dei dati si punta, dunque, ad un sistema distribuito, il quale si basa sulle proprietà del Teorema CAP, presentato nel 2000 da Eric Brewer in un KeyNote alla conferenza “Principle of distribuited Computing” (Figura 3.4). Esso specifica come in un contesto distribuito si possano identificare 3 proprietà fondamentali: • • • Consistency (Coerenza): i dati rimangono consistenti alla fine dell’esecuzione di un’operazione, ovvero, una volta effettuato un update, tutti i client dispongono degli stessi dati. Availability (Disponibilità): ogni richiesta riceverà una risposta sia in caso di successo che in caso di fallimento; in altre parole, il sistema è sempre disponibile. Partition Tolerance (Tolleranza al Partizionamento): il sistema continua a funzionare nonostante la presenza di un meccanismo di comunicazione inaffidabile e di eventuali perdite di messaggi. Il teorema enuncia l’impossibilità di avere tutte e tre le caratteristiche nello stesso momento; pertanto, se ne possono implementare al più due a discapito della terza. Di conseguenza, se si sceglie di non avere una tolleranza al partizionamento 44 3 MongoDB Figura 3.4. Rappresentazione del CAP Theorem si avranno problemi sulla scalabilità verticale, che è sicuramente più costosa. Se si rinuncia alla disponibilità dobbiamo attendere che vengano risolte alcune richieste a discapito delle prestazioni. Se si rinuncia alla coerenza si avrà, per un periodo, un disallineamento dei dati sui nodi. A fronte dei risultati offerti dal teorema CAP, i database di tipo NoSQL, per poter essere scalabili come richiesto, devono sacrificare delle proprietà e, dunque, non possono in alcun modo aderire strettamente al modello ACID. Seppur non valga per tutti i DBMS NoSQL, si ha che la maggioranza di essi segue una logica operazionale denominata BASE (Basically Available Soft-state Eventual consistency), nella quale si pongono in primo piano le prestazioni e la disponibilità dei dati, a fronte di una minore consistenza. Quest’ultima viene definita “eventuale” in quanto non è possibile garantirla sempre a priori, ma è comunque presente in una forma più debole. 3.1.1 I vantaggi dei database NoSQL Dalle caratteristiche citate si intravedono già i vantaggi di una soluzione NoSQL rispetto a una SQL, le cui novità possono essere riassunte in questo modo: • • Non si utilizza SQL come linguaggio di query. Ciascun progetto prevede un proprio modo di dialogare con il database, anche se la maggior parte ha mantenuto una certa similarità con SQL in modo da essere più facile da imparare. I database NoSQL sono progetti per lo più open source. 3.1 I modelli NoSQL • • 45 La progettazione è stata guidata dall’obiettivo di rendere il database utilizzabile su cluster e, per questa ragione, ciascun database propone delle soluzioni per garantire consistenza e distribuzione dei dati. Esistono, anche, dei DBMS che rientrano nella categoria NoSQL ma che non sono cosı̀ fortemente legati ai cluster, mantenendo, comunque, grosse differenze con i DBMS relazionali a livello di modello di dati. A differenza dei DBMS relazionali, quelli NoSQL operano schemaless, ovvero privi di schema; essi consentono, quindi, di aggiungere liberamente nuovi campi, senza che questo comporti modifiche o problematiche a livello strutturale. A tal proposito, Rick Cattell, nell’articolo “Scalable SQL and NoSQL Data Stores” elenca i vantaggi apportati dalla maggioranza dei sistemi di tipo NoSQL: • • • • • • Possibilità di replicare e distribuire partizioni di dati su più server. Possibilità di scaling orizzontale per “operazioni semplici”;ciò consiste nella capacità di un’applicazione di crescere e decrescere in base alle necessità richieste dagli utenti, introducendo o togliendo dei nodi al sistema senza compromettere il suo funzionamento. In una qualche maniera si riesce, dunque, a parallelizzare il carico del lavoro. Grazie a questo approccio, avendo più nodi, l’errore in un nodo non pregiudica il funzionamento dell’intero database e, quindi, il sistema risulta più sicuro. Un altro vantaggio è, cartamente, il costo, in quanto, con un’applicazione scalabile, si possono creare più nodi a basso costo. Inoltre, è possibile rispondere alla sempre più pressante esigenza di suddivisione del volume dei dati e del carico di lavoro su un insieme di macchine cosı̀ da: 1. riuscire a gestire moli di dati che, per la loro dimensione, non sarebbe possibile mantenere su singola macchina; 2. migliorare le prestazioni; 3. distribuire le operazioni di scrittura e lettura su più server, aumentando la quantità di scritture/letture che il sistema è in grado di effettuare in un certo intervallo di tempo. Un’interfaccia o protocollo di chiamata semplificato, a differenza delle implementazioni SQL basate su binding. Un modello di concorrenza più debole rispetto a quello garantito dai DBMS che supportano tutte le proprietà ACID. Un uso efficiente della memoria e di indici distribuiti. La capacità di aggiungere dinamicamente nuovi attributi. È importante sottolineare che uno dei motivi che ha spinto verso l’utilizzo dei DBMS NoSQL è che, in alcuni progetti, l’integrità dei dati non è prioritaria, nè tantomeno obbligatoria. In questo contesto accade che: • • Computer e sistemi di memorizzazione predisposti a garantire performance e sicurezza delle informazioni di altissimo livello possono essere sostituiti con sistemi dotati di caratteristiche di più facile accesso, sia in termini di reperibilità del materiale che di costi. L’accesso ai dati diventa molto più rapido: non dovendo sempre garantire una consistenza degli stessi, le letture e le scritture delle informazioni possono essere eseguite senza attendere particolari eventi. 46 3 MongoDB Inoltre, dal momento che quasi tutti i DBMS NoSQL sono stati progettati sin dal principio per funzionare in modalità distribuita, ovvero su più server, estremamente vantaggiosi risultano essere i seguenti i modelli di distribuzione che essi utilizzano: • • Replica delle informazioni : la replicazione dei dati è uno stratagemma utilizzato con diversi scopi. Il primo è che, distribuendo gli stessi dati su più server, aumenta la loro disponibilità e l’affidabilità dell’insieme. Se un nodo cade, infatti, ci sono gli altri che possono sostituirlo mentre viene riparato e rimesso online. Il secondo scopo è quello di migliorare le performance in lettura. Avere molti nodi con gli stessi dati permette una parallelizzazione praticamente lineare delle letture. Sharding dei dati : questa modalità è la più complessa; essa prevede, infatti, il partizionamento dei dati in base a vari criteri sui vari nodi, mantenendo gli stessi vantaggi della replicazione (affidabilità, prestazioni in lettura) e aggiungendone di nuovi. Il principale vantaggio dello Sharding è che, per come viene utilizzato nei database aggregate-oriented, ha un effetto positivo anche sulle scritture, oltre che sulle letture. I dati inviati dai client, infatti, vengono scritti sul primo nodo disponibile, con tempi di risposta simili alla modalità single server. Per concludere, si può notare come uno dei risultati più apprezzabili raggiunti dalla diffusione della filosofia NoSQL è la possibilità di scelta: abbiamo, ora, a disposizione una molteplicità di tecnologie differenti, approcci dissimili con i quali è possibile e necessario confrontarsi per poter compiere una scelta consapevole ed efficace. Un ulteriore elemento di distacco rispetto ai sistemi di gestione di basi di dati tradizionali sta nel fatto che i prodotti di tipo NoSQL, normalmente, non prevedono le operazioni di Join, largamente utilizzate, invece, nei sistemi relazionali. Tali operazioni sono notoriamente complesse ed onerose e, quindi, potenzialmente dannose dal punto di vista prestazionale; ne consegue un risparmio, in termini economici, che le aziende possono trarre dall’uso di questi sistemi piuttosto che dei tradizionali data store relazionali. Si tratta, infatti, per lo più di implementazioni open source e, per di più, grazie al supporto offerto allo scaling orizzontale, non si ha necessità di acquistare hardware particolarmente performante e costoso per poter mantenere prestazioni elevate(Figura 3.5). Di contro, la semplicità di questi DBMS comporta, anche, degli svantaggi: non essendoci dei controlli fondamentali sull’integrità dei dati, il compito ricade totalmente sull’applicativo che dialoga col database. Altra pecca potrebbe essere la mancanza di uno standard universale (come può essere l’SQL); ogni database ha, infatti, le proprie API e il proprio metodo di memorizzazione e di accesso ai dati. Nonostante ciò, i DBMS non relazionali, pur non essendo la soluzione definitiva al problema del salvataggio e recupero dei dati, visto l’avvento di Social Network e del cloud, risultano la migliore soluzione in questi contesti dove ogni giorno bisogna salvare un numero elevatissimo di dati e, solo grazie alla scalabilità orizzontale dei database No-SQL, e quindi all’aggiunta di server facili da gestire, è possibile ottenere delle performance soddisfacenti, molto migliori rispetto a quelle garantite dai soliti DBMS relazionali. Esempi di applicazioni che utilizzano questo modello sono, infatti, Twitter, Facebook e Amazon. 3.1 I modelli NoSQL 47 Figura 3.5. NoSQL e le sue qualità 3.1.2 Classificazione dei DBMS NoSQL Come abbiamo già detto, il movimento NoSQL offre una ricca gamma di soluzioni fra le quali è possibile scegliere sulla base della specifica classe di problemi che si ha necessità di affrontare. Questi sistemi si distinguono sulla base dell’approccio adottato nella rappresentazione, nella memorizzazione e nella gestione dell’informazione, adottando strutture dati differenti, offrendo funzionalità distinte, più o meno complesse, seguendo differenti politiche nella salvaguardia della consistenza e della disponibilità dei dati, cosı̀ come nella gestione delle informazioni in ambienti distribuiti e replicati. La varietà di soluzioni attualmente disponibili può essere organizzata e suddivisa in alcune classi principali di sistemi(Figura 3.6); si tratta delle quattro tipologie seguenti: • • • • DBMS DBMS DBMS DBMS chiave/valore (key/value store); orientati alle colonne (column-oriented store o column family store); a grafo (graph store); orientati ai documenti (document-oriented store). Il modello chiave-valore è, forse, il più semplice dei quattro che stiamo per analizzare. Come è facile intuire le informazioni vengono memorizzate come coppie chiave-valore, dove ciascuna chiave individua univocamente il valore a cui è associata e costituisce la sola via di accesso ad esso. Questi DBMS, infatti, permettono di accedere ai dati esclusivamente a partire dalle loro chiavi, e non prevedono la possibilità di costruire indici secondari (secondary index); il solo indice presente è quello 48 3 MongoDB Figura 3.6. Classificazione dei DBMS NoSQL costruito sulla chiave che consente di avere accesso in modo rapido e semplice alle informazioni mantenute nel database. I vantaggi garantiti dall’uso di questo tipo di DBMS sono l’affidabilità e la scalabilità dei dati, la portabilità e le elevate prestazioni per operazioni semplici, quali, ad esempio, l’inserimento o la cancellazione di una o più coppie chiave-valore. L’attrattiva maggiore dei sistemi chiave-valore è costituita dalla possibilità di scaling e dalle performance elevate che questi sistemi sono in grado di offrire, grazie alla semplicità delle modalità con cui si ha accesso ai dati. I sistemi orientati alle colonne, invece, riprendono la forma tabellare tipica dei database relazionali; anche questi DBMS collezionano infatti, i dati in tabelle bidimensionali, costituite da righe e colonne. Ci sono, però, delle sostanziali differenze rispetto adi DBMS relazionali, primo fra tutti il fatto, suggerito dall’appellativo assegnato a questa classe di DBMS, che le informazioni non sono, in questo caso, memorizzate per righe ma per colonne. I sistemi orientati alle colonne si lasciano alle spalle, anche, la rigidità tipica dei loro predecessori basati sul modello relazionale; le righe di una stessa tabella non sono, infatti, costrette a possedere esattamente gli stessi attributi; ciascuna riga è costituita esclusivamente dalle colonne necessarie, ed è possibile aggiungerne di nuove in qualsiasi momento. In questo modo si ha un’evidente risparmio di memoria, soprattutto nel caso di tabelle sparse, e si rende il database estremamente più agile e più flessibile. DBMS largamente utilizzati nei social network sono quelli che adottano il modello a grafo, poiché, per questi sistemi, la rappresentazione delle associazioni e dei collegamenti logici esistenti fra le informazioni in essi memorizzate è il cuore pulsante, l’elemento cardine di ogni database. Essi sono, pertanto, adatti alla memorizzazione di dati caratterizzati da una complessa rete di connessioni e relazioni. La struttura dati di base per questi sistemi è, ovviamente, il grafo. Le informazioni 3.1 I modelli NoSQL 49 vengono, quindi, rappresentate sotto forma di nodi che memorizzano e descrivono i singoli dati, e di archi, che modellano le relazioni esistenti fra di essi. I collegamenti e le connessioni fra elementi di questo tipo possono essere numerosi ed estremamente complessi, e vengono rappresentati come archi che connettono fra di loro coppie di nodi. I database a grafo non nascono con questa forte spinta verso lo scaling orizzontale, e ciò ha avuto un evidente impatto sul modello dei dati su cui si basano, portandoli a gestire record di piccole dimensioni ma caratterizzati da correlazioni strette, ed anche molto complesse, che rendono difficile la distribuzione dei dati su più macchine. I sistemi a grafo, pertanto, si adattano con fatica allo scaling orizzontale; per poter aumentare le prestazioni in lettura ricorrono, spesso, alla replicazione dei dati su più nodi, accrescendo, cosı̀, la capacità complessiva di ricerca e di lettura del sistema. L’ultima delle tipologie di DBMS NoSQL che dobbiamo trattare è quella orientata al documento, o document-oriented. Si tratta di DBMS in cui l’unità primaria di informazione è costituita da documenti (document), comunemente rappresentati mediante formati semplici e noti come JSON, BSON (ossia JSON Binario) e XML (acronimo di eXtensible Markup Language). Un documento è incredibilmente simile ad un oggetto dei moderni linguaggi di programmazione; può, infatti, avere più campi (field) contenenti valori tipizzati che possono essere semplici o complessi (come documenti innestati). I DBMS orientati al documento, permettono, solitamente la costruzione di indici su ogni campo dei documenti di un certo database o di una certa collezione, mettendo, spesso, a disposizione degli utenti svariate tipologie di indici. Figura 3.7. Caratteristiche dei vari database NoSQL messe a confronto Continueremo lo studio dei sistemi document-oriented attraverso un’analisi approfondita di MongoDB, condotta nella prossima sezione. Per ora possiamo concludere osservando che il traguardo più importante raggiunto dal movimento NoSQL e dallo sviluppo rapido, ampio, costante e dinamico delle svariate soluzioni da esso proposte, è quello di aver dato vita ad una moltitudine di alternative, fornendo alle aziende, e a chiunque altro abbia interesse a gestire ed elaborare grandi moli di dati, la possibilità di sfruttare sistemi differenti, con qualità e caratteristiche distinte e peculiari, in ambiti diversi(Figura 3.7). Con il termine “polyglot persistent model” si fa riferimento, proprio, all’uso congiunto di DBMS differenti con il fine di ottenere un sistema complessivo potente e specializzato, capace di affrontare al 50 3 MongoDB meglio condizioni e problematiche differenti sfruttando in modo abile e consapevole le caratteristiche specifiche di ciascuna delle sue parti. Nella Figura 3.7 riassumiamo le caratteristiche principali che contraddistinguono le tipologie viste, mentre nella Figura 3.6 mostriamo alcuni dei DBMS NoSQL più diffusi. Figura 3.8. Alcuni dei DBMS NoSQL più diffusi 3.2 Introduzione a MongoDB In questo studio di tesi ci siamo concentrati sui DBMS orientati ai documenti e, in particolare, su MongoDB, che riesce a coniugare aspetti importanti, necessari e vantaggiosi tipici dei sistemi relazionali con la flessibilità e la dinamicità nella gestione e nella modellazione dell’informazione, propria dei sistemi NoSQL, cosı̀ come l’elevata scalabilità che questo sistema consente con facilità di ottenere, permettendo il raggiungimento di performance invidiabili anche in presenza di dataset di dimensioni ragguardevoli, la cui gestione su singolo server potrebbe risultare complessa, se non proibitiva, anche per i sistemi più avanzati e potenti. La varietà di funzionalità, anche complesse, offerte da MongoDB, combinate con la semplicità di utilizzo di questo DBMS, lo rendono eclettico e polivalente, adatto, dunque, ad inserirsi in modo efficace, produttivo ed agevole in svariati ambiti e contesti. D’altronde, come si evince dall’articolo “The Forrester Wave: NoSQL Document Databases, Q3 2014” di Noel Yuhanna, la diffusione dei DBMS orientati ai documenti è in espansione, e MongoDB è stato decretato il sistema leader da un’analisi condotta dalla Forrester Research già nel settembre del 2014, che ha confrontato questo DBMS con altri tre della stessa tipologia prendendo in considerazione quasi 60 criteri differenti, fra i quali figurano le performance, la scalabilità e l’elevata disponibilità del sistema. Le motivazioni della scelta di MongoDB come caso di 3.2 Introduzione a MongoDB 51 studio risalgono non solo nell’elevata popolarità che questo prodotto gode all’interno del panorama non relazionale, ma anche nello sviluppo rapido e costante a cui è soggetto. Attraverso un ciclo di rilasci frequenti, MongoDB ha visto espandere notevolmente le proprie caratteristiche negli ultimi anni. MongoDB, il cui nome trae origine dal termine “humongous” cioè “gigantesco” o “colossale”, è un DBMS orientato ai documenti prodotto e supportato dall’azienda americana 10gen. Iniziato lo sviluppo il 9 ottobre 2007, il prodotto ha visto la prima release stabile nel febbraio 2009 a cui è seguito un ciclo di rilasci mirati non solo alla correzione di bug, ma anche all’aggiunta di funzionalità che, in breve tempo, lo hanno trasformato notevolmente, rendendolo adatto a un pubblico sempre più vasto. Come la maggior parte delle soluzioni NoSQL, MongoDB è un sistema open source; è, infatti, sottoposto alla licenza libera Affero General Public License v.3, mentre i driver che permettono ai linguaggi di programmazione di interfacciarsi ad esso sono rilasciati sotto licenza Apache 2.0 ; la flessibilità di tali licenze ha permesso alla community di MongoDB di ampliarne notevolmente le caratteristiche(Figura 3.9), arrivando, cosı̀, ad operare su tutti i maggiori sistemi operativi (Windows, GNU/Linux, OS X e Oracle Solaris) ed a supportare più di 30 linguaggi di programmazione differenti, fra i quali: C, C++, C#, Java, Javascript, PHP, Python e Perl. Figura 3.9. Infrastruttura Amazon AWS che impiega MongoDB Nel Febbraio 2015 MongoDB risultava essere il quarto DBMS più popolare al 52 3 MongoDB mondo e il più noto dei document-oriented data store e, più in generale, di tutti i sistemi NoSQL. Si tratta, in effetti, di un sistema potente, flessibile, veloce, scalabile in modo agevole ed efficiente con il quale è, peraltro, semplice iniziare a muovere i primi passi. 3.2.1 Cos’è MongoDB MongoDB (il cui logo è mostrato in Figura 3.10) è un DBMS NoSQL orientato ai documenti che, come possiamo ben capire dalle sue caratteristiche, essendo NoSQL , non si preoccupa tanto di soddisfare le proprietà ACID, tipiche dei database relazionali. Esso, piuttosto, deve il successo alle proprie caratteristiche interessanti: è scalabile, “performante”, orientato ai documenti e open source. Figura 3.10. Logo del DBMS MongoDB Come ogni altro sistema orientato ai documenti, anche MongoDB si basa sul concetto fondamentale di documento, ossia un insieme di coppie campo-valore. Nel caso di MongoDB, il campo è costituito in ogni caso da una stringa mentre il valore, che è sempre tipizzato, può appartenere ad uno qualsiasi dei tipi di dato supportati da BSON (Binary JSON, una estensione del formato JSON con il supporto a tipi aggiuntivi), il formato adottato da MongoDB. Fra questi tipi di dato si hanno: double, stringhe, date, booleani, timestamp, espressioni regolari, simboli, integer a 32 bit e a 64 bit, ma anche tipi di dati complessi, come gli array. MongoDB consente, 3.2 Introduzione a MongoDB 53 anche, l’esistenza di documenti innestati e, addirittura, array di documenti memorizzati come valori di specifici campi. La dimensione massima per un documento BSON è di 16 megabyte; pertanto, esiste un limite superiore al quantitativo di dati che è possibile racchiudere in un unico documento. Nella Figura 3.11 viene riportato un esempio di struttura di un documento in formato JSON. Figura 3.11. Esempio di struttura di un documento con formato JSON MongoDB prevede un ulteriore livello di suddivisione ed organizzazione dei documenti, ovvero le collezioni (collection). Ciascuna collection è identificata dal suo nome (ovvero una stringa UTF-8) e raggruppa documenti logicamente e strutturalmente simili, ma non necessariamente identici. MongoDB non prevede, infatti, la definizione a priori di uno schema rigido ed immutabile ma lascia agli utenti massima libertà nella scelta dei campi da inserire in ciascun documento, indipendentemente dalla struttura dei restanti documenti della medesima collection. Esiste, però, un’eccezione, rappresentata dal campo id, che deve essere necessariamente presente in ogni documento come primo campo. Il campo id svolge un ruolo simile a quello della chiave primaria nei database relazionali; identifica, infatti, univocamente ciascun documento di ciascuna collection. Se, da un lato, in MongoDB, i singoli documenti sono organizzati in collection, dall’altro le collection stesse sono riunite in database. Un database, infatti, raggruppa in sé più collection, memorizzate su disco in un unico insieme di file ed è anch’esso identificato dal nome che è stato attribuito ad esso dagli utenti. Una stessa istanza di MongoDB può gestire più database, ciascuno del tutto indipendente dagli altri. Non è necessario richiedere esplicitamente la creazione di una collection o di un database: perché questi vengano eseguiti dal sistema è sufficiente usarli come se esistessero già. L’inserimento di un documento in una collection ‘‘products’’ attualmente non presente nel database corrente, ad esempio, determina la nascita della collection e l’inserimento in essa del documento specificato. Tanto le cancellazioni quanto ogni altra operazione di scrittura in MongoDB vengono eseguite in modo atomico ed indivisibile esclusivamente se applicate ad un unico documento, indipendentemente dalla complessità dei dati che esso contiene. Il problema nasce quando si ha necessità di modificare più documenti. Il sistema non è in grado, di per sé, di garantire l’isolamento di un’operazione di scrittura complessa impedendo, in ogni caso, ad altri utenti di accedere agli stessi dati, in lettura o in scrittura. 54 3 MongoDB Il solo modo per avere atomicità è racchiudere tutte le informazioni da modificare in un solo documento, strutturandolo in modo complesso. Come vedremo, in effetti, in MongoDB non è insolito scegliere una rappresentazione denormalizzata dei dati, che prevede di mantenere unite informazioni che in un database relazionale avremmo dovuto assolutamente separare. Per tentare di emulare il comportamento delle transazioni tipiche dei sistemi relazionali si può, però, ricorrere ad una pratica suggerita da MongoDB ed indicata con il nome di “two-phase commit”(Figura 3.12). I lock gestiti da MongoDB consentono accessi multipli in lettura ma impongono un accesso esclusivo in caso di modifica dei dati, impedendo, cioè, la presenza di letture e/o scritture su dati per i quali vi sia già un lock in scrittura. Figura 3.12. Rappresentazione della pratica denominata “Two-phase commit” Anche le tecniche di locking messe in atto dal sistema, cosı̀ come l’assenza delle transazioni ACID, puntano, dunque, a massimizzare le prestazioni, acconsentendo a rinunciare ad alcune delle garanzie tipiche dei sistemi relazionali per rendere il sistema quanto più possibile leggero, rapido e prevedibile nelle sue performance. Dunque, MongoDB è stato realizzato in maniera tale da avere alte prestazioni in lettura e scrittura; le letture più consistenti, infatti, possono essere distribuite su più server replicati. Le interrogazioni sono più semplici e veloci rispetto ai DBMS relazionali dove i dati sono separati in tabelle multiple e necessitano, quindi, di join per raggruppare i risultati. L’approccio basato sui documenti, tipico di MongoDB, rende possibile la rappresentazione di relazioni gerarchiche complesse attraverso i documenti nidificati e gli array. Per quanto riguarda il CAP Theorem, MongoDB utilizza le proprietà di Partitioning e Consistency. I dati non sono disponibili nel momento in cui il nodo principale, detto primario, non risulta disponibile; occorre, quindi, aspettare che essi vengano recuperati. Infine, MongoDB è divenuto il più utilizzato DBMS NoSQL anche grazie alla sua estrema facilità di installazione e manutenzione; a tal fine, fornisce poche opzioni di configurazione e cerca automaticamente, quando possibile, di fare la “cosa giusta” permettendo agli sviluppatori di concentrarsi sulla creazione dell’applicazione piuttosto che perdere tempo in oscure configurazioni di sistema. Questa semplicità non 3.2 Introduzione a MongoDB 55 impedisce, però, di ottenere ottime prestazioni da questo DBMS. Esso, infatti, può essere usato anche per memorizzare e distribuire file binari di grandi dimensioni, come immagini o video. MongoDB, pertanto, mira a colmare l’enorme distanza tra la velocità e la scalabilità tipica dei DBMS chiave-valore e le ricche funzionalità dei DBMS relazionali. 3.2.2 Caratteristiche principali A seguito della descrizione realizzata, si possono, adesso, delineare le caratteristiche principali che MongoDB offre ai suoi utenti; esse vengono, anche, schematizzate in Figura 3.13. Figura 3.13. Grafico che descrive i principali appellativi da attribuire a MongoDB Schema flessibile Un aspetto molto propagandato dei DBMS orientati ai documenti è che questi ultimi non necessitano di uno schema fisso. Ciò li rende ben più flessibili delle tradizionali tabelle dei DBMS relazionali. In realtà, il vero beneficio di uno schema flessibile è che la fase di progettazione è ridotta al minimo, cosa che riduce la frizione con la programmazione ad oggetti. Vuoi salvare un oggetto? Serializzalo in JSON e invialo a MongoDB. Non c’è mapping delle proprietà, o dei tipi di dato. Questa immediatezza si riflette direttamente su di noi, gli sviluppatori finali. Scritture Un’area in cui MongoDB può svolgere un ruolo importante è il logging. Ci sono due fattori che rendono MongoDB piuttosto veloce in scrittura. Primo, abbiamo 56 3 MongoDB l’opzione di inviare un comando di scrittura che ritorni immediatamente, senza doverne attendere la conferma. Secondo, possiamo controllare il comportamento di ogni scrittura relativamente alla durabilità. Queste impostazioni, cosı̀ come l’indicazione di quanti server devono ricevere i dati prima che una scrittura sia considerata sicura, sono configurabili per ogni singola operazione, cosa che ci offre un ottimo controllo sul rapporto tra performance e durabilità. Durabilità Dalla Versione 2.0, in poi, il journaling è attivo per default, il che garantisce il recupero rapido dei dati di un server che sia andato in crash o che abbia subito una perdita di alimentazione. Ricerca Full-Text Il supporto per le ricerche full text è stato aggiunto di recente. MongoDB supporta quindici lingue, “stemming” e “stop words”. Transazioni MongoDB non supporta le transazioni. Esso, però, offre due alternative, una delle quali è ottima, ma di uso limitato, mentre l’altra è macchinosa, ma flessibile. La prima corrisponde alle sue molte operazioni atomiche. Sono eccellenti, fintanto che riescono a risolvere il nostro problema. La seconda soluzione, da usare quando le operazioni atomiche non sono sufficienti, consiste nel ripiegare su un commit a due fasi. Un commit a due fasi è l’equivalente, per le transazioni, della dereferenzazione per le join. Si tratta di implementare la soluzione nel proprio codice, indipendentemente dalla base dati. In realtà, i commit a due fasi sono piuttosto diffusi nel mondo dei DBMS relazionali, dove si usano per implementare transazioni multi-database. L’idea di base è che lo stato della transazione venga archiviato col documento stesso, e che si proceda manualmente alle varie fasi init, pending-commit/rollback. Semplicità e Versatilità La semplicità contraddistingue il query language: le operazioni sul DBMS vengono eseguite in console tramite Javascript, e questa caratteristica permette un uso immediato per molti utenti, senza la necessità di imparare particolari sintassi o linguaggi. Analogamente alla semplicità, la maggiore versatilità rispetto ad altre soluzioni NoSQL è rilevante; infatti, la flessibilità del modello a documenti, unita a un linguaggio di interrogazione semplice ma potente, permette a MongoDB di essere usato in un elevato numero di scenari applicativi, pur rimanendo nella fascia di mercato specializzata tipica del panorama NoSQL. 3.2 Introduzione a MongoDB 57 Operazioni CRUD MongoDB consente la modifica dei dati attualmente presenti in una specifica collection attraverso inserimenti, aggiornamenti e cancellazioni. Tali operazioni consentono anche di definire il livello di garanzia desiderato riguardo all’effettivo completamento dell’operazione, scegliendo fra differenti opzioni che costituiscono possibili trade-off fra la rapidità di completamento della scrittura e la sicurezza che tali modifiche vengano davvero applicate e rese permanenti. Stiamo parlando di quelli che MongoDB indica come “write concern level”. Essi sono: • • • • Unacknowledged : in questo caso si massimizza la velocità, sacrificando però le garanzie della modifica richiesta. Acknowledged : è il livello utilizzato di default da MongoDB e prevede, da parte della specifica istanza che ha ricevuto l’operazione di scrittura, l’invio di una conferma di corretta esecuzione dell’operazione richiesta. Journaled : questo livello richiede che il journaling sia attivato e prevede che la conferma venga inviata dal sistema soltanto dopo che le modifiche richieste siano state salvate nel file di journal (un log utilizzato da MongoDB per garantire la persistenza delle modifiche apportate ai dati anche in caso di fallimenti a livello di sistema). Replica Acknowledged : questo livello si adatta ad un contesto con replicazione dei dati, cioè ad un cluster di nodi che mantengono più copie degli stessi documenti per migliorare la disponibilità dei dati, l’affidabilità del sistema e, in alcuni casi, per distribuire fa più server le operazioni di lettura. Adottando questo livello di write concern si richiede al sistema di assicurarsi che la modifica richiesta sia stata propagata. Gli update, in particolare, consentono di indicare: un documento per specificare i criteri da considerare nel filtare i documenti su cui operare, un altro documento per determinare gli aggiornamenti da applicare e, infine, un terzo documento di specifica delle opzioni che definiscono il comportamento del metodo update. Fra le altre possiamo ricordare le opzioni multi e upsert. Se vogliamo che la modifica specificata venga applicata a tutti quanti i documenti della collection che soddisfano i criteri di selezione specificati è necessario richiederlo esplicitamente assegnando all’opzione multi valore true. Con upsert posto a true, invece, si precisa che, se non esiste alcun documento che soddisfi tutti quanti i criteri di selezione indicati nella query di modifica, il sistema deve inserire nella collection un nuovo documento, a cui verranno applicate le modifiche indicate nel comando di update. Le rimozioni, al contrario, eliminano di default tutti quanti i documenti che soddisfano i criteri di selezione specificati dall’utente; è possibile, però, richiedere, attraverso un particolare flag, che l’eliminazione venga applicata ad un solo documento. 3.2.3 Funzionalità avanzate La grande popolarità di MongoDB e i conseguenti aggiornamenti che ne sono derivati hanno consentito la nascita di parecchie funzionalità avanzate che hanno aiutato 58 3 MongoDB l’espansione di MongoDB in svariate applicazioni. In questa sottosezione prendiamo in considerazione alcune di esse. Indici Conoscere e utilizzare gli indici su MongoDB (e, in generale, nella maggioranza dei DBMS) è fondamentale, in quanto essi hanno un impatto notevole sulle prestazioni delle interrogazioni. Se non utilizziamo gli indici, MongoDB deve esaminare ogni documento presente nella collezione e confrontare il campo ricercato con il valore indicato. Le prestazioni dell’interrogazione degradano, quindi, man mano che il nostro database si consolida, acquisendo sempre più dati. Indicizzare una collezione consente di ridurre drasticamente il numero di documenti esaminati da MongoDB durante una query, con una conseguente riduzione dei tempi di esecuzione. D’altra parte, la decisione di indicizzare uno o più campi deve essere ponderata perché l’indicizzazione ha comunque l’effetto di occupare spazio su disco e rallenta l’inserimento e la modifica dei documenti. In particolare, vogliamo sapere il piano d’esecuzione dell’interrogazione, cioè in quante e quail operazioni MongoDB tradurrà la nostra query. Le query, infatti, specificano il risultato che vogliamo ottenere, senza nulla a che fare con le modalità in cui le operazioni vengono effettivamente eseguite. In altri termini, si dice che le query sono scritte in un linguaggio dichiarativo; viceversa, le operazioni e i comandi hanno un approccio più imperativo. Figura 3.14. Rappresentazione di B-tree, utilizzato da MongoDB per gli indici Il metodo explain è ciò di cui abbiamo bisogno per ottenere queste informazioni più tecniche, tra cui il tipo di indice che in MongoDB è basato su B-tree(Figura 3.14). Un indice è una struttura dati parallela alla collezione, cioè un’altra collezione di riferimenti ai documenti, ordinati in base al campo o ai campi che abbiamo deciso di indicizzare; per ogni indice che creiamo in una collezione, viene generata la lista ordinata di documenti, che MongoDB tiene aggiornati ad ogni modifica o 3.2 Introduzione a MongoDB 59 inserimento di documenti nella collezione. La maggiore velocità di esecuzione delle ricerche è data dal fatto che, invece di scorrere tutta la collezione, essendo l’indice ordinato, si può trovare immediatamente il riferimento al documento; dunque, è abbastanza evidente la potenza e la necessità del loro utilizzo. Modellazione dei dati MongoDB permette di scegliere, fondamentalmente, fra due differenti modalità di organizzazione dei dati. Innanzitutto è possibile optare per una strutturazione “normalizzata” dei dati, in cui informazioni correlate, ma logicamente distinte, vengono mantenute mediante documenti separati, eventualmente raccolti in collection e database differenti. Allo stesso tempo, però, il sistema ammette anche una organizzazione differente, denormalizzata, in cui informazioni fra loro strettamente connesse possono essere concentrate in un unico documento, sfruttando la possibilità di gestire documenti innestati. Nel primo caso, per modellare comunque l’esistenza di un legame concettuale fra più documenti, si deve aggiungere ad essi dei campi che mantengano dei valori identificativi dei documenti ad essi legati; in questo modo, il vantaggio maggiore si ha con le relazioni molti-a-molti; infatti, non abbiamo alcuna ridondanza sui dati degli autori. Lo svantaggio maggiore è nel numero di letture; infatti, per ricostruire i dati di un documento coinvolto in una relazione dobbiamo effettuare tante letture per quanti sono i documenti referenziati. Nel secondo caso, un’organizzazione denormalizzata degli stessi dati prevedrebbe, invece, di incapsulare informazioni correlate ad un certo documento sotto forma di documenti innestati o incorporati; qui i vantaggi sono la gestione dell’atomicità ed il numero di letture ridotte, mentre lo svantaggio riguarda la ridondanza, principalmente nel caso di relazioni molti-a-molti. Ordinamento e Conteggio Normalmente, le applicazioni che usano i database hanno bisogno, per mostrare i dati agli utenti, sia delle funzioni di ricerca che di altri meccanismi, come l’ordinamento e la paginazione, in particolar modo quando i dati nel database sono molti. Infatti, è preferibile evitare di ordinare e paginare i dati nella memoria dell’applicazione, poiché ciò potrebbe provocare evidenti problemi di performance. Formalmente MongoDB mette a disposizione queste operazioni come metodi dei cursori. L’ordinamento del cursore può essere implementato tramite il metodo sort. Esso prende in input un solo parametro che specifica quali campi usare nell’ordinamento, o più parametri in ordine di priorità. La paginazione è molto importante quando si ha a che fare con grandi moli di dati. Soprattutto quando si sviluppano applicazioni, ridurre la quantità di dati che viaggiano tra i vari livelli della nostra applicazione (database, application server e browser) può essere cruciale per le prestazioni globali del sistema; a tal fine, è necessario far sı̀ che il cursore restituisca soltanto un certo numero di elementi. Per la paginazione, un’informazione importante è il numero di elementi da mostrare, che è facilmente ottenibile tramite il metodo count. 60 3 MongoDB Aggregazione Quando si ha a che fare con una gran mole di dati - e MongoDB è nato proprio per questo scopo - una delle funzionalità più importanti è l’aggregazione, che permette di avere una visione globale dei dati e di ricavarne statistiche. L’aggregazione è, oggi, una funzionalità essenziale in ambiti come la Business Intelligence e i Big Data. MongoDB supporta due meccanismi per effettuare aggregazioni. Uno è quello storicamente più noto in NoSQL, ovvero MapReduce. Di recente, però, è stato introdotto anche l’Aggregation Framework. Quest’ultimo è il meccanismo raccomandato, sia per la sua semplicità che per ragioni di performance. MapReduce si basa, fondamentalmente, su un paradigma più imperativo e sulla flessibilità data da JavaScript per dichiarare le operazioni da svolgere. Il vantaggio di MapReduce è che esso è più flessibile e che non tutte le operazioni che si possono implementare con MapReduce sono supportate dall’Aggregation Framework. Per cui la raccomandazione, quando si devono aggregare dati, è di utilizzare Aggregation Framework se esso permette di effettuare le operazioni richieste, altrimenti optare per MapReduce. Quest’ultimo richiede che si forniscano due funzioni: map lavora su un singolo documento e dovrà emettere una serie di coppie chiave-valore, mentre reduce opera sull’elenco risultante con lo scopo di realizzare l’aggregazione effettiva. È possibile, inoltre, definire una funzione di finalizzazione, che verrà eseguita sull’output di reduce. L’Aggregation Framework utilizza l’operatore aggregate; questo comando accetta come parametro una pipeline di operatori, cioè un elenco ordinato di operatori di aggregazione. L’effetto è che la collezione dei documenti passa tra i vari stadi della pipeline. Per avere le migliori performance è, quindi, importante mettere all’inizio della pipeline le operazioni di filtraggio in modo da far passare meno elementi possibili attraverso il resto della pipeline. Accodando vari operatori di aggregazione si possono effettuare molte operazioni, oltre al raggruppamento, come l’ordinamento, la limitazione, l’unwind, lo skip e la proiezione. In Figura 3.15 viene mostrata una rappresentazione della sequenza di passaggi eseguiti dall’Aggregation Framework. In Figura 3.16, invece, viene mostrato un esempio esplicativo dell’operato svolto dall’Aggregation Framework. Geospazialità e File Multimediali Una caratteristica particolarmente potente di MongoDB è il suo supporto per gli indici geospaziali. Ciò consente di archiviare geoJSON o coordinate x e y nei documenti, per cercare, in seguito, documenti che sono vicini ad un set di coordinate, o inclusi in un rettangolo, oppure in un cerchio. Da non dimenticare la memorizzazione di file in un database, che può essere di importanza cruciale in certi tipi di applicazioni. Essa può avvenire in due modi: • • direttamente dentro un documento, utilizzando il tipo BinData (massimo 16 MB); in GridFS, un file system progettato appositamente per MongoDB, ottimizzato per grandi dimensioni. La prima soluzione è raccomandabile quando, oltre ad essere di ridotte dimensioni, i file devono essere acceduti interamente; essa, quindi, non è adatta, ad esdempio, 3.2 Introduzione a MongoDB 61 Figura 3.15. Rappresentazione della sequenza di passaggi eseguiti dall’ Aggregation Framework Figura 3.16. Esempio esplicativo dell’operato svolto dall’ Aggregation Framework quando si intendono fare streaming video. Magari può essere utile per memorizzare documenti PDF di ridotte dimensioni, o fogli elettronici. GridFS, invece, permette di accedere ai file “a pezzi”, ciascuno di dimensioni prefissate (i cosiddetti chunk), ed è utile quando i file sono multimediali. Nel corso dell’elaborato non entreremo nel dettaglio di queste ultime due funzionalità. 62 3.2.4 3 MongoDB Amministrazione A questo punto possiamo occuparci dell’amministrazione e della gestione del database MongoDB. Autenticazione Subito dopo l’installazione, MongoDB non ha utenti preimpostati. Esso ha, infatti, semplicemente un meccanismo detto “Localhost Exception” che permette di accedere come amministratore a tutti gli utenti che tentano di accedere dalla stessa macchina in cui si trova il server. Ovviamente, questa non è una condizione sicura, per cui MongoDB offre la possibilità di creare un nuovo utente e di poterne gestire i permessi. Creando un nuovo utente avremo, cosı̀, i permessi di amministratore degli utenti di tutti i database presenti in MongoDB. Infatti, tra i ruoli esiste userAdminAnyDatabase: si tratta di uno dei numerosi ruoli predefiniti da MongoDB che permette di creare ed eliminare utenti, ruoli e cambiare password; tale ruolo può effetuare queste operazioni su ogni database presente nell’istanza. MongoDB, infatti, permette di specificare ruoli sui singoli database. Se l’utente appena creato ha il ruolo readWrite sul database specificato, egli può leggere ed effettuare modifiche alle collezioni del database, ma non può neanche accedere agli altri database. Se entrassimo con tale utente e provassimo ad effettuare una query su un altro database, otterremmo un errore. Allo stesso modo, esiste il ruoto read che non consente all’utente nè di creare nè di modificare documenti nelle collezioni presenti su questi database; egli, inoltre, non può accedere in scrittura ad altri database; può, però, leggerli. Affidabilità: la replicazione La replicazione in MongoDB avviene creando un replica set (Figura 3.17) ed ha, sostanzialmente, lo scopo di rafforzare l’affidabilità del sistema in caso di fallimenti hardware, software o infrastrutturali. Questo meccanismo prevede la presenza di un gruppo di nodi; tramite una votazione interna al set, uno di questi viene eletto come primario, mentre gli altri vengono catalogati come secondari. Questi ultimi ricevono i commit log e li utilizzano per aggiornare i propri dati, memorizzando solo copie esatte degli stessi dati contenuti nella macchina primaria. I commit log possono essere scritti solo dai nodi primari. Nel caso in cui la macchina primaria non dovesse essere più funzionante viene sostituita con una delle macchine secondarie, scelta tramite una votazione effettuata dall’intero gruppo (Automatic Failover). Quindi, mentre la macchina primaria può eseguire sia operazioni di scrittura che di lettura, le macchine secondarie possono servire solo per operazioni di lettura. Di conseguenza, MongoDB risulta essere particolarmente efficace in applicazioni che fanno uso intensivo di operazioni di read, evitando di sovraccaricare un solo nodo per la lettura. Di default, MongoDB permette, comunque, la sola lettura sul nodo primario, attribuendo ai nodi secondari una funzione finalizzata solo al recupero dei dati, in caso di guasto. Un replica set è vincolato ad avere una sola macchina primaria e, al massimo, fino a sei macchine secondarie; a queste possono essere aggiunte fino a cinque macchine 3.2 Introduzione a MongoDB 63 Figura 3.17. Raffigurazione di un replicaset che entrano in funzione soltanto durante la fase di votazione. Le macchine dedicate a questa funzione sono denominate arbiter e, al contrario delle macchine secondarie che possono diventare primarie, queste non possono cambiare mai il proprio stato. Scalabilità: lo sharding Lo sharding è la tecnica per cui il database viene scalato in modo orizzontale per aumentare le prestazioni distribuendo la totalità delle operazioni di lettura/scrittura su più macchine, su diversi nodi della rete. Ogni partizione (shard) è un database indipendente; unendo tutte le partizioni si ottiene un unico database logico (Figura 3.18). In MongoDB per realizzare lo sharding è necessario configurare un cluster di almeno tre macchine. Infatti, sono necessari tre componenti distinti, ovvero: • • Il query router rappresenta l’interfaccia del database verso il mondo esterno; infatti è l’unico processo ad essere abilitato a comunicare con i client, reindirizzando la loro richiesta ai nodi dei vari shard e restituendo i risultati al richiedente il servizio. Tutte le applicazioni che intendono eseguire operazioni sul database devono connettersi a questi server per sottomettere le richieste. I router sono delle istanze di mongos, il servizio che funge da router. È possibile avere più query router attivi per poter sostenere maggiore carico di richieste. Ciascun router viene configurato con l’indirizzo dei config server, dai quali trae le informazioni sul partizionamento attuale del database. Infatti, i router dispongono di un elenco contenente tutti i nodi che compongono il DBMS e il relativo replica set di appartenenza, nonchè dei dati recuperati e continuamente aggiornati attraverso la comunicazione con i config server. Il config server è un’istanza classica di MongoDB (mongod ), che utilizza, però, dei database particolari (e non accessibili dall’esterno) per memorizzare i metadati sul cluster di cui fa parte. I query router utilizzano queste informazioni 64 3 MongoDB Figura 3.18. Raffigurazione dello sharding • per indirizzare correttamente le richieste in quanto tale processo tiene traccia dei vari dati presenti in un determinato nodo del cluster; senza i config server il funzionamento di tutto il sistema non sarebbe possibile. Lo shard è un’istanza di MongoDB (mongod ) che contiene una partizione dei dati; unendo tutti gli shard si ottiene la base di dati completa. Lo sharding viene effettuato a livello di collezione, ovvero tutti i documenti di una collezione sono distribuiti sulle varie istanze di mongod impostate come shard di un cluster; questi dati possono essere a loro volta replicati rendendo lo shard come un replica set. Monitoraggio È fondamentale monitorare un database per sapere cosa sta succedendo in un dato momento nel sistema, e quindi capire il prima possibile se si verificheranno dei problemi. 3.2 Introduzione a MongoDB 65 Il primo strumento che verrà visto in azione è parte integrante di MongoDB. Si tratta di un insieme di semplici pagine HTML che vengono generate da un web server incorporato nel servizio mongod. Esso ci offre una serie di informazioni utili. Alcune riguardano la configurazione del server: la versione di MongoDB, il sistema operativo, l’architettura della macchina, da quanto tempo MongoDB è acceso, se è attivo un replica set. Segue, quindi, un elenco molto interessante che ci dice quali connessioni sono attive su questo database, ognuna con i relativi IP. Nella colonna Query vediamo l’ultima istruzione eseguita dal client. Le colonne Locking e Waiting sono molto importanti, la prima perché ci dice se il client ha un lock attivo, mentre la seconda ci informa che il client è bloccato in attesa di acquisire un lock. MongoDB, infatti, come abbiamo già visto, utilizza i lock in lettura e in scrittura per gestire la concorrenza tra i client: se un client acquisisce il lock in scrittura (write lock) su un database, nessun altro lock, né in lettura (read lock) né in scrittura può essere acquisito in quel database finché il lock precedente non viene rilasciato. Al contrario, diversi read lock possono essere acquisiti contemporaneamente. Tutto ciò è ovviamente del tutto trasparente per i client, che acquisiscono e rilasciano i lock quando effettuano le query. Può succedere, però, che, per qualche problema, infrastrutturale, o semplicemente perché un client sta effettuando una lunga operazione, un write lock possa protrarsi per un tempo troppo lungo, bloccando, di fatto, gli altri client; in questo caso, il write lock può essere rimosso mediante il comando killOp. Per monitorare il sistema in tempo reale si possono utilizzare due applicazioni di console fornite con l’installazione di MongoDB che restituiscono i dati in forma tabellare a intervalli di tempo regolari. Esse sono: • • Mongostat, che fornisce le informazioni sull’uso dei database e permette di capire quanto uno di essi è usato rispetto agli altri; essa, quindi, ci fornisce indicazioni utili per capire se è necessario passare in sharding, se è meglio aggiungere altre repliche, etc. Mongotop, che fornisce informazioni sul tempo impiegato da MongoDB in lettura e scrittura. Ottimizzazione delle performance Ci sono molti aspetti che possono impattare sulle performance di MongoDB; proprio per questo motivo non esistono delle guide che possano essere applicate in ogni contesto per avere il risultato desiderato. È, invece, necessaria una buona analisi per capire i punti critici che causano il decadimento delle performance avvertito dall’utente per poterli, successivamente, migliorare. Se, ad esempio, utilizzando lo strumento Mongotop, osserviamo che i tempi necessari per le scritture sul database sono elevati, allora possiamo valutare se non sia opportuno applicare lo sharding nel sistema per distribuire il carico di lavoro su più server. Se, invece, il problema è nelle letture possono esserci diverse possibilità: • se le letture sono moltissime in quantità allora potremmo: 1. nuovamente considerare di utilizzare lo sharding, o ampliarlo; 66 • 3 MongoDB 2. decidere di configurare la lettura da nodi secondari del replica set, per distribuire il carico di letture. se, invece, le query sono poche, allora probabilmente esse sono poco efficienti e conviene “profilarle”. In MongoDB la profilatura si effettua tramite il metodo explain di un cursore; esso ci informa se la collezione è stata scansionata integralmente, se vengono utilizzati indici (BasicCursor), quanti documenti sono stati visitati, quanto tempo, espresso in millisecondi, impiega l’operazione a completarsi e quanti documenti vengono restituiti. Un altro modo di ottimizzare le query è quello di ridurre la quantità di dati restituita, non soltanto limitando il numero di documenti, ma anche specificando i soli campi che ci interessano ai fini del risultato finale; in questo modo si fanno recuperare meno dati al server e si ha meno richiesta di banda a livello di rete. 3.2.5 Dettagli tecnici Dal punto di vista pratico, descriveremo, ora, brevemente l’implementazione degli aspetti più importanti tra quelli che sono stati già ampiamente discussi, ed utilizzeremo come esempi gli stessi codici che abbiamo scritto per il case study che descriveremo più avanti nella tesi. Le operazioni CRUD Ovviamente le operazioni di base da considerare sono l’inserimento, la cancellazione e la modifica dei documenti presenti nel database. L’inserimento avviene attraverso la query del Listato 3.1. 1 2 3 4 db.dettagliogarelavori.insert({‘‘Azienda’’:‘‘Impianti SRL’’, medie:{mediaAppalto:99984.89, mediaEffettivo: 59500.0 }}) Listato 3.1. Query necessaria per inserire i documenti nel database La cancellazione di una collezione avviente attraveso un semplice metodo presente nel Listato 3.2. 1 2 3 db.dettagliogarelavori.remove({}) Listato 3.2. Query necessaria per eliminare le collezioni dal database Per quanto riguarda la lettura, questa verrà utilizzata frequentemente in seguito poichè supporta molti operatori. La sua struttura base è presente nel Listato 3.3 nel quale vi è l’utilizzo dell’exists, equivalente all’operatore omonimo di SQL. 1 2 3 db.dettagliogarelavori.find({‘‘medie.mediappalto’’:{$exists:true}}) Listato 3.3. Query necessaria per la ricerca di documenti nel database 3.2 Introduzione a MongoDB 67 Infine, la modifica, che come il find presenta numerose varianti, viene esposta nel Listato 3.4, dove si applica per un’operazione di ETL rivolta alla pulitura dei dati, grazie all’operatore multi che permette gli aggiornamenti multipli. 1 2 3 4 db.sintesigarelavori.update({Motivazione:’-’}, {$set:{Motivazione:’N.D.’}},{multi:true}) Listato 3.4. Query necessaria per la modifica di documenti nel database L’ulima versione di MongoDB permette l’utilizzo di una query che dà la possibilità di ricercare e modificare contemporaneamente un documento; essa viene mostrata nel Listato 3.5. 1 2 3 4 db.garebeniservizi.findAndModify({query:{‘‘Data Fine Contratto’’:’-’}, update:{$currentDate:{‘‘Data Fine Contratto’’:true}},new:true}) Listato 3.5. Query necessaria per la ricerca e la contemporanea modifica di documenti nel database Le aggregazioni Le aggregazioni vengono utilizzate in modo molto simile a quanto avviene nel GROUP BY del linguaggio SQL; esse, infatti, raggruppano i dati a divisione (attraverso l’operatore group) per un campo specifico, e per ogni gruppo risultante, effettuano operazioni di aggregazione (qui una somma ed una media). I risultati ottenuti possono essere filtrati attraverso l’operatore match. Tutto ciò è presente nel Listato 3.6. 1 2 3 4 5 6 db.dettagliogarelavori.aggregate({$match:{RUP:’Carlo Chiesa’}}, {$group:{_id:{‘‘$Oggetto della gara’’, totale:{$sum:‘‘$Importo complessivo appalto’’}, mediaeffettivo:{$avg:‘‘$Importo effettivo’’}}}) Listato 3.6. Query necessaria per l’aggregazione di documenti nel database Conteggio, Ordinamento e Paginazione Tra le varie funzionalità eseguibili, è spesso conveniente ottenere come risultato il conteggio di documenti con determinate caratteristiche, oppure ottenere i documenti secondo un ordine desiderato, oppure, ancora, limitarli ad un certo numero massimo. Queste operazioni vengono effettuate nel Listato 3.7, attraverso due query, dove vengono anche utilizzati l’operatore logico or e gli operatori di confronto gte ed lte (ovviamente esistono, anche, and, not, in, nin, gt e lt). È stato, inoltre, utilizzato anche l’equivalente della proiezione di SQL limitando il numero di campi ritornati. 1 2 68 3 MongoDB 3 4 5 6 7 8 9 10 db.sintesigarelavori.find({‘‘Procedura scelta contraente’’:‘‘aperta’’},{$or:[{‘‘Data fine lavori’’:{$gte:’2014-01-01’}}, {‘‘Data fine lavori’’:{$lte:’2015-06-01’}}]}).count() --------------------------------------------------db.garebeniservizi.find({‘‘Importo complessivo appalto’’:1}).sort({‘‘Importo complessivo appalto’’:-1}).limit(10) Listato 3.7. Query necessaria per l’ordinamento, il conteggio e la paginazione dei risultati Gli indici Gli indici, come già detto, sono fondamentali per ottimizzare le performance delle query. Nell’esempio del Listato 3.8 viene creato un indice per velocizzare una ricerca testuale e, attraverso explain, vengono mostrate le statistiche dell’operazione eseguita. 1 2 3 4 db.garebeniservizi.createIndex({Aggiudicatario:‘‘text’’}) db.garebeniservizi.find({Aggiudicatario:{$regex:/SRL/i}}).explain(‘‘executionStats’’) Listato 3.8. Query necessaria per la creazione di indici nel database 4 Progettazione di un software multimediale per l’apprendimento di MongoDB Questo capitolo illustra le varie attività relative alla progettazione di un filmato per l’apprendimento di MongoDB. Dal momento che non esistono una metodologia e dei modelli standard per tale obiettivo, presenteremo una nostra proposta in tal senso. 4.1 Definizione di una metodologia per la progettazione del software multimediale Come detto nell’introduzione della presente tesi, uno dei nostri obiettivi è la realizzazione di un software multimediale per l’apprendimento di MongoDB. Per progettare tale software, però, c’è bisogno di una metodologia e di alcuni modelli di supporto. Il software multimediale che si deve ottenere, in sostanza, è una sequenza di schermate; d’altra parte, però, può essere considerato come un insieme di temi da visualizzare. Questi temi, ovviamente, devono essere selezionati in modo tale da essere i principali ed essenziali, per poter rendere bene l’idea di tutto ciò che si vuole mostrare riguardo a MongoDB. È stato pensato che, per riuscire a descrivere in modo semplice ed intuitivo l’utilizzo di MongoDB, la metodologia da seguire dovesse progettare un insieme di viste del futuro software, dipendenti tra di loro, che permettessero con semplicità, il raggiungimento del risultato desiderato. Le viste in questione sono le seguenti: • • • vista logica; vista fisica; vista utente. Dunque, la prima operazione da seguire è la creazione di una vista logica; come si può evincere dal nome, è necessario, seguendo una ben precisa logica, creare un’organizzazione delle tematiche principali sotto forma di albero. Questa struttura ad albero mette in evidenza i topic, cioè gli argomenti, secondo una rigida gerarchia: i “fratelli” sono argomenti indipendenti fra di loro, mentre la relazione “padre-figlio” sta a denotare che l’argomento “figlio” deve necessariamente seguire l’argomento “padre”; in pratica, non si capisce il “figlio” se non si conosce il “padre”. 70 4 Progettazione di un software multimediale per l’apprendimento di MongoDB Successivamente, è necessario creare una vista fisica, che ha il compito di rendere più semplice e lineare il lavoro che ha compiuto la vista logica. Per fare ciò, essa deve “appiattire” l’albero di cui abbiamo già parlato; ed il miglior modo per farlo, tenendo conto di quanto detto sulle relazioni “padre-figlio”, risulta essere l’adozione della Depth-First Search (DFS) o visita in profondità. La DFS è un algoritmo di ricerca su alberi, il quale visita l’albero scendendo il più possibile in profondità (Figura 4.1). Il risultato che si ottiene è una lista di topic che permettono, inoltre, di capire se l’ordine che è stato scelto nell’albero è quello ottimale. Infine, l’ultimo passo è la vista utente attraverso la quale ha l’obiettivo di rendere più visibile, sotto forma grafica, il risultato ottenuto grazie alle impostazioni delle viste precedenti. In sostanza, è necessario creare tanti mockup di livello 1 tanti quanti sono i passaggi fondamentali che si hanno a seguito della vista fisica. I mockup in questione sono delle bozze di schermate che diano un’idea sufficientemente fedele di come saranno le schermate stesse. In pratica, i mockup servono a dare un’idea visiva, anche molto dettagliata, di come sarà o dovrà essere l’originale; quest’ultimo, in questo caso, coincide con le schermate del software multimediale. Figura 4.1. Esempio di utilizzo della Depth-First Search 4.3 Progettazione della vista fisica 71 4.2 Progettazione della vista logica In Figura 4.2 viene mostrato il grafico che rappresenta la vista logica del software multimediale da realizzare. Figura 4.2. Visualizzazione dell’albero connesso alla vista logica Come si può notare, le informazioni sono organizzate sotto forma di albero in modo abbastanza dettagliato e chiaro. È evidente che il primo argomento da trattare sono i DBMS NoSQL. Tra questi una categoria importante è rappresentata dai DBMS documentali, il cui principale risulta essere MongoDB. Riguardo quest’ultimo sono stati messi in evidenza l’installazione, con relativa configurazione, la GUI MongoChef e i principali operatori che vengono forniti da tale linguaggio. 4.3 Progettazione della vista fisica Nella Figura 4.3 si intuisce con estrema semplicità, e in modo fluido, la sequenza dei topic (ottenuta applicando la DFS all’albero di Figura 4.2) che caratterizzeranno il nostro software multimediale. Dalla lista risultante si evincono, soprattutto, quali sono le dipendenze delle operazioni che si possono eseguire lato client, attraverso MongoChef; di conseguenza, si nota una difficoltà crescente delle corrispettive query, a partire dalle operazioni CRUD fino ad arrivare alle operazioni di analisi per il calcolo delle statistiche. 72 4 Progettazione di un software multimediale per l’apprendimento di MongoDB Figura 4.3. Progettazione della vista fisica relativa al nostro software multimediale 4.4 Progettazione della vista utente L’ultimo passaggio della progettazione è la vista utente, che permette la creazione dei mockup di livello 1 relativi alle principali schermate del software multimediale. Tali mockup verranno mostrati e descritti di seguito, nelle successive sottosezioni. 4.4.1 DBMS NoSQL Nella Figura 4.4 viene illustrato il mockup relativo ai DBMS NoSQL. Come si evince dalla figura, esso è incentrato sulle principali caratteristiche che differenziano i DBMS NoSQL da quelli relazionali. 4.4.2 DBMS documentali Nel mockup di Figura 4.5 vengono sottolineate le qualità di maggior rilievo dei DBMS documentali, mentre, a seguire, viene presentato lo schema di un generico documento scritto in formato JSON. 4.4.3 MongoDB Nel mockup di Figura 4.6 vengono esposte le più importanti caratteristiche di MongoDB, grazie ad una rappresentazione che sfrutta a livello grafico il logo di MongoDB stesso. Al di sotto di essa, viene riportata una citazione che, con estrema brevità, esprime la filosofia alla base di MongoDB. 4.4.4 Installazione Nel mockup di Figura 4.7 viene presentata l’installazione di MongoDB. 4.4.5 Configurazione Nel mockup di Figura 4.8 vi è un’indicazione su ciò che è necessario fare, attraverso il terminale, per configurare MongoDB. 4.4 Progettazione della vista utente 73 Figura 4.4. Mockup relativo ai DBMS NoSQL 4.4.6 Server Nel mockup di Figura 4.9 vi è un’indicazione su ciò che è necessario fare, attraverso il terminale, per avviare il server di MongoDB. 4.4.7 Client Nel mockup di Figura 4.10 vi è un’indicazione su ciò che è necessario fare, attraverso il terminale, per connettere il client di MongoDB. 4.4.8 MongoChef Nella Figura 4.11, oltre al logo del tool stesso, vengono indicate le funzionalità che il software mette a disposizione per l’utente. 4.4.9 Intellishell In Figura 4.12 è stata emulata, il più dettagliatamente possibile, la finestra di MongoChef relativa all’Intellishell. Essa è la shell tramite la quale l’utente effettua le query in base alla collezione selezionata, del database in uso. 74 4 Progettazione di un software multimediale per l’apprendimento di MongoDB Figura 4.5. Mockup relativo ai DBMS documentali 4.4.10 Aggregation Framework In Figura 4.13 è stata emulata, il più dettagliatamente possibile, la finestra di MongoChef relativa all’Aggregation Framework. Grazie a questo framework, l’utente effettua le query di raggruppamento in base alla collezione selezionata, del database in uso, con estrema semplicità e velocità. 4.4.11 Implementazione In Figura 4.14 è stata emulata, il più dettagliatamente possibile, la finestra di MongoChef relativa all’Implementazione. Essa è la shell tramite la quale l’utente effettua le operazioni di base sulla collezione selezionata, del database in uso, con maggiore facilità. 4.4.12 Operazioni CRUD e successive Dalla vista fisica, sappiamo che la progettazione del software multimediale prevede, dopo l’implementazione, le operazioni CRUD e tutte le query più importanti, fino ad arrivare alle statistiche a partire da quelle semplici e fino ad arrivare a quelle avanzate (ad esempio, agli operatori OLAP). Nella vista utente, però, non è stato necessario creare dei mockup appositi per questi punti della vista fisica, in quanto sarebbero risultati identici al mockup relativo all’Intellishell. 4.4 Progettazione della vista utente Figura 4.6. Mockup introduttivo su MongoDB Figura 4.7. Mockup rappresentativo dell’installazione di MongoDB 75 76 4 Progettazione di un software multimediale per l’apprendimento di MongoDB Figura 4.8. Mockup rappresentativo della configurazione di MongoDB Figura 4.9. Mockup rappresentativo dell’avvio del server di MongoDB 4.4 Progettazione della vista utente Figura 4.10. Mockup rappresentativo della connessione del client di MongoDB Figura 4.11. Le principali funzioni di MongoChef 77 78 4 Progettazione di un software multimediale per l’apprendimento di MongoDB Figura 4.12. Mockup rappresentativo dell’Intellishell di MongoChef Figura 4.13. Mockup rappresentativo dell’Aggregation Framework di MongoChef 4.4 Progettazione della vista utente 79 Figura 4.14. Mockup rappresentativo della finestra di implementazione di MongoChef 5 Realizzazione di un software multimediale per l’apprendimento di MongoDB In questo capitolo verranno discussi i processi di realizzazione del software multimediale, scendendo nei dettagli dell’editing del video e sfruttando le potenzialità di Camtasia Studio. Successivamente, verranno mostrati i punti salienti del filmato realizzato. 5.1 Realizzazione del software multimediale Seguendo le linee guida fornite dalla progettazione realizzata in precedenza, è stato possibile portare a termine la creazione del software multimediale; esso, come già sappiamo, avrà lo scopo di supportare l’apprendimento del DBMS MongoDB. I passaggi che hanno portato, grazie all’utilizzo di Camtasia Studio, alla realizzazione del filmato sono stati i seguenti: • • • • creazione della presentazione PowerPoint; registrazione della schermata; case study descrittivo; editing dei video. Essi verranno discussi in dettaglio nelle prossime sottosezioni. 5.1.1 Creazione della presentazione PowerPoint La parte del filmato dedicata alle nozioni più teoriche è stata realizzata grazie ad una presentazione, eseguita attraverso Microsoft PowerPoint. Essa segue, principalmente, i mockup che abbiamo ottenuto dalla progettazione del software multimediale. Innanzitutto, è stato impostato un tema professionale, che ricorda i colori “istituzionali”, abbastanza semplice e “pulito”. Successivamente, sono state create una circa venti diapositive, e si è provveduto a definire: • le transizioni tra di esse; in particolare, è stato scelto il “drappeggio”; 82 • 5 Realizzazione di un software multimediale per l’apprendimento di MongoDB gli intervalli di visualizzazione di ogni diapositiva; tali intervalli, chiaramente, sono legati al suo contenuto informativo. I contenuti su cui si focalizza la presentazione sono: 1. 2. 3. 4. I DBMS NoSQL; I DBMS Documentali; MongoDB; MongoChef. A proposito degli ultimi due punti, ne verrano presentate l’installazione e una panoramica generale. Per quanto riguarda MongoChef, in particolare, è stata creata una seconda presentazione PowerPoint, sull’impronta della prima, che definisce un filo da seguire per quello che sarà il case study della Sottosezione 5.1.3. 5.1.2 Registrazione della schermata Il lato pratico del filmato è quello che dona un carattere interattivo al software multimediale, poichè viene ottenuto tramite la registrazione della schermata durante l’utilizzo di MongoDB e di MongoChef da parte dell’utente. Questa registrazione, come è stato già spiegato, è permessa da Camtasia Studio; a tal proposito, non c’è molto da dire, se non evidenziare la semplicità di questa operazione. È sufficiente fare partire la registrazione, dopo aver scelto la regione dello schermo da considerare, ed utilizzare i classici comandi di pausa e di stop. Nel nostro caso sono state effettuate quattro registrazioni; queste, nel seguente ordine, formeranno il video finale: 1. 2. 3. 4. la prima presentazione PowerPoint; il download, l’installazione e la panoramica generale di MongoDB e MongoChef; la seconda presentazione PowerPoint; l’utilizzo delle istruzioni MongoDB tramite MongoChef. A questo punto non resta che personalizzare il video, al meglio, per renderlo comprensibile anche agli occhi di chi non è pratico con i DBMS. L’obbiettivo finale è, infatti, essere chiari, soprattutto con questa tipologia di utenti. Prima della personalizzazione, presentiamo il case study. 5.1.3 Case study descrittivo Come è stato già accennato, il case study serve a descrivere tutte le operazioni che è possibile eseguire attraverso MongoDB. Nel nostro caso ci è sembrato estremamente interessante utilizzare come case study i dati di Expo 2015. Tali dati sono stati prelevati dal portale Open Expo, un’iniziativa di Expo 2015 volta ad assicurare la totale trasparenza in merito alle spese relative all’Esposizione Universale del 2015 attraverso la pubblicazione, in formato aperto, di tutte le informazioni riguardanti la gestione, la progettazione, l’organizzazione e lo svolgimento dell’evento. I dati analizzati per questa tesi sono stati prelevati dalla sezione OpenData. Al suo interno sono presenti 5 dataset: 5.1 Realizzazione del software multimediale • • • • • • 83 Sintesi Gare Lavori : anagrafica delle gare per i lavori dei cantieri di Expo. In questo dataset, oltre agli estremi delle gare di appalto, sono inclusi i dettagli degli inviti, la composizione delle commissioni giudicatrici, le esclusioni e gli aggiudicatari. Gare Beni e Servizi : dettaglio delle Gare per Beni e Servizi di Expo. Fornitori : anagrafica completa dei fornitori di Expo. Dettaglio Gare Lavori : lavori da realizzare per l’Expo, distinti in lotti. Il dataset contiene i dettagli di ciascun lotto funzionale. Dati Cruscotti : dati riepilogativi, con i relativi indicatori, utilizzati nel cruscotto dei lavori di OpenExpo. Il calcolo degli indicatori dipende dallo stato dei lavori. Expo Barometro: è un indicatore che misura la social experience quotidiana di Expo, ovvero le esplicite reazioni alla visita all’evento milanese, come emerse dai post pubblicati su Twitter ogni giorno. Tutti questi dataset sono stati importati, attraverso il terminale (operazione registrata a proposito dell’implementazione in MongoChef), in un database MongoDB. Essi sono stati d’aiuto per poter rendere note le potenzialità di MongoDB; in particolare, i dati relativi a Gare Beni e Servizi ed a Dettaglio Gare Lavori sono stati utilizzati per poter presentare alcuni esempi riguardo tutti i tipi di query eseguibili tramite MongoDB. Invece, i dati relativi a Fornitori, Dati Cruscotti ed Expo Barometro sono stati utili per poter effettuare un’analisi dei dati in questione e, quindi, ottenere delle interessanti statistiche basate sui valori in possesso. Tali analisi si sono basate sull’utilizzo del modello multidimensionale e sugli operatori OLAP. A titolo d’esempio, sono state riportate operazioni di Drill-Down sui dati dei fornitori ed operazioni di Roll-Up sui dati del barometro. Per raggiungere dei risultati più sicuri e veritieri, sono state attuate delle operazioni di ETL volte a ripulire i dati stessi, ad esempio eliminando i duplicati e sostituendo eventuali simboli incomprensibili. 5.1.4 Editing dei video Al termine delle registrazioni, ci siamo concentrati sull’editing dei video. Dunque, abbiamo tagliato le parti di registrazioni che non erano utili, quelle ripetute e quelle incomprensibili. Successivamente, sono stati affiancati tutti e quattro i video e, attraverso una serie di operazioni di taglia, copia e incolla delle clip, sono stati mescolati per rendere la visualizzazione del filmato più fluida e sensata. L’ultimo passaggio, prima delle attività prettamente grafiche, è stato l’inserimento, tra una clip e l’altra, degli screen delle query effettuate per il case study di cui sopra. Essi sono stati, opportunamente, inseriti tra le slide della presentazione PowerPoint relativa all’implementazione in MongoChef. Proseguendo nella nostra trattazione vediamo, ora, cosa è stato fatto per dare un tono più creativo al filmato. 84 5 Realizzazione di un software multimediale per l’apprendimento di MongoDB Passaggio tra le clip Il passaggio tra una clip e l’altra è stato uniformato il più possibile, scegliendo di effettuare un’unica transizione tra le clip dove avveniva un cambiamento della schermata. La transizione prescelta è Fade in/out e, come si potrà verificare, assegna al video un effetto di dissolvenza in entrata ed in uscita. Essa è stata inserita all’inizio e alla fine di ogni clip. Questa soluzione evita con semplicità i cambi netti di schermata. Utilizzo dello zoom L’utilizzo dello zoom è l’effetto principale per poter focalizzare l’attenzione dello spettatore su ciò che si desidera. Proprio per questo, durante il video, ci saranno degli zoom specifici sulle finestre che vengono utilizzate al momento della registrazione. Essi sono stati impostati in modo tale da allontanarsi ed avvicinarsi alla finestra in modo graduale e sensibile. Inserimento delle descrizioni Le descrizioni sono state inserite attraverso i callout, quindi attraverso le didascalie. Esse appaiono e scompaiono dal video al momento opportuno, e con una tempistica dell’ordine di due secondi. Sono stati scelti i callout rettangolari e di una tonalità vicina a quella del tema delle presentazioni PowerPoint. Estremamente utile è stato l’inserimento dei cosiddetti click del cursore, sotto forma di callout; essi, di forma circolare, danno un maggior senso di interattività e di realismo. Il loro obbiettivo è, infatti, quello di dare un’idea su ciò che sta accadendo durante la registrazione. Ma, soprattutto per alcuni dei suddetti click, è stato aggiunto l’effetto di gesture denominato swipe; esso segue il movimento del mouse nel momento in cui sposta un oggetto nella schermata durante la registrazione stessa. Inserimento della musica L’ultimo passo fondamentale, prima dell’esportazione del software multimediale, è l’inserimento della musica. Essa, dopo essere stata scelta, è stata importata come media nel progetto di Camtasia Studio, ed è stata modificata in base alle necessità. In particolare, è stato aggiunto l’effetto lower volume, per poter dare una sensazione di suono che va a scemare, prima dell’avvio del nuovo pezzo musicale o alla fine del filmato. 5.2 Uno sguardo al software realizzato Terminata la realizzazione del software multimediale, è, adesso, possibile dare un’idea del risultato finale attraverso una serie di immagini. 5.2 Uno sguardo al software realizzato 85 Figura 5.1. Indice della presentazione PowerPoint Figura 5.2. Installazione di MongoDB La presentazione PowerPoint possiede lo stile della Figura 5.1. L’interattività inizia con l’installazione di MongoDB (Figura 5.2). Il cursore e lo zoom sono utilizzati nel momento in cui è stata fatta una cattura, come mostrato in Figura 5.3. L’introduzione di MongoChef avviene attraverso la presentazione PowerPoint (Figura 5.4). 86 5 Realizzazione di un software multimediale per l’apprendimento di MongoDB Figura 5.3. Utilizzo dello zoom e del cursore durante la configurazione di MongoDB Figura 5.4. MongoChef nella presentazione PowerPoint Un esempio di utilizzo di MongoChef, ed in particolare dell’aggregate, viene mostrato in Figura 5.5. L’ultima parte del video si concentra sul case study (Figura 5.6). 5.2 Uno sguardo al software realizzato Figura 5.5. Aggregate di MongoChef Figura 5.6. Cattura di una query eseguita durante il case study 87 6 Splunk Questo capitolo presenta, dapprima, il legame esistente tra l’analisi dei Big Data e Splunk. In seguito, verrà proposta una descrizione del software Splunk e dei dettagli tecnici ad esso relativi. 6.1 Big Data e Splunk Tutte le applicazioni, sensori, sistemi, server web e altre infrastrutture di tecnologia, generano dati ogni millisecondo di ogni giorno. I dati-macchina fanno parte di una delle aree più in rapida crescita e più complesse dei Big Data. Essa è anche una delle più preziose, poichè contiene un registro di transazioni degli utenti, del comportamento dei clienti, del comportamento della macchina, delle minacce alla sicurezza, delle attività fraudolente, e altro ancora. Fare uso di dati-macchina è complicato; essi sono generati da una moltitudine di fonti disparate in formati non strutturati; ciò rende difficile inserirli in schemi predefiniti. Le organizzazioni concorrono per assimilare, elaborare e analizzare i datimacchina utilizzando metodi di gestione di dati tradizionali o in modo tempestivo. La tradizionale Business Intelligence o le soluzioni di Data Warehouse non sono semplicemente progettati per questa classe di dati strutturati, dinamici e ad alto volume. Le emergenti tecnologie open source possono fornire parte della risposta ma, in genere, richiedono un’ampia e onerosa integrazione con altri progetti open source. Esse hanno bisogno di una tecnologia che supporta in tempo reale l’individuazione dei dati, report ad hoc e analisi rapide: una soluzione che può dare loro risposte tanto velocemente quanto velocemente nascono le loro domande. Il software Splunk aiuta a sbloccare il valore nascosto di questi dati, e, con la capacità di arrivare ad intuizioni attraverso altri strumenti, è possibile ottenere il valore dallo spettro completo dei dati, non solo di un loro sotto-insieme. Grazie ad esso è possibile raccogliere, indicizzare, cercare, analizzare e visualizzare tutti i dati in un unico luogo (Figura 6.1). 90 6 Splunk Figura 6.1. Big Data e Splunk Splunk è la soluzione leader per gestire e analizzare i dati-macchina. Esso fornisce un modo unificato per organizzare ed estrarre importanti informazioni dalle enormi quantità di dati generati dalle macchine, attraverso diverse fonti. Per giunta, Splunk trasforma i dati-macchina in un tessuto di dati NoSQL; in questo modo, i professionisti IT ed aziendali sono capaci di risolvere una vasta gamma di problemi critici, tutto senza le limitazioni intrinseche degli approcci tradizionali basati sui database relazionali. 6.2 Cos’è Splunk Splunk, il cui logo si trova in Figura 6.2, è un software che indicizza dati IT da qualsiasi applicazione, server o dispositivo di rete che costituisce l’infrastruttura IT. È un potente e versatile motore di ricerca e di analisi che consente di esaminare, risolvere i problemi, monitorare, avvisare e creare report su tutto ciò che sta accadendo nell’intera infrastruttura IT da una posizione in tempo reale. Figura 6.2. Logo di Splunk 6.2 Cos’è Splunk 91 Splunk è versatile e, quindi, ha molti usi e diversi tipi di utenti. Gli amministratori di sistema, gli ingegneri di rete, gli analisti della sicurezza, gli sviluppatori e lo staff per il supporto usano Splunk per fare il loro lavoro meglio e più velocemente. Esso ha il compito di tracciare ed utilizzare le informazioni contenute nel data center. Se si dispone di Splunk, non c’è bisogno dei database complicati, dei connettori, dei controlli personalizzati; tutto ciò che serve è un browser web e la propria immaginazione. Splunk gestisce il resto, a partire dalla sua pagina principale che è raffigurata in Figura 6.3. Figura 6.3. Pagina principale di Splunk Dunque, Splunk monitorizza e analizza tutto, dai clickstream alle transazioni dei clienti, dagli eventi di sicurezza fino all’attività di rete. Splunk Enterprise aiuta a ricavare una preziosa operational intelligence dai dati generati dalle macchine. E, grazie a una gamma completa di potenti ricerche, opzioni di visualizzazione e contenuti pre-configurati per i diversi casi d’uso, qualunque utente può rapidamente individuare e condividere informazioni. È sufficiente indirizzare i dati grezzi in Splunk Enterprise e iniziare ad analizzare il proprio mondo. Splunk, in sostanza, raccoglie e indicizza log e dati-macchina da qualsiasi fonte; le sue potenti capacità di ricerca, analisi e visualizzazione sono a disposizione di qualunque tipo di utilizzatore; in più, le app offrono soluzioni per la sicurezza, l’operatività IT, la business analysis, e altro ancora. Il vantaggio di questo software è che consente una visione che abbraccia più ambienti locali, cloud e ibridi, oltre a mettere a disposizione dimensioni di scala, sicurezza e disponibilità che si adattano a qualunque organizzazione. Perciò, al fine di delineare uno schema, stiliamo la seguente lista per i principali utilizzi di Splunk: • • • • • indicizza continuamente tutti i dati IT in tempo reale; scopre automaticamente informazioni utili incorporate nei dati; ricerca l’infrastruttura IT fisica e virtuale per ottenere risultati in pochi secondi; salva le ricerche ed etichetta informazioni utili per rendere il sistema più intelligente; imposta gli avvisi per automatizzare il monitoraggio del sistema per specifici eventi ricorrenti; 92 • • • • 6 Splunk genera report analitici con grafici interattivi, grafici e tabelle e li condivide con gli altri; condivide le ricerche salvate e i report con gli altri utenti distribuendo i risultati ai membri del team ed alle persone coinvolte nel progetto via e-mail; esamina attivamente i sistemi IT per deviare i server inattivi e gli incidenti di sicurezza prima che si verifichino; progetta viste ricche di informazioni e dashboard che corrispondono alle esigenze ad ampio raggio dell’azienda. Da sottolineare è la velocità di esecuzione di Splunk; in particolare, per risolvere problemi relativi ad applicazioni e analizzare incidenti di sicurezza saranno sufficienti pochi minuti, anzichè ore, evitando interruzioni dell’attività o compromissione dei servizi, con costi contenuti e ottenendo una nuova consapevolezza di business. Grazie a Splunk è facile disporre di una rapida visibilità, conoscenza e comprensione del sistema IT e dell’azienda in generale. Dopo questa breve introduzione del software in questione, entreremo adesso più nel dettaglio ed evidenzieremo tutti i vantaggi forniti da esso. 6.2.1 I dati per Splunk Come è già stato affermato, Splunk si basa, principalmente, sui dati-macchina; essi contengono un record definitivo di tutte le attività e i comportamenti di clienti, utenti, transazioni, applicazioni, server, reti e dispositivi mobili. Sono molto di più che semplici log. Includono dati di configurazione, dati di API, code di messaggi, eventi di modifica, output di comandi diagnostici, cartellini di traffico e dati di sensori generati da sistemi industriali, e molto altro ancora. I dati-macchina si presentano in una serie di formati imprevedibili e gli strumenti tradizionali per il monitoraggio e l’analisi non sono stati progettati per la varietà, la velocità, la variabilità o il volume di questo tipo di dati. Si rende, quindi, necessario un nuovo approccio che sia progettato specificatamente per questa classe unica di dati e che permetta di diagnosticare rapidamente i problemi del servizio, rilevare le minacce particolarmente elaborate alla sicurezza, conoscere lo stato e le performance delle apparecchiature in remoto e dimostrare la compliance. Splunk permette tutto ciò. Data la varietà dei dati-macchina, risulta evidente che Splunk può indicizzare i dati-macchina da qualsiasi fonte in tempo reale. È possibile puntare il server o syslog di dispositivi di rete presso Splunk, monitorare i file di registro di qualsiasi applicazione, abilitare il monitoraggio di modifica del file system o del registro di Windows, pianificare uno script per afferrare metriche di sistema, e altro ancora. Non importa come si ottengono i dati, o in quale formato essi siano; dopo essere stati caricati (Figura 6.4), Splunk li indicizzerà allo stesso modo, senza alcun specifico analizzatore o adattatore da scrivere o mantenere. Splunk memorizza sia i dati grezzi sia gli indici ricchi in un archivio di dati efficiente, compresso e basato su file system, con dati facoltativi di verifica se è necessario dimostrare l’integrità dei dati. Splunk offre una varietà di metodi di input flessibili e non ha bisogno di speciali connettori per i formati di dati specifici. Cosı̀ è immediatamente possibile indicizzare i registri, i dati clickstream, le configurazioni, gli avvisi, i messaggi, gli 6.2 Cos’è Splunk 93 script, i dati sulle prestazioni e le statistiche da applicazioni, server e dispositivi di rete, sia fisici che virtuali; tale attività può acnhe essere effettuata tramite cloud. Figura 6.4. Metodo di caricamento dei dati in Splunk Le fonti dati più comuni, tra i dati che vengono caricati su Splunk, sono: • • • • • • • Dati struttutrati: – CSV; – JSON; – XML; Infrastruttura Microsoft: – Exchange; – Active Directory; – Sharepoint; Rete e sicurezza: – Syslog e SNMP; – Dispositivi Cisco; – Snort; Servizi web: – Apache; – IIS; Servizi di database: – Oracle; – MySQL; – Microsoft SQL Server; Cloud: – AWS Cloudtrail; – Amazon S3; – Azure; IT operation: – Nagios; 94 • • 6 Splunk – NetApp; – Cisco UCS; Virtualizzazione: – VMWare; – Xen Desktop; – XenApp; – Hyper-V; Servizi delle applicazioni: – JMX e JMS; – WebLogic; – WebSphere; – Tomcat; – JBOSS; A seguito di questa lista di tipi di dati (i principali sono mostrati nelle Figure 6.5 e 6.6), è abbastanza evidente che qualunque sia l’origine o il formato dei dati, Splunk è in grado di indicizzarli allo stesso modo, senza necessità di creare, personalizzare, acquistare e mantenere connettori dedicati. E via via che le esigenze di gestione dei dati crescono, Splunk è in grado scalare in modo efficiente e semplice con l’utilizzo di hardware standard. Figura 6.5. Tabella rappresentativa dei principali tipi di dati 6.2.2 Search Processing Language Splunk effettua ricerche nei dati con il potente e intuitivo linguaggio Splunk Search Processing Language (SPL). Splunk normalizza automaticamente i diversi formati di dati e mette a disposizione oltre 140 comandi per eseguire ricerche statistiche, calcolare metriche e, persino, cercare specifiche condizioni in una finestra scorrevole di tempo. L’SPL di Splunk combina le migliori funzionalità di SQL con la sintassi pipeline di Unix che consente all’utente di: 6.2 Cos’è Splunk 95 Figura 6.6. Tabella rappresentativa dei principali tipi di dati • • • accedere a tutti i dati nel formato originale; ottimizzare per eventi temporali; utilizzare la stessa lingua per le visualizzazioni. SPL, grazie agli oltre 140 comandi, può essere considerato come un linguaggio incredibilmente potente che può essere riassunto in cinque settori chiave. • • • • • Trovare l’ago nel pagliaio, ovvero ricercare per parole chiave e filtrare da qualsiasi insieme di dati. Inoltre, si possono alimentare i risultati della ricerca in subricerche per domande ancora più complesse. Arricchire ed esplorare, ovvero utilizzare il comando“ricerca” per unire i dati strutturati e non strutturati. È possibile, inoltre, utilizzare i comandi di esplorazione di dati come “cluster” e “analyzefields” per trovare le variabili dipendenti dai campi e le relazioni tra gli insiemi di dati. Visualizzare dati geografici in tempo reale, ovvero utilizzare il comando “iplocation”, per assegnare gli indirizzi IP a latitudine e longitudine, e “geostats”, per “mappare” le statistiche in tempo reale. Prevedere, graficare e visualizzare le statistiche, ovvero utilizzare il potente comando “statistiche”, con oltre 20 diverse opzioni, per calcolare le statistiche e per generare le tendenze. Una volta effettuato ciò è possibile graficare e visualizzare quei risultati e le statistiche in qualsiasi intervallo di tempo e granularità. Apprendimento automatico e rilevamento delle anomalie, ovvero utilizzare il rilevamento delle anomalie per scoprire gli eventi e le attività anomale. È possibile, inoltre, costruire e applicare modelli di apprendimento della macchina con comandi come “fit” e “apply”. Il Search Processing Language di Splunk (utilizzato nelle Figure 6.7 e 6.8) consente di esplorare rapidamente enormi quantità di dati-macchina per trovare “l’ago nel pagliaio” e scoprire la causa principale degli incidenti. Le operazioni di IT che richiedevano giorni o mesi, adesso possono essere realizzate in un tempo dell’ordine delle ore. “Una volta imparato quanto è potente SPL, vi chiederete come ve la siete cavata senza di esso” 96 6 Splunk Figura 6.7. Esempio di utilizzo dell’SPL Figura 6.8. Esempio di utilizzo dell’SPL si legge sul sito stesso di Splunk, tra la stragrande quantità di documentazione che viene fornita. Il tasto search è il cavallo di battaglia di Splunk. È uno dei comandi più semplici e più potenti; è un comando di base che non deve essre digitato, perché viene richiamato in modo implicito alla “testa” di una ricerca, recuperando eventi dagli 6.3 Caratteristiche principali 97 indici sul disco. Nel più semplice dei casi, se, per esempio, si inserisce solo il termine “failed ” nella casella di ricerca, Splunk intuisce che si vuole effettuare una ricerca, cercherà automaticamente “failed ” ovunque nei dati e restituirà ogni evento che presenta il termine “failed ”, evidenziato. I comandi di ricerca dicono al software Splunk cosa fare per gli eventi che sono stati recuperati dagli indici. Ad esempio, si devono utilizzare per filtrare le informazioni indesiderate, estrarre ulteriori informazioni, valutare nuovi campi, calcolare statistiche, riordinare i risultati o creare un grafico. Alcuni comandi di ricerca hanno funzioni e argomenti ad essi collegati. Ad esempio, è possibile utilizzare funzioni per formattare i dati in un grafico, descrivere il tipo di statistiche da calcolare e specificare quali campi sono da valutare. Alcuni comandi, inoltre, utilizzano clausole per specificare come raggruppare i risultati della ricerca. 6.3 Caratteristiche principali Splunk è differente dai precedenti approcci di gestione, controllo, protezione e raccolta d’intelligenza dai sistemi IT. Le ragioni della sua diversità possono essere cosı̀ riassunte: • • • • • • fornisce risultati immediati senza rischio; possiede tecnologie di indicizzazione e di ricerca ad alte prestazioni; è progettato per i dati temporali, ma non strutturati; analizza dati storici ed in tempo reale; indicizza i dati da qualsiasi risorsa; Tiene il passo con il cambiamento. A seguito della descrizione realizzata, si possono, adesso, delineare le caratteristiche principali che Splunk offre ai suoi utenti. 6.3.1 Ricerca e analisi La ricerca e l’analisi sono le operazioni fondamentali che svolge Splunk Enterprise, grazie alle funzioni presenti nella barra degli strumenti di Figura 6.9; esse, come è stato già affermato, operano sugli eventi che vengono indicizzati da Splunk stesso. I vantaggi relativi a queste attività sono i seguenti: • • Facilità nel distribuire e nell’utilizzare, ovvero capacità di connessione ai dati con pochi click e di creazione facilitata da potenti dashboard. Elevata scalabilità: esso è in grado di scalare agevolmente da un solo server a più datacenter, durante l’esecuzione della ricerca e dell’analisi. Questo poichè il clustering multisito e il bilanciamento automatico del carico scalano per supportare centinaia di terabyte di dati al giorno, ottimizzare i tempi di risposta e garantire una disponibilità costante. La funzione Search Head Clustering supporta un numero praticamente illimitato di utenti e ricerche concomitanti. L’archivio 98 6 Splunk d’analisi ad alte prestazioni e altre tecnologie di accelerazione consentono di generare report sui Big Data ad elevate velocità grazie all’estensione dell’uso di Splunk su infrastrutture multigeografiche e con più centri dati. Figura 6.9. Barra degli strumenti dell’applicazione di ricerca di Splunk Fondamentali sono la raccolta e l’indicizzazione dei dati, indipendentemente dal formato o dall’ubicazione. Dal momento che la struttura e gli schemi sono applicati solo al momento della ricerca, essi possono analizzare i dati senza alcuna limitazione. Con Splunk, infatti, è consentito cercare e analizzare i dati-macchina storici e in tempo reale da un unico punto. È possibile cercare termini o espressioni specifiche, utilizzare operatori booleani per affinare la ricerca o, ancora, tracciare transazioni attraverso più sistemi. I potenti comandi di reportistica e statistica consentono di controllare i volumi dei dati relativi alle transazioni, calcolare metriche e cercare condizioni specifiche all’interno di una finestra temporale variabile. La funzionalità Search Assistant offre suggerimenti durante la digitazione e una guida contestuale, per consentire di sfruttare al massimo le potenzialità del linguaggio di ricerca di Splunk. La convenienza sta nell’interazione con i risultati delle ricerche in tempo reale; è possibile restringere o allargare la visuale di una linea temporale, rivelando rapidamente tendenze, picchi e anomalie. Un semplice click consente di analizzare i risultati più in profondità ed eliminare ogni elemento di disturbo, fino ad arrivare a “scovare l’ago nel pagliaio”. Sia risolvendo un problema che investigando su un allarme di sicurezza, bastano pochi secondi per trovare la risposta, anzichè ore, senza che sia necessario fare escalation e coinvolgere altre persone. Ricerca ed allarmistica in tempo reale garantiscono capacità di correlazione dei dati, analisi e risposta agli eventi in modo immediato. In più, è possibile tracciare transazioni “live” e attività online, visualizzare e reagire a incidenti e attacchi nel momento in cui si verificano, controllando i livelli di servizio delle applicazioni in tempo reale. Splunk è in grado di estrarre conoscenza dai dati-macchina nel momento in cui inizia una ricerca; questo consente di utilizzare, immediatamente, i dati provenienti da nuove fonti. Per aggiungere contesto e significato ai dati-macchina si devono identificare, nominare e “taggare” campi di dati, oltre a integrare informazioni provenienti da database esterni, sistemi di gestione della configurazione e directory utente, allo scopo di rendere l’intero sistema più utile ed efficiente per tutti gli utenti. A proposito delle analisi e della ricerca, vediamo dei brevi approfondimenti relativi a tali attività. 6.3 Caratteristiche principali 99 Correlazione ed analisi Con Splunk è facile individuare relazioni tra eventi o attività (Figura 6.10). Il sistema crea relazioni in base al tempo, al luogo, o a risultati di ricerche personalizzate. Esso fornisce il comando transazione per individuare eventi correlati, come una transazione o una sessione, e indagare sulle transazioni non andate a buon fine. Splunk fornisce il comando rilevazione dei pattern degli eventi per individuare automaticamente pattern comuni o rari all’interno dei Big Data. Esso, altresı̀, consente agli utenti di individuare e condividere informazioni aggiuntive con la semplicità di un click offerta dall’interfaccia pivot. Figura 6.10. Esempio di ricerca che correla ed analizza Potenti visualizzazioni interattive Le nuove visualizzazioni, un framework di sviluppo e una libreria aperta consentono di visualizzare i dati in modo semplice e intuitivo. A proposito di ciò, rispetto a strumenti e script basati su riga di comando, un’interfaccia interattiva migliora notevolmente la user experience e la velocità con cui è possibile eseguire attività. Come già affermato, zoom in e out, sulla linea del tempo dei risultati, sono presenti per rilevare rapidamente tendenze, picchi e anomalie (Figura 6.11). Splunk consente di effettuare click per il drill down dei risultati ed eliminare il rumore per raggiungere “l’ago nel pagliaio”. Se si sta risolvendo un problema del cliente o indagando su un allarme di sicurezza, si otterrà la risposta in secondi o minuti anziché ore o giorni. 6.3.2 Report e dashboard Grazie all’editor delle dashboard è possibile creare delle dashboard “live” con pochi click. I cruscotti integrano più grafici e viste dei dati in tempo reale, per soddisfare le esigenze di un’ampia varietà di utenti, quali dirigenti, analisti aziendali o 100 6 Splunk Figura 6.11. Esempio di zoom in sulla linea temporale degli eventi di sicurezza, auditor, sviluppatori e amministratori di sistema. Gli utenti possono modificare le dashboard mediante una semplice interfaccia “drag and drop”, nonchè cambiare i tipi di grafici al volo, utilizzando appositi comandi integrati. Successivamente, vengono visualizzate le tendenze e le caratteristiche in dashboard e report personalizzati (Figure 6.12, 6.13 e 6.14), adatti alle proprie esigenze aziendali, operative e di sicurezza. Splunk consente di eseguire analisi più approfondite con la sovrapposizione dei grafici e i controlli per il movimento orizzontale e lo zoom. Le visualizzazioni predittive, in aggiunta, consentono di prevedere i punti di picco e di minimo, di pianificare le proprie risorse di sistema e di prevedere i carichi di lavoro. I report e le dashboard possono essere personalizzati, in modo tale da renderli leggibili e comprensibili per chiunque, condividerli come PDF o integrarli in altre applicazioni. L’analisi basata sulla reportistica è atta a verificare le oscillazioni tra alti e bassi, i riepiloghi dei valori più alti e la frequenza degli eventi. È, inoltre, fattibile la creazione da zero di report sofisticati e ricchi di informazioni, senza avere nessuna conoscenza approfondita dei comandi di ricerca. Da qualsiasi punto del grafico è consentito andare in profondità fino a risalire agli eventi originari. Alla fine dell’analisi è consigliato salvare i report e le dashboard, integrarli nelle applicazioni e visualizzarli sul proprio desktop o dispositivo mobile (Figura 6.15). Essi possono essere “sreenshottati” a intervalli prestabiliti, per poterli condividere, in futuro, con la dirigenza, gli utenti aziendali o altre parti interessate del reparto IT. 6.4 Funzionalità avanzate Splunk offre funzionalità chiave, fuori dagli schemi, per rendere grandi volumi di dati-macchina accessibili, utili e preziosi per IT e business. Più specificatamente, 6.4 Funzionalità avanzate 101 Figura 6.12. Utilizzo delle dashboard personalizzate Figura 6.13. Rappresentazione di dashboard personalizzate esso: • • • • • • scopre autonomamente conoscenza dai dati; monitora i dati e procura allarmi in tempo reale; fornisce potenti reportage ed analisi ad hoc; assicura una granulare sicurezza basata sui ruoli ed i controlli d’accesso; supporta una distribuzione flessibile; consente l’integrazione di un insieme di API che lo rendono facilmente estensibile. La grande popolarità di Splunk, e i conseguenti aggiornamenti che ne sono derivati, hanno consentito la comparsa di parecchie funzionalità avanzate che hanno 102 6 Splunk Figura 6.14. Personalizzazione di un grafico ottenuto da una ricerca Figura 6.15. Splunk fornisce interfacce “responsive” e permette l’accesso da dispositivi differenti aiutato l’espansione di Splunk in svariate applicazioni. In questa sezione prendiamo in considerazione alcune di esse. 6.4 Funzionalità avanzate 6.4.1 103 Monitoraggio e allarmi Piuttosto che utilizzare la ricerca semplicemente per reagire ai problemi o ad incidenti ad hoc, è opportuno essere proattivi. Splunk fornisce funzionalità flessibili di allarmi che migliorano la copertura del monitoraggio. E poichè funziona attraverso l’intera infrastruttura IT, è la più flessibile soluzione nel campo del monitoraggio. È possibile trasformare le ricerche salvate in allarmi in tempo reale, modificando le tempistiche relative agli eventi, come in Figura 6.16, e inviare automaticamente notifiche tramite email o RSS, eseguire azioni correttive attraverso la creazione di specifici script, inviare un’eccezione SNMP alla console di gestione del sistema o generare un ticket per il servizio di assistenza. La pianificazione degli avvisi è un ottimo modo per completare l’indagine su un problema o un incidente di sicurezza, esaminando in modo proattivo per prevenire avvenimenti simili in futuro. Figura 6.16. Modifica delle tempistiche relative agli eventi Splunk permette di correlare gli eventi complessi da più sorgenti di dati in tutta l’infrastruttura IT; in questo modo è possibile monitorare gli eventi più significativi (Figura 6.17). Ad esempio, è possibile tenere traccia di una serie di eventi correlati come una singola transazione per misurarne la durata o lo stato. Gli avvisi possono essere basati su una varietà di condizioni basate sulle tendenze, su diverse soglie e su altri criteri complessi. Il linguaggio di ricerca va oltre le semplici ricerche booleane; sono possibili ricerche di campi, ricerche statistiche e sub-ricerche; è possibile correlare tutto quello che si vuole e avvisare su modelli complessi come attacchi di forza e scenari di frode. Tutti questi dati in streaming, ottenuti dal monitoraggio, significano estrazione; in tutto ciò, normalizzare i timestamp è molto importante. Splunk determina automaticamente il tempo di qualsiasi evento, anche con formati più atipici o non tradizionali. I timestamp di dati mancanti possono essere gestiti inferendoli dal contesto. 104 6 Splunk Figura 6.17. Report relativo ad un’operazione di monitoraggio di eventi forniti da più sorgenti Un monitoraggio più esteso dei sistemi, le opzioni single sign-on e la gestione basata sui ruoli incrementano l’efficienza operativa, la sicurezza e la flessibilità; tutto ciò dà la possibilità di trovare una soluzione più rapidamente, grazie ad una gestione mission-critical avanzata. Un’applicazione abbastanza diffusa del monitoraggio è il suo utilizzo avanzato nei servizi cloud; le nuove app avanzate per Akamai, AWS e ServiceNow assicurano la completa visibilità delle prestazioni e delle condizioni dei principali servizi cloud in uso in tempo reale. 6.4.2 Sicurezza Il cuore di Splunk è un modello di sicurezza estremamente robusto ed efficace. Ogni transazione di Splunk viene autenticata, incluse le attività di sistema, le attività utente attraverso il web e da riga di comando. Splunk si integra, inoltre, con Active Directory e directory server compatibili con LDAP, per l’applicazione delle policy di sicurezza a livello aziendale. L’integrazione single sign-on consente l’autenticazione attraverso delle credenziali utente. Poichè tutti i dati necessari per risolvere i problemi, analizzare gli incidenti di sicurezza e dimostrare la conformità sono persistenti in Splunk, è possibile salvaguardare l’accesso ai server di produzione sensibili. È, ovviamente, necessario proteggere i dati-macchina, soprattutto se ci si rende conto di avere risorse informative preziose. Splunk fornisce una gestione sicura dei dati, controlli di accesso, capacità di controllo, garanzia di integrità, oltre all’integrazione con soluzioni enterprise di tipo single sign-on. Vediamo, adesso, nel dettaglio, gli argomenti principali che legano Splunk alla sicurezza. 6.4 Funzionalità avanzate 105 Accedi da ovunque Gli amministratori e gli utenti possono accedere in modo sicuro a Splunk Enterprise con qualsiasi browser standard. Splunk Mobile Access consente agli utenti di visualizzare, interagire e condividere l’operational intelligence di Splunk da dispositivi mobili Apple iOS o Android (Figura 6.18). Allarmi personalizzati e visualizzazioni personalizzate consentono ai responsabili di tenere traccia e di rispondere agli indicatori di performance, e agli amministratori in prima linea di monitorare e studiare lo stato operativo da qualunque luogo. Figura 6.18. Splunk in un dispositivo mobile Sicurezza e amministrazione Un modello di sicurezza robusto offre trasferimento sicuro dei dati, controlli di accesso dettagliati basati su ruoli, integrazione LDAP e autenticazione unica, verificabilità e integrità dei dati. Ogni operazione è autenticata, sia che avvenga attraverso le interfacce web e mobili, da linea di comando o tramite l’API di Splunk Enterprise. La console di amministrazione distribuita consente un’amministrazione a livello di azienda e un audit trail firmato e completo delle azioni amministrative e della cronologia delle ricerche. Controllo di accesso granulare Naturalmente è necessaria, anche, la capacità di controllo delle azioni che gli utenti possono effettuare, nonchè individuare a quali dati, strumenti e cruscotti essi possono accedere. Non necessariamente si vuole consentire l’accesso del team di sviluppo delle applicazioni alle proprie scansioni di IDS, avvisi e registri di firewall. Splunk è un sistema flessibile basato su ruolo che permette di costruire i ruoli per “mappare” i criteri dell’organizzazione per le diverse classi di utenti. Una volta che è 106 6 Splunk stato effettuato il setting degli accessi, è necessario monitorare chi sta facendo cosa. Splunk registra le attività degli utenti e le attività amministrative, cosı̀ è possibile controllare chi accede al tipo di dati e quando. Integrità dei dati In una qualunque analisi è necessario garantire l’integrità dei dati. Come si fa a sapere se i risultati della ricerca o i report che si stanno visualizzando si basano su dati che non siano stati manomessi? Con Splunk, i singoli eventi possono essere firmati. Splunk prevede, anche, misure di integrità che dimostrano che nessuno ha inserito o eliminato eventi dal flusso originale. Applicazioni: Università Gli istituti universitari sono particolarmente esposti alle minacce di sicurezza in virtù delle architetture di rete aperte e del numero di utenti che servono su diversi canali, all’interno e all’esterno del campus. Inoltre, sono chiamati a rispettare diversi obblighi e standard normativi come PCI, Sarbanes-Oxley, FERPA e HIPAA, che vanno ad aggiungersi ai requisiti imposti sull’infrastruttura IT. Splunk può aiutare a: • • • • • Raccogliere e indicizzare tutti i dati-macchina per consentire una completa consapevolezza situazionale. Avere una migliore visione dell’operatività IT e dei requisiti dei dati imposti da normative e incarichi. Monitorare le reti negli istituti universitari per garantire una sicurezza e una conformità a basso costo e ridurre i rischi. Supportare la creazione di report ad hoc e il monitoraggio in tempo reale degli incidenti e degli attacchi, in modo che i team addetti alla sicurezza possano reagire più prontamente alle minacce. Ridurre i costi, con un’operatività più efficiente e decisioni migliori nell’intero istituto universitario. I campus universitari intendono essere dei luoghi in cui le informazioni possono essere condivise in modo aperto e diffuso, e l’infrastruttura informatica contribuisce a renderlo possibile. Splunk aiuta a individuare in tempo reale i pattern di uso improprio delle reti, mettendo in relazione i dati-macchina provenienti da una grande varietà di fonti. I campus, infine, possono acquisire informazioni su problemi e metriche importanti nelle applicazioni e nell’infrastruttura IT utilizzando Splunk per indicizzare, eseguire ricerche e analizzare i dati. Grazie a Splunk è possibile tracciare le transazioni lungo il loro intero ciclo di vita su tutti i sistemi con cui interagiscono studenti, docenti o membri del personale. 6.5 SplunkApp La piattaforma Splunk rende semplice personalizzare Splunk Enterprise per venire incontro alle esigenze di qualunque progetto. Gli sviluppatori possono realizzare 6.5 SplunkApp 107 applicazioni Splunk personalizzate o integrare i dati in altre applicazioni usando API o SDK REST per JavaScript, JSON, Java, Python, Ruby e PHP. Le applicazioni personalizzate possono sfruttare le ricche funzionalità della piattaforma Splunk, oltre che delle applicazioni esistenti disponibili nella libreria di applicazioni Splunk (Figure 6.19 e 6.20). Figura 6.19. Alcuni esempi di applicazioni realizzate con Splunk Figura 6.20. Altri esempi di applicazioni realizzate con Splunk Le app di Splunk, dei suoi partner e della sua comunità potenziano ed estendono le funzionalità della piattaforma. Splunk ottimizza la raccolta e l’analisi dei dati da qualunque fonte preferita e mette a disposizione degli utenti visualizzazioni e funzioni pre-configurate per la sicurezza, la gestione IT, l’analisi aziendale e altro. Qualunque sia la propria esigenza, queste app mettono a disposizione risultati potenti già pronti all’uso. Basta sfogliare Splunkbase per sfruttare le centinaia di app e i componenti aggiuntivi (add-on) che si possono usare immediatamente con Splunk. Con Splunk sarà possbile creare applicazioni (app) personalizzate, per offrire una user experience “su misura”, in base ai diversi ruoli e casi d’uso. È consentito condividere e utilizzare le app solo all’interno dell’azienda, oppure renderle disponibili all’interno della community Splunk. Nel sito della community (www.splunkbase.com), 108 6 Splunk è possibile trovare una grande e crescente quantità di app, realizzate dai clienti, dai partner e dall’azienda proprietaria di Splunk. Vi sono app che aiutano a visualizzare i dati geograficamente o che offrono visualizzazioni di conformità preconfigurate, o ancora app per diverse tecnologie, quali Windows, Linux, Unix, Virtualizzazione, Networking, e tanto altro ancora. 7 Progettazione di un software multimediale per l’apprendimento di Splunk Questo capitolo illustra le varie attività relative alla progettazione di un filmato per l’apprendimento di Splunk. Nel fare questo, utilizzeremo la metodologia presentata nel Capitolo 4. 7.1 Premessa In questo capitolo illustreremo la progettazione di un software multimediale per l’apprendimento di Splunk. Come abbiamo visto nel Capitolo 4, non esiste una metodologia standardizzata per la progettazione di tale tipologia di software. Per tale ragione, in questo capitolo, avevamo descritto una proposta e l’avevamo applicata alla progettazione di un filmato per l’apprendimento di MongoDB. In questo capitolo applicheremo la stessa metodologia per la progettazione di un software multimediale per l’apprendimento di Splunk. 7.2 Progettazione della vista logica In Figura 7.1 viene mostrato il grafico che rappresenta la vista logica del software multimediale da realizzare. Come si può notare, le informazioni, organizzate sotto forma di albero di ricerca, in modo abbastanza dettagliato e chiaro, seguono un ragionamento logico che è proprio di questa tipologia di vista. È evidente che il primo argomento da trattare sono i Big Data. Per quanto riguarda tale tematica, una problematica importante è rappresentata dalla loro analisi, e uno dei principali software attualmente a disposizione per tale scopo risulta essere Splunk Enterprise. Riguardo quest’ultimo sono state messe in evidenza l’ampia assistenza che viene fornita all’utente, con relativo approfondimento sulla documentazione (definita “Docs”) e sugli eventi (i “live”) realizzati per essere più “vicini” alla gente, l’installazione, con relativa interfaccia web d’apertura, la panoramica sui dati, la ricerca ed, infine, le App messe a disposizione. 110 7 Progettazione di un software multimediale per l’apprendimento di Splunk Figura 7.1. Visualizzazione dell’albero connesso alla vista logica 7.3 Progettazione della vista fisica Nella Figura 7.2 si intuisce con estrema chiarezza, e in modo fluido, la sequenza dei topic (ottenuta applicando la DFS all’albero di Figura 7.1) che caratterizzeranno il nostro software multimediale. Figura 7.2. Progettazione della vista fisica relativa al nostro software multimediale 7.4 Progettazione della vista utente 111 Dalla lista risultante si evincono, soprattutto, quali sono le dipendenze delle operazioni che si possono eseguire nel momento in cui i dati di interesse vengono caricati nella piattaforma; ma soprattuto, si nota tutto ciò che può conseguire da un’approfondita ricerca dei dati in questione, a partire dall’inserimento dei lookup, i quali sono dei file da caricare e servono ad aggiungere informazione agli eventi che si stanno analizzando, fino ad arrivare alla creazione di vere e proprie dashboard da personalizzare e rendere il più dettagliate possibile. 7.4 Progettazione della vista utente L’ultimo passaggio della progettazione è la vista utente, che permette la creazione dei mockup di livello 1 relativi alle principali schermate del software multimediale. Tali mockup verranno mostrati e descritti di seguito, nelle successive sottosezioni. 7.4.1 Big Data Nella Figura 7.3 viene illustrato il mockup relativo ai Big Data. Come si evince dalla figura, esso è incentrato sulle principali caratteristiche, denominate “cinque v”, relative ai Big Data. 7.4.2 Analisi dei Big Data Nel mockup di Figura 7.4 vengono sottolineati i principali passaggi dell’analisi dei Big Data. Viene enfatizzata, con la metafora dell’esplosione, la difficoltà dell’esecuzione di tali operazioni e viene indicato Splunk come una delle possibili soluzioni a tali difficoltà. 7.4.3 Splunk Enterprise Nel mockup di Figura 7.5 vengono esposte le più importanti caratteristiche di Splunk Enterprise, grazie ad una rappresentazione che sfrutta a livello grafico il logo di Splunk stesso. Al di sotto di essa, viene riportata una citazione che, con estrema brevità, esprime l’importanza che assume Splunk in questo contesto. 7.4.4 Assistenza Nel mockup di Figura 7.6 vengono indicate le note positive riguardo all’assistenza fornita da Splunk; nello stesso mockup vengono anche illustrati i principali servizi offerti. 7.4.5 Docs e SplunkLive Nel mockup di Figura 7.7 vi è un’indicazione su ciò che è disponibile per l’utenza grazie a “Docs” ed a “SplunkLive”. 112 7 Progettazione di un software multimediale per l’apprendimento di Splunk Figura 7.3. Mockup relativo ai Big Data 7.4.6 Installazione Nel mockup di Figura 7.8 viene presentata l’installazione di Splunk. 7.4.7 SplunkWeb Nel mockup di Figura 7.9 vi è una rappresentazione, attraverso il browser, del primo avvio di Splunk. 7.4.8 Panoramica Nella Figura 7.10 vengono replicate le parti che compongono la schermata principale di Splunk. 7.4.9 Aggiunta dati In Figura 7.11 è stata emulata, il più dettagliatamente possibile, la finestra di Splunk relativa all’aggiunta dei dati. Essa permette di eseguire due tipi di operazioni che vedremo nei mockup successivi. 7.4 Progettazione della vista utente 113 Figura 7.4. Mockup relativo all’analisi dei Big Data 7.4.10 Caricamento In Figura 7.12 è stata emulata, il più dettagliatamente possibile, la finestra di Splunk relativa al caricamento dei dati. In particolare, qui è rappresentato il primo dei cinque step previsti da tale operazione. 7.4.11 Monitoraggio In Figura 7.13 è stata emulata, il più dettagliatamente possibile, la finestra di Splunk relativa al monitoraggio dei dati. Questa è l’operazione tramite la quale l’utente, attraverso i cinque step, può caricare i quattro tipi di dati elencati a sinistra nel mockup. 7.4.12 Streaming In Figura 7.14 è stata emulata, il più dettagliatamente possibile, la finestra di Splunk relativa allo streaming dei dati su cui lavora il computer. Questa è l’operazione tramite la quale l’utente, in tempo reale, può verificare lo stato del sistema e dei dati caricati, in modo tale da poter valutare come migliorare le prestazioni del sistema e altro ancora. 114 7 Progettazione di un software multimediale per l’apprendimento di Splunk Figura 7.5. Mockup introduttivo su Splunk Enterprise 7.4.13 Ricerca In Figura 7.15 è stata emulata, il più dettagliatamente possibile, la finestra di Splunk relativa al ricerca degli eventi relativi ai dati caricati in Spunk. Questa è l’operazione tramite la quale l’utente, attraverso l’SPL, effettua una serie di ricerche volte a raggiungere un determinato obbiettivo. 7.4.14 Lookup e successivi Dall’analisi della vista fisica di Figura 7.2, sappiamo che la progettazione del software multimediale prevede, dopo la ricerca, gli strumenti dei lookup, degli allarmi, dei report e delle dashboard; tutti questi strumenti sono relativi alla ricerca, in quanto possono essere utilizzati solo dopo aver ottenuto dei risultati concreti grazie ad essa. Nella vista utente, però, non è stato necessario creare dei mockup appositi per questi punti della vista fisica, in quanto sarebbero risultati identici al mockup relativo alla ricerca. 7.4.15 Troubleshooting e sicurezza In Figura 7.16 vengono rappresentati tutti gli aspetti relativi alla sicurezza in Splunk, nonchè il cosiddetto “troubleshooting”, ovvero la risoluzione dei problemi che Splunk attua grazie alle ricerche approfondite di cui sopra, soprattutto sfruttando tecniche come il “drill-down”. 7.4 Progettazione della vista utente 115 Figura 7.6. Mockup rappresentativo all’assistenza fornita da Splunk 7.4.16 SplunkApp In Figura 7.17 è stata emulata, il più dettagliatamente possibile, la finestra di Splunk relativa alle applicazioni che è possibile installare in Splunk. A destra, nel mockup, è possibile notare come ogni applicazione viene dettagliatamente descritta. 7.4.17 Aggiunta In Figura 7.18 è stata emulata, il più dettagliatamente possibile, la finestra di Splunk relativa al caricamento di un’applicazione in Spunk. Questa operazione permette il caricamento di un file relativo all’applicazione, chiaramente previe direttive fornite all’utente. 7.4.18 Gestione In Figura 7.19 è stata emulata, il più dettagliatamente possibile, la finestra di Splunk relativa al gestione delle applicazioni caricate sul proprio account di Spunk. Si può notare come, per facilitarne tale gestione, la lista delle applicazioni è accompagnata da una serie di indicazioni relative a ciascuna di esse. 116 7 Progettazione di un software multimediale per l’apprendimento di Splunk Figura 7.7. Mockup rappresentativo degli strumenti “SplunkLive” e “Docs” di Splunk Figura 7.8. Mockup rappresentativo dell’installazione di Splunk 7.4 Progettazione della vista utente 117 Figura 7.9. Mockup rappresentativo della prima apertura di browser attraverso Splunk Figura 7.10. Una panoramica generale della schermata principale di Splunk 118 7 Progettazione di un software multimediale per l’apprendimento di Splunk Figura 7.11. Mockup rappresentativo dell’aggiunta dei dati in Splunk Figura 7.12. Mockup rappresentativo del caricamento dei dati in Splunk 7.4 Progettazione della vista utente Figura 7.13. Mockup rappresentativo del monitoraggio dei dati in Splunk Figura 7.14. Mockup rappresentativo dello streaming dei dati in Splunk 119 120 7 Progettazione di un software multimediale per l’apprendimento di Splunk Figura 7.15. Mockup rappresentativo della ricerca degli eventi in Splunk Figura 7.16. Mockup rappresentativo della risoluzione dei problemi e della sicurezza in Splunk 7.4 Progettazione della vista utente 121 Figura 7.17. Mockup rappresentativo della pagine delle applicazioni di Splunk Figura 7.18. Mockup rappresentativo del caricamento delle applicazioni in Splunk 122 7 Progettazione di un software multimediale per l’apprendimento di Splunk Figura 7.19. Mockup rappresentativo della gestione delle applicazioni in Splunk 8 Realizzazione di un software multimediale per l’apprendimento di Splunk In questo capitolo verranno discussi i processi di realizzazione di un software multimediale per l’apprendimento di Splunk, cosı̀ come è stato fatto nel Capitolo 5 per MongoDB. Il software è stato realizzato con la stessa metodologia del corrispettivo software per l’apprendimento di MongoDB. Successivamente, verranno mostrati i punti salienti del filmato realizzato. 8.1 Realizzazione del software multimediale Seguendo le linee guida fornite dalla progettazione realizzata in precedenza, è stato possibile portare a termine la creazione del software multimediale; per supportare l’apprendimento di Splunk. I passaggi che hanno portato, grazie all’utilizzo di Camtasia Studio, alla realizzazione del filmato sono analoghi a quelli visti nel Capitolo 5. Più specificatamente, tali passaggi sono i seguenti: • • • • creazione della presentazione PowerPoint; registrazione della schermata; panoramica descrittiva; editing dei video. Essi verranno discussi in dettaglio nelle prossime sottosezioni. 8.1.1 Creazione della presentazione PowerPoint La parte del filmato dedicata alle nozioni più teoriche è stata realizzata grazie ad una presentazione, eseguita attraverso Microsoft PowerPoint. Essa segue, principalmente, i mockup che abbiamo definito in fase di progettazione. Innanzitutto, è stato impostato lo stesso tema scelto per la realizzazione esposta nel Capitolo 5; esso ricorda i colori “istituzionali” di Splunk e risulta essere abbastanza semplice e “pulito”. Successivamente, sono state create circa venti diapositive, e si è provveduto a definire: 124 • • 8 Realizzazione di un software multimediale per l’apprendimento di Splunk le transizioni tra di esse; in particolare, è stato scelto il “drappeggio”; gli intervalli di visualizzazione di ogni diapositiva; tali intervalli, chiaramente, sono legati al suo contenuto informativo. I contenuti su cui si focalizza la presentazione sono: 1. 2. 3. 4. I Big Data; L’analisi dei Big Data; Splunk Enterprise; SplunkApp. A proposito del terzo punto, ne verranno presentate l’installazione e una panoramica generale in modo tale da dare un’idea esplicativa su tutte le sezioni che compongono il software. 8.1.2 Registrazione della schermata Il lato pratico del filmato è quello che dona un carattere interattivo al software multimediale, poichè viene ottenuto tramite la registrazione della schermata durante l’utilizzo di Splunk Enterprise da parte dell’utente. Tale registrazione, come è stato già spiegato, è permessa da Camtasia Studio; a tal proposito, non c’è molto da dire, se non evidenziare la semplicità di questa operazione, garantita dalla capacità di Camtasia di rilevare la finestra che è in uso al momento della registrazione, per poter catturare esclusivamente ciò che accade all’interno di essa. È sufficiente fare partire la registrazione, dopo aver scelto la regione dello schermo da considerare, ed utilizzare i classici comandi di pausa e di stop. Nel nostro caso sono state effettuate quattro registrazioni; queste, nel seguente ordine, formeranno il video finale: 1. 2. 3. 4. l’unica presentazione PowerPoint; i servizi offerti dall’assistenza di Splunk; il download, l’installazione e la panoramica generale di Splunk; la scelta, l’installazione e la panoramica generale di un’applicazione correlata a Splunk. Per quanto riguarda l’ultimo punto, in particolare, è stata creata una terza registrazione della schermata, sull’impronta della seconda, che si sofferma, brevemente, sull’applicazione della Sottosezione 8.1.3. A questo punto non resta che personalizzare il video al meglio per renderlo comprensibile anche agli occhi di chi non è pratico con l’analisi dei Big Data. L’obbiettivo finale è, infatti, essere chiari, soprattutto con questa tipologia di utenti. Prima della personalizzazione, presentiamo l’applicazione da noi prescelta per illustrare al meglio le funzionalità di Splunk. 8.1 Realizzazione del software multimediale 8.1.3 125 Applicazione d’esempio Come è stato già accennato, l’applicazione in questione serve a fornire un esempio delle applicazioni che è possibile caricare, attraverso SplunkBase, su Splunk. Nel nostro caso ci è sembrato estremamente interessante utilizzare come applicazione d’esempio la FireEye App for Splunk Enterprise v3, il cui logo si trova in Figura 8.1. Figura 8.1. Logo della FireEye App for Splunk Enterprise v3 Tale applicazione è progettata per un ambiente SOC/NOC, cioè di rete e di sicurezza. Essa, infatti, serve per effettuare controlli di sicurezza e risoluzioni di eventuali problemi rilevati. Sommariamente, le funzionalità da essa fornite sono le seguenti: • • • • • • dashboard basate sul feedback dei clienti per visualizzare le analisi sulle tendenze di maggior interesse per loro; dashboard disegnate per essere proiettate o visualizzate su un grande display; dashboard progettate per essere utilizzate dagli analisti stessi, fornendo ulteriori funzionalità e capacità di drill-down; combinazioni di dashboard da visualizzare per effettuare analisi in modo tale da tenere tutto “sotto controllo”; controllo di integrità dell’app stessa, menu di setup e documentazione; opzioni tradizionali di Splunk. Infine, le applicazioni a cui essa si presta sono le seguenti: • • • • • • prevenzione prevenzione prevenzione prevenzione prevenzione analisi delle 8.1.4 dalle minacce della rete (NX); dalle minacce delle email (EX); dalle minacce dei cloud (ETP); dalle minacce dei contenuti (FX); dalle minacce degli endpoint (HX); minacce rilevate. Editing dei video Al termine delle registrazioni, ci siamo concentrati sull’editing dei video. Dunque, abbiamo tagliato le parti delle registrazioni che non erano utili, quelle ripetute e quelle incomprensibili. Successivamente, abbiamo affiancato i quattro video e, attraverso una serie di operazioni di taglia, copia e incolla delle clip, abbiamo “mixato” questi ultimi per rendere la visualizzazione del filmato più fluida e corretta. 126 8 Realizzazione di un software multimediale per l’apprendimento di Splunk Proseguendo nella nostra trattazione vediamo, ora, cosa è stato fatto per dare un tono più creativo al filmato; si può notare come le operazioni eseguite sono le stesse viste nel Capitolo 5. Passaggio tra le clip Il passaggio tra una clip e l’altra è stato uniformato il più possibile, scegliendo di effettuare un’unica transizione tra le clip laddove avveniva un cambiamento della schermata. La transizione prescelta è Fade in/out e, come si potrà verificare, assegna al video un effetto di dissolvenza in entrata ed in uscita. Essa è stata inserita all’inizio e alla fine delle clip dove è risultata necessaria. Questa soluzione evita con semplicità i cambi netti di schermata. Utilizzo dello zoom L’utilizzo dello zoom è l’effetto principale per poter focalizzare l’attenzione dello spettatore su ciò che si desidera. Proprio per questo, durante il video, ci saranno degli zoom specifici sulle finestre che vengono utilizzate al momento della registrazione. Essi sono stati impostati in modo tale da allontanarsi ed avvicinarsi alla finestra in modo graduale e sensibile. In particolare, lo zoom è stato applicato durante l’installazione di Splunk ed, in ogni caso, nelle zone da visionare che si trovavano a distanza dallo spettatore. Inserimento delle descrizioni Le descrizioni sono state inserite attraverso i callout, quindi mediante le didascalie. Esse appaiono e scompaiono dal video al momento opportuno, e con una tempistica dell’ordine di due secondi. Sono stati scelti i callout rettangolari, posizionati in fondo, e di una tonalità vicina a quella delllo sfondo delle finestre aperte durante l’utilizzo di Splunk. Estremamente utile è stato l’inserimento dei cosiddetti click del cursore, sotto forma di callout; essi, di forma circolare, danno un maggior senso di interattività e di realismo. Il loro obbiettivo è, infatti, quello di dare un’idea su ciò che sta accadendo durante la registrazione. In fase di realizzazione, è stato evitato l’effetto di gesture denominato swipe, proprio dei suddetti click ; questo perchè, in questo software multimediale, non sono presenti spostamenti evidenti di oggetti nella schermata durante la registrazione stessa. Inserimento della musica L’ultimo passo fondamentale, prima dell’esportazione del software multimediale, è l’inserimento della musica. Essa, dopo essere stata scelta, è stata importata come media nel progetto di Camtasia Studio, ed è stata modificata in base alle necessità. In particolare, è stato aggiunto l’effetto lower volume, per poter dare una sensazione di suono che va a scemare, prima dell’avvio del nuovo pezzo musicale o alla fine del filmato. 8.2 Uno sguardo al software realizzato 127 8.2 Uno sguardo al software realizzato Terminata la realizzazione del software multimediale, è, adesso, possibile dare un’idea del risultato finale attraverso una serie di immagini. La presentazione PowerPoint è caratterizzata dallo stile evidenziato in Figura 8.2. Figura 8.2. Indice della presentazione PowerPoint L’interattività inizia con l’assistenza fornita da Splunk e continua con l’installazione della piattaforma (Figure 8.3 e 8.4). Figura 8.3. Assistenza fornita da Splunk 128 8 Realizzazione di un software multimediale per l’apprendimento di Splunk Figura 8.4. Installazione di Splunk I commenti e lo zoom sono utilizzati nel momento in cui viene presentata un’immagine catturata, come mostrato in Figura 8.5. Figura 8.5. Utilizzo dello zoom e del cursore durante la panoramica di Splunk L’introduzione all’applicazione FireEye avviene attraverso la schermata di Figura 8.6. 8.2 Uno sguardo al software realizzato 129 Figura 8.6. FireEye App for Splunk Enterprise v3 L’ultima parte del video si concentra sulla gestione delle applicazioni (Figura 8.7). Figura 8.7. Cattura della finestra principale dedicata alla gestione delle applicazioni 9 Conclusioni e uno sguardo al futuro Durante la stesura di questa tesi si sono affrontati i processi di progettazione e realizzazione di due software multimediali necessari per rendere semplice e stimolante l’apprendimento di MongoDB e Splunk, nel loro utilizzo nell’ambito della Big Data Analytics. Nei primi passi si è discusso della progettazione del software didattico dedicato a MongoDB. In particolare, attraverso la creazione di opportune viste logiche, fisiche e, infine, utente è stato generato un filo conduttore che parte dai DBMS NoSQL, per soffemarsi sui DBMS documentali e, quindi, su MongoDB. In relazione ad esso, è stata presentata l’installazione di questo DBMS, con relativa configurazione, e l’implementazione dello stesso; quest’ultima è stata eseguita su un’interfaccia client denominata MongoChef. Entrando nel vivo del lavoro svolto, si sono analizzati i dati relativi ad “Expo2015”, ottenendo importanti risultati relativi ai valori presenti nei vari dataset reperiti dagli open data. Ciò è stato possibile grazie alle tante risorse che ci ha messo a disposizione MongoDB. Il passo derivante da tale analisi è stato quello di mettere in pratica la progettazione, e quindi di realizzare il software multimediale finale incentrato su MongoDB. Ciò è stato ottenuto grazie ad un “mix” di registrazioni durante l’utilizzo del tool, attraverso MongoChef, e di presentazioni PowerPoint relative alle spiegazioni teoriche. Una volta terminato il lavoro su MongoDB ci siamo concentrati su Splunk. In particolare è stato raggiunto l’obbiettivo di creare un discorso logico partendo dai Big Data, scendendo nel dettaglio con l’analisi degli stessi ed eseguendo quest’analisi attraverso Splunk. Per quanto concerne quest’ultimo tool, è stata data una visione generale dell’assistenza che pone a disposizione, per poi inserirne la sua installazione ed il suo utilizzo in ogni sezione che lo compone. All’atto pratico è stata presa in considerazione un’applicazione, presente nello “store” incluso in Splunk, e cioè “FireEye”. Più precisamente, è stata presentata una panoramica generale in cui si può notare come essa permette l’analisi dei dati per mantenere la sicurezza del terminale preso in considerazione. La fase di sviluppo dei software, al momento, è terminata. I prossimi passi di questo lavoro andranno di pari passo con gli aggiornamenti che saranno pubblicati sia per MongoDB che per Splunk, con la forte speranza che il costante impegno volto 132 9 Conclusioni e uno sguardo al futuro al loro miglioramento ed al raffinamento delle loro promettenti potenzialità possano, nei mesi e negli anni a venire, consolidarne i punti di forza e migliorare gli aspetti che appaiono, al contrario, ancora deboli, contestabili o, comunque, limitanti. Per quanto riguarda i possibili sviluppi futuri in questo settore, ad oggi i Big Data hanno un potenziale ancora non completamente espresso, proprio a causa dell’impossibilità di farne un utilizzo ancora più spinto; quest’ultimo dovrebbe passare necessariamente per un incremento della componente di intelligenza artificiale che contraddistingue qualsiasi tool e qualsiasi processo di Big Data Analytics. A nostro avviso, i Big Data ci aiuteranno a trovare sul web tutto ciò che cerchiamo, ad evitare intelligentemente il traffico, grazie a dei percorsi mirati generati in tempo reale, a risolvere importanti problemi riguardanti la salute mondiale ed a migliorare le condizioni lavorative. Appare interessante citare, infine, Automatic Statistician, un progetto annunciato da Google relativo all’uso dell’ “Intelligenza Artificiale per la scienza dei dati”; tale proposito ha lo scopo di automatizzare la selezione, la costruzione e la spiegazione di modelli statistici per l’analisi dei Big Data. E quale miglior colosso come Google per discutere di Big Data; una realtà rappresenta, senza dubbio, l’azienda che lavora con il maggior quantitativo di dati possibile. Il futuro dovrebbe farci vedere il totale delle aziende esistenti sfruttare i Big Data per poter raggiungere gli obbiettivi che esse si sono imposte; ciò, ovviamente, porterà alla nascita di nuovi software che aiuteranno la creazione di altrettanti software multimediali. Riferimenti bibliografici 1. Il piccolo libro di MongoDB. http://nicolaiarocci.com/mongodb/il-piccololibro-di-mongodb.pdf, 2012. 2. Camtasia for VeryTech. http://verytech.smartworld.it/come-utilizzarecamtasia-studio-8-159970.html, 2013. 3. Guida MongoDB. http://www.html.it/guide/guida-mongodb/, 2014. 4. I Big Data in IBM. https://www.ibm.com/big-data/us/en/, 2014. 5. Splunk secondo ArrowECS. http://www.arrowecs.it/prodotti/splunk/splunk. cfm, 2014. 6. I Big Data secondo SAS. http://www.sas.com/it_it/insights/big-data/what-isbig-data.html, 2015. 7. Camtasia Studio. https://www.techsmith.com/camtasia.html?gclid=CMmp-oMvc8CFWQq0wodwA0LEA, 2016. 8. I software multimediali Magix. http://www.magix.com/it/software-multimediali/, 2016. 9. MongoDB. https://www.mongodb.com, 2016. 10. Splunk. https://www.splunk.com/it_it, 2016. 11. C. Broadley and M. Dixon. 6. Camtasia Studio 8 - Advanced Editing and Publishing Techniques. Packt Publishing, 2013. 12. K. Chodorow. MongoDB: The Definitive Guide. O’Reilly Media, 2013. 13. T. Erl, W. Khattak, and P.Buhler. Big Data Fundamentals: Concepts, Drivers & Techniques. Prentice Hall, 2015. 14. P. Johnson. Splunk Operational Intelligence Cookbook. Packt Publishing, 2014. 15. J. Miller. Implementing Splunk. Packt Publishing, 2015. 16. F.J. Ohlhorst. Big Data Analytics: Turning Big Data into Big Money. John Wiley & Sons, 2012. 17. D. Park. Camtasia Studio 6: The Definitive Guide. Jones & Bartlett Learning, 2009. 18. D. Rangel. MongoDB: Learn One Of The Most Popular NoSQL Databases. CreateSpace Independent Publishing Platform, 2015. 19. A. Rezzani. Big data. Architettura, tecnologie e metodi per l’utilizzo di grandi basi di dati. Apogeo Education, 2013. 20. N. Sabharwal. Big Data NoSQL Architecting MongoDB. CreateSpace Independent Publishing Platform, 2014. 21. M.V. Schönberger and K. Cukier. Big Data. Una rivoluzione che trasformerà il nostro modo di vivere e già minaccia la nostra libertà. Garzanti, 2013. 22. K. Siegel. TechSmith Camtasia Studio 8: The Essentials. IconLogic, 2013. 23. B.P. Sigman. Splunk Essentials: Leverage the Power of Splunk to Efficiently Analyze Machine, Log, Web, and Social Media Data. Packt Publishing, 2015. 134 Riferimenti bibliografici 24. K. Smith. Splunk Developer’s Guide. Packt Publishing, 2015. 25. D. Warnock. Mongodb: Learn Mongodb in a Simple Way! CreateSpace Independent Publishing Platform, 2016.