noSQL La nuova frontiera dei Database [DB05-S]

Post on 22-Jan-2017

176 views 0 download

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

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 Maddalenaing.maddalena@gmail.com

http://www.aeisolution.ithttps://it.linkedin.com/in/ingmaddalena

Ordine degli Ingegneri della Provincia di Siracusa

Siracusa, lì 05/03/2016