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.