noSQL La nuova frontiera dei Database [DB05-S]
-
Upload
andrea-maddalena -
Category
Data & Analytics
-
view
176 -
download
0
Transcript of noSQL La nuova frontiera dei Database [DB05-S]
Ordine degli Ingegneri della Provincia di SiracusaSabato 5 Marzo 2016 [Sala Convegni – Siracusa]
noSQL La nuova frontiera dei
DatabaseRelatore: 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 ElettronicaOrdine Ingegneri Siracusa – 1602/A
M101JS: MongoDB for Node.js DeveloperM101N: MongoDB for .NET DeveloperM102: MongoDB for DBAs
Agenda Introduzione RDBMS Evoluzione Infrastruttura noSQL Document DB Key Value 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
schema concettuale
Progetto concettuale schema logicoProgetto
logico schema fisicoProgetto fisico
Introduzione
Le fasi fondamentali nella progettazione di un database sono:
RDBMSRelational 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 ripetitiviElimina dati ridondantiElimina 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_Comune1022 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 dipendentidalla 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 bytesBit Intero [valore 0 o 1] 1 byte for every 8 bit
columnsDatetimeoffset 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
RDBMSDEMO
DB Access(Struttura dati su file)
MS SQL Server 2012(Gestione RDBMS con Management Studio)
Software TCA (Segnalazione Terne 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 the top on the axis for ability to execute.
Evoluzione InfrastrutturaCome l'infrastruttura hardware incide sullo sviluppo software
27
Two TiersLe 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 TiersLe soluzioni Three-Tiers mantengono l'architettura Client / Server con l'aggiunta di uno specifico
livello dedicato alla parte applicativa
Evoluzione Infrastruttura
Client
Livello DatiLe informazioni sono archiviate e recuperate su Database e/o File System,
Application Layer/Server
Data Layer/Server
Client
Livello Applicazione (Business Logic)Esegue le operazioni di elaborazione e controllo effettuando accesso ai dati.
Livello PresentazioneMostra le informazioni all'utente e dispone dei comandi per esecuzione della logica applicativa
29
MultiTiersLe 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 ServerMobile
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 dal 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 DatabaseTipologia database noSQL
noSQL
Key / Value Column Graph Document DB
Document DBmongoDB
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
JSONJSON (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
JSONJSON (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
CRUDdb.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
CURSORIvar myCursor = db.inventory.find( { type: 'food' } );
myCursor
Document DB
while (myCursor.hasNext()) { print(tojson(myCursor.next()));}
MongoDB
DEMOMongoDB
(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 datiSQL Terms, Functions, and Concepts MongoDB Aggregation Operators
WHERE $matchGROUP BY $groupHAVING $matchSELECT $projectORDER BY $sortLIMIT $limitSUM() $sumCOUNT() $sum
joinNo direct corresponding operator; however, the $unwind operator allows for somewhat similar functionality, but with fields embedded 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 useredis>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 [email protected]
http://www.aeisolution.ithttps://it.linkedin.com/in/ingmaddalena
Ordine degli Ingegneri della Provincia di Siracusa
Siracusa, lì 05/03/2016