0
Construire une application avec MongoDB
Introduction à MongoDB
Alain Hélaïli
@AlainHelaili

#MongoDBBasics

Tugdual Grall
...
Introduction
• A propos de la série de Webinaires
• Modèle de Donnée
• Modèle de Requête
• Montée en charge (Scalability)
...
A propos des Webinaires
• Série divisée en 2 sections
– Développement d‟Applications (4 parties)
•
•
•
•

Conception/Modèl...
Application : Vue d’ensemble
• Système de Gestion de Contenus
– Utilise :
•
•
•
•
•
•

Opérateurs de requêtes et mise à jo...
Q&A
• Virtual Genius Bar
– Utilisez le Chat pour poser vos questions
– Réponses au fil de l‟eau et à la fin

5
MongoDB
Base de donnée opérationnelle

7
Modèle de donnée Document
Document - Collections
Relationnel - Tables

8

{ first_name: „Paul‟,
surname: „Miller‟,
city: „...
Document Model
• Agility and flexibility – dynamic schema
– Data models can evolve easily
– Companies can adapt to changes...
Simplify development

10
Simplify development

11
Rich database interaction

12
Query Model
Shell and Drivers
Drivers
Drivers for most popular
programming languages and
frameworks

Java

Ruby

JavaScript

Python

S...
MongoDB is full featured
Queries

• Find Paul’s cars
• Find everybody in London with a car
built between 1970 and 1980

Ge...
Query Example
Rich Queries

• Find Paul’s cars
• Find everybody in London with a car
built between 1970 and 1980

db.cars....
Geo Spatial Example
Geospatial

• Find all of the car owners within 5km of
Trafalgar Sq.

db.cars.find( {
location:
{ $nea...
Aggregation Framework Example
Aggregation

• Calculate the average value of Paul’s
car collection

db.cars.aggregate( [
{$...
Scalability
Automatic Sharding

• Three types of sharding: hash-based, range-based, tagaware
• Increase or decrease capacity as you go...
Query Routing

• Multiple query optimization models
• Each sharding option appropriate for different apps
21
Availability
Availability Considerations
• High Availability – Ensure application availability during
many types of failures
• Disaster...
Replica Sets
• Replica Set – two or more copies
• “Self-healing” shard
• Addresses many concerns:
- High Availability
- Di...
Replica Set Benefits

Business Needs

High Availability

Automated failover

Disaster Recovery

Hot backups offsite

Maint...
Performance
Performance

Better Data
Locality
27

In-Memory
Caching

In-Place
Updates
Conclusion
• Modèle Documentaire
– Simplifie le développement
– Simplifie la montée en charge horizontale (scale out)
– Am...
La Semaine Prochaine – 12 Mars
• Alain Hélaïli & Tugdual Grall
– Schéma de données pour l‟application CMS
• Collections
• ...
Webinar : Premiers pas avec MongoDB - Back to Basics
Upcoming SlideShare
Loading in...5
×

Webinar : Premiers pas avec MongoDB - Back to Basics

1,113

Published on

Rejoignez notre série de webinaires en huit parties sur «Construire une application avec MongoDB » pour apprendre les meilleures pratiques, trucs et astuces de nos Solutions Architects et découvrir à quel point il est facile de commencer à construire des applications avec MongoDB. Toutes ces sessions seront exclusivement en français.

Une introduction à MongoDB: découvrir à quel point il est facile de commencer à construire des applications avec MongoDB. Cette session couvre les fonctionnalités clés de MongoDB et définit le cadre de création d'une application.

Les autres sessions de la série:

12 Mars 2014: Construire une série d'application - Session 2 - Mise en route:
Cette session portera sur les grandes lignes d'une application, comment orienter la conception de schéma, les fonctionnalités de l'application et les principes de montée en charge (scale out)

26 Mars 2014: Construire une série d'application - Session 3 - Interaction avec la base de données:
Ce webinaire couvrira les requêtes et mises à jour, et l'interaction entre une application et une base de données

09 Avril 2014: Construire une série d'application - Session 4 - Indexation:
Cette session se concentrera sur les stratégies d'indexation pour l’application, y compris la géolocalisation et la recherche plein texte

22 Avril 2014: Construire une série d'application - Session 5 – Le reporting dans votre application:
Cette session couvre reporting, Aggregation Framework et comment construire des rapports sur l’utilisation de l’application

07 Mai 2014: Opérations pour votre application - Session 6 - Déploiement de l'application:
A ce stade, nous avons construit l’application. Maintenant, nous devons déployer. Nous allons discuter de l'architecture en vue de garantir niveau de disponibilité et montée en charge (scale-out)

20 Mai 2014: Opérations pour votre application - Session 7 - Sauvegarde et DR:
Ce webinaire couvre les options de sauvegarde et de restauration des données. Apprenez ce que vous devez faire en cas de panne et comment effectuer une sauvegarde et récupération des données dans vos applications

03 Juin 2014: Opérations pour votre application - Session 8 - Surveillance et optimisation des performances:
Le webinaire final de la série vous expliquera quels indicateurs sont importants, et comment piloter et surveiller votre application pour les meilleurs performances

Alain Hélaïli: About the speaker

Alain Hélaïli est Architecte Solutions chez MongoDB. Son rôle est d'assister les utilisateurs de MongoDB depuis la sélection des cas d'usages des technologies NoSQL et BigData, aux phases de développements et d'exploitation des applications. Auparavant, il a travaillé chez différents éditeurs sur des sujets tels que la performance applicative, les serveurs d'applications J2EE et le ecommerce. Alain vit à l'Ouest de Paris, à moins de 20KM d'une dizaine de golfs dont il ne

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
1,113
On Slideshare
0
From Embeds
0
Number of Embeds
5
Actions
Shares
0
Downloads
50
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Transcript of "Webinar : Premiers pas avec MongoDB - Back to Basics"

  1. 1. Construire une application avec MongoDB Introduction à MongoDB Alain Hélaïli @AlainHelaili #MongoDBBasics Tugdual Grall @tgrall
  2. 2. Introduction • 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 2
  3. 3. A propos des Webinaires • 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 3
  4. 4. Application : Vue d’ensemble • 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 4
  5. 5. Q&A • Virtual Genius Bar – Utilisez le Chat pour poser vos questions – Réponses au fil de l‟eau et à la fin 5
  6. 6. MongoDB
  7. 7. Base de donnée opérationnelle 7
  8. 8. Modèle de donnée Document Document - Collections Relationnel - Tables 8 { 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, … } ] }
  9. 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 9
  10. 10. Simplify development 10
  11. 11. Simplify development 11
  12. 12. Rich database interaction 12
  13. 13. Query Model
  14. 14. Shell and Drivers Drivers Drivers for most popular programming languages and frameworks Java Ruby JavaScript Python Shell Command-line shell for interacting directly with database 14 Perl Haskell > db.collection.insert({company:“10gen”, product:“MongoDB”} ) > > db.collection.findOne() { “_id” : ObjectId(“5106c1c2fc629bfe52792e86”), “company” : “10gen” “product” : “MongoDB” }
  15. 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?) 15 { 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. 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 } }) 16 { 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. 17. Geo Spatial Example Geospatial • Find all of the car owners within 5km of Trafalgar Sq. db.cars.find( { location: { $near : { $geometry : { type: 'Point' , coordinates : [-0.128, 51.507] } }, $maxDistance :5000 } }) 17 { 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. 18. Aggregation Framework Example Aggregation • Calculate the average value of Paul’s car collection 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 } 18 { 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, … } } }
  19. 19. Scalability
  20. 20. Automatic Sharding • Three types of sharding: hash-based, range-based, tagaware • Increase or decrease capacity as you go • Automatic balancing 20
  21. 21. Query Routing • Multiple query optimization models • Each sharding option appropriate for different apps 21
  22. 22. Availability
  23. 23. Availability Considerations • 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 23
  24. 24. Replica Sets • Replica Set – two or more copies • “Self-healing” shard • Addresses many concerns: - High Availability - Disaster Recovery - Maintenance 24
  25. 25. Replica Set Benefits Business Needs 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 25 Replica Set Benefits Tunable Consistency
  26. 26. Performance
  27. 27. Performance Better Data Locality 27 In-Memory Caching In-Place Updates
  28. 28. Conclusion • 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 28
  29. 29. La Semaine Prochaine – 12 Mars • 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 29
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×