webinar : premiers pas avec mongodb - back to basics

30
Construire une application avec MongoDB Introduction à MongoDB Alain Hélaïli @AlainHelaili Tugdual Grall @tgrall #MongoDBBasics

Upload: mongodb

Post on 14-May-2015

1.071 views

Category:

Technology


3 download

DESCRIPTION

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

TRANSCRIPT

Page 1: Webinar : Premiers pas avec MongoDB - Back to Basics

Construire une application avec MongoDBIntroduction à MongoDB

Alain Hélaïli@AlainHelaili

Tugdual Grall@tgrall

#MongoDBBasics

Page 2: Webinar : Premiers pas avec MongoDB - Back to Basics

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

Page 3: Webinar : Premiers pas avec MongoDB - Back to Basics

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

Page 4: Webinar : Premiers pas avec MongoDB - Back to Basics

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

Page 5: Webinar : Premiers pas avec MongoDB - Back to Basics

5

• Virtual Genius Bar– Utilisez le Chat pour poser vos questions– Réponses au fil de l’eau et à la fin

Q & A

Page 6: Webinar : Premiers pas avec MongoDB - Back to Basics

MongoDB

Page 7: Webinar : Premiers pas avec MongoDB - Back to Basics

7

Base de donnée opérationnelle 

Page 8: Webinar : Premiers pas avec MongoDB - Back to Basics

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

Page 9: Webinar : Premiers pas avec MongoDB - Back to Basics

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

Page 10: Webinar : Premiers pas avec MongoDB - Back to Basics

10

Simplify development

Page 11: Webinar : Premiers pas avec MongoDB - Back to Basics

11

Simplify development

Page 12: Webinar : Premiers pas avec MongoDB - Back to Basics

12

Rich database interaction

Page 13: Webinar : Premiers pas avec MongoDB - Back to Basics

Query Model

Page 14: Webinar : Premiers pas avec MongoDB - Back to Basics

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

Page 15: Webinar : Premiers pas avec MongoDB - Back to Basics

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

Page 16: Webinar : Premiers pas avec MongoDB - Back to Basics

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

Page 17: Webinar : Premiers pas avec MongoDB - Back to Basics

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

Page 18: Webinar : Premiers pas avec MongoDB - Back to Basics

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

Page 19: Webinar : Premiers pas avec MongoDB - Back to Basics

Scalability

Page 20: Webinar : Premiers pas avec MongoDB - Back to Basics

20

Automatic Sharding

• Three types of sharding: hash-based, range-based, tag-aware

• Increase or decrease capacity as you go

• Automatic balancing

Page 21: Webinar : Premiers pas avec MongoDB - Back to Basics

21

Query Routing

• Multiple query optimization models

• Each sharding option appropriate for different apps

Page 22: Webinar : Premiers pas avec MongoDB - Back to Basics

Availability

Page 23: Webinar : Premiers pas avec MongoDB - Back to Basics

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

Page 24: Webinar : Premiers pas avec MongoDB - Back to Basics

24

Replica Sets

• Replica Set – two or more copies

• “Self-healing” shard

• Addresses many concerns:

- High Availability

- Disaster Recovery

- Maintenance

Page 25: Webinar : Premiers pas avec MongoDB - Back to Basics

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

Page 26: Webinar : Premiers pas avec MongoDB - Back to Basics

Performance

Page 27: Webinar : Premiers pas avec MongoDB - Back to Basics

27

Better Data Locality

Performance

In-Memory Caching

In-Place Updates

Page 28: Webinar : Premiers pas avec MongoDB - Back to Basics

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

Page 29: Webinar : Premiers pas avec MongoDB - Back to Basics

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

Page 30: Webinar : Premiers pas avec MongoDB - Back to Basics