Webinar : Premiers pas avec MongoDB - Back to Basics
-
Upload
mongodb -
Category
Technology
-
view
1.072 -
download
3
description
Transcript of Webinar : Premiers pas avec MongoDB - Back to Basics
Construire une application avec MongoDBIntroduction à MongoDB
Alain Hélaïli@AlainHelaili
Tugdual Grall@tgrall
#MongoDBBasics
2
• A propos de la série de Webinaires
• Modèle de Donnée
• Modèle de Requête
• Montée en charge (Scalability)
• Disponibilité (Availability)
• Déploiement
• Performances
• Prochaine Session
Introduction
3
• Série divisée en 2 sections– Développement d’Applications (4 parties)
• Conception/Modèle de données• Interactions avec la base: requêtes et mises à jour• Indexation• Reporting
– Opérations/Administration (3 parties)• Déploiement – Montée en charge et haute disponibilité• Monitoring et performance• Sauvegarde et Restauration
A propos des Webinaires
4
• Système de Gestion de Contenus– Utilise :
• Opérateurs de requêtes et mise à jour• Framework d’agrégation• Requêtes Géo-spatiales• Rapports pré-agrégés• Documents polymorphiques• Et plus…
• Une approche que vous pouvez utiliser dans vos applications
Application : Vue d’ensemble
5
• Virtual Genius Bar– Utilisez le Chat pour poser vos questions– Réponses au fil de l’eau et à la fin
Q & A
MongoDB
7
Base de donnée opérationnelle
8
Modèle de donnée Document
Relationnel - Tables{ 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, … } ]}
Document - Collections
9
Document Model
• Agility and flexibility – dynamic schema– Data models can evolve easily
– Companies can adapt to changes quickly
• Intuitive, natural data representation– Remove impedance mismatch
– Many types of applications are a good fit
• Reduces the need for joins, disk seeks– Programming is more simple
– Performance can be delivered at scale
10
Simplify development
11
Simplify development
12
Rich database interaction
Query Model
14
ShellCommand-line shell for interacting directly with database
Shell and Drivers
DriversDrivers for most popular programming languages and frameworks
> 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 is full featured
Queries• Find Paul’s cars• Find everybody in London with a car
built between 1970 and 1980
Geospatial• Find all of the car owners within 5km of
Trafalgar Sq.
Text Search• Find all the cars described as having
leather seats
Aggregation• Calculate the average value of Paul’s
car collection
Map Reduce• What is the ownership pattern of colors
by geography over time? (is purple trending up in China?)
{ 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, … } }}
16
Query Example
Rich Queries• Find Paul’s cars• Find everybody in London with a car
built between 1970 and 1980
db.cars.find({first_name: ‘Paul’
})
db.cars.find({city: ‘London’, ”cars.year" : {
$gte : 1970, $lte : 1980
}})
{ 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, … } }}
17
Geo Spatial Example
db.cars.find( { location:
{ $near : { $geometry : { type: 'Point' , coordinates :
[-0.128, 51.507] }
}, $maxDistance :5000 } } )
Geospatial• Find all of the car owners within 5km of
Trafalgar Sq.
{ 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, … } }}
18
Aggregation Framework Example
db.cars.aggregate( [
{$match : {"first_name" : "Paul"}}, {$project : {"first_name":1,"cars":1}},{$unwind : "$cars"},{ $group : {_id:"$first_name",
average : {
$avg : "$cars.value"}}} ])
{ "_id" : "Paul", "average" : 215000 }
Aggregation• Calculate the average value of Paul’s
car collection
{ 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, … } }}
Scalability
20
Automatic Sharding
• Three types of sharding: hash-based, range-based, tag-aware
• Increase or decrease capacity as you go
• Automatic balancing
21
Query Routing
• Multiple query optimization models
• Each sharding option appropriate for different apps
Availability
23
• High Availability – Ensure application availability during many types of failures
• Disaster Recovery – Address the RTO and RPO goals for business continuity
• Maintenance – Perform upgrades and other maintenance operations with no application downtime
Availability Considerations
24
Replica Sets
• Replica Set – two or more copies
• “Self-healing” shard
• Addresses many concerns:
- High Availability
- Disaster Recovery
- Maintenance
25
Replica Set Benefits
Business Needs Replica Set Benefits
High Availability Automated failover
Disaster Recovery Hot backups offsite
Maintenance Rolling upgrades
Low Latency Locate data near users
Workload Isolation Read from non-primary replicas
Data Privacy Restrict data to physical location
Data Consistency Tunable Consistency
Performance
27
Better Data Locality
Performance
In-Memory Caching
In-Place Updates
28
• Modèle Documentaire– Simplifie le développement– Simplifie la montée en charge horizontale (scale out)– Améliore les performances
• MongoDB– Base de donnée généraliste– Haute disponibilité et tolérance aux pannes incluses– Support de la montée en charge horizontale
Conclusion
29
• Alain Hélaïli & Tugdual Grall– Schéma de données pour l’application CMS
• Collections• Options de conception
– Architecture de l’application• Technologies utilisées• Interface REST• Nous avons choisi Python pour cette application
– Code Exemple
La Semaine Prochaine – 12 Mars