back to basics, webinar 1: introduzione a nosql
TRANSCRIPT
Code MassimoB gets you a 25% discount off the list priceEarly Bird Registration Ended May 13, 2016
Back to Basics 2016 : Webinar 1
Introduzione a NoSQLMassimo Brignoli
Principal Solution Architect, EMEAMongoDB
@massimobrignoli
V1.0
Benvenuti!
5
Agenda Del Corso
Date Time Webinar24 Maggio 2016 11:00 CET Introduzione a NoSQL07 Giugno 2016 11:00 CET La tua prima applicazione MongoDB21 Giugno 2016 11:00 CET Schema Design – Pensare a Documenti05 Luglio 2016 11:00 CET Indicizzazione avanzata: Indici Testuali e Geografici19 Luglio 2016 11:00 CET Introduzione all’ Aggregation Framework28 Luglio 2016 11:00 CET Messa in Esercizio
6
Agenda di Oggi
• Perché NoSQL• I vari tipi di database NoSQL• Vista dettagliata di MongoDB• MongoDB: Durabilità dei dati – Replica Set• MongoDB: Scalabilità – Sharding• Q&A
7
Relazionale
Linguaggio di Query espressivo & Indici Secondari
Consistenza Forte
Strumenti di Gestione Enterprise & Integrazioni
8
Il Mondo è Cambiato
Dati Rischio Tempo Costo
9
NoSQL
Scalabilità & Performance
24x7,Installazioni Globali
FlessibilitàLinguaggio di Query espressivo & Indici Secondari
Consistenza Forte
Strumenti di Gestione Enterprise & Integrazioni
10
Architettura Nexus
Scalabilità & Performance
24x7,Installazioni Global
FlessibilitàLinguaggio di Query espressivo & Indici Secondari
Consistenza Forte
Strumenti di Gestione Enterprise & Integrazioni
11
Tipi di Database NoSQL
• Key/Value• Column• Graph• Multi-model• Document
12
Key Value
• Sono un array associativo• Lookup per singola chiave• Velocissimo per ricerche su chiave singola• Pessimo per “reverse lookups”
Key Value
12345 4567.3456787
12346 { addr1 : “The Grange”, addr2: “Dublin” }
12347 “top secret password”
12358 “Shopping basket value : 24560”
12787 12345
13
Row Stores (RDBMS)
• Memorizza I dati allineati per righe (RDBMS tradizionali, come MySQL)• Le letture restituiscono una riga completa• Le letture che richiedono solo uno o due campi sono uno spreco
ID Name Salary Start Date
1 Joe D $24000 1/Jun/1970
2 Peter J $28000 1/Feb/1972
3 Phil G $23000 1/Jan/1973
1 Joe D $24000 1/Jun/1970 2 Peter J $28000 1/Feb/1972 3 Phil G $23000 1/Jan/1973
14
Come memorizza i Dati un Column Store
1 2 3
ID Name Salary Start Date
1 Joe D $24000 1/Jun/1970
2 Peter J $28000 1/Feb/1972
3 Phil G $23000 1/Jan/1973
Joe D Peter J Phil G $24000 $28000 $23000 1/Jun/1970 1/Feb/1972 1/Jan/1973
15
Perché è attraente?
• Una serie di ricerche consecutive può restituire una colonna un modo efficiente
• Comprimere dati simili è molto efficiente• Quindi le letture possono prendere dal disco più dati in un singola lettura• Le righe sono allineate in ordine o per rowID• Se avete bisogno di un piccolo sottinsieme di colonne non bisogna
leggere tutta la riga.• Ma:
– aggiornare e cancellare righe è molto costoso.• Modalità append-only• Meglio per l’OLAP che per l’OLTP
16
Database a Grafo
• Memorizza Grafi (archi e vertici)• Ad esempio Social Network• Disegnati per permettere un attraversamento
efficiente• Ottimizzati per rappresentazione connessioni• Possono essere implmentati come database key-value con
l’abilità di memorizzare links• Se il vostro caso d’uso non è un grafo, non avete bisogno di un
database a grafi!
17
Database Multi-Model
• Combina storage diversi e modelli di accesso diversi• Spesso sono grafi più “qualcosa altro”• Risolve il problema del “polyglot persistence” mantenendo diversi
database consistenti• E’ “the new new thing” nell’arena NoSQL• Ci si apetta che questi tipi di database abbiano maggiore
risonanza.
18
Database a Documenti• Non PDF, Microsoft Word o HTML• I Documenti sono strutture nidificate create usando Javascript Object Notation (JSON)
{ name : “Massimo Brignoli”,title : “Principal Solution Architect”,address : {
address1 : “Piazzale Biancamano”,cap : “20010”,citta: “Milano”
}expertise: [ “MongoDB”, “Python”, “Javascript” ],employee_number : 350
}
19
I Documenti sono Tipizzati
{
name : “Massimo Brignoli”,
title : “Principal Solution Architect”,
Address : {
address1 : “Piazzale Biancamano”,
cap: ”20010” }
expertise: [ “MongoDB”, “Python”, “Javascript” ],
employee_number : 350,
location : [ 53.34, -6.26 ]
}
Stringhe
Documento Nidificato
Array
Intero
Coordinate Geografiche
20
MongoDB Capisce I Documenti JSON
• Fin dalla primissima versione era un database nativo JSON• Interpreta e può indicizzare le sotto-strutture• Memorizza I JSON in un formato binario chiamato BSON• Efficiente per codifica e decodifica e per la trasmissione su rete• MongoDB può creare indici su qualunque campo• (Copriremo questi punti più avanti durante il corso)
21
Perché I Documenti?• Schema Dinamico• Eliminazione del Layer di mappatura tra Oggetti/Relazionale• Denomalizzazione implicita dei dati per massimizzare le
performance
22
Perché I Documenti?• Schema Dinamico• Eliminazione del Layer di mappatura tra Oggetti/Relazionale• Denomalizzazione implicita dei dati per massimizzare le
performance
23
MongoDB è Ricco di Funzionalità
Query Sofisticate
• Find Paul’s cars• Find everybody in London with a car
between 1970 and 1980
Grografiche • Find all of the car owners within 5km of Trafalgar Sq.
Ricerca Testuale
• Find all the cars described as having leather seats
Aggregazioni
• Calculate the average value of Paul’s car collection
Map Reduce
• What is the ownership pattern of colors by geography over time (is purple trending in China?)
24
Alta Affidabilità e Durabilità dei Dati – Replica Set
SecondarySecondary
Primary
25
Creazione di un Replica Set
SecondarySecondary
Primary
Heartbeat
26
Replica Set: Caduta di un Nodo
SecondarySecondary
Primary
No Heartbeat
27
Replica Set: Recupero
SecondarySecondary
HeartbeatAnd Election
Primary
28
New Replica Set – 2 Nodi
SecondaryPrimary
HeartbeatAnd New Primary
Primary
29
Replica Set: Ripazione del Nodo
SecondaryPrimary
Secondary
Rejoin and resync
30
Replica Set Stabilizzato
SecondaryPrimary
Secondary
Heartbeat
31
Scalabilità con lo Sharding
Shard 1 Shard 2 Shard N
32
Scalabilità con lo Sharding
• La chiave di Shard partiziona il contenuto• MongoDB bilancia automaticamente il cluster• Gli shard possono essere aggiunti dinamicamente al sistema vivo• Il ribilanciamento avviene in sottofondo• La Shard key è immutabile• La Shard key può direzionare le query su uno shard specifico• Le query senza una shard key vengono mandati a tutti gli shard
33
Scalabilità con lo ShardingMongoS MongoS
Shard 1 Shard 2 Shard N
Shard Key
34
Indirizzamento delle Query
• In un cluster partizionato usiamo uno strato di routing per guidare le query sugli shard corretti
• Usiamo un demone chiamato MongoS (Mongo Shard Router)• Il Demone è stateless• Possono essere eseguiti tanti MongoS quanti sono richiesti• Normalmente un MongoS per ogni app server
35
Sommario
• Perché esistono I NoSQL• I tipi di database NoSQL• Le funzionalità principali di MongoDB• Durabilità dei Dati in MongoDB• Scalabilità in MongoDB
36
Prossimo Webinar – La Tua Prima Applicazione MongoDB
• 7 Giugno May 2016 – 11:00 CET.• Registratevi se non l’avete già fatto• Imparerete come realizzare la vostra prima applicazione di
MongoDB• Creare database e collezioni• Uno sguardo alle queries• Costruire Indici• Iniziare a capire le performance• Registratevi su: http://bit.ly/1UA4BGM• Mandate feedback a [email protected]
Q&A