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

20140311 app dev series - 01 - introduction - italian

  • Upload
    mongodb

  • View
    1.662

  • Download
    0

Embed Size (px)

DESCRIPTION

 

Citation preview

Page 1: 20140311   app dev series - 01 - introduction - italian

Serie Application Development Back to Basics – Introduzione

Senior Solution Architect, MongoDB Inc,

@massimobrignoli

Massimo Brignoli

#MongoDBBasicsIT

Page 2: 20140311   app dev series - 01 - introduction - italian

Introduction

• Cos’è la Serie di Webinar

• Modello dei Dati

• Modello delle Query

• Scalabilità

• Affidabilità

• Architetture di Produzione

• Performance

• Prossima Puntata

Page 3: 20140311   app dev series - 01 - introduction - italian

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: 20140311   app dev series - 01 - introduction - italian

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: 20140311   app dev series - 01 - introduction - italian

Q & A

• Virtual Genius Bar

– Usate la chat per fare domande

– Il team italiano vi risponderà

– Sfruttatelo durante le sessioni!!!

Page 6: 20140311   app dev series - 01 - introduction - italian

MongoDB

Page 7: 20140311   app dev series - 01 - introduction - italian

Il mercato dei database

Page 8: 20140311   app dev series - 01 - introduction - italian

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: 20140311   app dev series - 01 - introduction - italian

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: 20140311   app dev series - 01 - introduction - italian

Sviluppo semplificato

Page 11: 20140311   app dev series - 01 - introduction - italian

Sviluppo semplificato

Page 12: 20140311   app dev series - 01 - introduction - italian

Ricca interazione con i dati

Page 13: 20140311   app dev series - 01 - introduction - italian

Modello delle Query

Page 14: 20140311   app dev series - 01 - introduction - italian

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: 20140311   app dev series - 01 - introduction - italian

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: 20140311   app dev series - 01 - introduction - italian

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: 20140311   app dev series - 01 - introduction - italian

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: 20140311   app dev series - 01 - introduction - italian

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: 20140311   app dev series - 01 - introduction - italian

Scalabilità

Page 20: 20140311   app dev series - 01 - introduction - italian

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: 20140311   app dev series - 01 - introduction - italian

Query Routing

• Diversi modelli di ottimizzazione delle query

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

Page 22: 20140311   app dev series - 01 - introduction - italian

Disponibilità del Servizio

Page 23: 20140311   app dev series - 01 - introduction - italian

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: 20140311   app dev series - 01 - introduction - italian

Replica Set

• Replica Set – 2 o più copie

• “Self-healing” shard

• Indirizza svariate preoccupazioni:

- Alta disponibilità del servizio

- Disaster Recovery

- Manutenzione

Page 25: 20140311   app dev series - 01 - introduction - italian

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: 20140311   app dev series - 01 - introduction - italian

Performance

Page 27: 20140311   app dev series - 01 - introduction - italian

Miglior posizione dei

dati nello storage

Performance

In-Memory Caching

Aggiornamento sul posto

Page 28: 20140311   app dev series - 01 - introduction - italian

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: 20140311   app dev series - 01 - introduction - italian

• 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: 20140311   app dev series - 01 - introduction - italian

#MongoDBBasicsIT