nosql - crs4dassia.crs4.it/wp-content/uploads/2014/11/01_nosql.pdf · 2015-03-06 · nosql origini...

93
NOSQL

Upload: others

Post on 06-Aug-2020

17 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: NOSQL - CRS4dassia.crs4.it/wp-content/uploads/2014/11/01_NOSQL.pdf · 2015-03-06 · NOSQL Origini e Significato NOSQL = NO a SQL NOSQL = Not Only SQL Il termine NOSQL fu introdotto

NOSQL

Page 2: NOSQL - CRS4dassia.crs4.it/wp-content/uploads/2014/11/01_NOSQL.pdf · 2015-03-06 · NOSQL Origini e Significato NOSQL = NO a SQL NOSQL = Not Only SQL Il termine NOSQL fu introdotto

NOSQL

Origini e Significato

NOSQL = NO a SQL

NOSQL = Not Only SQL

Il termine NOSQL fu introdotto da Carlo Strozzi nel 1998 per indicare il suo database

relazionale open-source che non aveva una interfaccia SQL standard.

Il termine attualmente indica tutti quei database che sono: non relazionali, distribuiti,

open-source (spesso) e scalabili orizzontalmente.

Page 3: NOSQL - CRS4dassia.crs4.it/wp-content/uploads/2014/11/01_NOSQL.pdf · 2015-03-06 · NOSQL Origini e Significato NOSQL = NO a SQL NOSQL = Not Only SQL Il termine NOSQL fu introdotto

NOSQL

Introduzione – un po' di storia

Anni '70

Nascono i database relazionali

- I supporti di memorizzazione sono altamente costosi

- I dati vengono normalizzati per il loro inserimento nel database

- L'organizzazione dei dati dipende da loro stessi e non dall'uso che sarà fatto

Anni '80

Vengono introdotti i sistemi RDBMS

- Si introduce il modello Client/Server

- Il linguaggio SQL diventa lo standard per l'interrogazione dei database

Anni '90

Nascita del World Wide Web e inizio della diffusione massiva di Internet

Page 4: NOSQL - CRS4dassia.crs4.it/wp-content/uploads/2014/11/01_NOSQL.pdf · 2015-03-06 · NOSQL Origini e Significato NOSQL = NO a SQL NOSQL = Not Only SQL Il termine NOSQL fu introdotto

NOSQL

Introduzione – un po' di storia

Anni 2000

Nascita del Web 2.0

- Diminuisce notevolmente il costo dei sistemi di memorizzazione

- Diffusione dell'e-Commerce

- Diffusione dei social media

- Crescita esponenziale dei dati prodotti

Page 5: NOSQL - CRS4dassia.crs4.it/wp-content/uploads/2014/11/01_NOSQL.pdf · 2015-03-06 · NOSQL Origini e Significato NOSQL = NO a SQL NOSQL = Not Only SQL Il termine NOSQL fu introdotto

NOSQL

Introduzione – un po' di storia

Anni 2000

Nascita del Web 2.0

- Diminuisce notevolmente il costo dei sistemi di memorizzazione

- Diffusione dell'e-Commerce

- Diffusione dei social media

- Crescita esponenziale dei dati prodotti

Necessità di scalare con il crescere dei dati

Page 6: NOSQL - CRS4dassia.crs4.it/wp-content/uploads/2014/11/01_NOSQL.pdf · 2015-03-06 · NOSQL Origini e Significato NOSQL = NO a SQL NOSQL = Not Only SQL Il termine NOSQL fu introdotto

NOSQL

Introduzione – un po' di storia

A questo punto la scalabilità dei sistemi RDBMS distribuiti non è più sufficiente per

stare al passo con la velocità desiderata di produzione e consumo dei dati. Nascono

quindi i database NOSQL per rispondere alle esigenze che con i RDBMS non potevano

affrontare ovvero la necessità di una alta scalabilità orizzontale invece che una

scalabilità verticale (limitata) tipica dei RDBMS.S

cala

bili t

à ve

rtic

ale

Scalabilità orizzontale

Page 7: NOSQL - CRS4dassia.crs4.it/wp-content/uploads/2014/11/01_NOSQL.pdf · 2015-03-06 · NOSQL Origini e Significato NOSQL = NO a SQL NOSQL = Not Only SQL Il termine NOSQL fu introdotto

NOSQL

Introduzione – un po' di storia

Page 8: NOSQL - CRS4dassia.crs4.it/wp-content/uploads/2014/11/01_NOSQL.pdf · 2015-03-06 · NOSQL Origini e Significato NOSQL = NO a SQL NOSQL = Not Only SQL Il termine NOSQL fu introdotto

NOSQL

RDBMSVS

NoSQL

Page 9: NOSQL - CRS4dassia.crs4.it/wp-content/uploads/2014/11/01_NOSQL.pdf · 2015-03-06 · NOSQL Origini e Significato NOSQL = NO a SQL NOSQL = Not Only SQL Il termine NOSQL fu introdotto

RDBMS vs NOSQL

Fine delle relazioni ?

Dire che un sistema NoSQL è non relazionale significa che

adottandolo si è costretti a rinunciare alle relazioni fra i dati?

No! Anzi...

NoSQL significa non tanto rinunciare al linguaggio SQL quanto

rinunciare al rigido formalismo matematico, detto algebra relazionale,

che è alla base di tutti i sistemi RDBMS

e quindi

liberarsi dai vincoli che esso impone.

Page 10: NOSQL - CRS4dassia.crs4.it/wp-content/uploads/2014/11/01_NOSQL.pdf · 2015-03-06 · NOSQL Origini e Significato NOSQL = NO a SQL NOSQL = Not Only SQL Il termine NOSQL fu introdotto

NOSQL

Fine delle relazioni ?

Quali sono questi vincoli ?

Ricordiamo che i sistemi RDBMS richiedono un processo di normalizzazione sui dati

che consente di

“evidenziare le caratteristiche essenziali dei dati

e le relazioni che tra essi intercorrono, eliminando tutte le ridondanze”.

Il risultato è un modello astratto dei dati, detto schema, che definisce univocamente la

struttura e il tipo dei dati e li separa in tabelle.

Page 11: NOSQL - CRS4dassia.crs4.it/wp-content/uploads/2014/11/01_NOSQL.pdf · 2015-03-06 · NOSQL Origini e Significato NOSQL = NO a SQL NOSQL = Not Only SQL Il termine NOSQL fu introdotto

NOSQL

Fine delle relazioni ?

Due conseguenze fondamentali del processo di normalizzazione sono:

- la necessità di utilizzare dei JOIN per ricostruire le informazioni da elaborare;

operazione costosa sia computazionalmente che temporalmente;

- la rigidità dello schema:

- aggiungere un campo o una relazione rende necessario bloccare l'intero database

fino a che la modifica non è completata;

- solo i dati conformi allo schema possono essere memorizzati;

Il costo relativo di questi vincoli aumenta con l'aumentare delle dimensioni dei dati da

trattare e rende impossibile un'efficace scalabilità orizzontale.

Page 12: NOSQL - CRS4dassia.crs4.it/wp-content/uploads/2014/11/01_NOSQL.pdf · 2015-03-06 · NOSQL Origini e Significato NOSQL = NO a SQL NOSQL = Not Only SQL Il termine NOSQL fu introdotto

RDBMS vs NOSQL

Fine delle relazioni ?

I sistemi NoSQL non nascono quindi con l'obiettivo di rinunciare alle relazioni tra i dati

ma, al contrario, dal desiderio di avere la massima libertà possibile di modificare ed alterare

nel tempo sia la struttura dei dati che le relazioni che tra essi intercorrono.

Per questo motivo si fondano su:

- una organizzazione/memorizzazione dei dati in formati meno astratti e più vicini

(ed utili) all'applicazione che li dovrà elaborare;

- l'assenza di uno schema rigido che consenta di aggiungere nuovi dati, anche molto

dissimili dai precedenti, e nuove relazioni senza la necessità di modificare la struttura

del database e senza bloccarne l'accesso.

Page 13: NOSQL - CRS4dassia.crs4.it/wp-content/uploads/2014/11/01_NOSQL.pdf · 2015-03-06 · NOSQL Origini e Significato NOSQL = NO a SQL NOSQL = Not Only SQL Il termine NOSQL fu introdotto

RDBMS vs NOSQL

Acidi vs Basi

Le caratteristiche ed i punti di forza dei sistemi RDBMS vengono spesso sintetizzate

con l'acronimo ACID; per evidenziare il diverso approccio ai dati dei sistemi NoSQL

alcuni dei loro punti di forza sono stati sintetizzati nell'acronimo BASE.

A tomicity

C onsistency

I solation

D urability

B asically

A vailable,

S oft State,

E ventually Consistent

Page 14: NOSQL - CRS4dassia.crs4.it/wp-content/uploads/2014/11/01_NOSQL.pdf · 2015-03-06 · NOSQL Origini e Significato NOSQL = NO a SQL NOSQL = Not Only SQL Il termine NOSQL fu introdotto

RDBMS vs NOSQL

CAP Theorem

Perché abbandonare le proprietà ACID ?

Il CAP Theorem sostanzialmente dimostra che

è impossibile garantire le proprietà ACID in un sistema distribuito e scalabile orizzontalmente.

Quindi il superamento delle proprietà ACID non è un vezzo ma un passaggio obbligatorio qualora si voglia costruire un sistema distribuito.

Page 15: NOSQL - CRS4dassia.crs4.it/wp-content/uploads/2014/11/01_NOSQL.pdf · 2015-03-06 · NOSQL Origini e Significato NOSQL = NO a SQL NOSQL = Not Only SQL Il termine NOSQL fu introdotto

RDBMS vs NOSQL

CAP Theorem

Nel 2000 Brewer teorizzo il seguente teorema noto CAP theorem:

un sistema distribuito può fornire contemporaneamente solo due fra le seguenti

garanzie:

● Consistency (Consistenza): tutti i nodi vedono gli stessi dati nello stesso

momento;

● Availability (Disponibilità): il sistema risponde a tutte le richieste;

● Partition tolerance (Tolleranza al Partizionamento): il sistema continua ad

operare anche se alcune sue parti rimangono isolate dalle altre in modo

arbitrario (ovvero se il grafo che rappresenta il sistema è disconnesso).

Page 16: NOSQL - CRS4dassia.crs4.it/wp-content/uploads/2014/11/01_NOSQL.pdf · 2015-03-06 · NOSQL Origini e Significato NOSQL = NO a SQL NOSQL = Not Only SQL Il termine NOSQL fu introdotto

RDBMS vs NOSQL

CAP Theorem

PartitionTollerance

AvailabilityConsistency

CA

APCP

L'intersezione tra queste tre regioni è nulla.

Page 17: NOSQL - CRS4dassia.crs4.it/wp-content/uploads/2014/11/01_NOSQL.pdf · 2015-03-06 · NOSQL Origini e Significato NOSQL = NO a SQL NOSQL = Not Only SQL Il termine NOSQL fu introdotto

RDBMS vs NOSQL

CAP Theorem

Perché è impossibile garantire le proprietà ACID su un sistema distribuito ?

Un limite fondamentale di cui ci si dimentica spesso quando si progetta un software,

anche nel caso di web services, è che la velocità della luce è costante.

Questo fatto apparentemente irrilevante implica che

un segnale che deve attraversare l'Atlantico impiega circa 30 ms.

cosa che rende estremamente complesso realizzare un sistema distribuito, altamente

scalabile, fortemente interattivo e dunque indipendente dalla latenza.

Page 18: NOSQL - CRS4dassia.crs4.it/wp-content/uploads/2014/11/01_NOSQL.pdf · 2015-03-06 · NOSQL Origini e Significato NOSQL = NO a SQL NOSQL = Not Only SQL Il termine NOSQL fu introdotto

RDBMS vs NOSQL

CAP Theorem

Vediamo attraverso alcuni diagrammi il significato del CAP Theorem.

Nel diagramma sono illustrati due nodi N1 e N2 che condividono un dato V ( ognuno ne ha una

copia) il cui valore è V0.

Su ciascun nodo gira un algoritmo (A e B) che

possiamo considerare sicuro, privo di errori,

prevedibile ed affidabile.

A scrive un nuovo valore su V

B legge il valore di V.

Page 19: NOSQL - CRS4dassia.crs4.it/wp-content/uploads/2014/11/01_NOSQL.pdf · 2015-03-06 · NOSQL Origini e Significato NOSQL = NO a SQL NOSQL = Not Only SQL Il termine NOSQL fu introdotto

RDBMS vs NOSQL

CAP Theorem

In un mondo ideale la rete sarebbe sempre affidabile e il trasferimento di informazioni

istantaneo...

1 2 3

Page 20: NOSQL - CRS4dassia.crs4.it/wp-content/uploads/2014/11/01_NOSQL.pdf · 2015-03-06 · NOSQL Origini e Significato NOSQL = NO a SQL NOSQL = Not Only SQL Il termine NOSQL fu introdotto

RDBMS vs NOSQL

CAP Theorem

In un mondo reale la rete non sempre é affidabile e il trasferimento di informazioni non

è istantaneo...

1 2 3V

o

Vo

A

B

N1

N2

V1

Vo

A

B

N1

N2

V1

V0

A

B

N1

N2

V1

V0

M

1 2 3

Page 21: NOSQL - CRS4dassia.crs4.it/wp-content/uploads/2014/11/01_NOSQL.pdf · 2015-03-06 · NOSQL Origini e Significato NOSQL = NO a SQL NOSQL = Not Only SQL Il termine NOSQL fu introdotto

RDBMS vs NOSQL

CAP Theorem

In altri termini, il CAP Theorem ci dice che

se vogliamo un sistema che sia

- highly available, ovvero in grado di lavorare con latenza minima;

- costituito da centinaia o migliaia di nodi

- e che ciascun nodo sia tollerante alle interruzioni di rete ( messaggi persi, non

recapitati, fallimento di processi, guasti hardware)

allora dobbiamo accettare il fatto che ci saranno alcuni momenti in cui

- un nodo sarà convinto che il valore di V sia V0

- ed un altro nodo sarà convinto che il valore di V sia V1

Page 22: NOSQL - CRS4dassia.crs4.it/wp-content/uploads/2014/11/01_NOSQL.pdf · 2015-03-06 · NOSQL Origini e Significato NOSQL = NO a SQL NOSQL = Not Only SQL Il termine NOSQL fu introdotto

RDBMS vs NOSQL

CAP Theorem

Come ovviare ai limiti imposti dal CAP Theorem ?

Ci sono 3 possibilità:

1 : CA - rinunciare alla Partitition Tolerance

ovvero forzare tutti i dati richiesti da una

transazione in un'unica macchina

o quantomeno datacenter,

con ovvi limiti alla scalabilità.

Questo è tipicamente quello che si fa con i tradizionali RDBMS.

PartitionTollerance

AvailabilityConsistency

CA

APCP

Page 23: NOSQL - CRS4dassia.crs4.it/wp-content/uploads/2014/11/01_NOSQL.pdf · 2015-03-06 · NOSQL Origini e Significato NOSQL = NO a SQL NOSQL = Not Only SQL Il termine NOSQL fu introdotto

RDBMS vs NOSQL

CAP Theorem

Le altre due opzioni, con diverse sfumature, sono quelle adottate dai sistemi NoSQL

2 : CP – rinunciare a qualcosa in termini di

Availabilty per garantire consistenza e

robustezza al partizionamento;

3 : AP – rinunciare a qualcosa in termini di

Consistenza per garantire disponibilità e

robustezza al partizionamento;

PartitionTollerance

AvailabilityConsistency

CA

APCP

Page 24: NOSQL - CRS4dassia.crs4.it/wp-content/uploads/2014/11/01_NOSQL.pdf · 2015-03-06 · NOSQL Origini e Significato NOSQL = NO a SQL NOSQL = Not Only SQL Il termine NOSQL fu introdotto

RDBMS vs NOSQL

ACID Properties

Atomicità: la transazione è indivisibile nella sua esecuzione e la sua esecuzione deve essere o totale o

nulla, non sono ammesse esecuzioni parziali;

Consistenza: quando inizia una transazione il database si trova in uno stato consistente e quando la

transazione termina il database deve essere in un altro stato consistente, ovvero non deve violare eventuali

vincoli di integrità, quindi non devono verificarsi contraddizioni (inconsistenza) tra i dati archiviati nel DB;

Isolamento: ogni transazione deve essere eseguita in modo isolato e indipendente dalle altre transazioni,

l'eventuale fallimento di una transazione non deve interferire con le altre transazioni in esecuzione;

Durabilità: detta anche persistenza, si riferisce al fatto che una volta che una transazione abbia richiesto

un commit, i cambiamenti apportati non dovranno essere più persi.

Page 25: NOSQL - CRS4dassia.crs4.it/wp-content/uploads/2014/11/01_NOSQL.pdf · 2015-03-06 · NOSQL Origini e Significato NOSQL = NO a SQL NOSQL = Not Only SQL Il termine NOSQL fu introdotto

RDBMS vs NOSQL

ACID Properties

Le proprietà ACID garantiscono l’integrità e la consistenza del dato, ma per consentire

la transazionalità impongono forti limiti alle performance ed alla scalabilità orizzontale.

I produttori di sistemi RDBMS per ridurre i limiti alla scalabilità dei loro sistemi hanno

sviluppato un protocollo denominato Two Phase Commit (2PC) che prevede che:

- il coordinatore delle transazioni richiede a tutti i db coinvolti dalla transazione di

effettuare un pre-commit per verificare la fattibilità dell'operazione;

- ogni database effettua il pre-commit e invia una risposta al coordinatore;

- se tutte le risposte sono positive il coordinatore conferma la transazione e le

modifiche vengono apportate, altrimenti viene invocato un rollback.

Page 26: NOSQL - CRS4dassia.crs4.it/wp-content/uploads/2014/11/01_NOSQL.pdf · 2015-03-06 · NOSQL Origini e Significato NOSQL = NO a SQL NOSQL = Not Only SQL Il termine NOSQL fu introdotto

RDBMS vs NOSQL

BASE properties

Giocoforza si è dovuto adottare una versione “rilassata” delle proprietà ACID che

favoriscono la replicazione dei dati per aumentare la scalabilità orizzontale e la

disponibilità del dato a scapito della consistenza (in senso ACID).

Queste proprietà sono sintetizzate dall'acronimo :

BASE = Basically Available, Soft state, Eventual consistency.

Page 27: NOSQL - CRS4dassia.crs4.it/wp-content/uploads/2014/11/01_NOSQL.pdf · 2015-03-06 · NOSQL Origini e Significato NOSQL = NO a SQL NOSQL = Not Only SQL Il termine NOSQL fu introdotto

NOSQL

Differenze RDBMS e NOSQL

Basically Available. L'approccio NoSQL predilige la disponibilità del dato anche in presenza di

molteplici errori. Viene ottenuto utilizzando un approccio altamente distribuito replicando i dati su un gran

numero di sistemi di memorizzazione. E' la consistenza nel senso del teorema CAP.

Soft state. Si abbandona la consistenza nel senso delle proprietà ACID. Lo stato del sistema può quindi

variare nel tempo, teoricamente anche senza input specifici.

Eventual consistency. Significa che in un qualche istante futuro i dati arriveranno in uno stato

consistente (nel senso ACID). Non ci sono garanzie, ovviamente, su quando ed in quanto tempo questo

avverrà. Questo perché:

• il sistema deve risponde subito alle richieste dei client;

• le modifiche ai dati si propagano in maniera asincrona fra i vari nodi.

Page 28: NOSQL - CRS4dassia.crs4.it/wp-content/uploads/2014/11/01_NOSQL.pdf · 2015-03-06 · NOSQL Origini e Significato NOSQL = NO a SQL NOSQL = Not Only SQL Il termine NOSQL fu introdotto

NOSQL

Tipologie di sistemi

NoSQL

Page 29: NOSQL - CRS4dassia.crs4.it/wp-content/uploads/2014/11/01_NOSQL.pdf · 2015-03-06 · NOSQL Origini e Significato NOSQL = NO a SQL NOSQL = Not Only SQL Il termine NOSQL fu introdotto

NOSQL

Tipologie di NOSQL

Proprio perché i database NOSQL sono incentrati sui dati esistono, ne esistono di

diverse tipologie ed esistono diverse varianti all'interno della stessa tipologia.

Le quattro tipologie principali di database NOSQL sono:

Page 30: NOSQL - CRS4dassia.crs4.it/wp-content/uploads/2014/11/01_NOSQL.pdf · 2015-03-06 · NOSQL Origini e Significato NOSQL = NO a SQL NOSQL = Not Only SQL Il termine NOSQL fu introdotto

NOSQL

Key-value stores

I Key-Value stores puntano sugli aspetti di “Availability” e “Partition Tolerance” del

teorema CAP e prendono origine dall'articolo di Amazon dove descriveva il suo

database Dynamo.

Lo scopo di Amazon era quello di avere un database altamente scalabile dove si

potesse accedere ai dati in modo affidabile il più velocemente possibile in quanto i

database relazionali non scalavano alla velocità necessaria. Lo sviluppo di Dynamo fu

iniziato nel 2007.

Esempi di database: Amazon Dynamo, Voldemort (Linkedin), MemcacheDB, Riak,

Redis, BerkleyDB ...

Page 31: NOSQL - CRS4dassia.crs4.it/wp-content/uploads/2014/11/01_NOSQL.pdf · 2015-03-06 · NOSQL Origini e Significato NOSQL = NO a SQL NOSQL = Not Only SQL Il termine NOSQL fu introdotto

NOSQL

Key-value stores

I database Key-Value stores sono la più “semplice” tipologia di database NOSQL.

Ad ogni chiave è associato un blob binario “oscuro” che può contenere qualsiasi

tipologia di dato (stringa di testo, documento, immagine, video, ecc...).

KEY VALUE

Key 1

Key 2

Key 3

Key 4Stringa

Blob datatype

Page 32: NOSQL - CRS4dassia.crs4.it/wp-content/uploads/2014/11/01_NOSQL.pdf · 2015-03-06 · NOSQL Origini e Significato NOSQL = NO a SQL NOSQL = Not Only SQL Il termine NOSQL fu introdotto

NOSQL

Key-value stores

Il vantaggio è che si ha una struttura altamente scalabile con

una API di interrogazione del database molto semplice:

● Aggiungi una coppia key/value

● Recuperare un blob data la sua chiave

● Cancellazione di una chiave

Le differenze principali rispetto al modello relazionale:

● Una query restituisce un solo elemento

● I value possono contenere qualsiasi tipo di dato

KEY VALUE

Key 1

Key 2

Key 3

Key 4

Lo svantaggio è che non c'è nessun modo di eseguire query basate sul contenuto del

valore in quanto i blob sono “oscuri”.

Page 33: NOSQL - CRS4dassia.crs4.it/wp-content/uploads/2014/11/01_NOSQL.pdf · 2015-03-06 · NOSQL Origini e Significato NOSQL = NO a SQL NOSQL = Not Only SQL Il termine NOSQL fu introdotto

NOSQL

Document stores

Sono orientati alla conservazione di documenti; quindi a differenza di quanto accade con

i Key-Value stores, il contenuto non è una black-box ma è accessibile ed indicizzabile

I Document stores si basano su un modello proposto già negli negli anni '80 da Lotus

Notes; non a caso uno dei fondatori di CouchDB, Damien Katz, ha dichiarato

“Couch is Lotus Notes built from the ground up for the web”.

Esempi di DB: MongoDB, CouchDB, Couchbase...

Page 34: NOSQL - CRS4dassia.crs4.it/wp-content/uploads/2014/11/01_NOSQL.pdf · 2015-03-06 · NOSQL Origini e Significato NOSQL = NO a SQL NOSQL = Not Only SQL Il termine NOSQL fu introdotto

NOSQL

Document stores

Lo scopo di questa tipologia di database è quella di archiviare in modo efficiente sia i

documenti che il loro contenuto, perciò consentono di creare indici secondari in modo

da poter recuperare i documenti anche in base al loro contenuto, metadati o

combinazioni di essi.

Inoltre, gli indici sono quasi sempre realizzati simili a quelle tipiche dei sistemi RDBMS

che consentono ricerche

● per uguaglianza;

● per intervallo;

● indici su più attributi;

● riferimenti ad altri documenti.

Page 35: NOSQL - CRS4dassia.crs4.it/wp-content/uploads/2014/11/01_NOSQL.pdf · 2015-03-06 · NOSQL Origini e Significato NOSQL = NO a SQL NOSQL = Not Only SQL Il termine NOSQL fu introdotto

NOSQL

Document stores

Esiste una limitata analogia fra i Document DB e gli RDBMS che si può riassumere in

questa tabella e che può aiutare a comprenderne meglio l'organizzazione

I JOIN non sono presenti, ma i riferimenti verso altri documenti possono essere visti

come una sorta JOIN.

Va rimarcato che i documenti non hanno uno schema e che quindi possono essere

costituiti da coppie key/value, coppie key/array, o anche documenti annidati.

Relazionale Document stores

Tabella Collection

Riga Document

Colonna Coppia Key/Value

Join Non presente*

Page 36: NOSQL - CRS4dassia.crs4.it/wp-content/uploads/2014/11/01_NOSQL.pdf · 2015-03-06 · NOSQL Origini e Significato NOSQL = NO a SQL NOSQL = Not Only SQL Il termine NOSQL fu introdotto

NOSQL

Document stores

Il formato in cui vengono memorizzati i documenti è generalmente standard, anche se

più raramente in alcuni casi vengono memorizzati file di documenti veri e propri (es.

PDF, DOC …).

Il formato più utilizzato è il JSON, gli altri formati utilizzati sono XML, YAML e BSON.

Questo è dovuto principalmente anche alla forte integrazione che questi database

hanno con Javascript. Inoltre, la possibilità di ottenere modelli di dati complessi senza

rinunciare alle performance, li ha resi molto diffusi per siti web e di e-commerce, e

gestione documentale.

Page 37: NOSQL - CRS4dassia.crs4.it/wp-content/uploads/2014/11/01_NOSQL.pdf · 2015-03-06 · NOSQL Origini e Significato NOSQL = NO a SQL NOSQL = Not Only SQL Il termine NOSQL fu introdotto

NOSQL

Column family stores

I database Column family si ispirano all'articolo di Google dove descriveva il suo

database Bigtable.

Bigtable è “un sistema di memorizzazione distribuito per la gestione di dati strutturati

progettato per scalare su grandissime dimensioni: petabyte di dati distribuiti su migliaia

di server”.

Dal 2006, Bigtable, è usato da Google in oltre 60 progetti.

Esempi di DB: Bigtable, Hbase, Hypertable, Cassandra ...

Page 38: NOSQL - CRS4dassia.crs4.it/wp-content/uploads/2014/11/01_NOSQL.pdf · 2015-03-06 · NOSQL Origini e Significato NOSQL = NO a SQL NOSQL = Not Only SQL Il termine NOSQL fu introdotto

NOSQL

Column family stores

Column family store indica che il database è organizzato per colonne invece che per

righe come nei RDBMS.

+ semplicità nell'aggiungere o modificare un record

- durante la lettura dei record si potrebbero leggere dati non necessari

+ vengono letti solamente i datidi interesse

- la scrittura di una tupla richiedeaccessi multipli

Ottimale per repository di grandi dimensioni che sono read-intensive

Page 39: NOSQL - CRS4dassia.crs4.it/wp-content/uploads/2014/11/01_NOSQL.pdf · 2015-03-06 · NOSQL Origini e Significato NOSQL = NO a SQL NOSQL = Not Only SQL Il termine NOSQL fu introdotto

NOSQL

Column family stores

Un Column Family Store può esser visto come una mappa

● ordinata;

● multi-dimensionale;

● persistente;

● indicizzata per row key, column key e timestamp;

Poiché ad ogni dato è associato un timestamp è possibile avere anche un versioning dei dati.

Inoltre ogni riga può avere un numero differente di colonne, cosa che di fatto rende questo

database una matrice multidimensionale sparsa.

I column family si dividono in:

● Standard column family

● Super column family

Page 40: NOSQL - CRS4dassia.crs4.it/wp-content/uploads/2014/11/01_NOSQL.pdf · 2015-03-06 · NOSQL Origini e Significato NOSQL = NO a SQL NOSQL = Not Only SQL Il termine NOSQL fu introdotto

NOSQL

Column family: Standard Column Family

La row key (la chiave più “esterna”)

identifica l'aggregato, che a sua volta

mappa una o più famiglie di colonne

dove possono essere presenti diversi

valori associati ad una diversa

column key.

Page 41: NOSQL - CRS4dassia.crs4.it/wp-content/uploads/2014/11/01_NOSQL.pdf · 2015-03-06 · NOSQL Origini e Significato NOSQL = NO a SQL NOSQL = Not Only SQL Il termine NOSQL fu introdotto

NOSQL

Column family: Super Column Family

Un’estensione dello Standard

Column Family è rappresentato dal

Super Column Family.

Questo modello semplicemente

aggiunge un ulteriore livello di

indicizzazione fra la row key e

l’insieme delle colonne, la cosiddetta

super column.

Questa chiave viene utilizzata per raggruppare attributi correlati fra di loro, appartenenti

allo stesso aggregato. Questa organizzazione ha vari vantaggi fra cui:

● dati più ordinati ed utilizzabili dalle applicazioni;

● sharding più efficiente.

Page 42: NOSQL - CRS4dassia.crs4.it/wp-content/uploads/2014/11/01_NOSQL.pdf · 2015-03-06 · NOSQL Origini e Significato NOSQL = NO a SQL NOSQL = Not Only SQL Il termine NOSQL fu introdotto

NOSQL

Column family stores

Altri vantaggi dei Column family database sono:

● I valori in una singola colonna sono memorizzati in maniera contigua e conservati in

specifici column datafile;

● I dati all'interno di ciascun column datafile sono dello stesso tipo, questo li rende ideali

per la compressione;

● La memorizzazione per colonna permette di migliorare le performance delle query in

quanto permette l'accesso diretto alle colonne;

● Alte performance nelle query di aggregazione (es. COUNT, SUM, AVG, MIN, MAX).

Page 43: NOSQL - CRS4dassia.crs4.it/wp-content/uploads/2014/11/01_NOSQL.pdf · 2015-03-06 · NOSQL Origini e Significato NOSQL = NO a SQL NOSQL = Not Only SQL Il termine NOSQL fu introdotto

NOSQL

Graph

Quest'ultima tipologia di database NOSQL, a differenza delle precedenti, è relazionale,

in quanto il suo focus è memorizzare i dati e le relazioni fra loro esistenti.

I Graph stores sono ispirati dalla teoria dei grafi.

E' la tipologia di database ideale per la gestione di social network e simili, nonché

sistemi intelligenti che facciano uso di clustering e generazione di regole.

Esempi di DB: Neo4j, OrientDB, AllegroGraph, InfiniteGraph...

Page 44: NOSQL - CRS4dassia.crs4.it/wp-content/uploads/2014/11/01_NOSQL.pdf · 2015-03-06 · NOSQL Origini e Significato NOSQL = NO a SQL NOSQL = Not Only SQL Il termine NOSQL fu introdotto

NOSQL

Graph

I nodi del grafo sono i dati ed hanno coppie key/value.

Nome: “Roberto”Età: 36Email: [email protected] Nome: “Francesca”

Età: 34

Marca: “Opel”Modello: “Corsa”

Page 45: NOSQL - CRS4dassia.crs4.it/wp-content/uploads/2014/11/01_NOSQL.pdf · 2015-03-06 · NOSQL Origini e Significato NOSQL = NO a SQL NOSQL = Not Only SQL Il termine NOSQL fu introdotto

NOSQL

Graph

Le relazioni sono gli edge del grafo, collegano i nodi, hanno una etichetta e possono

avere coppie key/value. Inoltre, la semantica delle relazioni dipende dall'applicazione e

quindi possono essere sia riflessive (es. Vive con) che no (es. Ama).

Nome: “Roberto”Età: 36Email: [email protected] Nome: “Francesca”

Età: 34

Marca: “Opel”Modello: “Corsa”

Vive con

Ama

Ama

PossiedeGuida

dal: 2008

Page 46: NOSQL - CRS4dassia.crs4.it/wp-content/uploads/2014/11/01_NOSQL.pdf · 2015-03-06 · NOSQL Origini e Significato NOSQL = NO a SQL NOSQL = Not Only SQL Il termine NOSQL fu introdotto

NOSQL

Un punto di vista applicativo

Confronto

NoSQL

Page 47: NOSQL - CRS4dassia.crs4.it/wp-content/uploads/2014/11/01_NOSQL.pdf · 2015-03-06 · NOSQL Origini e Significato NOSQL = NO a SQL NOSQL = Not Only SQL Il termine NOSQL fu introdotto

Una chiave di lettura molto interessante sui sistemi NoSQL è quella proposta da Martin

Fowler nel suo libro NoSQL Distilled, che si fonda sull'utilizzo tipico che viene fatto di

queste tecnologie.

La prima domanda che si pone è:

esiste davvero una linea di demarcazione netta

tra Key-Value Stores e Document Stores ?

NOSQL

Un punto di vista applicativo

Page 48: NOSQL - CRS4dassia.crs4.it/wp-content/uploads/2014/11/01_NOSQL.pdf · 2015-03-06 · NOSQL Origini e Significato NOSQL = NO a SQL NOSQL = Not Only SQL Il termine NOSQL fu introdotto

La risposta è NO.

● La maggior parte dei KV store consente di aggiungere dei metadati indicizzabili con cui

recuperare velocemente i values associati (rendendoli simili ai document store)

● La maggior parte dei Document, associano automaticamente un ID al document che

tipicamente viene recuperato per intero (ciò che si fa con i KV)

NOSQL

Un punto di vista applicativo

customer ID: 4156Metadata

Page 49: NOSQL - CRS4dassia.crs4.it/wp-content/uploads/2014/11/01_NOSQL.pdf · 2015-03-06 · NOSQL Origini e Significato NOSQL = NO a SQL NOSQL = Not Only SQL Il termine NOSQL fu introdotto

Anche i Column-Store, pur avendo una struttura più complicata, possono essere visti come degli

Aggregate Store.

Ogni Column-Family raggruppa un insieme di colonne “simili” che possono essere recuperate

attraverso un'unica operazione.

NOSQL

Un punto di vista applicativo

Ad esempio in una Colum-Family si possono racchiudere i dettagli dell'ordine

Ed in un'altra i dettagli dei singoli Item associati all'ordine .

Page 50: NOSQL - CRS4dassia.crs4.it/wp-content/uploads/2014/11/01_NOSQL.pdf · 2015-03-06 · NOSQL Origini e Significato NOSQL = NO a SQL NOSQL = Not Only SQL Il termine NOSQL fu introdotto

Possiamo considerare i sistemi NoSQL come degli Aggregate Storage, cioè dei sistemi

che ci consentono di memorizzare entità complesse (così come le abbiamo in RAM nella

nostra applicazione) con un'unica operazione, come se fossero un'unica entità indivisibile.

NOSQL

Aggregate Storage

Consideriamo il caso banale di un ordine con più elementi al suo interno.

In RAM avremo almeno

● un oggetto Order e

● un oggetto Item per ogni elemento.

Tuttavia, anche discorsivamente, quando pensiamo di salvare l'ordine o

leggere i dettagli dell'ordine, pensiamo all'ordine come un'unica entità

complessa che vogliamo leggere e scrivere con un'unica operazione.

Page 51: NOSQL - CRS4dassia.crs4.it/wp-content/uploads/2014/11/01_NOSQL.pdf · 2015-03-06 · NOSQL Origini e Significato NOSQL = NO a SQL NOSQL = Not Only SQL Il termine NOSQL fu introdotto

I sistemi RDBMS

ci costringono a

spargere i dati su

tante tabelle distinte

e separare un' operazione

in tante sotto-operazioni..

...che poi raggrupperemo

in una transazione

per poter avere atomicità e

consistenza.

NOSQL

Aggregate Storage

Page 52: NOSQL - CRS4dassia.crs4.it/wp-content/uploads/2014/11/01_NOSQL.pdf · 2015-03-06 · NOSQL Origini e Significato NOSQL = NO a SQL NOSQL = Not Only SQL Il termine NOSQL fu introdotto

I sistemi NoSQL invece ci consentono di memorizzare

l'intera struttura complessa come un unico Aggregato,

così come lo abbiamo in RAM.

NOSQL

Aggregate Storage

● KV : Aggregato == Value

● Document : Aggregato == Documento

● Col-Store : Aggregato == RowID + ColFamily

Page 53: NOSQL - CRS4dassia.crs4.it/wp-content/uploads/2014/11/01_NOSQL.pdf · 2015-03-06 · NOSQL Origini e Significato NOSQL = NO a SQL NOSQL = Not Only SQL Il termine NOSQL fu introdotto

Esistono tuttavia delle controindicazioni nell'uso dei sistemi NoSQL.

Supponiamo di voler fare un po' di analisi ed elaborare delle statistiche sulle vendite:

NOSQL

Aggregate Storage - Drawbacks

Product Curr. Sales Prev. SalesPR001 123 142

PR002 234 208

PR003 331 300

... …. ….

… …. ...

Page 54: NOSQL - CRS4dassia.crs4.it/wp-content/uploads/2014/11/01_NOSQL.pdf · 2015-03-06 · NOSQL Origini e Significato NOSQL = NO a SQL NOSQL = Not Only SQL Il termine NOSQL fu introdotto

Ciò che stiamo facendo in questo caso è cambiare il cuore dell'Aggregato.

In questo caso l'aggregazione non sarà più incentrata sugli ordini, ma sui prodotti perché ci

interessano gli andamenti delle vendite in diversi periodi dell'anno.

NOSQL

Aggregate Storage - Drawbacks

Questo con i sistemi RDBMS risulta facile,

basta cambiare leggermente la QUERY e le

regole di raggruppamento.

Con i sistemi NoSQL è invece molto più

scomodo ottenere questo risultato e

tipicamente si effettuano dei Job MapReduce

che analizzano l'intera base dati.

L'uso dei sistemi NoSQL risulta dunque vantaggioso quando l'accesso ai dati

avviene per lo più in forma aggregata. Se invece si ha necessità di cambiare

spesso forma di aggregazione un sistema RDBMS può essere più adatto.

Page 55: NOSQL - CRS4dassia.crs4.it/wp-content/uploads/2014/11/01_NOSQL.pdf · 2015-03-06 · NOSQL Origini e Significato NOSQL = NO a SQL NOSQL = Not Only SQL Il termine NOSQL fu introdotto

Fanno storia a se i Graph DB che invece hanno un approccio diametralmente opposto e

presentano una parcellizzazione delle informazioni ancor più estrema di quella dei sistemi

RDBMS.

NOSQL

Aggregate Storage

Page 56: NOSQL - CRS4dassia.crs4.it/wp-content/uploads/2014/11/01_NOSQL.pdf · 2015-03-06 · NOSQL Origini e Significato NOSQL = NO a SQL NOSQL = Not Only SQL Il termine NOSQL fu introdotto

NOSQL

Confronto

RDBMS vs NoSQL

Page 57: NOSQL - CRS4dassia.crs4.it/wp-content/uploads/2014/11/01_NOSQL.pdf · 2015-03-06 · NOSQL Origini e Significato NOSQL = NO a SQL NOSQL = Not Only SQL Il termine NOSQL fu introdotto

Effettuare un confronto approfondito tra sistemi così diversi è molto complesso.

Per dare un'idea dell'impatto delle caratteristiche ACID su un sistema distribuito e dei

potenziali vantaggi di sistemi basati sul modello BASE, riportiamo i risultati di un

confronto tra

- MySQL installato in modalità distribuita e

- MongoDB

eseguiti nel dipartimento di High Performance Computing della Università di Edimburgo

nel 2013.

RDBMS vs NoSQL

MySQL vs Mongo

Page 58: NOSQL - CRS4dassia.crs4.it/wp-content/uploads/2014/11/01_NOSQL.pdf · 2015-03-06 · NOSQL Origini e Significato NOSQL = NO a SQL NOSQL = Not Only SQL Il termine NOSQL fu introdotto

RDBMS vs NoSQL

MySQL Schema

Page 59: NOSQL - CRS4dassia.crs4.it/wp-content/uploads/2014/11/01_NOSQL.pdf · 2015-03-06 · NOSQL Origini e Significato NOSQL = NO a SQL NOSQL = Not Only SQL Il termine NOSQL fu introdotto

RDBMS vs NoSQL

Mongo Schema

Page 60: NOSQL - CRS4dassia.crs4.it/wp-content/uploads/2014/11/01_NOSQL.pdf · 2015-03-06 · NOSQL Origini e Significato NOSQL = NO a SQL NOSQL = Not Only SQL Il termine NOSQL fu introdotto

Test 1:

Il primo test riguarda l'esecuzione di una query semplice che coinvolge una sola tabella.

SELECT * FROM Users WHERE username = 'username'

RDBMS vs NoSQL

Test 1 : Simple Query

Page 61: NOSQL - CRS4dassia.crs4.it/wp-content/uploads/2014/11/01_NOSQL.pdf · 2015-03-06 · NOSQL Origini e Significato NOSQL = NO a SQL NOSQL = Not Only SQL Il termine NOSQL fu introdotto

Tempo di esecuzione delle queries in diverse configurazioni:

RDBMS vs NoSQL

Test 1 : Simple Query

Page 62: NOSQL - CRS4dassia.crs4.it/wp-content/uploads/2014/11/01_NOSQL.pdf · 2015-03-06 · NOSQL Origini e Significato NOSQL = NO a SQL NOSQL = Not Only SQL Il termine NOSQL fu introdotto

Numero di queries al secondo

RDBMS vs NoSQL

Test 1 : Simple Query

Page 63: NOSQL - CRS4dassia.crs4.it/wp-content/uploads/2014/11/01_NOSQL.pdf · 2015-03-06 · NOSQL Origini e Significato NOSQL = NO a SQL NOSQL = Not Only SQL Il termine NOSQL fu introdotto

Test 2:

Il secondo test è più complesso e richiede l'utilizzo di un SELF JOIN

SELECT 'Favourites.song_id' AS fSID,

'Favourites.userid' AS fUID

FROM Favourites AS b INNER JOIN Favourites AS a

ON b.user_id = a.user_id

WHERE a.song_id = 123456 AND a.user_id != 987654

RDBMS vs NoSQL

Test 2 : Query with SELF JOIN

Page 64: NOSQL - CRS4dassia.crs4.it/wp-content/uploads/2014/11/01_NOSQL.pdf · 2015-03-06 · NOSQL Origini e Significato NOSQL = NO a SQL NOSQL = Not Only SQL Il termine NOSQL fu introdotto

Tempo di esecuzione delle queries in diverse configurazioni:

RDBMS vs NoSQL

Test 2 : Query with SELF JOIN

Page 65: NOSQL - CRS4dassia.crs4.it/wp-content/uploads/2014/11/01_NOSQL.pdf · 2015-03-06 · NOSQL Origini e Significato NOSQL = NO a SQL NOSQL = Not Only SQL Il termine NOSQL fu introdotto

Numero di queries al secondo

RDBMS vs NoSQL

Test 2 : Query with SELF JOIN

Page 66: NOSQL - CRS4dassia.crs4.it/wp-content/uploads/2014/11/01_NOSQL.pdf · 2015-03-06 · NOSQL Origini e Significato NOSQL = NO a SQL NOSQL = Not Only SQL Il termine NOSQL fu introdotto

Test 3:

Il terzo test è ancora più complesso e richiede l'utilizzo di

- una nested query e

- 2 INNER JOIN

SELECT 'Songs.release_id' AS sID, 'Releases.id' AS rID

FROM Songs INNER JOIN Releases

ON Songs.release_id = Releases.id

WHERE artist_id IN

(SELECT 'Genres.artist_id' AS gAID

FROM Genres AS g INNER JOIN Artists AS a

ON g.artist_id = a.id

WHERE a.name = 'artist_name' )

RDBMS vs NoSQL

Test 3 : Complex Query

Page 67: NOSQL - CRS4dassia.crs4.it/wp-content/uploads/2014/11/01_NOSQL.pdf · 2015-03-06 · NOSQL Origini e Significato NOSQL = NO a SQL NOSQL = Not Only SQL Il termine NOSQL fu introdotto

E' evidente come, anche in un setup piuttosto semplice come quello del test, al

crescere della complessità della query i tempi di esecuzione siano nettamente diversi.

RDBMS vs NoSQL

Test 3 : Complex Query

Page 68: NOSQL - CRS4dassia.crs4.it/wp-content/uploads/2014/11/01_NOSQL.pdf · 2015-03-06 · NOSQL Origini e Significato NOSQL = NO a SQL NOSQL = Not Only SQL Il termine NOSQL fu introdotto

In questo caso si può notare come il tempo di esecuzione della query nel caso di

MySQL aumenti con il crescere delle dimensioni del DB

RDBMS vs NoSQL

Test 4 : Variazione delle dimensioni del DB

Page 69: NOSQL - CRS4dassia.crs4.it/wp-content/uploads/2014/11/01_NOSQL.pdf · 2015-03-06 · NOSQL Origini e Significato NOSQL = NO a SQL NOSQL = Not Only SQL Il termine NOSQL fu introdotto

Il test precedente ha messo in evidenza l'impatto negativo sulle performance dovuto ai

JOIN ed agli accessi su più tabelle.

Impatto percepibile anche in un sistema semplice con pochi dati e poche macchine

tutte posizionate all'interno di uno stesso datacenter con connessioni ad alte

prestazioni.

Vediamo ora un secondo test che coinvolge anche HBase e Cassandra, effettuato su

macchine virtuali fornite dagli Amazon Web Services, con un carico di lavoro più

consistente ma con letture scritture su tabella singola, quindi senza l'impatto negativo

dovuto ai JOIN.

RDBMS vs NoSQL

Test comparativo

Page 70: NOSQL - CRS4dassia.crs4.it/wp-content/uploads/2014/11/01_NOSQL.pdf · 2015-03-06 · NOSQL Origini e Significato NOSQL = NO a SQL NOSQL = Not Only SQL Il termine NOSQL fu introdotto

Client : 1 Nodo

- RAM : 7.5 GB

- CPU : 4 Core

Server : 4 Nodi

- RAM : 15 GB

- CPU : 8 Core

Dati:

- 100 Milioni di record

- 10 campi per record

- 100 thread attivi contemporaneamente (client-side)

RDBMS vs NoSQL

Numeri del test

Page 71: NOSQL - CRS4dassia.crs4.it/wp-content/uploads/2014/11/01_NOSQL.pdf · 2015-03-06 · NOSQL Origini e Significato NOSQL = NO a SQL NOSQL = Not Only SQL Il termine NOSQL fu introdotto

Hbase è risultato il più veloce

con 40K op/sec.

Al secondo posto troviamo

Cassandra con 15K op/sec.

RDBMS vs NoSQL

Bulk Load

Page 72: NOSQL - CRS4dassia.crs4.it/wp-content/uploads/2014/11/01_NOSQL.pdf · 2015-03-06 · NOSQL Origini e Significato NOSQL = NO a SQL NOSQL = Not Only SQL Il termine NOSQL fu introdotto

RDBMS vs NoSQL

Workload A ( 50% read, 50% update)

Page 73: NOSQL - CRS4dassia.crs4.it/wp-content/uploads/2014/11/01_NOSQL.pdf · 2015-03-06 · NOSQL Origini e Significato NOSQL = NO a SQL NOSQL = Not Only SQL Il termine NOSQL fu introdotto

RDBMS vs NoSQL Workload A ( 50% read, 50% update)

Page 74: NOSQL - CRS4dassia.crs4.it/wp-content/uploads/2014/11/01_NOSQL.pdf · 2015-03-06 · NOSQL Origini e Significato NOSQL = NO a SQL NOSQL = Not Only SQL Il termine NOSQL fu introdotto

RDBMS vs NoSQL Workload B ( 95% read, 5% update)

Page 75: NOSQL - CRS4dassia.crs4.it/wp-content/uploads/2014/11/01_NOSQL.pdf · 2015-03-06 · NOSQL Origini e Significato NOSQL = NO a SQL NOSQL = Not Only SQL Il termine NOSQL fu introdotto

RDBMS vs NoSQL Workload B ( 95% read, 5% update)

Page 76: NOSQL - CRS4dassia.crs4.it/wp-content/uploads/2014/11/01_NOSQL.pdf · 2015-03-06 · NOSQL Origini e Significato NOSQL = NO a SQL NOSQL = Not Only SQL Il termine NOSQL fu introdotto

RDBMS vs NoSQL Workload C : read-only

N.B: Ricordiamo che si tratta di accessi su singola tabella a record con pochi campi.

Page 77: NOSQL - CRS4dassia.crs4.it/wp-content/uploads/2014/11/01_NOSQL.pdf · 2015-03-06 · NOSQL Origini e Significato NOSQL = NO a SQL NOSQL = Not Only SQL Il termine NOSQL fu introdotto

RDBMS vs NoSQL Workload D ( 90% insert, 10% read)

Page 78: NOSQL - CRS4dassia.crs4.it/wp-content/uploads/2014/11/01_NOSQL.pdf · 2015-03-06 · NOSQL Origini e Significato NOSQL = NO a SQL NOSQL = Not Only SQL Il termine NOSQL fu introdotto

NOSQL

RDBMS vs NoSQL

Come Scegliere ?

Page 79: NOSQL - CRS4dassia.crs4.it/wp-content/uploads/2014/11/01_NOSQL.pdf · 2015-03-06 · NOSQL Origini e Significato NOSQL = NO a SQL NOSQL = Not Only SQL Il termine NOSQL fu introdotto

NoSQL

Quando e quale scegliere?

Non esiste una riposta univoca a questa domanda.

La scelta tra un sistema RDBMS ed una o più delle tipologie di sistemi NoSQL è

strettamente legata al problema specifico che si deve affrontare.

Nelle prossime slide cercheremo di fornire alcune linee guida che potranno essere

d'aiuto nella scelta tra i vari sistemi.

Innanzitutto è necessario porsi alcune domande...

Page 80: NOSQL - CRS4dassia.crs4.it/wp-content/uploads/2014/11/01_NOSQL.pdf · 2015-03-06 · NOSQL Origini e Significato NOSQL = NO a SQL NOSQL = Not Only SQL Il termine NOSQL fu introdotto

Come Scegliere ?

Che vincoli ci impone il nostro problema ?

Vediamo alcune domande di carattere generale che dovremmo porci prima di decidere:

Vincoli legati al modello :

- Quante entità ci occorrono per modellare il problema ?

- Quante relazioni abbiamo tra le diverse entità ? Quanto sono “fitte” ?

- Che probabilità c'è che lo schema possa cambiare ? Con quale frequenza ?

Vincoli legati all'accesso ai dati:

- Quanto è stringente il vincolo di consistenza ? Dev'essere assoluta ? E' ammissibile un ritardo di qualche

ms o di qualche secondo nella propagazione degli aggiornamenti ?

- L'accesso ai dati avverrà su tutti i campi di un record o solo su alcuni di essi ?

- Le elaborazioni richiederanno l'accesso a più tabelle ? O saranno concentrate solo su alcune colonne

(es. data, prezzo, disponibilità...) ?

Page 81: NOSQL - CRS4dassia.crs4.it/wp-content/uploads/2014/11/01_NOSQL.pdf · 2015-03-06 · NOSQL Origini e Significato NOSQL = NO a SQL NOSQL = Not Only SQL Il termine NOSQL fu introdotto

Come Scegliere ?

Macro categorie di applicazioni

Per orientarci meglio possiamo definire tre macro categorie che ci aiutino a capire i pro

e i contro delle diverse soluzioni:

- Applicazioni prettamente Transazionali: caratterizzate da forti vincoli di consistenza e

certezza dell'informazione;

- Applicazioni prettamente Computazionali, caratterizzate dalla necessità di eseguire

elaborazioni anche complesse sui dati;

- Applicazioni prettamente Interattive e Web Oriented: caratterizzate dalla presenza

di un numero elevato di utenti e di dover loro garantire tempi di risposta molto brevi;

Page 82: NOSQL - CRS4dassia.crs4.it/wp-content/uploads/2014/11/01_NOSQL.pdf · 2015-03-06 · NOSQL Origini e Significato NOSQL = NO a SQL NOSQL = Not Only SQL Il termine NOSQL fu introdotto

Come Scegliere ?

Applicazioni Transazionali

Ad esempio “gestione di un punto vendita” o “gestione risorse umane”.

Sono caratterizzate da :

● obbligatorietà della consistenza ed integrità dei dati;

● modesto livello di concorrenza (gestibile da una singola macchina)

Vincoli sullo schema:

● tipicamente associate a problemi con dati fortemente strutturati

● relazioni chiare e strette tra le varie entità

● relazioni utilizzate di frequente

● schema stabile e con scarse probabilità di cambiamento

Page 83: NOSQL - CRS4dassia.crs4.it/wp-content/uploads/2014/11/01_NOSQL.pdf · 2015-03-06 · NOSQL Origini e Significato NOSQL = NO a SQL NOSQL = Not Only SQL Il termine NOSQL fu introdotto

Come Scegliere ?

Applicazioni Transazionali

Vincoli sull'accesso ai dati:

● consistenza (ogni lettura DEVE garantire il valore più aggiornato del dato)

● Row-Oriented (tipicamente viene letto l'intero record)

● frequente accesso a più tabelle (JOIN)

● necessità dell'uso delle transazioni (proprietà ACID)

Page 84: NOSQL - CRS4dassia.crs4.it/wp-content/uploads/2014/11/01_NOSQL.pdf · 2015-03-06 · NOSQL Origini e Significato NOSQL = NO a SQL NOSQL = Not Only SQL Il termine NOSQL fu introdotto

Come Scegliere ?

Applicazioni Transazionali

Pro NoSQL:

● Column Oriented: possono semplificare la gestione dello schema, che può facilmente

variare nel tempo con l'aggiunta di colonne;

● Document : possono aiutare nella definizione di viste

Contro NoSQL:● non forniscono supporto alle relazioni (ad eccezione dei Graph DB);

● non forniscono supporto alle transazioni (no ACID);

● non forniscono supporto per JOIN o viste sui dati (tranne alcuni Document attraerso il

modello MapReduce, che però non è facile da usare);

Decisione:

Questo è il regno dei sistemi RDBMS e difficilmente si possono avere dei vantaggi con sistemi

NoSQL.

Page 85: NOSQL - CRS4dassia.crs4.it/wp-content/uploads/2014/11/01_NOSQL.pdf · 2015-03-06 · NOSQL Origini e Significato NOSQL = NO a SQL NOSQL = Not Only SQL Il termine NOSQL fu introdotto

Come Scegliere ?

Applicazioni Computazionali

Sono applicazioni tipicamente orientate all'elaborazione dei dati, ad esempio per

● la produzione di report di vendite;

● generazione di statistiche sull'utilizzo di un dato servizio

● individuazione di trend o altre funzionalità di analytics

Tipicamente :

● operano su un sottoinsieme dei campi del record;

● fanno un uso piuttosto limitato delle relazioni tra tabelle;

Vincoli sullo schema:

● tipicamente sono associate a schemi strutturati che variano poco nel tempo

● possono richiedere l'integrazione tra basi di dati diverse e dunque con schemi

differenti;

Page 86: NOSQL - CRS4dassia.crs4.it/wp-content/uploads/2014/11/01_NOSQL.pdf · 2015-03-06 · NOSQL Origini e Significato NOSQL = NO a SQL NOSQL = Not Only SQL Il termine NOSQL fu introdotto

Come Scegliere ?

Applicazioni Computazionali

Accesso ai dati:

● tipicamente utilizzano un sottoinsieme dei campi di un record;

● Column-Oriented → le elaborazioni da eseguire sui dati richiedono operazioni tra

valori della stessa colonna associati a record diversi (es. colonna prezzo, colonna

vendite ed acquisti, date...)

● accessi multi-tabella piuttosto rari;

● consistenza dei dati non stringente → è richiesto il valore più recente del dato ma è

ammissibile un lieve ritardo nel suo ottenimento in quanto tipicamente le

elaborazioni non vengono effettuate in real-time;

Page 87: NOSQL - CRS4dassia.crs4.it/wp-content/uploads/2014/11/01_NOSQL.pdf · 2015-03-06 · NOSQL Origini e Significato NOSQL = NO a SQL NOSQL = Not Only SQL Il termine NOSQL fu introdotto

Come Scegliere ?

Applicazioni Computazionali

Pro NoSQL:

● Column Oriented: consentono la definizione di uno schema rigoroso e contemporaneamente

facilitano l'uso di schemi variabili nel tempo ;

● Document / Key-Value : possono essere utilizzati ma non forniscono alcun supporto nella

verifica dello correttezza dello schema;

● Possono garantire un notevole incremento di prestazioni durante l'accesso parziale ai record;

● Possono eseguire molte operazioni la dove sono memorizzati i dati senza necessità di

spostarli attraverso la rete; con un sostanziale incremento delle prestazioni;

Contro NoSQL:● non forniscono supporto alle relazioni (ad eccezione dei Graph DB);

● l'assenza di regole e relazioni può generare temporanee inconsistenze tra i dati;

Page 88: NOSQL - CRS4dassia.crs4.it/wp-content/uploads/2014/11/01_NOSQL.pdf · 2015-03-06 · NOSQL Origini e Significato NOSQL = NO a SQL NOSQL = Not Only SQL Il termine NOSQL fu introdotto

Come Scegliere ?

Applicazioni Computazionali

Decisione:

Entrambe le categorie di sistemi possono essere utilizzate per questo tipo di applicazioni.

L'elemento decisivo è la dimensione dei dati da elaborare.

In linea del tutto generale ed orientativa si può supporre che:

● al di sotto del milione di record l'overhead dei sistemi NoSQL non ne giustifichi l'adozione;

● tra il milione e 100 milioni di record, entrambe i sistemi possano funzionare egregiamente;

● al di sopra dei 100 milioni di record i vantaggi dei sistemi NoSQL prevarranno su tutti gli oneri

di adozione e gestione aggiuntivi

Page 89: NOSQL - CRS4dassia.crs4.it/wp-content/uploads/2014/11/01_NOSQL.pdf · 2015-03-06 · NOSQL Origini e Significato NOSQL = NO a SQL NOSQL = Not Only SQL Il termine NOSQL fu introdotto

Come Scegliere ?

Applicazioni Interattive e Web-Oriented

Sono web-applications o applicazioni mobile caratterizzate da:

● elevatissimo numero di utenti;

● vasta distribuzione geografica degli utilizzatori (potenzialmente mondiale);

● grande quantità di dati da conservare ed elaborare;

● disponibilità degli utenti ad attendere un “tempo ragionevole” per ottenere una

risposta;

● uno schema che può variare nel tempo per assecondare l'evoluzione

dell'applicazione in funzione delle esigenze degli utenti;

● possibilità di aggiungere e modificare nel tempo le relazioni tra entità;

Page 90: NOSQL - CRS4dassia.crs4.it/wp-content/uploads/2014/11/01_NOSQL.pdf · 2015-03-06 · NOSQL Origini e Significato NOSQL = NO a SQL NOSQL = Not Only SQL Il termine NOSQL fu introdotto

Come Scegliere ?

Applicazioni Interattive e Web-Oriented

Vincoli sullo schema

● possibilità di definire uno schema strutturato;

● possibilità di modificare lo schema nel tempo senza impattare sui record esistenti;

● le relazioni potrebbero non esser stringenti e dunque gestite a livello applicativo;

Accesso ai dati

● spesso è richiesto un accesso parziale ai campi di un record;

● grande velocità nell'esecuzione di operazioni (tipicamente CRUD);

● è tollerabile una temporanea (breve) inconsistenza delle informazioni

Page 91: NOSQL - CRS4dassia.crs4.it/wp-content/uploads/2014/11/01_NOSQL.pdf · 2015-03-06 · NOSQL Origini e Significato NOSQL = NO a SQL NOSQL = Not Only SQL Il termine NOSQL fu introdotto

Come Scegliere ?

Applicazioni Interattive e Web-Oriented

Pro NoSQL:

● Column Oriented: consentono la definizione di uno schema rigoroso e contemporaneamente

facilitano l'uso di schemi variabili nel tempo ;

● Document / Key-Value : possono essere utilizzati ma non forniscono alcun supporto nella

verifica dello correttezza dello schema (possono essere di grande aiuto nella gestione di

schemi molto variabili);

● Possono garantire un notevole incremento di prestazioni durante l'accesso parziale ai record;

● Possono eseguire molte operazioni la dove sono memorizzati i dati senza necessità di

spostarli attraverso la rete; con un sostanziale incremento delle prestazioni;

● Basandosi sulle proprietà BASE e non ACID garantiscono un'elevatissima scalabilità delle

operazioni CRUD;

Contro NoSQL:● nessuno

Page 92: NOSQL - CRS4dassia.crs4.it/wp-content/uploads/2014/11/01_NOSQL.pdf · 2015-03-06 · NOSQL Origini e Significato NOSQL = NO a SQL NOSQL = Not Only SQL Il termine NOSQL fu introdotto

Come Scegliere ?

Applicazioni Interattive e Web-Oriented

Decisione:

Decisamente questo è il regno dei sistemi NoSQL.

La scelta tra le diverse tipologie è legata alle esigenze operative del problema da risolvere.

Ad esempio:

● per applicazioni SaaS che devono consentire uno schema flessibile in grado di accettare

campi definiti dall'utente (es. CRM o ERP di tipo Enterprise) i document store potrebbero

essere la scelta ottimale;

● per applicazioni social o in cui lo schema cambia velocemente ma sotto il controllo dello

sviluppatore, la scelta ottimale è probabilmente quella dei Column-Store;

● per applicazioni social o comunque caratterizzate da un'estrema variabilità delle relazioni tra

entità un Graph DB potrebbe essere la scelta ottimale.

Page 93: NOSQL - CRS4dassia.crs4.it/wp-content/uploads/2014/11/01_NOSQL.pdf · 2015-03-06 · NOSQL Origini e Significato NOSQL = NO a SQL NOSQL = Not Only SQL Il termine NOSQL fu introdotto

Conclusioni

Come scegliere?

La tendenza che si sta consolidando è quella di una soluzione orientata alla

Polyglot Persistence

ovvero, si fa una decomposizione funzionale del problema e :

● le funzionalità transazionali sono realizzate tramite un RDBMS;

● le funzionalità computazionali, in funzione del volume di dati, sono realizzate tramite

RDBMS o Column-Store (eventualmente document o key-value);

● le funzionalità web-scale che devono gestire una variabilità dello schema controllata

dall'utente possono esser realizzate tramite Document-Store;

● le funzionalità web-scale che devono gestire una variabilità dello schema controllata dallo

sviluppatore possono esser realizzate tramite Column-Store;

● le funzionalità web-scale che prevedono la gestione dinamica di relazioni fra le entità

possono esser gestite tramite Graph-DB;