Serie Application Development
Back to Basics – Introduzione
Senior Solution Architect, MongoDB Inc,
@massimobrignoli
Massi...
Introduction
• Cos’è la Serie di Webinar
• Modello dei Dati
• Modello delle Query
• Scalabilità
• Affidabilità
• Architett...
Organizzazione della Serie
• Divisa in 2 sezioni
– Sviluppo applicativo (4 parti)
• Schema Design
• Interazione con il dat...
Panoramica dell’Applicazione
• Content Management System
– Utilizzerà:
• Operatori di Query & update
• Aggregation Framewo...
Q & A
• Virtual Genius Bar
– Usate la chat per fare
domande
– Il team italiano vi
risponderà
– Sfruttatelo durante le
sess...
MongoDB
Il mercato dei database
Modello dei dati a documento
Relazionale- Tabelle
{ first_name: ‘Paul’,
surname: ‘Miller’,
city: ‘London’,
location: {
typ...
Agilità e flessibilità – Schema dinamico
– I modelli dei dati possono evolvere facilmente
– Le aziende possono adattarsi a...
Sviluppo semplificato
Sviluppo semplificato
Ricca interazione con i dati
Modello delle Query
Shell
Alinea di comando per interagire
direttamentecon il database
Riga di comando e Drivers
Drivers
Sono disponibili driv...
MongoDB è ricco di funzionalità
Queries
• Trovami tutte le auto di Gigi
• Trovami chi a Milano ha un’automobile
costruita ...
Esempi di Query
Rich Queries
• Trovami tutte le auto di Gigi
• Trovami chi a Milano ha un’automobile
costruita tra il 1970...
Esempio di Query geografica
db.cars.find( {
location:
{ $near :
{ $geometry :
{ type: 'Point' ,
coordinates :
[-0.128,
51....
Esempio di Aggregazione
db.cars.aggregate( [
{$match : {"first_name" : ”Gigi"}},
{$project : {"first_name":1,"cars":1}},
{...
Scalabilità
Sharding Automatico
• Tre tipi di sharding: hash-based, range-based, tag-
aware
• Aumentate o diminuite il numero di serve...
Query Routing
• Diversi modelli di ottimizzazione delle query
• Ogni opzione di sharding è appropriata per diversi tipi di...
Disponibilità del Servizio
AltaAffidabilità–Assicura la disponibilità del servizio durante
vari tipologie di failure
Disaster Recovery – Indirizza la...
Replica Set
• Replica Set – 2 o più copie
• “Self-healing” shard
• Indirizza svariate preoccupazioni:
- Alta disponibilità...
Benefici di un Replica Set
Richieste del
Business
Benefici Replica Set
Alta Disponibilità Failover Automatico
Disaster Rec...
Performance
Miglior posizione
dei dati nello
storage
Performance
In-Memory
Caching
Aggiornamento
sul posto
Il modello a documenti
– Semplifica lo sviluppo applicativo
– Semplifica la scalabilità orizzontale
– Migliora le performa...
• Schema design for the CMS application
– Collection
– Decisioni
• Architettura applicativa
– Esempi di tecnologie
– Inter...
#MongoDBBasicsIT
Upcoming SlideShare
Loading in...5
×

20140311 app dev series - 01 - introduction - italian

1,779

Published on

Published in: Marketing

20140311 app dev series - 01 - introduction - italian

  1. 1. Serie Application Development Back to Basics – Introduzione Senior Solution Architect, MongoDB Inc, @massimobrignoli Massimo Brignoli #MongoDBBasicsIT
  2. 2. Introduction • Cos’è la Serie di Webinar • Modello dei Dati • Modello delle Query • Scalabilità • Affidabilità • Architetture di Produzione • Performance • Prossima Puntata
  3. 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. 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. 5. Q & A • Virtual Genius Bar – Usate la chat per fare domande – Il team italiano vi risponderà – Sfruttatelo durante le sessioni!!!
  6. 6. MongoDB
  7. 7. Il mercato dei database
  8. 8. Modello dei dati a documento Relazionale- Tabelle { first_name: ‘Paul’, surname: ‘Miller’, city: ‘London’, location: { type: “Point”, coordinates : [-0.128, 51.507] }, cars: [ { model: ‘Bentley’, year: 1973, value: 100000, … }, { model: ‘Rolls Royce’, year: 1965, value: 330000, … } } } Documentale - Collezioni
  9. 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
  10. 10. Sviluppo semplificato
  11. 11. Sviluppo semplificato
  12. 12. Ricca interazione con i dati
  13. 13. Modello delle Query
  14. 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. 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. 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, … } } }
  17. 17. Esempio di Query geografica db.cars.find( { location: { $near : { $geometry : { type: 'Point' , coordinates : [-0.128, 51.507] } }, $maxDistance :5000 } } ) Geospatial • Trovami tutti I proprietari di automobili entro 5 km da piazza Duomo { 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, … } } }
  18. 18. Esempio di Aggregazione db.cars.aggregate( [ {$match : {"first_name" : ”Gigi"}}, {$project : {"first_name":1,"cars":1}}, {$unwind : "$cars"}, { $group : {_id:"$first_name", average : { $avg : "$cars.value"}}} ]) { "_id" : ”Gigi", "average" : 215000 } Aggregation • Calcola il valore medio della collezione di auto di Gigi { 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, … } } }
  19. 19. Scalabilità
  20. 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. 21. Query Routing • Diversi modelli di ottimizzazione delle query • Ogni opzione di sharding è appropriata per diversi tipi di applicazione
  22. 22. Disponibilità del Servizio
  23. 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. 24. Replica Set • Replica Set – 2 o più copie • “Self-healing” shard • Indirizza svariate preoccupazioni: - Alta disponibilità del servizio - Disaster Recovery - Manutenzione
  25. 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
  26. 26. Performance
  27. 27. Miglior posizione dei dati nello storage Performance In-Memory Caching Aggiornamento sul posto
  28. 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. 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
  30. 30. #MongoDBBasicsIT
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×