Metodi per la gestione e l utilizzo efficiente dei dati Dr. Gabriele Galatolo, g.galatolo@kode.srl I metodi di controllo - il controllo dei metodi Dalla Tecnica alla Norma: gli oli come sistema modello Torino, 9-11-2017
Agenda Breve storia dei database Scopo e attori di un database Modello dei dati Database relazionali Database per dati strutturati e concetti avanzati Oltre i database: Hadoop, Spark, Kafka
Breve storia dei database
Come vengono salvati i dati PDF portabilità, dati non utilizzabili da strumenti sw Fogli di calcolo (es: Excel) potenza, semplicità apparente, operazioni di ricerca difficili CSV semplicità, semplicità Archivi di stampe di PDF I dati li ho su un PDF, facciamo così: lo stampo, lo scannerizzo e ve lo mando per mail
Obiettivi di un database Archiviazione Database Ricerca Elaborazione
Attori in un database Operatore di macchina Operaio Magazziniere Sensori... Archiviazione Ricerca Elaborazione
Attori in un database Responsabile della produzione Addetto al controllo Tecnico di laboratorio... Archiviazione Ricerca Elaborazione
Attori in un database Analista dati Sistema di gestione degli ordini Applicazioni downstream Statistici... Archiviazione Elaborazione Ricerca
Il modello dei dati Rappresentazione formale di un fenomeno, composta dalla rappresentazione delle caratteristiche rilevanti delle entità di interesse e delle relazioni tra di esse insieme alle operazioni eseguibili sui dati e sulle relazioni identificate.
Il modello dei dati Esempio: raccolta delle informazioni e analisi della produzione di un oliveto con annesso frantoio.
Progettare il modello Entità Olivo Olive Olio Lotto Relazioni Oliva colte da Olivo Olio prodotto con Olive Lotto composto da Olio
Progettare il modello Relazioni Oliva colte da Olivo Operazioni Da quali Olivi vengono le Olive migliori? Olio prodotto con Olive Lotto composto da Olio Come crescono gli Olivi negli anni? Da quali Olive vengono gli Oli con le caratteristiche migliori? Da quali Olivi provengono gli Oli dei Lotti più venduti?
Implementare il modello Scegliere un DataBase Management System (DBMS) che implementi il modello dei dati in un formato elettronico. Relazionali Document oriented Graph oriented
Database relazionale Traduce le entità e le relazioni tra entità del modello dei dati in tabelle, aka relazioni (per non perdere un po di ambiguità). Nome della relazione Campo 1 : Tipo Campo 2 : Tipo... Campo m : Tipo record 1 valore_r 1 _c 1 valore_r 1 _c 2... valore_r 1 _c m............ record n valore_r n _c 1 valore_r n _c 2... valore_r n _c m
Il modello nel DB relazionale Esempio, l entità Olivo Olivo xy: string desc: string I: string lat=30.11, long=12.49 la=30.12, lo=12.60 lat=30.14, long=12.55 Fusto = 40 cm Chioma = 7 Fusto = 2016/35 cm, 2017/38 cm 1 albero da dx 3 albero da sx albero centrale
Il modello nel DB relazionale Esempio, l entità Olivo Olivo xy: string desc: string I: string lat=30.11, long=12.49 la=30.12, lo=12.60 lat=30.14, long=12.55 Fusto = 40 cm Chioma = 7 Fusto = 2016/35 cm, 2017/38 cm 1 albero da dx 3 albero da sx albero centrale errore nella descrizione dei campi nomi dei campi poco descrittivi manca identificatore standard del record
Il modello nel DB relazionale Esempio, l entità Olivo Olivo latitude : real longitude : real descrizione : string albero : string 30.11 12.49 Fusto = 40 cm tree01 30.12 12.60 Chioma = 7 tree02 30.14 12.55 Fusto = 2016/35 cm, 2017/38 cm tree03
Il modello nel DB relazionale Esempio, l entità Olivo latitude : real longitude : real Olivo descrizione : string 30.11 12.49 Fusto = 40 cm tree01 albero : string 30.12 12.60 Chioma = 7 tree02 valori troppo verbosi insieme di informazioni eterogenee storico zippato nel campo 30.14 12.55 Fusto = 2016/35 cm, 2017/38 cm tree03
Il modello nel DB relazionale latitude : real Olivo longitude : real 30.11 12.49 tree01 albero : string 30.12 12.60 tree02 30.14 12.55 tree03 morfo_id : string MorfologiaOlivo albero : string anno : string chioma : real fusto : real morfo01 tree01 40 morfo02 tree02 7 morfo03 tree03 2016 35 morfo04 tree03 2017 38
Il modello nel DB relazionale latitude : real Olivo longitude : real 30.11 12.49 tree01 albero : string 30.12 12.60 tree02 30.14 12.55 tree03 morfo_id : string MorfologiaOlivo albero : string anno : string chioma : real fusto : real morfo01 tree01 40 morfo02 tree02 7 morfo03 tree03 2016 35 morfo04 tree03 2017 38
Indici Velocizzano le operazioni di ricerca in presenza di grandi quantità di record. MorfologiaOlivo IndiceMorfologiaOlivo morfo_id albero anno chioma fusto anno record morfo01 tree01 2015 40 morfo02 tree02 2017 7 morfo03 tree03 2016 35 2015 morfo01 2016 morfo03 2017 morfo02, morfo04 morfo04 tree03 2017 38
Indici Velocizzano le operazioni di ricerca in presenza di grandi quantità di record. MorfologiaOlivo IndiceMorfologiaOlivo morfo_id albero anno chioma fusto anno record morfo01 tree01 2015 40 morfo02 tree02 2017 7 morfo03 tree03 2016 35 2015 morfo01 2016 morfo03, morfo05 2017 morfo02, morfo04 morfo04 tree03 2017 38 morfo05 tree03 2016 38
Indici Strutture dati utili ma da utilizzare con cautela. velocità di accesso Impatto degli indici dimensioni degli indici aggiornamento dopo ogni inserimento devono essere scelti in base al tipo di dato che viene indicizzato NUMERO DI INDICI
Indici Strutture dati utili ma da utilizzare con cautela. velocità di accesso Modello dei dati Impatto degli indici dimensioni degli indici aggiornamento dopo ogni inserimento devono essere scelti in base al tipo di dato che viene indicizzato NUMERO DI INDICI
Tipi di dati strutturati Le versioni recenti dei DBMS mettono a disposizione tipi di dati più strutturati rispetto ai tipi primitivi (stringhe, interi, reali), supportando anche funzioni native e/o indici specifici. Geometrie: punti, poligoni, linee Ricerche Full Text: vettori di lessemi usati nelle ricerche di documenti che restituiscono il best match con la query Documenti JSON
Tipi di dati strutturati Esempio, archiviazione di dati geografici AreeDiControllo id :string valore :int area :polygon area01 23 ((10.3589, 43.5314),, (10.3589, 43.5314)) area02 12 ((10.3599, 43.5305),, (10.3599, 43.5305)) area03 11 ((10.3606, 43.5315),, (10.3606, 43.5315)) area04 14 ((10.3596, 43.5303),, (10.3596, 43.5303))
Relazionale VS Multimodello MorfologiaOlivo id olivo anno chioma fusto new Problematiche del DB relazionale: morfo01 tree01 - - 40 valore? morfo02 tree02 2017 7 - valore? morfo03 tree03 - - 35 valore? morfo04 tree03 2017 - - valore? morfo05 tree03 - - 38 valore? morfo06 tree04 - - - valore? morfo07 tree05-7 - valore? morfo08 tree06 - - - valore? poco scalabile nei cambi colonna (es, valori nelle righe esistenti?) spreco di spazio in tabelle sparse necessità di gestire join tra tabelle
Database multimodello Gli oggetti che sono appartenenti ad una entità vengono rappresentati come documenti semi-strutturati, mentre le relazioni tra entità sono modellate tramite un grafo. { } key 1 : v 1, key 2 : v 2,... key n : v n, ogg 1 : Entità 1 rel 2 : Relazione 2 { } rel 1 : Relazione 1 key 1 : v 1, key 2 : v 2,... key m : v m, ogg 2 : Entità 1 { } key 1 : v 1, key 2 : v 2,... key k : v k, ogg 3 : Entità 2
{ } Il modello nel DB multimodello Esempio, l entità Olivo id: tree01, posizione: { longitude: 12.49, latitude: 30.11 } { } struttura 1 : hastruttura chioma: 35, anno: 2016 morfo 2 : MorfologiaOlivo struttura 2 : hastruttura { } id: tree02, posizione: { longitude: 12.55, latitude: 30.14 } tree 2 : Olivo tree 1 : Olivo { } fusto: 40 morfo 1 : MorfologiaOlivo
Il modello nel DB multimodello { } Esempio, l entità Olivo id: tree01, posizione: { longitude: 12.49, latitude: 30.11 } tree 1 : Olivo { } { } struttura 1 : hastruttura chioma: 35, anno: 2016 morfo 2 : MorfologiaOlivo fusto: 40, anno: 2017 morfo 1 : MorfologiaOlivo struttura 2 : hastruttura struttura 3 : hastruttura { } chioma: 38, anno: 2017 morfo 3 : MorfologiaOlivo { } id: tree02, posizione: { longitude: 12.55, latitude: 30.14 }, piantato: 2008 tree 2 : Olivo
Ricerche nei DB multimodello Lotto :venduto Città Operazioni Da quali Olivi provengono gli Oli dei Lotti più venduti? :vicinaa Olivo :haolivedi
Ricerche nei DB multimodello Lotto :venduto Città :vicinaa Operazioni Da quali Olivi provengono gli Oli dei Lotti più venduti? Con DB relazionale avremmo: eseguito il prodotto cartesiano di almeno tre tabelle, calcolato una somma sul risultato precedente e infine cercato in tutte le righe risultanti l olivo corrispondente Olivo :haolivedi
Ricerche nei DB multimodello Lotto :venduto Città :vicinaa Operazioni Da quali Olivi provengono gli Oli dei Lotti più venduti? Con DB multimodello: 1. identifica il lotto più venduto sommando le vendite per città Olivo :haolivedi
Ricerche nei DB multimodello Lotto :venduto Città :vicinaa Operazioni Da quali Olivi provengono gli Oli dei Lotti più venduti? Con DB multimodello: 1. identifica il lotto più venduto sommando le vendite per città 2. identifica gli olivi da cui provengono le olive del lotto Olivo :haolivedi
Oltre i DB: Hadoop, Spark, Kafka La disponibilità di grandi quantità di dati spinge la necessità sempre più crescente di analisi quanto più real-time possibile. I database non hanno la capacità di gestire ed elaborare un flusso continuo di dati Difficoltà nel gestire continue variazioni nei dati in input Sono necessari strumenti che usino i database come sorgenti o come archivi per l analisi dati online
Oltre i DB: Hadoop, Spark, Kafka Stream Online processing Data Lake Data sources (db, sensori,...) Offline processing
Oltre i DB: Hadoop, Spark, Kafka Stream Online processing Data Lake Data sources (db, sensori,...) Offline processing
Take-away messages Sapere chi utilizza il database è fondamentale nella costruzione del sistema Avere un giusto modello dei dati guida automaticamente le corrette scelte implementative del database E importante scegliere con attenzione lo strumento che meglio realizzi il modello dei dati del fenomeno in esame Affidarsi a chi sa progettare il DB (davvero!)
www.kode.srl