Basi di Dati e Sistemi Informativi
Database NoSQL
Giuseppe Loseto
Corso di Laurea in Ing. Informatica – Ing. Gestionale Magistrale
NoSQL (Not Only SQL)
I principali metodi d’implementazione dei database NoSQL sono i seguenti:
 Column Store/Column Family
 dati organizzati in righe e colonne, ma le righe non hanno necessariamente una
struttura omogenea
 Key/Value
 dati immagazzinati in un elemento (map) che contiene una chiave assieme ai dati veri e
propri
 semplice da implementare, ma inefficiente se la maggior parte delle operazioni
riguardano soltanto una parte di un elemento
 Document store
 evoluzione del metodo key/value
 dati memorizzati come documenti che possono contenere illimitati campi di illimitata
lunghezza
 Graph
 dati immagazzinati sotto forma di strutture a grafi, rendendo più performante l’accesso
a questi da applicativi orientati agli oggetti
Basi di Dati e
Sistemi Informativi
Database NoSQL
2 di 19
DATA VOLUME
Data Volume VS Complexity
Key-Value Store
Column Store
Document Store
Graph Store
RDBMS
DATA COMPLEXITY
Basi di Dati e
Sistemi Informativi
Database NoSQL
3 di 19
Vantaggi VS Svantaggi
Vantaggi
 ogni elemento contiene tutte le informazioni necessarie non serve usare i
dispendiosi (in termini di performance) JOIN
 semplicità e scalabilità orizzontale
 mappatura più diretta alle object classes (si possono ridurre di molto i
tempi dedicati al cosiddetto object-relational mapping)
Svantaggi
 mancanza dei controlli fondamentali sull’integrità e consistenza dei dati
(ricade totalmente sull’applicativo)
 mancanza di uno standard universale (come può essere l’SQL)
 API e metodo di storing/accesso ai dati propri
 passaggio verso un altro database non immediato
Basi di Dati e
Sistemi Informativi
Database NoSQL
4 di 19
Principali Caratteristiche
 Non esisteranno più tabelle, ma collezioni di dati
 La chiave primaria è solitamente un campo ID che, se non viene fornito in
fase di inserimento, verrà aggiunto automaticamente dal DBMS
 Nei DBMS NoSQL a documenti, è significativa l’assenza delle relazioni
 Embedding
 annidare un oggetto all’interno di un altro
 sconsigliabile quando i documenti (quello annidato e quello che lo
contiene) crescono di dimensione
 Referencing
 simile al concetto di relazione dei RDBMS
 consiste nel fare in modo che un documento contenga, tra i suoi dati, l’ID
di un altro documento
 Paradigma BASE (Basically Available, Soft-state, Eventual consistency)
Basi di Dati e
Sistemi Informativi
Database NoSQL
5 di 19
Column Store
 dati ottimizzati per operazioni da svolgere “per colonna”
 spesso rappresentano una soluzione intermedia tra RDBMS e Key-Value Store
 colonne memorizzabili anche in modalità distribuita
Basi di Dati e
Sistemi Informativi
Database NoSQL
6 di 19
Key-Value Store
VOLDEMORT
(LinkedIn)
 Sono definiti da un semplice dizionario/mappa che permette all’utente di
recuperare e aggiornare il valore memorizzato data la sua chiave
 Get (key)
 Set (key, value)
 Delete (key)
Basi di Dati e
Sistemi Informativi
Database NoSQL
7 di 19
Document Store
 Memorizza le informazioni come collezioni di documenti
 Un documento può contenere informazioni annidate ed ha un formato riconosciuto
(JSON, XML, etc.) che permette poi al server di eseguire delle query sui dati
 A differenza delle tabelle di un relazionale è schema-free
Basi di Dati e
Sistemi Informativi
Database NoSQL
8 di 19
Graph Store
 Rappresentano perfettamente una realtà composta da una fitta rete di connessioni
e la modellano sotto forma di nodi e rami di un grafo
 Nodi e rami possiedono informazioni memorizzate attraverso Key-Value store
 Per query che soddisfano il modello gerarchico i tempi di esecuzione possono
essere 1.000 volte più veloci rispetto agli altri database
Basi di Dati e
Sistemi Informativi
Database NoSQL
9 di 19
 Open source, Schema-free, No SQL, Graph Database
Basi di Dati e
Sistemi Informativi
RDBMS
Graph Database
Tables
Graphs
Rows
Nodes
Columns and Data
Properties and its values
Constraints
Relationships
Joins
Traversal
Building block of Neo4j
Capacity
Nodes
Around 35 billion
Relationships
Around 35 billion
Labels
Around 275 billion
Database NoSQL
10 di 19
Neo4j: Building Blocks
 Un nodo contiene un set di proprietà espresse come “chiave:valore”
 Una relazione connette due nodi, può avere a sua volte delle proprietà
 Le relazioni possono essere unidirezionali o bidirezionali
 Labels: associano un significato comune ad un insieme di nodi o relazioni
Basi di Dati e
Sistemi Informativi
Database NoSQL
11 di 19
Neo4j CQL: Cypher Query Language
 Query language per Neo4j Graph Database (pattern-matching)
CQL
Command/Clause
Usage
CQL Data Type
Usage
CREATE
To create nodes, relationships and
properties
boolean
boolean literals: true, false
MATCH
To retrieve data about nodes,
relationships and properties
byte
8-bit integers
short
16-bit integers
int
32-bit integers
long
64-bit integers
float
32-bit floating-point numbers
double
64-bit floating-point numbers
RETURN
To return query results
WHERE
To provide conditions to filter
retrieval data
DELETE
To delete nodes and relationships
REMOVE
To delete properties of nodes and
relationships
ORDER BY
To sort retrieval data
char
16-bit characters
SET
To add or update labels
String
generic strings
Basi di Dati e
Sistemi Informativi
Database NoSQL
12 di 19
CQL CREATE
CREATE (
<node-name>:<label-name>
{
<Property1-name>:<Property1-Value>
........
<Propertyn-name>:<PropertyN-Value>
}
)
CREATE ( TheMatrix:Movie { title:’The Matrix’, year:1999} )
CREATE ( Keanu:Person { name:’Keanu Reeves’, born:1964} )
Basi di Dati e
Sistemi Informativi
The
Keanu
Matrix
Reeves
Database NoSQL
13 di 19
CQL MATCH, RETURN, WHERE
MATCH (
RETURN
<node-name>:<label-name>
<node-name>.<property1-name>,
)
........
<node-name>.<propertyN-name>
MATCH (x:Person) RETURN x.name
MATCH (x:Movie) RETURN x.title
WHERE <condition> <boolean-operator> <condition>
<boolean-operator> := AND, OR, NOT, XOR
<condition> := <property-name> <comparison-operator> <value>
MATCH (x:Person)
WHERE x.born > 1960
RETURN x.name
Basi di Dati e
Sistemi Informativi
Database NoSQL
14 di 19
CQL Relazioni
MATCH (<node1-label-name>:<node1-name>),(<node2-label-name>:<node2-name>)
CREATE
(<node1-label-name>)-[<relationship-label-name>:<relationship-name>
{<define-properties-list>}]->(<node2-label-name>)
RETURN <relationship-label-name>
MATCH (Keanu:Person), (TheMatrix:Movie)
CREATE (Keanu)-[:ACTED_IN {role:’Neo’}]->(TheMatrix)
The
ACTED_IN
Matrix
Keanu
Reeves
CREATE
(<node1-label-name>)-[<relationship-label-name>:<relationship-name>
{<define-properties-list>}]->(<node2-label-name>)
RETURN <relationship-label-name>
Basi di Dati e
Sistemi Informativi
Database NoSQL
15 di 19
CQL SET, REMOVE, DELETE
SET <property-name-list>
SET clause is used:
MATCH (x:Movie)
Add new properties to existing
Node or Relationship
SET x.budget = 1000
Add or Update Properties values
REMOVE <property-name-list>
REMOVE clause is used:
REMOVE <label-name-list>
To remove labels or properties
of a Node or a Relationship
MATCH (x:Movie)
REMOVE x.budget
DELETE <node-name-list>
DELETE <node1-name>,<node2-name>,<relationship-name>
MATCH (x:Person)
To delete a Node
To delete a Node and
associated Nodes and
Relationships
WHERE x.born > 1960
DELETE x
Basi di Dati e
Sistemi Informativi
DELETE clause is
used:
Database NoSQL
16 di 19
CQL ORDER BY, LIMIT, UNION
ORDER BY
<property-name-list>
[DESC]
MATCH (x:Person)
RETURN x.name
ORDER BY x.born DESC
LIMIT <number>
MATCH (x:Person)
RETURN x.name
LIMIT 10
<MATCH Command1> UNION <MATCH Command2>
MATCH (x:Actor) RETURN x
UNION
MATCH (x:Director) RETURN x
Basi di Dati e
Sistemi Informativi
Database NoSQL
17 di 19
CQL Functions
Aggregation Functions
Relationship Functions
COUNT
STARTNODE
MAX
ENDNODE
MIN
ID
SUM
TYPE
AVG
MATCH (x:Movie)
RETURN SUM(x.budget)
MATCH (a)-[rel:ACTED_IN]->(b)
RETURN STARTNODE(rel)
Basi di Dati e
Sistemi Informativi
Database NoSQL
18 di 19
Movie Database
Full dataset (12k movies, 50k actors) from TheMovieDB
1) Visualizzare i nomi di tutti gli attori
2) Visualizzare i titoli dei film di tipo “Action”
3) Visualizzare i film con “Milla Jovovich”
4) Visualizzare i film con “Milla Jovovich” ed il nome del regista
5) Visualizzare i nomi degli attori che hanno girato un film con “Milla
Jovovich”
6) Visualizzare per ogni attore il numero di film di genere “Comedy” a cui ha
partecipato
7) Visualizzare per ogni film il numero di voti ricevuti ed il voto medio
Basi di Dati e
Sistemi Informativi
Database NoSQL
19 di 19