SlideShare uma empresa Scribd logo
1 de 30
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
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
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
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à
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
– IncludeAlta 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

Mais conteúdo relacionado

Mais procurados

Back to Basics, webinar 1: Introduzione a NoSQL
Back to Basics, webinar 1: Introduzione a NoSQLBack to Basics, webinar 1: Introduzione a NoSQL
Back to Basics, webinar 1: Introduzione a NoSQLMongoDB
 
E suap - tecnologie client
E suap - tecnologie client E suap - tecnologie client
E suap - tecnologie client Sabino Labarile
 
Back to Basics, webinar 6: Messa in esercizio
Back to Basics, webinar 6: Messa in esercizioBack to Basics, webinar 6: Messa in esercizio
Back to Basics, webinar 6: Messa in esercizioMongoDB
 
MongoDb and Scala SpringFramework Meeting
MongoDb and Scala SpringFramework MeetingMongoDb and Scala SpringFramework Meeting
MongoDb and Scala SpringFramework Meetingguest67beeb9
 
Advanced Database Models and Architectures: Big Data: MySQL VS MongoDB
Advanced Database Models and Architectures: Big Data: MySQL VS MongoDBAdvanced Database Models and Architectures: Big Data: MySQL VS MongoDB
Advanced Database Models and Architectures: Big Data: MySQL VS MongoDBLuca Marignati
 
jQuery - 1 | WebMaster & WebDesigner
jQuery - 1 | WebMaster & WebDesignerjQuery - 1 | WebMaster & WebDesigner
jQuery - 1 | WebMaster & WebDesignerMatteo Magni
 
MongoDB Scala Roma SpringFramework Meeting2009
MongoDB Scala Roma SpringFramework Meeting2009MongoDB Scala Roma SpringFramework Meeting2009
MongoDB Scala Roma SpringFramework Meeting2009Massimiliano Dessì
 

Mais procurados (7)

Back to Basics, webinar 1: Introduzione a NoSQL
Back to Basics, webinar 1: Introduzione a NoSQLBack to Basics, webinar 1: Introduzione a NoSQL
Back to Basics, webinar 1: Introduzione a NoSQL
 
E suap - tecnologie client
E suap - tecnologie client E suap - tecnologie client
E suap - tecnologie client
 
Back to Basics, webinar 6: Messa in esercizio
Back to Basics, webinar 6: Messa in esercizioBack to Basics, webinar 6: Messa in esercizio
Back to Basics, webinar 6: Messa in esercizio
 
MongoDb and Scala SpringFramework Meeting
MongoDb and Scala SpringFramework MeetingMongoDb and Scala SpringFramework Meeting
MongoDb and Scala SpringFramework Meeting
 
Advanced Database Models and Architectures: Big Data: MySQL VS MongoDB
Advanced Database Models and Architectures: Big Data: MySQL VS MongoDBAdvanced Database Models and Architectures: Big Data: MySQL VS MongoDB
Advanced Database Models and Architectures: Big Data: MySQL VS MongoDB
 
jQuery - 1 | WebMaster & WebDesigner
jQuery - 1 | WebMaster & WebDesignerjQuery - 1 | WebMaster & WebDesigner
jQuery - 1 | WebMaster & WebDesigner
 
MongoDB Scala Roma SpringFramework Meeting2009
MongoDB Scala Roma SpringFramework Meeting2009MongoDB Scala Roma SpringFramework Meeting2009
MongoDB Scala Roma SpringFramework Meeting2009
 

Semelhante a 20140311 app dev series - 01 - introduction - italian

La Modernizzazione dei Dati come base per La Trasformazione Digitale
La Modernizzazione dei Dati come base per La Trasformazione DigitaleLa Modernizzazione dei Dati come base per La Trasformazione Digitale
La Modernizzazione dei Dati come base per La Trasformazione DigitaleMongoDB
 
Le novita di MongoDB 3.6
Le novita di MongoDB 3.6Le novita di MongoDB 3.6
Le novita di MongoDB 3.6MongoDB
 
TYPESCRIPT, ANGULAR E BOOTSTRAP ASSIEME PER APPLICAZIONI REAL WORLD
TYPESCRIPT, ANGULAR E BOOTSTRAP ASSIEME PER APPLICAZIONI REAL WORLDTYPESCRIPT, ANGULAR E BOOTSTRAP ASSIEME PER APPLICAZIONI REAL WORLD
TYPESCRIPT, ANGULAR E BOOTSTRAP ASSIEME PER APPLICAZIONI REAL WORLDDotNetCampus
 
Slide typescript - net campus
Slide typescript - net campusSlide typescript - net campus
Slide typescript - net campusDotNetCampus
 
Cert04 70-484 - essentials of developing windows store apps
Cert04   70-484 - essentials of developing windows store appsCert04   70-484 - essentials of developing windows store apps
Cert04 70-484 - essentials of developing windows store appsDotNetCampus
 
Cert03 70-486 developing asp.net mvc 4 web applications
Cert03   70-486 developing asp.net mvc 4 web applicationsCert03   70-486 developing asp.net mvc 4 web applications
Cert03 70-486 developing asp.net mvc 4 web applicationsDotNetCampus
 
Continous Delivery & HQ Code
Continous Delivery & HQ CodeContinous Delivery & HQ Code
Continous Delivery & HQ CodeDaniele Mondello
 
Sviluppo di servizi REST per Android - Luca Masini
Sviluppo di servizi REST per Android - Luca Masini Sviluppo di servizi REST per Android - Luca Masini
Sviluppo di servizi REST per Android - Luca Masini Whymca
 
SVILUPPO DI SERVIZI REST PER ANDROID
SVILUPPO DI SERVIZI REST PER ANDROIDSVILUPPO DI SERVIZI REST PER ANDROID
SVILUPPO DI SERVIZI REST PER ANDROIDLuca Masini
 
Webinar: Come semplificare l'utilizzo del database con MongoDB Atlas
Webinar: Come semplificare l'utilizzo del database con MongoDB AtlasWebinar: Come semplificare l'utilizzo del database con MongoDB Atlas
Webinar: Come semplificare l'utilizzo del database con MongoDB AtlasMongoDB
 
Slide typescript - xe dotnet - Codemotion Rome 2015
Slide typescript - xe dotnet - Codemotion Rome 2015Slide typescript - xe dotnet - Codemotion Rome 2015
Slide typescript - xe dotnet - Codemotion Rome 2015Codemotion
 
Polyglot Persistence e Big Data: tra innovazione e difficoltà su casi reali -...
Polyglot Persistence e Big Data: tra innovazione e difficoltà su casi reali -...Polyglot Persistence e Big Data: tra innovazione e difficoltà su casi reali -...
Polyglot Persistence e Big Data: tra innovazione e difficoltà su casi reali -...Data Driven Innovation
 
API Transformation in Crédit Agricole Italia
API Transformation in Crédit Agricole ItaliaAPI Transformation in Crédit Agricole Italia
API Transformation in Crédit Agricole ItaliaProfesia Srl, Lynx Group
 
#LRIS2014 - MessageBus, Cluster communication and Caching on B2B
#LRIS2014 - MessageBus, Cluster communication and Caching on B2B#LRIS2014 - MessageBus, Cluster communication and Caching on B2B
#LRIS2014 - MessageBus, Cluster communication and Caching on B2Bkino2k
 
GWT vs CSS3
GWT vs CSS3GWT vs CSS3
GWT vs CSS3GWTcon
 
Back to Basics webinar 1 IT 17 - Introduzione ai NoSQL
Back to Basics webinar 1 IT 17 - Introduzione ai NoSQLBack to Basics webinar 1 IT 17 - Introduzione ai NoSQL
Back to Basics webinar 1 IT 17 - Introduzione ai NoSQLMongoDB
 
MongoDB - Back to Basics 2017 - Introduzione a NoSQL
MongoDB - Back to Basics 2017 - Introduzione a NoSQLMongoDB - Back to Basics 2017 - Introduzione a NoSQL
MongoDB - Back to Basics 2017 - Introduzione a NoSQLMassimo Brignoli
 
SEO Strategic Framework - WMExpo 2017- Matteo Monari BizUp
SEO Strategic Framework - WMExpo 2017- Matteo Monari BizUpSEO Strategic Framework - WMExpo 2017- Matteo Monari BizUp
SEO Strategic Framework - WMExpo 2017- Matteo Monari BizUpBizup
 
Pensiero Analogico e Microservizi
Pensiero Analogico  e MicroserviziPensiero Analogico  e Microservizi
Pensiero Analogico e MicroserviziConsulthinkspa
 
MySQL Day Milano 2017 - Dalla replica a InnoDB Cluster: l’HA secondo MySQL
MySQL Day Milano 2017 - Dalla replica a InnoDB Cluster: l’HA secondo MySQLMySQL Day Milano 2017 - Dalla replica a InnoDB Cluster: l’HA secondo MySQL
MySQL Day Milano 2017 - Dalla replica a InnoDB Cluster: l’HA secondo MySQLPar-Tec S.p.A.
 

Semelhante a 20140311 app dev series - 01 - introduction - italian (20)

La Modernizzazione dei Dati come base per La Trasformazione Digitale
La Modernizzazione dei Dati come base per La Trasformazione DigitaleLa Modernizzazione dei Dati come base per La Trasformazione Digitale
La Modernizzazione dei Dati come base per La Trasformazione Digitale
 
Le novita di MongoDB 3.6
Le novita di MongoDB 3.6Le novita di MongoDB 3.6
Le novita di MongoDB 3.6
 
TYPESCRIPT, ANGULAR E BOOTSTRAP ASSIEME PER APPLICAZIONI REAL WORLD
TYPESCRIPT, ANGULAR E BOOTSTRAP ASSIEME PER APPLICAZIONI REAL WORLDTYPESCRIPT, ANGULAR E BOOTSTRAP ASSIEME PER APPLICAZIONI REAL WORLD
TYPESCRIPT, ANGULAR E BOOTSTRAP ASSIEME PER APPLICAZIONI REAL WORLD
 
Slide typescript - net campus
Slide typescript - net campusSlide typescript - net campus
Slide typescript - net campus
 
Cert04 70-484 - essentials of developing windows store apps
Cert04   70-484 - essentials of developing windows store appsCert04   70-484 - essentials of developing windows store apps
Cert04 70-484 - essentials of developing windows store apps
 
Cert03 70-486 developing asp.net mvc 4 web applications
Cert03   70-486 developing asp.net mvc 4 web applicationsCert03   70-486 developing asp.net mvc 4 web applications
Cert03 70-486 developing asp.net mvc 4 web applications
 
Continous Delivery & HQ Code
Continous Delivery & HQ CodeContinous Delivery & HQ Code
Continous Delivery & HQ Code
 
Sviluppo di servizi REST per Android - Luca Masini
Sviluppo di servizi REST per Android - Luca Masini Sviluppo di servizi REST per Android - Luca Masini
Sviluppo di servizi REST per Android - Luca Masini
 
SVILUPPO DI SERVIZI REST PER ANDROID
SVILUPPO DI SERVIZI REST PER ANDROIDSVILUPPO DI SERVIZI REST PER ANDROID
SVILUPPO DI SERVIZI REST PER ANDROID
 
Webinar: Come semplificare l'utilizzo del database con MongoDB Atlas
Webinar: Come semplificare l'utilizzo del database con MongoDB AtlasWebinar: Come semplificare l'utilizzo del database con MongoDB Atlas
Webinar: Come semplificare l'utilizzo del database con MongoDB Atlas
 
Slide typescript - xe dotnet - Codemotion Rome 2015
Slide typescript - xe dotnet - Codemotion Rome 2015Slide typescript - xe dotnet - Codemotion Rome 2015
Slide typescript - xe dotnet - Codemotion Rome 2015
 
Polyglot Persistence e Big Data: tra innovazione e difficoltà su casi reali -...
Polyglot Persistence e Big Data: tra innovazione e difficoltà su casi reali -...Polyglot Persistence e Big Data: tra innovazione e difficoltà su casi reali -...
Polyglot Persistence e Big Data: tra innovazione e difficoltà su casi reali -...
 
API Transformation in Crédit Agricole Italia
API Transformation in Crédit Agricole ItaliaAPI Transformation in Crédit Agricole Italia
API Transformation in Crédit Agricole Italia
 
#LRIS2014 - MessageBus, Cluster communication and Caching on B2B
#LRIS2014 - MessageBus, Cluster communication and Caching on B2B#LRIS2014 - MessageBus, Cluster communication and Caching on B2B
#LRIS2014 - MessageBus, Cluster communication and Caching on B2B
 
GWT vs CSS3
GWT vs CSS3GWT vs CSS3
GWT vs CSS3
 
Back to Basics webinar 1 IT 17 - Introduzione ai NoSQL
Back to Basics webinar 1 IT 17 - Introduzione ai NoSQLBack to Basics webinar 1 IT 17 - Introduzione ai NoSQL
Back to Basics webinar 1 IT 17 - Introduzione ai NoSQL
 
MongoDB - Back to Basics 2017 - Introduzione a NoSQL
MongoDB - Back to Basics 2017 - Introduzione a NoSQLMongoDB - Back to Basics 2017 - Introduzione a NoSQL
MongoDB - Back to Basics 2017 - Introduzione a NoSQL
 
SEO Strategic Framework - WMExpo 2017- Matteo Monari BizUp
SEO Strategic Framework - WMExpo 2017- Matteo Monari BizUpSEO Strategic Framework - WMExpo 2017- Matteo Monari BizUp
SEO Strategic Framework - WMExpo 2017- Matteo Monari BizUp
 
Pensiero Analogico e Microservizi
Pensiero Analogico  e MicroserviziPensiero Analogico  e Microservizi
Pensiero Analogico e Microservizi
 
MySQL Day Milano 2017 - Dalla replica a InnoDB Cluster: l’HA secondo MySQL
MySQL Day Milano 2017 - Dalla replica a InnoDB Cluster: l’HA secondo MySQLMySQL Day Milano 2017 - Dalla replica a InnoDB Cluster: l’HA secondo MySQL
MySQL Day Milano 2017 - Dalla replica a InnoDB Cluster: l’HA secondo MySQL
 

Mais de MongoDB

MongoDB SoCal 2020: Migrate Anything* to MongoDB Atlas
MongoDB SoCal 2020: Migrate Anything* to MongoDB AtlasMongoDB SoCal 2020: Migrate Anything* to MongoDB Atlas
MongoDB SoCal 2020: Migrate Anything* to MongoDB AtlasMongoDB
 
MongoDB SoCal 2020: Go on a Data Safari with MongoDB Charts!
MongoDB SoCal 2020: Go on a Data Safari with MongoDB Charts!MongoDB SoCal 2020: Go on a Data Safari with MongoDB Charts!
MongoDB SoCal 2020: Go on a Data Safari with MongoDB Charts!MongoDB
 
MongoDB SoCal 2020: Using MongoDB Services in Kubernetes: Any Platform, Devel...
MongoDB SoCal 2020: Using MongoDB Services in Kubernetes: Any Platform, Devel...MongoDB SoCal 2020: Using MongoDB Services in Kubernetes: Any Platform, Devel...
MongoDB SoCal 2020: Using MongoDB Services in Kubernetes: Any Platform, Devel...MongoDB
 
MongoDB SoCal 2020: A Complete Methodology of Data Modeling for MongoDB
MongoDB SoCal 2020: A Complete Methodology of Data Modeling for MongoDBMongoDB SoCal 2020: A Complete Methodology of Data Modeling for MongoDB
MongoDB SoCal 2020: A Complete Methodology of Data Modeling for MongoDBMongoDB
 
MongoDB SoCal 2020: From Pharmacist to Analyst: Leveraging MongoDB for Real-T...
MongoDB SoCal 2020: From Pharmacist to Analyst: Leveraging MongoDB for Real-T...MongoDB SoCal 2020: From Pharmacist to Analyst: Leveraging MongoDB for Real-T...
MongoDB SoCal 2020: From Pharmacist to Analyst: Leveraging MongoDB for Real-T...MongoDB
 
MongoDB SoCal 2020: Best Practices for Working with IoT and Time-series Data
MongoDB SoCal 2020: Best Practices for Working with IoT and Time-series DataMongoDB SoCal 2020: Best Practices for Working with IoT and Time-series Data
MongoDB SoCal 2020: Best Practices for Working with IoT and Time-series DataMongoDB
 
MongoDB SoCal 2020: MongoDB Atlas Jump Start
 MongoDB SoCal 2020: MongoDB Atlas Jump Start MongoDB SoCal 2020: MongoDB Atlas Jump Start
MongoDB SoCal 2020: MongoDB Atlas Jump StartMongoDB
 
MongoDB .local San Francisco 2020: Powering the new age data demands [Infosys]
MongoDB .local San Francisco 2020: Powering the new age data demands [Infosys]MongoDB .local San Francisco 2020: Powering the new age data demands [Infosys]
MongoDB .local San Francisco 2020: Powering the new age data demands [Infosys]MongoDB
 
MongoDB .local San Francisco 2020: Using Client Side Encryption in MongoDB 4.2
MongoDB .local San Francisco 2020: Using Client Side Encryption in MongoDB 4.2MongoDB .local San Francisco 2020: Using Client Side Encryption in MongoDB 4.2
MongoDB .local San Francisco 2020: Using Client Side Encryption in MongoDB 4.2MongoDB
 
MongoDB .local San Francisco 2020: Using MongoDB Services in Kubernetes: any ...
MongoDB .local San Francisco 2020: Using MongoDB Services in Kubernetes: any ...MongoDB .local San Francisco 2020: Using MongoDB Services in Kubernetes: any ...
MongoDB .local San Francisco 2020: Using MongoDB Services in Kubernetes: any ...MongoDB
 
MongoDB .local San Francisco 2020: Go on a Data Safari with MongoDB Charts!
MongoDB .local San Francisco 2020: Go on a Data Safari with MongoDB Charts!MongoDB .local San Francisco 2020: Go on a Data Safari with MongoDB Charts!
MongoDB .local San Francisco 2020: Go on a Data Safari with MongoDB Charts!MongoDB
 
MongoDB .local San Francisco 2020: From SQL to NoSQL -- Changing Your Mindset
MongoDB .local San Francisco 2020: From SQL to NoSQL -- Changing Your MindsetMongoDB .local San Francisco 2020: From SQL to NoSQL -- Changing Your Mindset
MongoDB .local San Francisco 2020: From SQL to NoSQL -- Changing Your MindsetMongoDB
 
MongoDB .local San Francisco 2020: MongoDB Atlas Jumpstart
MongoDB .local San Francisco 2020: MongoDB Atlas JumpstartMongoDB .local San Francisco 2020: MongoDB Atlas Jumpstart
MongoDB .local San Francisco 2020: MongoDB Atlas JumpstartMongoDB
 
MongoDB .local San Francisco 2020: Tips and Tricks++ for Querying and Indexin...
MongoDB .local San Francisco 2020: Tips and Tricks++ for Querying and Indexin...MongoDB .local San Francisco 2020: Tips and Tricks++ for Querying and Indexin...
MongoDB .local San Francisco 2020: Tips and Tricks++ for Querying and Indexin...MongoDB
 
MongoDB .local San Francisco 2020: Aggregation Pipeline Power++
MongoDB .local San Francisco 2020: Aggregation Pipeline Power++MongoDB .local San Francisco 2020: Aggregation Pipeline Power++
MongoDB .local San Francisco 2020: Aggregation Pipeline Power++MongoDB
 
MongoDB .local San Francisco 2020: A Complete Methodology of Data Modeling fo...
MongoDB .local San Francisco 2020: A Complete Methodology of Data Modeling fo...MongoDB .local San Francisco 2020: A Complete Methodology of Data Modeling fo...
MongoDB .local San Francisco 2020: A Complete Methodology of Data Modeling fo...MongoDB
 
MongoDB .local San Francisco 2020: MongoDB Atlas Data Lake Technical Deep Dive
MongoDB .local San Francisco 2020: MongoDB Atlas Data Lake Technical Deep DiveMongoDB .local San Francisco 2020: MongoDB Atlas Data Lake Technical Deep Dive
MongoDB .local San Francisco 2020: MongoDB Atlas Data Lake Technical Deep DiveMongoDB
 
MongoDB .local San Francisco 2020: Developing Alexa Skills with MongoDB & Golang
MongoDB .local San Francisco 2020: Developing Alexa Skills with MongoDB & GolangMongoDB .local San Francisco 2020: Developing Alexa Skills with MongoDB & Golang
MongoDB .local San Francisco 2020: Developing Alexa Skills with MongoDB & GolangMongoDB
 
MongoDB .local Paris 2020: Realm : l'ingrédient secret pour de meilleures app...
MongoDB .local Paris 2020: Realm : l'ingrédient secret pour de meilleures app...MongoDB .local Paris 2020: Realm : l'ingrédient secret pour de meilleures app...
MongoDB .local Paris 2020: Realm : l'ingrédient secret pour de meilleures app...MongoDB
 
MongoDB .local Paris 2020: Upply @MongoDB : Upply : Quand le Machine Learning...
MongoDB .local Paris 2020: Upply @MongoDB : Upply : Quand le Machine Learning...MongoDB .local Paris 2020: Upply @MongoDB : Upply : Quand le Machine Learning...
MongoDB .local Paris 2020: Upply @MongoDB : Upply : Quand le Machine Learning...MongoDB
 

Mais de MongoDB (20)

MongoDB SoCal 2020: Migrate Anything* to MongoDB Atlas
MongoDB SoCal 2020: Migrate Anything* to MongoDB AtlasMongoDB SoCal 2020: Migrate Anything* to MongoDB Atlas
MongoDB SoCal 2020: Migrate Anything* to MongoDB Atlas
 
MongoDB SoCal 2020: Go on a Data Safari with MongoDB Charts!
MongoDB SoCal 2020: Go on a Data Safari with MongoDB Charts!MongoDB SoCal 2020: Go on a Data Safari with MongoDB Charts!
MongoDB SoCal 2020: Go on a Data Safari with MongoDB Charts!
 
MongoDB SoCal 2020: Using MongoDB Services in Kubernetes: Any Platform, Devel...
MongoDB SoCal 2020: Using MongoDB Services in Kubernetes: Any Platform, Devel...MongoDB SoCal 2020: Using MongoDB Services in Kubernetes: Any Platform, Devel...
MongoDB SoCal 2020: Using MongoDB Services in Kubernetes: Any Platform, Devel...
 
MongoDB SoCal 2020: A Complete Methodology of Data Modeling for MongoDB
MongoDB SoCal 2020: A Complete Methodology of Data Modeling for MongoDBMongoDB SoCal 2020: A Complete Methodology of Data Modeling for MongoDB
MongoDB SoCal 2020: A Complete Methodology of Data Modeling for MongoDB
 
MongoDB SoCal 2020: From Pharmacist to Analyst: Leveraging MongoDB for Real-T...
MongoDB SoCal 2020: From Pharmacist to Analyst: Leveraging MongoDB for Real-T...MongoDB SoCal 2020: From Pharmacist to Analyst: Leveraging MongoDB for Real-T...
MongoDB SoCal 2020: From Pharmacist to Analyst: Leveraging MongoDB for Real-T...
 
MongoDB SoCal 2020: Best Practices for Working with IoT and Time-series Data
MongoDB SoCal 2020: Best Practices for Working with IoT and Time-series DataMongoDB SoCal 2020: Best Practices for Working with IoT and Time-series Data
MongoDB SoCal 2020: Best Practices for Working with IoT and Time-series Data
 
MongoDB SoCal 2020: MongoDB Atlas Jump Start
 MongoDB SoCal 2020: MongoDB Atlas Jump Start MongoDB SoCal 2020: MongoDB Atlas Jump Start
MongoDB SoCal 2020: MongoDB Atlas Jump Start
 
MongoDB .local San Francisco 2020: Powering the new age data demands [Infosys]
MongoDB .local San Francisco 2020: Powering the new age data demands [Infosys]MongoDB .local San Francisco 2020: Powering the new age data demands [Infosys]
MongoDB .local San Francisco 2020: Powering the new age data demands [Infosys]
 
MongoDB .local San Francisco 2020: Using Client Side Encryption in MongoDB 4.2
MongoDB .local San Francisco 2020: Using Client Side Encryption in MongoDB 4.2MongoDB .local San Francisco 2020: Using Client Side Encryption in MongoDB 4.2
MongoDB .local San Francisco 2020: Using Client Side Encryption in MongoDB 4.2
 
MongoDB .local San Francisco 2020: Using MongoDB Services in Kubernetes: any ...
MongoDB .local San Francisco 2020: Using MongoDB Services in Kubernetes: any ...MongoDB .local San Francisco 2020: Using MongoDB Services in Kubernetes: any ...
MongoDB .local San Francisco 2020: Using MongoDB Services in Kubernetes: any ...
 
MongoDB .local San Francisco 2020: Go on a Data Safari with MongoDB Charts!
MongoDB .local San Francisco 2020: Go on a Data Safari with MongoDB Charts!MongoDB .local San Francisco 2020: Go on a Data Safari with MongoDB Charts!
MongoDB .local San Francisco 2020: Go on a Data Safari with MongoDB Charts!
 
MongoDB .local San Francisco 2020: From SQL to NoSQL -- Changing Your Mindset
MongoDB .local San Francisco 2020: From SQL to NoSQL -- Changing Your MindsetMongoDB .local San Francisco 2020: From SQL to NoSQL -- Changing Your Mindset
MongoDB .local San Francisco 2020: From SQL to NoSQL -- Changing Your Mindset
 
MongoDB .local San Francisco 2020: MongoDB Atlas Jumpstart
MongoDB .local San Francisco 2020: MongoDB Atlas JumpstartMongoDB .local San Francisco 2020: MongoDB Atlas Jumpstart
MongoDB .local San Francisco 2020: MongoDB Atlas Jumpstart
 
MongoDB .local San Francisco 2020: Tips and Tricks++ for Querying and Indexin...
MongoDB .local San Francisco 2020: Tips and Tricks++ for Querying and Indexin...MongoDB .local San Francisco 2020: Tips and Tricks++ for Querying and Indexin...
MongoDB .local San Francisco 2020: Tips and Tricks++ for Querying and Indexin...
 
MongoDB .local San Francisco 2020: Aggregation Pipeline Power++
MongoDB .local San Francisco 2020: Aggregation Pipeline Power++MongoDB .local San Francisco 2020: Aggregation Pipeline Power++
MongoDB .local San Francisco 2020: Aggregation Pipeline Power++
 
MongoDB .local San Francisco 2020: A Complete Methodology of Data Modeling fo...
MongoDB .local San Francisco 2020: A Complete Methodology of Data Modeling fo...MongoDB .local San Francisco 2020: A Complete Methodology of Data Modeling fo...
MongoDB .local San Francisco 2020: A Complete Methodology of Data Modeling fo...
 
MongoDB .local San Francisco 2020: MongoDB Atlas Data Lake Technical Deep Dive
MongoDB .local San Francisco 2020: MongoDB Atlas Data Lake Technical Deep DiveMongoDB .local San Francisco 2020: MongoDB Atlas Data Lake Technical Deep Dive
MongoDB .local San Francisco 2020: MongoDB Atlas Data Lake Technical Deep Dive
 
MongoDB .local San Francisco 2020: Developing Alexa Skills with MongoDB & Golang
MongoDB .local San Francisco 2020: Developing Alexa Skills with MongoDB & GolangMongoDB .local San Francisco 2020: Developing Alexa Skills with MongoDB & Golang
MongoDB .local San Francisco 2020: Developing Alexa Skills with MongoDB & Golang
 
MongoDB .local Paris 2020: Realm : l'ingrédient secret pour de meilleures app...
MongoDB .local Paris 2020: Realm : l'ingrédient secret pour de meilleures app...MongoDB .local Paris 2020: Realm : l'ingrédient secret pour de meilleures app...
MongoDB .local Paris 2020: Realm : l'ingrédient secret pour de meilleures app...
 
MongoDB .local Paris 2020: Upply @MongoDB : Upply : Quand le Machine Learning...
MongoDB .local Paris 2020: Upply @MongoDB : Upply : Quand le Machine Learning...MongoDB .local Paris 2020: Upply @MongoDB : Upply : Quand le Machine Learning...
MongoDB .local Paris 2020: Upply @MongoDB : Upply : Quand le Machine Learning...
 

20140311 app dev series - 01 - introduction - italian

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