Your SlideShare is downloading. ×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Saving this for later?

Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime - even offline.

Text the download link to your phone

Standard text messaging rates apply

20140311 app dev series - 01 - introduction - italian

1,707
views

Published on

Published in: Marketing

0 Comments
5 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
1,707
On Slideshare
0
From Embeds
0
Number of Embeds
6
Actions
Shares
0
Downloads
42
Comments
0
Likes
5
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 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!!!
  • 6. MongoDB
  • 7. Il mercato dei database
  • 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. 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. Sviluppo semplificato
  • 11. Sviluppo semplificato
  • 12. Ricca interazione con i dati
  • 13. Modello delle Query
  • 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, … } } }
  • 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. 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. Scalabilità
  • 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
  • 22. Disponibilità del Servizio
  • 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
  • 26. Performance
  • 27. Miglior posizione dei dati nello storage Performance In-Memory Caching Aggiornamento sul posto
  • 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
  • 30. #MongoDBBasicsIT