30
Serie Application Development Back to Basics – Introduzione Senior Solution Architect, MongoDB Inc, @massimobrignoli Massimo Brignoli #MongoDBBasicsIT

Webinar Back to Basics - Sessione 1 - introduzione

Embed Size (px)

DESCRIPTION

Prima puntata della serie di webinar "Back to Basics" dell'11 marzo 2014. In questa prima puntata vedremo la composizione della serie di webinar e faremo un'introduzione a mongodb.

Citation preview

Page 1: Webinar Back to Basics - Sessione 1 - introduzione

Serie Application Development Back to Basics – Introduzione

Senior Solution Architect, MongoDB Inc,

@massimobrignoli

Massimo Brignoli

#MongoDBBasicsIT

Page 2: Webinar Back to Basics - Sessione 1 - introduzione

Introduction

• Cos’è la Serie di Webinar

• Modello dei Dati

• Modello delle Query

• Scalabilità

• Affidabilità

• Architetture di Produzione

• Performance

• Prossima Puntata

Page 3: Webinar Back to Basics - Sessione 1 - introduzione

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

Page 4: Webinar Back to Basics - Sessione 1 - introduzione

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

Page 5: Webinar Back to Basics - Sessione 1 - introduzione

Q & A

• Virtual Genius Bar

– Usate la chat per fare domande

– Il team italiano vi risponderà

– Sfruttatelo durante le sessioni!!!

Page 6: Webinar Back to Basics - Sessione 1 - introduzione

MongoDB

Page 7: Webinar Back to Basics - Sessione 1 - introduzione

Il mercato dei database

Page 8: Webinar Back to Basics - Sessione 1 - introduzione

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

Page 9: Webinar Back to Basics - Sessione 1 - introduzione

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

Page 10: Webinar Back to Basics - Sessione 1 - introduzione

Sviluppo semplificato

Page 11: Webinar Back to Basics - Sessione 1 - introduzione

Sviluppo semplificato

Page 12: Webinar Back to Basics - Sessione 1 - introduzione

Ricca interazione con i dati

Page 13: Webinar Back to Basics - Sessione 1 - introduzione

Modello delle Query

Page 14: Webinar Back to Basics - Sessione 1 - introduzione

Shell

A linea di comando per interagire

direttamente con il database

Riga di comando e Drivers

DriversSono 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

Page 15: Webinar Back to Basics - Sessione 1 - introduzione

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, … } }}

Page 16: Webinar Back to Basics - Sessione 1 - introduzione

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, … } }}

Page 17: Webinar Back to Basics - Sessione 1 - introduzione

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, … } }}

Page 18: Webinar Back to Basics - Sessione 1 - introduzione

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, … } }}

Page 19: Webinar Back to Basics - Sessione 1 - introduzione

Scalabilità

Page 20: Webinar Back to Basics - Sessione 1 - introduzione

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

Page 21: Webinar Back to Basics - Sessione 1 - introduzione

Query Routing

• Diversi modelli di ottimizzazione delle query

• Ogni opzione di sharding è appropriata per diversi tipi di applicazione

Page 22: Webinar Back to Basics - Sessione 1 - introduzione

Disponibilità del Servizio

Page 23: Webinar Back to Basics - Sessione 1 - introduzione

Alta Affidabilità– 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à

Page 24: Webinar Back to Basics - Sessione 1 - introduzione

Replica Set

• Replica Set – 2 o più copie

• “Self-healing” shard

• Indirizza svariate preoccupazioni:

- Alta disponibilità del servizio

- Disaster Recovery

- Manutenzione

Page 25: Webinar Back to Basics - Sessione 1 - introduzione

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

Page 26: Webinar Back to Basics - Sessione 1 - introduzione

Performance

Page 27: Webinar Back to Basics - Sessione 1 - introduzione

Miglior posizione dei

dati nello storage

Performance

In-Memory Caching

Aggiornamento sul posto

Page 28: Webinar Back to Basics - Sessione 1 - introduzione

Il modello a documenti– Semplifica lo sviluppo applicativo– Semplifica la scalabilità orizzontale– Migliora le performance

MongoDB– Ricco database di utilizzo generale– Include Alta Disponibilità e Failover– Include la scalabilità orizzontale

Sommario

Page 29: Webinar Back to Basics - Sessione 1 - introduzione

• 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

Page 30: Webinar Back to Basics - Sessione 1 - introduzione

#MongoDBBasicsIT