Sei sulla pagina 1di 54

Riepilogo db relazionali

Basi di dati = collezione di dati per


rappresentare informazioni di interesse:

grandi, condivise, Persistenti


Definizione
database
DBMS = Data Base Management System =
software in grado di gestire collezioni di dati
Il modello Entità-Relazione
Il modello Entità-Relazione (E-R) è un modello concettuale di dati
che contiene alcuni costrutti atti a descrivere la realtà in maniera
semplice, indipendente dalla organizzazione dei dati nel computer.
Costrutti dei diagrammi E-R
Attributo semplice

Entita' Relazione

(a,A) (b,B)

Attributo composto Cardinalita' di relazione

(m , M)

Cardinalita' di attributo Sottoinsieme Generalizzazione


Esempio
DATABASE NO SQL
ING. ALESSANDRO QUARTO
I database NoSQL sono appositamente
realizzati per modelli di dati specifici e hanno
schemi flessibili per creare applicazioni
moderne.

Cosa sono i I database NoSQL si sono affermati per la


database facilità di sviluppo, la funzionalità e la
NoSQL? scalabilità delle prestazioni.

Utilizzano molteplici modelli di dati, tra cui


documento, grafo, chiave-valore, in memoria
e ricerca.
Obiettivi
Scalabilità
◦ Hardware evoluto: core paralleli, server paralleli, cloud…..
◦ Big Data: dati in continua crescita

Facilitare lo sviluppo
◦ Nuove metodologie di sviluppo

Rappresentazione di dati
◦ Dati semi-strutturati, non strutturati
◦ Polimorfismo
NUOVE
METODOLOGIE DI
APPROFONDIMENTO SVILUPPO NEL
WEB
o Il Web vive una trasformazione che ne
connota la dimensione sociale, della
condivisione, dell'autorialità rispetto alla
mera fruizione.

o Non tanto dal punto di vista tecnologico


Il cambiamento poichè gli strumenti della rete possano
del Web essere invariati

o È la modalità di utilizzo della rete ad aprire


nuovi scenari fondati sulla compresenza
nell'utente della possibilità di fruire e di
creare/modificare i contenuti multimediali.

10
Il web 2.0 è l’insieme delle tecnologie
collaborative per organizzare internet come una
piattaforma in cui tutti possono inserire i propri
contributi ed interagire con gli altri utenti.

Il Web 2.0
Il termine nasce da frase coniata da O’Reilly e da
Dale Dougherty nel 2004 e il documento che ne
ha ufficialmente sancito l’inizio risale al 30
settembre del 2005.
I punti fondamentali del Web 2.0

 La saggezza degli utenti: I risultati di Google funzionano in base a questa definizione. E’ il numero di link al sito che ne decide l’importanza.

 Applicazioni web condivise: esempio: Google Suite

 Il web inteso come piattaforma: servizi erogati in modalità Web (es Office 365)

 Partecipazione degli utenti: gli utenti sono anche gli autori. L’espressione "read/write web" illustra chiaramente l’idea che si vuole
trasmettere -> Wiki/Social ecc…

 Pieno coinvolgimento dell’utente: I siti Web 2.0 usano CSS, AJAX, e altre tecnologie che aumentano l’usabilità e creano pagine dinamiche
che sono i grado di mostrare più informazioni nello stesso spazio
L’importanza dei dati: La gestione dei dati è una competenza
insita nelle aziende che trattano il Web 2.0. Tutto il Web 2.0, dalle
grandi aziende come Amazon e Google per arrivare alle piccole
startup come 30boxes e Orchestrate, operano principalmente
con database e praticamente non fanno altro che mostrare viste
personalizzate.

I punti Beta per sempre: Le applicazioni Web 2.0 sono continuamente


rilasciate, riscritte e rivisitate su basi in continuo sviluppo. La

fondamentali maggior parte delle applicazioni di Google, per esempio, sono


ancora in beta. Ancora, Flickr si rumoreggia sia modificato ogni
30 minuti. Alcune reti sociali aggiungono nuove caratteristiche

del Web 2.0 ogni quindici giorni.

Usare il web come è stato ideato: incremento nell’usabilità che è


stata raggiunta attraverso un buon design, grazie a tecnologie
come AJAX e anche perché è stato permesso agli utenti di
organizzare le loro informazioni liberamente
Il termine software sociale riguarda tutte quelle applicazioni software
che consentono agli individui di incontrarsi, interagire e collaborare in
rete ed, in particolare, di creare comunità on-line.

Sottolinea la dimensione di interazione sociale sviluppata in rete


mediante appositi strumenti e comprende:

I software ◦ Blog (l'abbreviazione di web log e indica un sito web autogestito


dove vengono pubblicate in tempo reale notizie, informazioni,
opinioni o storie di ogni genere, visualizzate in ordine cronologico

sociali inverso)
◦ RSS (è uno dei più popolari formati per la distribuzione di contenuti
Web)
◦ Wiki (collezioni di documenti ipertestuali) che permettono ad ogni
utilizzatore di aggiungere contenuti,
◦ Comunità virtuali
◦ Instant Messaging
◦ Ecc…

14
Dati strutturati

TIPOLOGIA Dati non strutturati


DI DATI

Dati semi-strutturati
Dati strutturati: sono i dati conservati in database, organizzati secondo schemi e
tabelle rigide. Questa è la tipologia di dati più indicata per i modelli di gestione
relazionale delle informazioni.

Dati strutturati, Dati non strutturati: sono i dati conservati senza alcuno schema. Un esempio

semi-strutturati possono essere i file contenenti testi a carattere narrativo prodotti per mezzo di uno
dei più diffusi software di editing testuale o un file multimediale. In questo caso, i
sistemi di gestione di dati utilizzabili sono quelli basati sul modello dell’information
e non strutturati retriveval.

Dati semi-strutturati: nei dati semi strutturati s’incontrano alcune delle caratteristiche
dei dati strutturati e alcune delle caratteristiche dei non strutturati. Un esempio
esplicativo di questa tipologia di organizzazione di informazioni è il file compilato con
sintassi XML. Nonostante non vi siano limiti strutturali all’inserimento dei dati, le
informazioni vengono, comunque, organizzate secondo logiche strutturate e
interoperabili. In questo caso, i sistemi di gestione dei dati possono organizzare i
documenti sia attraverso i modelli relazionali, sia attraverso modelli di information
retrieval.
Dati strutturati
Dati non strutturati
Dati semi-strutturati
U N E S EM PIO D I S O RG E NT E D I B I G - DATA: S E N S O RISTIC A
From an Internet of Humans … to an Internet of Things …

Source: Cisco IBSG, April 2011


Un esempio di sorgente di Big-Data: Dispositivi mobili

3. ANALYZE

4. PROVIDE
2. SHARE SERVICES

1. SENSE
Un esempio di sorgente di Big-Data: Sensoristica

(automazione industriale)

(domotica) (e-health)
GOOGLE NEST ALIVECOR
(automotive)
Un esempio di sorgente di Big-Data: Sensoristica

 Le applicazioni legate alla sensoristica possono generare moli ingenti di dati, a


frequenza costante o variabile.

 Tuttavia, più che il contenuto dei dati singoli, spesso l’interesse delle applicazioni è
rivolto alla conoscenza “estraibile” dai dati

SISTEMA REALE

DATA DATA MODEL


SENSING
ANALYSIS FILTERING BUILDING
Big data = dati eterogenei, multi-sorgente

SOCIAL MEDIA

DATA
DBMS
WAREHOUSE
OPERATIVO

REPORT
SOFTWARE DI
SUPPORTO
DECISIONALE
SITO WEB
Scalabilità
orizzontale e
verticale
Fail-hover, se una macchina
smette di funzionare le sue attività
vengono indirizzate verso un’altra
macchina attiva

Alta disponibilità, assicura la


disponibilità del servizio durante
varie tipologie di failure

Disaster recovery, garantire


un’erogazione continua dei servizi
Tipi di database NoSQL
Documento: nel codice di applicazione, i dati sono
speso rappresentati come oggetto o un
documento di tipo JSON, un modello dati efficiente
Chiave-valore: i database chiave-valore sono
ed intuitivo per gli sviluppatori. I database di
altamente partizionabili e consentono
documenti semplificano agli sviluppatori la ricerca
dimensionamento orizzontale a livelli che altri tipi di
e la memorizzazione di dati in un database, usando
database non possono raggiungere. Il modello di
lo stesso formato di modello di documento che
dati chiave-valore è particolarmente adatto per
usano nel codice dell'applicazione. La natura
casi d'uso quali i videogiochi, le tecnologie
gerarchica, semistrutturata e flessibile dei
pubblicitarie e l'IoT.
documenti e dei database dei documenti, gli
permette di evolversi in base alle esigenze delle
applicazioni

Grafo: lo scopo di un database a grafo è facilitare In memoria: i videogiochi e le applicazioni per


la creazione e l'esecuzione delle applicazioni che tecnologie pubblicitarie hanno casi d'uso come
operano con set di dati ad elevata connessione. I tabelle dei punteggi, session store e analisi in
casi d'uso tipici di un database a grafo includono i tempo reale che richiedono tempi di risposta
social network, i motori di raccomandazione, il nell'ordine di microsecondi e possono registrare
rilevamento di frodi e i grafi della conoscenza picchi notevoli di traffico in qualsiasi momento
SQL NoSQL

I database relazionali sono progettati per le applicazioni


I database NoSQL basati su chiave-valore, documento, grafo
Carichi di lavoro transazionali e OLTP (online transaction processing) fortemente
e in memoria sono progettati per l'OLTP per molti schemi di
ottimali coerenti e sono validi anche per l'OLAP (online analytical
accesso ai dati che includono le applicazioni a bassa latenza.
processing).

Il modello relazionale normalizza i dati in tabelle che sono


I database NoSQL offrono molteplici modelli di dati, tra cui
Modello di dati costituite da righe e colonne. Il database attua l'integrità
documento, grafo, chiave-valore, in memoria e ricerca.
referenziale nelle relazioni tra le tabelle.

Le prestazioni dipendono generalmente dal sottosistema di dischi. Le prestazioni si calcolano generalmente in funzione delle
Prestazioni Per raggiungere il massimo livello di prestazioni, spesso è dimensioni del cluster dell'hardware, della latenza di rete e
necessario ottimizzare query, indici e struttura delle tabelle. dell'applicazione di chiamata.

I database NoSQL sono in genere partizionabili perché gli


La scalabilità, nei database relazionali, avviene tipicamente in
schemi di accesso sono in grado di ridimensionarsi in
verticale, incrementando le capacità di elaborazione
Scalabilità orizzontale usando l'architettura distribuita per aumentare il
dell'hardware, oppure in orizzontale aggiungendo repliche per i
throughput che offre prestazioni coerenti quasi senza alcun
carichi di lavoro di sola lettura.
limite di scalabilità.

Confronto tra database SQL e NoSQL


Un caso
specific:
MongoDB
Cos’è
MongoDB?
MongoDB è un database non
relazionale orientato agli oggetti
che usa la codifica json
Json
JSON È UNA CODIFICA O
L I N G U A G G I O O R I E N TATO A I
DOCUMENTI

JSON SI BASA SU COPPIE


C H I AV E - VA LO R E ( ST R I N G H E ,
NUMERI, BOOLEANI, NULL,
A R R AY, O G G E T T I / D O C U M E N T I
Polimorfismo Mongo è “schemaless” ovvero senza schema
◦ ha uno schema dinamico in cui ogni documento ha una sua struttura che
può essere modificata in qualsiasi momento.
◦ Es. in quali oceani vive il delfino? Aggiungere una nuova lista di stringhe
con i vari oceani.
◦ In un DB relazionale avremmo dovuto creare due nuove tabelle, una per
inserire i vari oceani e l’altra per inserire la relazione tra oceani e animali,
che però sarebbero state inutili per la pantera!
MongoDB non supporta né joins e né transactions
Perchè?
Problema: transitare da un DB SQL ad uno NoSQL
◦ Con quale criterio si distribuiscono le tabelle nei vari
servers?
Join e ◦ Riposta 1: Tutte le tabelle su tutti i server -> Non ottimizzato

Transaction ◦ Riposta 2: Dividere la tabella più grande su più server e quelle più piccole
copiarle in tutti i server, tanto sono piccole-> Non è detto che ci sia una
grande
◦ Più server vengono coinvolti più aumentano i tempi di
comunicazione
◦ Tabelle su più server -> Query Join coinvolge più server -> Tempi di attesa
più lunghi per avere un risultato
◦ Es. query può coinvolgere 2 server -> Tempi ok
◦ Es. Query può coinvolgere 20/30 server ->
ZZZZZZZZZZZZZZZZZZ……..ZZZZZZZZZZZZZ………….
Approccio senza Join
Quando effettuiamo una join tra due tabelle ci
aspettiamo che i dati vengano uniti in un unico
risultato.

Approccio
senza Join Le pre-join usano il processo inverso, partono
dal risultato già unito cioè: già prima di salvare
nel database il nostro dato noi includiamo al suo
interno anche altre informazioni, un po’ come se
fosse il risultato di una join.
Esempio pre-Join
Schema dinamico

MongoDB praticamente è come un catalogo: una lista di database dove ogni


database contiene le sue collections, ogni collection ha i suoi indici interni e
contiene i suoi documenti.

In ogni documento se non è presente l’attributo _id viene implicitamente creato e


ogni collection ha già un indice di ricerca proprio sull’_id. (Volendo possiamo
creare anche degli altri indici su altri attributi per velocizzare le nostre query)
Esempio 1 Creiamo una nuova collection chiamata Forme e al suo interno creiamo
un documento per salvare un oggetto di classe Punto, mettiamo quindi i
suoi attributi x, y e salviamo, corrisponde perfettamente alla classe.

- utilità Possiamo aggiungere anche un altro documento nella stessa collection


magari di classe Cerchio che quindi a differenza del punto avrà il raggio,

schema anche qui abbiamo una corrispondenza diretta con la classe.

dinamico
Dopo il lancio del nostro nuovo e personalissimo
social network ci accorgiamo di esserci dimenticati
alcuni attributi degli utenti, ad esempio lo stato
sentimentale.

Non dobbiamo per forza fare una modifica enorme


Esempio 2 – utilità su tutti gli utenti già iscritti; ad esempio potremmo
schema dinamico renderlo obbligatorio a tutti i nuovi iscritti, in
questo modo chi si iscrive dopo la modifica avrà il
campo.

Per chi invece si è iscritto prima, possiamo o


lasciarlo facoltativo e aspettare che l’utente lo
compili.
Esempio: come passare da una database relazionale ai documenti
nel caso di un blog

Da ◦ tabella dei Post,


◦ ogni Post avrà il suo ID, il titolo, il testo, la data, e una chiave esterna per

relazionale l’autore.
◦ tabella Autori con nome e password
◦ tabella commenti con chiave esterna agli articoli, avremo il nome del

a DB visitatore, il corpo del commento e un’eventuale email


◦ Tra la tabella articoli e quella dei commenti c’è relazione uno a molti

NoSQL ◦ Tabella Tag (id, nome)


◦ I Tag hanno una relazione con gli articoli di molti a molti
◦ Altra tabella che faccia da tramite per il collegamento e che quindi avrà
sia l’ID del post sia quello del tag
?

Un blog con DB relazione


Un blog con DB relazionale
Titolo e testo dell’articolo -> tabella Articoli

Nome dell’autore e non il suo ID -> tabella Autori

Alla fine dell’articolo mostriamo i commenti -> tabella Commenti.

Se ha dei tag dobbiamo mostrarli -> Tabella Tag e tabella Post-Tag

Quante tabelle sono coinvolte?


Blog con db NoSQL documents
Collection per gli articoli. Struttura:
◦ titolo,
◦ corpo dell’articolo,
◦ data
◦ riferimento per l’autore.
◦ Un array per i commenti, (ogni commento non è altro che un documento con i suoi attributi: Nome del visitatore, corpo del
commento e un’email; non ci servono chiavi esterne, sappiamo già che è riferito al nostro post perché è incapsulato al suo
interno).
◦ L’array è una lista ordinata quindi i commenti hanno già un loro ordinamento.

◦ Per i tags o categorie possiamo creare un altro array dove inseriamo i tags come stringhe, non ci serve un’altra collection, già
così possiamo effettuare query per ogni singolo tag.

Collection per gli Autori però, questa volta, come id non usiamo un numero ma mettiamo direttamente l’username
dell’utente, così facendo non abbiamo bisogno di frugare la collection per mostrare a video il nome, è già l’id.
?

Blog con db NoSQL documents


Confronto
SQL vs
NoSQL
Dati memorizzati in colonne e tabelle

Relazioni rappresentate da dati

Lingua di manipolazione dei dati


Caratteristiche
SQL Lingua di definizione dei dati

Transazioni

Astrazione dallo strato fisico


Le applicazioni specificano cosa, non come

Astrazione
dello strato Motore di ottimizzazione delle query

fisico SQL
Il livello fisico può cambiare senza modificare le applicazioni
Crea indici per supportare le
Nei database di memoria
query
Dati manipolati con istruzioni Select,
Insert, Update, Delete….
• Seleziona T1.Column1, T2.Column2 ... Da Table1,
Table2 ... Dove T1.Column1 = T2.Column1 ...
Linguaggio per
la Aggregazione dei dati
manipolazione
dei dati Funzioni e procedure

Controllo esplicito delle transazioni


Crea tabella (Tipo
Schema definito di colonna1 Tipo
all'inizio di dati, Tipo di
colonna 2, ...)

Definizione Vincoli per definire e


far rispettare le
Chiave primaria
Chiave esterna

dei dati relazioni Eccetera.

Sicurezza e controllo degli accessi


Atomico: tutto il lavoro in una transazione viene
completato (commit) o non viene completato

Coerente: una transazione trasforma il database


da uno stato coerente a un altro stato coerente.
La coerenza è definita in termini di vincoli.

Transazioni Isolato: i risultati di eventuali modifiche apportate


durante una transazione non sono visibili fino a
quando la transazione non è stata impegnata.

Durevole: i risultati di una transazione impegnata


sopravvivono a guasti
Esempi di databasa SQL
Commerciale
◦ IBM DB2
◦ Oracle RDMS
◦ Microsoft SQL Server
◦ Sybase SQL Anywhere

Open Source (con opzioni commerciali)


◦ MySQL
◦ Ingres

I database SQL sono ad oggi molto utilizzati nel mondo


industriale e commerciale!
Definizione di NoSQL
Database di nuova generazione che affrontano principalmente alcuni punti:
◦ essere non relazionali,
◦ distribuiti,
◦ open source
◦ scalabili orizzontalmente.

L'intenzione originale era di moderni database su scala web.


Il movimento è iniziato all'inizio del 2009 e sta crescendo rapidamente.
Frequenti caratteristiche:
◦ supporto per la replica semplice e privo di schemi,
◦ API semplice,
◦ non ACID
◦ enorme quantità di dati
Progetti e prodotti NoSQL famosi
Hadoop &
Cassandra CouchDB
Hbase

MongoDB StupidDB
Caratteristiche NoSQL
Replica e distribuzione
scalabili Le query devono
Grandi volumi di dati (Big Principalmente query,
• Potenzialmente migliaia di restituire rapidamente le
Data) macchine pochi aggiornamenti
• Potenzialmente distribuito in
risposte
tutto il mondo

Le proprietà della
Insert e aggiornamenti
Schema-less transazione ACID non Sviluppo open source
asincroni
sono necessarie

Potrebbero piacerti anche