20140311 app dev series - 01 - introduction - italian

Post on 09-Dec-2014

1.663 views 0 download

description

 

Transcript of 20140311 app dev series - 01 - introduction - italian

Serie Application Development Back to Basics – Introduzione

Senior Solution Architect, MongoDB Inc,

@massimobrignoli

Massimo Brignoli

#MongoDBBasicsIT

Introduction

• Cos’è la Serie di Webinar

• Modello dei Dati

• Modello delle Query

• Scalabilità

• Affidabilità

• Architetture di Produzione

• Performance

• Prossima Puntata

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

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

Q & A

• Virtual Genius Bar

– Usate la chat per fare domande

– Il team italiano vi risponderà

– Sfruttatelo durante le sessioni!!!

MongoDB

Il mercato dei database

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

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

Sviluppo semplificato

Sviluppo semplificato

Ricca interazione con i dati

Modello delle Query

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

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

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

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

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

Scalabilità

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

Query Routing

• Diversi modelli di ottimizzazione delle query

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

Disponibilità del Servizio

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à

Replica Set

• Replica Set – 2 o più copie

• “Self-healing” shard

• Indirizza svariate preoccupazioni:

- Alta disponibilità del servizio

- Disaster Recovery

- Manutenzione

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

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 performance

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

Sommario

• 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

#MongoDBBasicsIT