SlideShare a Scribd company logo
Ordine degli Ingegneri della Provincia di Siracusa
Sabato 5 Marzo 2016 [Sala Convegni – Siracusa]
noSQL
La nuova frontiera dei Database
Relatore: Ing. Andrea Maddalena
Ing. Andrea Maddalena
DBA e Software Developer (dal 2000)
Database:
mySQL, MS SQL Server (2000-2014), Oracle db,
postreSQL, SQLite, dBase, MongoDB, Redis, Azure blob
…
Linguaggi:
C, C++, Java, C#, VB, VBA, Javascript, Node.js, Python
Laurea Ingegneria Elettronica
Ordine Ingegneri Siracusa – 1602/A
M101JS: MongoDB for Node.js Developer
M101N: MongoDB for .NET Developer
M102: MongoDB for DBAs
Agenda
 Introduzione
 RDBMS
 Evoluzione Infrastruttura
 noSQL
 Document DB
 KeyValue Storage
4
Introduzione
Banca dati (database)
Introduzione
« Insieme organizzato di dati gestito da un DBMS. Sue caratteristiche sono la
grandezza, la condivisibilità e la persistenza: una banca dati è grande perché
in generale ha una dimensione tale da richiedere l’utilizzo della memoria
secondaria per la sua gestione, condivisa, perché accessibile da più
applicazioni e utenti, e persistente, perché ha un ciclo di vita indipendente da
quello dei programmi che la utilizzano. »
Fonte: Treccani [http://www.treccani.it/enciclopedia/banca-dati/]
5
Database
Un database deve soddisfare i seguenti requisiti:
 i dati devono essere organizzati con ridondanza minima;
 i dati devono essere utilizzabili contemporaneamente da più
utenti.
Introduzione
6
Database Management System
I DBMS sono strumenti software che hanno il compito di gestire le informazioni
contenute in un database in maniera efficiente ed efficace.
Introduzione
App 1
App 2
App 3
Dati
Dati
Dati
App 1
App 1
App 1
DBMS
7
DBMS Caratteristiche
Le capacità fondamentali di un DBMS sono:
 gestire dati non volatili
 accedere in modo efficiente a grandi quantità di dati
Introduzione
 Modello dati
 Linguaggio di alto livello
 Transazioni
 Accesso controllato
 Recupero dati
Ulteriori caratteristiche
8
Progettazione database
Introduzione
Le fasi fondamentali nella progettazione di un database sono:
RDBMS
Relational Database Management System
10
Database Relazionale - RDBMS
«Il termine Relational database management system (RDBMS) indica
un database management system basato sul modello relazionale»
RDBMSFonte: Wikipedia [https://it.wikipedia.org/wiki/Modello_relazionale]
La struttura base del modello relazionale è composta da:
 uno o più attributi (denominati campi);
 un tipo di dato o dominio per ciascuno degli attributi;
 un valore per ciascun attributo all'interno del dominio o tipo di dato consentito;
 una tupla cioè l'insieme non ordinato di valori assunti dagli attributi.
11
RDBMS - Elementi
• Tabelle
 Chiavi primarie
 Chiavi esterne
Tipo di dati
Valori
RDBMS
• Viste (Query)
• Procedure
• …
12
Normalizzazione
« La normalizzazione è un procedimento volto all'eliminazione della
ridondanza informativa e del rischio di incoerenza dal database »
RDBMSFonte: Wikipedia [https://it.wikipedia.org/wiki/Normalizzazione_(informatica)]
 Prima Forma Normale
 Seconda Forma Normale
 Terza Forma Normale
Elimina gruppi ripetitivi
Elimina dati ridondanti
Elimina campi non dipendenti dalla chiave
13
Prima Forma Normale
Si dice che una base dati è in 1NF (prima forma normale) se ogni relazione contenuta nella base dati è in 1NF,
ovvero se e solo se:
1. tutte le righe della relazione hanno lo stesso numero di attributi
2. non presenta gruppi di attributi che si ripetono (ossia ciascun attributo è definito su un dominio con
valori atomici)
3. tutti i valori di un attributo sono dello stesso tipo (appartengono allo stesso dominio)
4. esiste una chiave primaria (ossia esiste un insieme di attributi, che identifica in modo univoco ogni tupla
della relazione)
5. l'ordine delle righe è irrilevante (non è portatore di informazioni)
RDBMSFonte: Wikipedia [https://it.wikipedia.org/wiki/Normalizzazione_(informatica)]
14
Prima Forma Normale
RDBMS
prot# Impresa Impr_comune Collaudatore1 Collaudatore2 Collaudatore3
1022 Edil Srl Siracusa 908A 486A 695A
4123 Costruz. Srl Catania 862A 1602A 1929A
prot# Impresa Impr_comune Collaudatore
1022 Edil Srl Siracusa 908A
1022 Edil Srl Siracusa 486A
1022 Edil Srl Siracusa 695A
4123 Costruz. Srl Catania 862A
4123 Costruz. Srl Catania 1602A
4123 Costruz. Srl Catania 1929A
Tabella NON Normalizzata
Tabella 1NF:
elimina gruppi ripetitivi
15
Seconda Forma Normale
Si dice che una base dati è in 2NF (seconda forma normale), quando è
in 1NF e per ogni relazione tutti gli attributi non chiave dipendono
funzionalmente dall'intera chiave composta (ovvero la relazione non
ha attributi che dipendono funzionalmente da una parte della chiave).
RDBMSFonte: Wikipedia [https://it.wikipedia.org/wiki/Normalizzazione_(informatica)]
16
Seconda Forma Normale
RDBMS
prot# Impresa Impr_Comune
1022 Edil Srl Siracusa
4123 Costruz. Srl Catania
prot# Collaudatore#
1022 908A
1022 486A
1022 695A
4123 862A
4123 1602A
4123 1929A
Tabelle 2NF:
elimina dati ridondanti
Richieste
Segnalazioni
prot# Impresa Impr_com Collaud
1022 Edil Srl Siracusa 908A
1022 Edil Srl Siracusa 486A
1022 Edil Srl Siracusa 695A
4123 Costruz. Srl Catania 862A
4123 Costruz. Srl Catania 1602A
4123 Costruz. Srl Catania 1929A
Tabelle 1NF
17
Terza Forma Normale
Si dice che una base dati è in 3NF (terza forma normale) se è in 2NF e
tutti gli attributi non-chiave dipendono dalla chiave soltanto, ossia non
esistono attributi che dipendono da altri attributi non-chiave.
RDBMSFonte: Wikipedia [https://it.wikipedia.org/wiki/Normalizzazione_(informatica)]
18
Terza Forma Normale
RDBMS
Tabelle 3NF:
elimina dati non dipendenti
dalla chiave
Richieste
Segnalazioni
prot# ID_Imp
1022 1
4123 2
ID_Imp Rag_Soc Comune
1 Edil Srl Siracusa
2 Costruz. Srl Catania
prot# Collaudatore#
1022 908A
1022 486A
1022 695A
4123 862A
4123 1602A
4123 1929A
Imprese
19
Schema - Relazioni
RDBMS
20
Tipo di dati
RDBMS
TipoDati Utilizzo / Descrizione Dimensione
Money Valuta o Contabilità [da -922.337.203.685.477,5808 a 922.337.203.685.477,5807] 8 bytes
Int Intero [da -2^31 (-2,147,483,648) a 2^31-1 (2,147,483,647)] 4 bytes
Float Numero con virgola mobile [da - 1.79E+308 a -2.23E-308, 0 e da 2.23E-308 a
1.79E+308]
Depends on the value of
n
Datetime Data [da Gennaio 1, 1753, a Dicembre 31, 9999]
Tempo [da 00:00:00 a 23:59:59.997]
8 bytes
Char Stringa a lunghezza fissa (non-Unicode) [da 1 a 8.000 caratteri] n bytes
Varchar Stringa a lunghezza variabile (non-Unicode) [da 1 a 8.000 caratteri] Actual length + 2 bytes
Bit Intero [valore 0 o 1] 1 byte for every 8 bit
columns
Datetimeoffset Data [da Gennaio 1, 1 A.D., a Dicembre 31, 9999 A.D.]
Tempo [da 00:00:00 a 23:59:59.997]
Time zone [da -14:00 a +14:00]
10 Bytes
RDBMS
DEMO
DB Access
(Struttura dati su file)
MS SQL Server 2012
(Gestione RDBMS con Management Studio)
SoftwareTCA
(SegnalazioneTerne di Collaudo)
22
Database Relazionale - Vantaggi
• Maturità della soluzione
• Consistenza dei dati
• Integrità dei dati
• Uso efficiente dello spazio (se normalizzato)
• Linguaggio di interrogazione (query)
• Diffusione e facilità nel trovare supporto tecnico
RDBMS
23
Database Relazionale - Criticità
• Scalabilità verticale (scaling up)
• Soluzione centralizzata
• Singolo punto di failure
• Replica con elevata consistenza dei dati
• Soluzione rigida (non flessibile)
• Difficoltà di gestione dati semi-strutturati e non-strutturati
• Consumo risorse per operazioni di join (causa normalizzazione)
RDBMS
24
RDBMS in Commercio
• Access
• Microsoft SQL Server
• Oracle mySQL
• Oracle Database 12c
• postgreSQL
RDBMS
25
Operational Database Management System
RDBMSFonte: https://info.microsoft.com/CO-SQL-CNTNT-FY16-09Sep-14-MQOperational-Register.html
Gartner recognized Microsoft as a Leader once again in the 2015 Magic Quadrant for Operational Database
Management Systems, positioning it furthest to the right on the axis for completeness of vision, and closest to
to the top on the axis for ability to execute.
Evoluzione Infrastruttura
Come l'infrastruttura hardware incide sullo sviluppo software
27
Two Tiers
Le soluzioni Two-Tiers sono basate su una infrastruttura Client / Server
Evoluzione Infrastruttura
Data Server
Client
Client
Tasks/Services
 Application Services
 Business Services
 Data Services
Tasks/Services
 User Interface
 Presentation Services
 Application Services
28
Three Tiers
Le soluzioni Three-Tiers mantengono l'architettura Client / Server con l'aggiunta di uno specifico livello dedicato
alla parte applicativa
Evoluzione Infrastruttura
Client
Livello Dati
Le informazioni sono archiviate e recuperate su
Database e/o File System,
Application
Layer/ Server
Data
Layer/ Server
Client
LivelloApplicazione (Business Logic)
Esegue le operazioni di elaborazione e
controllo effettuando accesso ai dati.
Livello Presentazione
Mostra le informazioni all'utente e dispone dei
comandi per esecuzione della logica
applicativa
29
MultiTiers
Le soluzioni Multi-Tiers possono essere implementate sia a livello di infrastruttura hardware che come metodologia
di sviluppo software
Evoluzione Infrastruttura
Client
Client
Domain Controller
App. Server
Web Server
Data Server
File Server
Mobile
30
Services
Evoluzione InfrastrutturaFonte: Building Microservices [O'Reilly Media - ISBN: 9781491950357]
31
Services
Evoluzione InfrastrutturaFonte: Building Microservices [O'Reilly Media - ISBN: 9781491950357]
32
Virtualizzazione
Evoluzione InfrastrutturaFonte: Building Microservices [O'Reilly Media - ISBN: 9781491950357]
noSQL
34
noSQL Evoluzione
noSQLFonte: [http://www.slideshare.net/KaramjitCheema/no-sql-20259146?related=1 ]
NoSQL è un movimento che
promuove sistemi software dove la
persistenza dei dati è caratterizzata
fatto di non utilizzare il modello
relazionale.
http://nosql-database.org/
35
noSQL - Vantaggi
• Soluzione semplice (riduzione della complessità)
• Elevato capacità di comunicazione dati (throughtput)
• Scalabilità Orizzontale (scale out)
• Riduzione costi
• Elimina ORM
• Flessibilità modello dati (schema-less)
• Riduzione carico di lavoro DBA
noSQL
36
noSQL Database
Tipologia database noSQL
noSQL
Key / Value Column Graph Document DB
Document DB
mongoDB
38
MongoDB Caratteristiche
MongoDB è un database noSQL open-source di uso generale, con le seguenti
caratteristiche:
• Modello di documento dati con schemi dinamici
• Supporto di indicizzazione pieno e flessibile e ricche query
• Modulo auto-sharding per la scalabilità orizzontale
• Replicazione integrata per un’elevata disponibilità
• Ricerca testuale
• Sicurezza avanzata
• Framework per aggregazioni e MapReduce
• Ampio storage di memorizzazione con GridFS
Document DB
39
Google Trends
Document DB
40
MongoDB
Document DB
41
Formato Documenti
MongoDB archivia i dati sotto forma di documenti in
formato JSON-like
nome : valore
Document DB
42
JSON
JSON (JavaScript Object Notation) è un semplice formato per lo scambio di dati.
Document DBFonte: http://www.json.org/json-it.html
JSON è basato su due strutture:
• Un insieme di coppie nome/valore. In diversi linguaggi, questo è realizzato come un oggetto, un
record, uno struct, un dizionario, una tabella hash, un elenco di chiavi o un array associativo.
• Un elenco ordinato di valori. Nella maggior parte dei linguaggi questo si realizza con un array, un
vettore, un elenco o una sequenza.
43
JSON
JSON (JavaScript Object Notation) è un semplice formato per lo scambio di dati.
Document DBFonte: http://www.json.org/json-it.html
44
CRUD
Document DB
45
CRUD
Document DB
46
CRUD
db.inventory.update(
{ item: "MNO2" },
{
$set: {
category: "apparel",
details: { model: "14Q3", manufacturer: "XYZ Company" }
},
$currentDate: { lastModified: true }
}
)
Document DB
WriteResult({
"nMatched" : 1,
"nUpserted" : 0,
"nModified" : 1
})
47
CRUD
db.inventory.remove( { } )
Document DB
db.inventory.remove( { type : "food" } )
A differenza del comando Update, nel caso di Remove non è prevista l’opzione upsert in quanto il
remove è eseguito per tutti i documenti per i quali il filtro è verificato
48
CURSORI
var myCursor = db.inventory.find( { type: 'food' } );
myCursor
Document DB
while (myCursor.hasNext()) {
print(tojson(myCursor.next()));
}
MongoDB
DEMO
MongoDB
(Installazione e Servizi)
MongoShell
(Console di Gestione)
50
Aggregazione dati
Document DB
I comandi di Aggregazione
utilizzano la pipeline di esecuzione
che permette delle elaborazioni
consecutive con diversi operatori
di aggregazione
51
Aggregazione dati
SQL Terms, Functions, and Concepts MongoDB Aggregation Operators
WHERE $match
GROUP BY $group
HAVING $match
SELECT $project
ORDER BY $sort
LIMIT $limit
SUM() $sum
COUNT() $sum
join
No direct corresponding operator; however, the $unwind operator
allows for somewhat similar functionality, but with fields
within the document.
Document DB
52
Struttura RDBMS / MongoDB
Struttura RDBMS
53
Blog –RDBMS vs MongoDB
Document DB
54
Architettura
Document DB
55
Storage Engine
Document DB
56
Replica
Document DB
{
"_id" : 0,
"host" : "localhost:27017",
"arbiterOnly" : false,
"buildIndexes" : true,
"hidden" : false,
"priority" : 1,
"tags" : { },
"slaveDelay" : 0,
"votes" : 1
},
Rs.config() - nodo
57
Sharding
Document DB
58
Scale out
Document DB
Key Value Storage
60
Redis
• Redis è un open source, advanced key-value data store
• Considerato come un data structure server per il fatto che le chiavi
(keys) possono contenere strings, hashes, lists, sets and sorted sets
• Redis lavora con dataset in-memory
• È possibile archiviare I dati in modo persistente
• dumping the dataset to disk every once in a while
• or by appending each command to a log
Key Value Storage
61
Redis Server
Key Value Storage
• Run /redis/bin/redis-server.exe and
specify configuration file to use
redis>redis-server redis.conf
Running Redis Client
• Run /redis/bin/redis-cli.exe
Useful Commands
• Print all keys:
• Remove all keys from all databases
• Synchronously save the dataset to disk
KEYS *
FLUSHALL
SAVE
Redis keys
• Keys are binary safe - it is possible to use any
binary sequence as a key
• The empty string is also a valid key
• Too long keys are not a good idea
• Too short keys are often also not a good idea
("u:1000:pwd" versus "user:1000:password")
• Nice idea is to use some kind of schema, like:
"object-type:id:field"
Redis data types
Redis is often referred to as a data structure server
since keys can contain:
• Strings
• Lists
• Sets
• Hashes
• Sorted Sets
Redis Strings
• Most basic kind of Redis value
• Binary safe - can contain any kind of data, for instance a JPEG image
or a serialized Ruby object
• Max 512 Megabytes in length
• Can be used as atomic counters using commands in the INCR family
• Can be appended with the APPEND command
Redis Strings: Example
Redis Lists
• Lists of strings, sorted by insertion order
• Add elements to a Redis List pushing new elements
on the head (on the left) or on the tail (on the right) of
the list
• Max length: (2^32 - 1) elements
• Model a timeline in a social network, using LPUSH to
add new elements, and using LRANGE in order to
retrieve recent items
• Use LPUSH together with LTRIM to create a list that
never exceeds a given number of elements
Redis Lists: Example
Redis Sorted Sets
• Every member of a Sorted Set is associated with score, that is used in
order to take the sorted set ordered, from the smallest to the
greatest score
• You can do a lot of tasks with great performance that are really hard
to model in other kind of databases
• Probably the most advanced Redis data type
Conclusione Grazie per la partecipazione 
Ing. Andrea Maddalena
ing.maddalena@gmail.com
http://www.aeisolution.it
https://it.linkedin.com/in/ingmaddalena
Ordine degli Ingegneri della
Provincia di Siracusa
Siracusa, lì 05/03/2016

More Related Content

PPTX
A. Stanco - SDMX Registry
PDF
M. Scannapieco - Da SDMX a RDF Data Cube Vocabulary: Integrare i Dati Statist...
PPTX
Database introduzione
PDF
corso web - Introduzione ai Database
PPT
A. Mattiocco - RJSDMX (Connettori SDMX per Software Statistici)
PDF
Guida Database SQL
PDF
Il foglio elettronico a supporto dell’attività professionale [AP03-S]
PPTX
Settimana del PNSD
A. Stanco - SDMX Registry
M. Scannapieco - Da SDMX a RDF Data Cube Vocabulary: Integrare i Dati Statist...
Database introduzione
corso web - Introduzione ai Database
A. Mattiocco - RJSDMX (Connettori SDMX per Software Statistici)
Guida Database SQL
Il foglio elettronico a supporto dell’attività professionale [AP03-S]
Settimana del PNSD

Similar to noSQL La nuova frontiera dei Database [DB05-S] (20)

PPTX
[ITA] SQL Saturday 257 - Put databases under source control
PDF
Ldb 25 strumenti gis e webgis_2014-05-26 vaira - architetture dei sistemi inf...
PPTX
[ITA] SQL Saturday 264 - Put databases in ALM backgrounds
PPTX
Evento EMC Forum 2013 | Il Disaster Recovery di GSE
PDF
Cerved - The Italian Business Graph: a Story of Tech & data-driven Innovation
PPTX
Service Registry Repository Opensource implementato su Semantic Media Wiki
PDF
Database Data Aggregator
PPTX
[ITA] Sql Saturday 355 in Parma - New SQL Server databases under source control
PPTX
Yashi Enterprise e Microsoft Perchè aggiornare a windows server 2012 r2
PDF
MySQL Day Milano 2017 - Dalla replica a InnoDB Cluster: l’HA secondo MySQL
PDF
Modernize Legacy Systems with Kubernetes
PDF
Dbms
PPT
Basi di dati e gis n
PPTX
Polyglot Persistence e Big Data: tra innovazione e difficoltà su casi reali -...
PDF
MySQL
PDF
MySQL Day Milano 2018 - MySQL e le architetture a microservizi
PDF
MySQL Day Roma 2019 - Le architetture a microservizi e MySQL
PPTX
Business Intelligence & Analytics
PPT
Il mercato SOA: futuro e prospettive
PPTX
Design Patterns - enterprise patterns (part I)
[ITA] SQL Saturday 257 - Put databases under source control
Ldb 25 strumenti gis e webgis_2014-05-26 vaira - architetture dei sistemi inf...
[ITA] SQL Saturday 264 - Put databases in ALM backgrounds
Evento EMC Forum 2013 | Il Disaster Recovery di GSE
Cerved - The Italian Business Graph: a Story of Tech & data-driven Innovation
Service Registry Repository Opensource implementato su Semantic Media Wiki
Database Data Aggregator
[ITA] Sql Saturday 355 in Parma - New SQL Server databases under source control
Yashi Enterprise e Microsoft Perchè aggiornare a windows server 2012 r2
MySQL Day Milano 2017 - Dalla replica a InnoDB Cluster: l’HA secondo MySQL
Modernize Legacy Systems with Kubernetes
Dbms
Basi di dati e gis n
Polyglot Persistence e Big Data: tra innovazione e difficoltà su casi reali -...
MySQL
MySQL Day Milano 2018 - MySQL e le architetture a microservizi
MySQL Day Roma 2019 - Le architetture a microservizi e MySQL
Business Intelligence & Analytics
Il mercato SOA: futuro e prospettive
Design Patterns - enterprise patterns (part I)
Ad

noSQL La nuova frontiera dei Database [DB05-S]

  • 1. Ordine degli Ingegneri della Provincia di Siracusa Sabato 5 Marzo 2016 [Sala Convegni – Siracusa] noSQL La nuova frontiera dei Database Relatore: Ing. Andrea Maddalena
  • 2. Ing. Andrea Maddalena DBA e Software Developer (dal 2000) Database: mySQL, MS SQL Server (2000-2014), Oracle db, postreSQL, SQLite, dBase, MongoDB, Redis, Azure blob … Linguaggi: C, C++, Java, C#, VB, VBA, Javascript, Node.js, Python Laurea Ingegneria Elettronica Ordine Ingegneri Siracusa – 1602/A M101JS: MongoDB for Node.js Developer M101N: MongoDB for .NET Developer M102: MongoDB for DBAs
  • 3. Agenda  Introduzione  RDBMS  Evoluzione Infrastruttura  noSQL  Document DB  KeyValue Storage
  • 4. 4 Introduzione Banca dati (database) Introduzione « Insieme organizzato di dati gestito da un DBMS. Sue caratteristiche sono la grandezza, la condivisibilità e la persistenza: una banca dati è grande perché in generale ha una dimensione tale da richiedere l’utilizzo della memoria secondaria per la sua gestione, condivisa, perché accessibile da più applicazioni e utenti, e persistente, perché ha un ciclo di vita indipendente da quello dei programmi che la utilizzano. » Fonte: Treccani [http://www.treccani.it/enciclopedia/banca-dati/]
  • 5. 5 Database Un database deve soddisfare i seguenti requisiti:  i dati devono essere organizzati con ridondanza minima;  i dati devono essere utilizzabili contemporaneamente da più utenti. Introduzione
  • 6. 6 Database Management System I DBMS sono strumenti software che hanno il compito di gestire le informazioni contenute in un database in maniera efficiente ed efficace. Introduzione App 1 App 2 App 3 Dati Dati Dati App 1 App 1 App 1 DBMS
  • 7. 7 DBMS Caratteristiche Le capacità fondamentali di un DBMS sono:  gestire dati non volatili  accedere in modo efficiente a grandi quantità di dati Introduzione  Modello dati  Linguaggio di alto livello  Transazioni  Accesso controllato  Recupero dati Ulteriori caratteristiche
  • 8. 8 Progettazione database Introduzione Le fasi fondamentali nella progettazione di un database sono:
  • 10. 10 Database Relazionale - RDBMS «Il termine Relational database management system (RDBMS) indica un database management system basato sul modello relazionale» RDBMSFonte: Wikipedia [https://it.wikipedia.org/wiki/Modello_relazionale] La struttura base del modello relazionale è composta da:  uno o più attributi (denominati campi);  un tipo di dato o dominio per ciascuno degli attributi;  un valore per ciascun attributo all'interno del dominio o tipo di dato consentito;  una tupla cioè l'insieme non ordinato di valori assunti dagli attributi.
  • 11. 11 RDBMS - Elementi • Tabelle  Chiavi primarie  Chiavi esterne Tipo di dati Valori RDBMS • Viste (Query) • Procedure • …
  • 12. 12 Normalizzazione « La normalizzazione è un procedimento volto all'eliminazione della ridondanza informativa e del rischio di incoerenza dal database » RDBMSFonte: Wikipedia [https://it.wikipedia.org/wiki/Normalizzazione_(informatica)]  Prima Forma Normale  Seconda Forma Normale  Terza Forma Normale Elimina gruppi ripetitivi Elimina dati ridondanti Elimina campi non dipendenti dalla chiave
  • 13. 13 Prima Forma Normale Si dice che una base dati è in 1NF (prima forma normale) se ogni relazione contenuta nella base dati è in 1NF, ovvero se e solo se: 1. tutte le righe della relazione hanno lo stesso numero di attributi 2. non presenta gruppi di attributi che si ripetono (ossia ciascun attributo è definito su un dominio con valori atomici) 3. tutti i valori di un attributo sono dello stesso tipo (appartengono allo stesso dominio) 4. esiste una chiave primaria (ossia esiste un insieme di attributi, che identifica in modo univoco ogni tupla della relazione) 5. l'ordine delle righe è irrilevante (non è portatore di informazioni) RDBMSFonte: Wikipedia [https://it.wikipedia.org/wiki/Normalizzazione_(informatica)]
  • 14. 14 Prima Forma Normale RDBMS prot# Impresa Impr_comune Collaudatore1 Collaudatore2 Collaudatore3 1022 Edil Srl Siracusa 908A 486A 695A 4123 Costruz. Srl Catania 862A 1602A 1929A prot# Impresa Impr_comune Collaudatore 1022 Edil Srl Siracusa 908A 1022 Edil Srl Siracusa 486A 1022 Edil Srl Siracusa 695A 4123 Costruz. Srl Catania 862A 4123 Costruz. Srl Catania 1602A 4123 Costruz. Srl Catania 1929A Tabella NON Normalizzata Tabella 1NF: elimina gruppi ripetitivi
  • 15. 15 Seconda Forma Normale Si dice che una base dati è in 2NF (seconda forma normale), quando è in 1NF e per ogni relazione tutti gli attributi non chiave dipendono funzionalmente dall'intera chiave composta (ovvero la relazione non ha attributi che dipendono funzionalmente da una parte della chiave). RDBMSFonte: Wikipedia [https://it.wikipedia.org/wiki/Normalizzazione_(informatica)]
  • 16. 16 Seconda Forma Normale RDBMS prot# Impresa Impr_Comune 1022 Edil Srl Siracusa 4123 Costruz. Srl Catania prot# Collaudatore# 1022 908A 1022 486A 1022 695A 4123 862A 4123 1602A 4123 1929A Tabelle 2NF: elimina dati ridondanti Richieste Segnalazioni prot# Impresa Impr_com Collaud 1022 Edil Srl Siracusa 908A 1022 Edil Srl Siracusa 486A 1022 Edil Srl Siracusa 695A 4123 Costruz. Srl Catania 862A 4123 Costruz. Srl Catania 1602A 4123 Costruz. Srl Catania 1929A Tabelle 1NF
  • 17. 17 Terza Forma Normale Si dice che una base dati è in 3NF (terza forma normale) se è in 2NF e tutti gli attributi non-chiave dipendono dalla chiave soltanto, ossia non esistono attributi che dipendono da altri attributi non-chiave. RDBMSFonte: Wikipedia [https://it.wikipedia.org/wiki/Normalizzazione_(informatica)]
  • 18. 18 Terza Forma Normale RDBMS Tabelle 3NF: elimina dati non dipendenti dalla chiave Richieste Segnalazioni prot# ID_Imp 1022 1 4123 2 ID_Imp Rag_Soc Comune 1 Edil Srl Siracusa 2 Costruz. Srl Catania prot# Collaudatore# 1022 908A 1022 486A 1022 695A 4123 862A 4123 1602A 4123 1929A Imprese
  • 20. 20 Tipo di dati RDBMS TipoDati Utilizzo / Descrizione Dimensione Money Valuta o Contabilità [da -922.337.203.685.477,5808 a 922.337.203.685.477,5807] 8 bytes Int Intero [da -2^31 (-2,147,483,648) a 2^31-1 (2,147,483,647)] 4 bytes Float Numero con virgola mobile [da - 1.79E+308 a -2.23E-308, 0 e da 2.23E-308 a 1.79E+308] Depends on the value of n Datetime Data [da Gennaio 1, 1753, a Dicembre 31, 9999] Tempo [da 00:00:00 a 23:59:59.997] 8 bytes Char Stringa a lunghezza fissa (non-Unicode) [da 1 a 8.000 caratteri] n bytes Varchar Stringa a lunghezza variabile (non-Unicode) [da 1 a 8.000 caratteri] Actual length + 2 bytes Bit Intero [valore 0 o 1] 1 byte for every 8 bit columns Datetimeoffset Data [da Gennaio 1, 1 A.D., a Dicembre 31, 9999 A.D.] Tempo [da 00:00:00 a 23:59:59.997] Time zone [da -14:00 a +14:00] 10 Bytes
  • 21. RDBMS DEMO DB Access (Struttura dati su file) MS SQL Server 2012 (Gestione RDBMS con Management Studio) SoftwareTCA (SegnalazioneTerne di Collaudo)
  • 22. 22 Database Relazionale - Vantaggi • Maturità della soluzione • Consistenza dei dati • Integrità dei dati • Uso efficiente dello spazio (se normalizzato) • Linguaggio di interrogazione (query) • Diffusione e facilità nel trovare supporto tecnico RDBMS
  • 23. 23 Database Relazionale - Criticità • Scalabilità verticale (scaling up) • Soluzione centralizzata • Singolo punto di failure • Replica con elevata consistenza dei dati • Soluzione rigida (non flessibile) • Difficoltà di gestione dati semi-strutturati e non-strutturati • Consumo risorse per operazioni di join (causa normalizzazione) RDBMS
  • 24. 24 RDBMS in Commercio • Access • Microsoft SQL Server • Oracle mySQL • Oracle Database 12c • postgreSQL RDBMS
  • 25. 25 Operational Database Management System RDBMSFonte: https://info.microsoft.com/CO-SQL-CNTNT-FY16-09Sep-14-MQOperational-Register.html Gartner recognized Microsoft as a Leader once again in the 2015 Magic Quadrant for Operational Database Management Systems, positioning it furthest to the right on the axis for completeness of vision, and closest to to the top on the axis for ability to execute.
  • 26. Evoluzione Infrastruttura Come l'infrastruttura hardware incide sullo sviluppo software
  • 27. 27 Two Tiers Le soluzioni Two-Tiers sono basate su una infrastruttura Client / Server Evoluzione Infrastruttura Data Server Client Client Tasks/Services  Application Services  Business Services  Data Services Tasks/Services  User Interface  Presentation Services  Application Services
  • 28. 28 Three Tiers Le soluzioni Three-Tiers mantengono l'architettura Client / Server con l'aggiunta di uno specifico livello dedicato alla parte applicativa Evoluzione Infrastruttura Client Livello Dati Le informazioni sono archiviate e recuperate su Database e/o File System, Application Layer/ Server Data Layer/ Server Client LivelloApplicazione (Business Logic) Esegue le operazioni di elaborazione e controllo effettuando accesso ai dati. Livello Presentazione Mostra le informazioni all'utente e dispone dei comandi per esecuzione della logica applicativa
  • 29. 29 MultiTiers Le soluzioni Multi-Tiers possono essere implementate sia a livello di infrastruttura hardware che come metodologia di sviluppo software Evoluzione Infrastruttura Client Client Domain Controller App. Server Web Server Data Server File Server Mobile
  • 30. 30 Services Evoluzione InfrastrutturaFonte: Building Microservices [O'Reilly Media - ISBN: 9781491950357]
  • 31. 31 Services Evoluzione InfrastrutturaFonte: Building Microservices [O'Reilly Media - ISBN: 9781491950357]
  • 32. 32 Virtualizzazione Evoluzione InfrastrutturaFonte: Building Microservices [O'Reilly Media - ISBN: 9781491950357]
  • 33. noSQL
  • 34. 34 noSQL Evoluzione noSQLFonte: [http://www.slideshare.net/KaramjitCheema/no-sql-20259146?related=1 ] NoSQL è un movimento che promuove sistemi software dove la persistenza dei dati è caratterizzata fatto di non utilizzare il modello relazionale. http://nosql-database.org/
  • 35. 35 noSQL - Vantaggi • Soluzione semplice (riduzione della complessità) • Elevato capacità di comunicazione dati (throughtput) • Scalabilità Orizzontale (scale out) • Riduzione costi • Elimina ORM • Flessibilità modello dati (schema-less) • Riduzione carico di lavoro DBA noSQL
  • 36. 36 noSQL Database Tipologia database noSQL noSQL Key / Value Column Graph Document DB
  • 38. 38 MongoDB Caratteristiche MongoDB è un database noSQL open-source di uso generale, con le seguenti caratteristiche: • Modello di documento dati con schemi dinamici • Supporto di indicizzazione pieno e flessibile e ricche query • Modulo auto-sharding per la scalabilità orizzontale • Replicazione integrata per un’elevata disponibilità • Ricerca testuale • Sicurezza avanzata • Framework per aggregazioni e MapReduce • Ampio storage di memorizzazione con GridFS Document DB
  • 41. 41 Formato Documenti MongoDB archivia i dati sotto forma di documenti in formato JSON-like nome : valore Document DB
  • 42. 42 JSON JSON (JavaScript Object Notation) è un semplice formato per lo scambio di dati. Document DBFonte: http://www.json.org/json-it.html JSON è basato su due strutture: • Un insieme di coppie nome/valore. In diversi linguaggi, questo è realizzato come un oggetto, un record, uno struct, un dizionario, una tabella hash, un elenco di chiavi o un array associativo. • Un elenco ordinato di valori. Nella maggior parte dei linguaggi questo si realizza con un array, un vettore, un elenco o una sequenza.
  • 43. 43 JSON JSON (JavaScript Object Notation) è un semplice formato per lo scambio di dati. Document DBFonte: http://www.json.org/json-it.html
  • 46. 46 CRUD db.inventory.update( { item: "MNO2" }, { $set: { category: "apparel", details: { model: "14Q3", manufacturer: "XYZ Company" } }, $currentDate: { lastModified: true } } ) Document DB WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
  • 47. 47 CRUD db.inventory.remove( { } ) Document DB db.inventory.remove( { type : "food" } ) A differenza del comando Update, nel caso di Remove non è prevista l’opzione upsert in quanto il remove è eseguito per tutti i documenti per i quali il filtro è verificato
  • 48. 48 CURSORI var myCursor = db.inventory.find( { type: 'food' } ); myCursor Document DB while (myCursor.hasNext()) { print(tojson(myCursor.next())); }
  • 50. 50 Aggregazione dati Document DB I comandi di Aggregazione utilizzano la pipeline di esecuzione che permette delle elaborazioni consecutive con diversi operatori di aggregazione
  • 51. 51 Aggregazione dati SQL Terms, Functions, and Concepts MongoDB Aggregation Operators WHERE $match GROUP BY $group HAVING $match SELECT $project ORDER BY $sort LIMIT $limit SUM() $sum COUNT() $sum join No direct corresponding operator; however, the $unwind operator allows for somewhat similar functionality, but with fields within the document. Document DB
  • 52. 52 Struttura RDBMS / MongoDB Struttura RDBMS
  • 53. 53 Blog –RDBMS vs MongoDB Document DB
  • 56. 56 Replica Document DB { "_id" : 0, "host" : "localhost:27017", "arbiterOnly" : false, "buildIndexes" : true, "hidden" : false, "priority" : 1, "tags" : { }, "slaveDelay" : 0, "votes" : 1 }, Rs.config() - nodo
  • 60. 60 Redis • Redis è un open source, advanced key-value data store • Considerato come un data structure server per il fatto che le chiavi (keys) possono contenere strings, hashes, lists, sets and sorted sets • Redis lavora con dataset in-memory • È possibile archiviare I dati in modo persistente • dumping the dataset to disk every once in a while • or by appending each command to a log Key Value Storage
  • 61. 61 Redis Server Key Value Storage • Run /redis/bin/redis-server.exe and specify configuration file to use redis>redis-server redis.conf
  • 62. Running Redis Client • Run /redis/bin/redis-cli.exe
  • 63. Useful Commands • Print all keys: • Remove all keys from all databases • Synchronously save the dataset to disk KEYS * FLUSHALL SAVE
  • 64. Redis keys • Keys are binary safe - it is possible to use any binary sequence as a key • The empty string is also a valid key • Too long keys are not a good idea • Too short keys are often also not a good idea ("u:1000:pwd" versus "user:1000:password") • Nice idea is to use some kind of schema, like: "object-type:id:field"
  • 65. Redis data types Redis is often referred to as a data structure server since keys can contain: • Strings • Lists • Sets • Hashes • Sorted Sets
  • 66. Redis Strings • Most basic kind of Redis value • Binary safe - can contain any kind of data, for instance a JPEG image or a serialized Ruby object • Max 512 Megabytes in length • Can be used as atomic counters using commands in the INCR family • Can be appended with the APPEND command
  • 68. Redis Lists • Lists of strings, sorted by insertion order • Add elements to a Redis List pushing new elements on the head (on the left) or on the tail (on the right) of the list • Max length: (2^32 - 1) elements • Model a timeline in a social network, using LPUSH to add new elements, and using LRANGE in order to retrieve recent items • Use LPUSH together with LTRIM to create a list that never exceeds a given number of elements
  • 70. Redis Sorted Sets • Every member of a Sorted Set is associated with score, that is used in order to take the sorted set ordered, from the smallest to the greatest score • You can do a lot of tasks with great performance that are really hard to model in other kind of databases • Probably the most advanced Redis data type
  • 71. Conclusione Grazie per la partecipazione  Ing. Andrea Maddalena ing.maddalena@gmail.com http://www.aeisolution.it https://it.linkedin.com/in/ingmaddalena Ordine degli Ingegneri della Provincia di Siracusa Siracusa, lì 05/03/2016