MongoDB .local Paris 2020: Upply @MongoDB : Upply : Quand le Machine Learning...
20140311 app dev series - 01 - introduction - italian
1. Serie Application Development
Back to Basics – Introduzione
Senior Solution Architect, MongoDB Inc,
@massimobrignoli
Massimo Brignoli
#MongoDBBasicsIT
2. Introduction
• Cos’è la Serie di Webinar
• Modello dei Dati
• Modello delle Query
• Scalabilità
• Affidabilità
• Architetture di Produzione
• Performance
• Prossima Puntata
3. Organizzazione della Serie
• Divisa in 2 sezioni
– Sviluppo applicativo (4 parti)
• Schema Design
• Interazione con il database con gli operatori di query e
update
• Indicizzazione
• Reportistica
– Operations (3 parti)
• Messa in esercizio – scalabilità orizzontale e alta affidabilità
• Monitoring e performance tuning
• Backup e recovery
4. Panoramica dell’Applicazione
• Content Management System
– Utilizzerà:
• Operatori di Query & update
• Aggregation Framework
• Query Geografiche
• Report pre-aggregati per analisi veloci
• Documenti polimorfici
• E molto altro …
• Take away framework
• Un approccio che potete riutilizzare nelle vostre
applicazioni
5. Q & A
• Virtual Genius Bar
– Usate la chat per fare
domande
– Il team italiano vi
risponderà
– Sfruttatelo durante le
sessioni!!!
9. Agilità e flessibilità – Schema dinamico
– I modelli dei dati possono evolvere facilmente
– Le aziende possono adattarsi ai cambiamenti piû velocemente
Naturale, Intuitiva Rappresentazione dei Dati
– Elimina il problema dell’Object Relational Impedance Mismatch
– La maggior parte delle applicazioni sono dei candidati perfetti
Riduce la necessità di join e di disk seek
– La programmazione è più semplice
– E’possibile scalare orizzontalmente mantenendo le performance
Modello dei dati a documento
14. Shell
Alinea di comando per interagire
direttamentecon il database
Riga di comando e Drivers
Drivers
Sono disponibili drivers per i
più popolari linguaggi di
programmazione
> db.collection.insert({company:“10gen”,
product:“MongoDB”})
>
> db.collection.findOne()
{
“_id” : ObjectId(“5106c1c2fc629bfe52792e86”),
“company” : “10gen”
“product” : “MongoDB”
}
Java
Python
Perl
Ruby
Haskell
JavaScript
15. MongoDB è ricco di funzionalità
Queries
• Trovami tutte le auto di Gigi
• Trovami chi a Milano ha un’automobile
costruita tra il 1970 e il 1980
Geospatial
• Trovami tutti I proprietari di automobili
entro 5 km da piazza Duomo
Text Search
• Trovami tutte le automobili con i sedili
in pelle nella descrizione.
Aggregation
• Calcola il valore medio della collezione
di auto di Gigi
Map Reduce
• Com’è cambiata distribuzione dei colori
delle proprietà di auto nelle varie aree
geografiche nel tempo? Il colore viola
sta diventando popolare in Lombardia?
{ first_name: ‘Gigi’,
surname: ‘Rossi’,
city: ‘Milano’,
location: {
type: “Point”,
coordinates :
[-0.128, 51.507]
},
cars: [
{ model: ‘Bentley’,
year: 1973,
value: 100000, … },
{ model: ‘Rolls Royce’,
year: 1965,
value: 330000, … }
}
}
16. Esempi di Query
Rich Queries
• Trovami tutte le auto di Gigi
• Trovami chi a Milano ha un’automobile
costruita tra il 1970 e il 1980
db.cars.find({
first_name: ‘Gigi’
})
db.cars.find({
city: ‘Milano’,
”cars.year" : {
$gte : 1970,
$lte : 1980
}
})
{ first_name: ‘Gigi’,
surname: ‘Rossi’,
city: ‘Milano’,
location: {
type: “Point”,
coordinates :
[-0.128, 51.507]
},
cars: [
{ model: ‘Bentley’,
year: 1973,
value: 100000, … },
{ model: ‘Rolls Royce’,
year: 1965,
value: 330000, … }
}
}
20. Sharding Automatico
• Tre tipi di sharding: hash-based, range-based, tag-
aware
• Aumentate o diminuite il numero di server a seconda
delle vostre necessità
• Bilanciamento automatico dei dati
21. Query Routing
• Diversi modelli di ottimizzazione delle query
• Ogni opzione di sharding è appropriata per diversi tipi di
applicazione
23. AltaAffidabilità–Assicura la disponibilità del servizio durante
vari tipologie di failure
Disaster Recovery – Indirizza la continuità del business da un
punto di vista di RTO (recovery time objective) e RPO (recovery
point objective).
Manutenzione– Effettua upgrade e altre operazioni di
manutenzione senza interruzione di servizio
Considerazioni sulla Disponibilità
24. Replica Set
• Replica Set – 2 o più copie
• “Self-healing” shard
• Indirizza svariate preoccupazioni:
- Alta disponibilità del servizio
- Disaster Recovery
- Manutenzione
25. Benefici di un Replica Set
Richieste del
Business
Benefici Replica Set
Alta Disponibilità Failover Automatico
Disaster Recovery Hot backups offsite
Manutenzione Rolling upgrades
Bassa Latenza Posiziona i dati vicino agli utenti
Workload Isolation Letture da repliche non primarie
Privacy dei Dati
Restringe i dati ad una posizione
fisica
Consistenza dei Dati Consistency Definibile
28. Il modello a documenti
– Semplifica lo sviluppo applicativo
– Semplifica la scalabilità orizzontale
– Migliora le performance
MongoDB
– Ricco database di utilizzo generale
– IncludeAlta Disponibilità e Failover
– Include la scalabilità orizzontale
Sommario
29. • Schema design for the CMS application
– Collection
– Decisioni
• Architettura applicativa
– Esempi di tecnologie
– Interfaccia RESTful
– Python è stato scelto per gli esempi
• Esempi di codice
Seconda Puntata– 25 Marzo