SlideShare une entreprise Scribd logo
Réussir une montée en charge avec MongoDB
Réussir une montée en charge avec
MongoDB
Thomas Boyd
Directeur de l'équipe d'architecture de solutions chez
MongoDB
Montée en charge avec MongoDB
0
5,000
10,000
15,000
20,000
25,000
30,000
1 2 3 4 5 6 7 8
Opérations/seconde
Nombre de nœuds
Débit du cluster MongoDB
Sommaire
• Conseils d'optimisation
– Conception de schéma
– Index
– Surveillance
– WiredTiger
• Montée en charge verticale
• Montée en charge horizontale
• Procéder à la montée en charge d'une équipe
opérationnelle
Conseils d'optimisation : Conception
de schéma
Modèle de document
• Correspondance
d'objets d'application
• Flexibilité
• Performances élevées
{ "customer_id" : 123,
"first_name" : ”John",
"last_name" : "Smith",
"address" : {
"street": "123 Main Street",
"city": "Houston",
"state": "TX",
"zip_code": "77027"
}
policies: [ {
policy_number : 13,
description: “short term”,
deductible: 500
},
{ policy_number : 14,
description: “dental”,
visits: […]
} ]
}
Importance de la conception de schémas
• Très différente de la conception de schémas
RDBMS
• Schéma MongoDB :
– dénormaliser les données
– créer un schéma (potentiellement complexe)
en ayant une connaissance préalable (et non
une simple prévision) de vos modèles de
requête réels
– écrire des requêtes simples
Exemple concret
Catalogue de produits pour un détaillant en activité dans
20 pays
{
_id: 375,
en_US: { name: …, description: …, <etc…> },
en_GB: { name: …, description: …, <etc…> },
fr_FR: { name: …, description: …, <etc…> },
fr_CA: { name: …, description: …, <etc…> },
de_DE: …,
<… and so on for other locales …>
}
Correspondance incorrecte pour un modèle
d'accès
Requêtes d'application réelles :
db.catalog.find( { _id: 375 }, { en_US: true } );
db.catalog.find( { _id: 375 }, { fr_FR: true } );
db.catalog.find( { _id: 375 }, { de_DE: true } );
… et ainsi de suite pour les autres
paramètres régionaux
Utilisation insuffisante des ressources
Les données en
ROUGE sont en cours
d'utilisation. Les
données en BLEU
occupent de la
mémoire, mais ne sont
pas sollicitées.
{
_id: 375,
en_US: { name: …, description: …, <etc…> },
en_GB: { name: …, description: …, <etc…> },
fr_FR: { name: …, description: …, <etc…> },
fr_CA: { name: …, description: …, <etc…> },
de_DE: …,
de_CH: …,
<… and so on for other locales …>
}
{
_id: 42,
en_US: { name: …, description: …, <etc…> },
en_GB: { name: …, description: …, <etc…> },
fr_FR: { name: …, description: …, <etc…> },
fr_CA: { name: …, description: …, <etc…> },
de_DE: …,
de_CH: …,
<… and so on for other locales …>
}
Conséquences de la nouvelle conception de
schéma
• Les requêtes ont provoqué une surcharge
de mémoire minime
• x20, car de nombreux produits consomment
simultanément de la RAM
• Réduction de l'utilisation des E/S du disque
• Réduction de la latence de l'application{
_id: "375-en_GB",
name: …,
description: …,
<… the rest of the document …>
}
Modèles de conception de schéma
• Modèle : quantités de pré-calcul
intéressantes, idéalement avec chaque
opération d'écriture
• Modèle : placement d'éléments non liés
dans différentes collections pour exploiter
l'indexation
• Modèle à ne pas suivre : ajouter
constamment des tableaux
• Modèle à ne pas suivre : importer des
schémas relationnels directement dans
MongoDB
Ressources pour la conception de schémas
• En savoir plus sur la
modélisation des données, à
14 h à l'auditorium Robertston 1
(en anglais)
• Série de billets de blog, « 6
règles empiriques » (en anglais)
– Partie 1 : http://goo.gl/TFJ3dr
– Partie 2 : http://goo.gl/qTdGhP
– Partie 3 : http://goo.gl/JFO1pI
• Webinaires, formations, conseils,
etc.
Conseils d'optimisation : Indexation
Index par arbre-B
• Références structurées en arbre vers vos
documents
• Premier facteur de performance réglable
• L'indexation et la conception de schémas
vont de pair
Présentation des erreurs d'indexation
courantes et des solutions pour les résoudre
• Échec du développement des index requis
– Exécutez .explain(), examinez attentivement le journal de
la requête, mtools, collection system.profile
• Développement d'index superflus
– Discutez avec les développeurs de votre application à
propos de son utilisation
• Exécution des requêtes ad hoc en environnement de
production
– Utilisez un environnement de simulation, utilisez des
membres secondaires
Fichiers journaux mongod
Sun Jun 29 06:35:37.646 [conn2]
query test.docs query: {
parent.company: "22794",
parent.employeeId: "83881" }
ntoreturn:1 ntoskip:0
nscanned:806381 keyUpdates:0
numYields: 5 locks(micros)
r:2145254 nreturned:0 reslen:20
1156ms
mtools
• http://github.com/rueckstiess/mtools
• Analyse du fichier journal pour examiner les
requêtes aux performances faibles
– Découvrir les requêtes dont la durée dépasse
1 000 ms entre 6 h et 18 h :
– mlogfilter mongodb.log --from 06:00 --to
18:00 --slow 1000 > mongodb-filtered.log
Stratégies d'indexation
• Créez des index pouvant prendre en charge vos requêtes.
• Créez des index hautement sélectifs
• Éliminez les index en double en utilisant des index composés
– db.collection.ensureIndex({A:1, B:1, C:1})
– permet aux requêtes d'utiliser le préfixe situé le plus à
gauche
• Organisez les colonnes d'index pour prendre en charge les
analyses et les tris
• Créez des index prenant en charge les requêtes traitées
• Empêchez les analyses de collections dans des
environnements de pré-production
db.getSiblingDB("admin").runCommand( {
setParameter: 1, notablescan: 1 } )
Conseils d'optimisation : Surveillance
FAITES-LE
IMMÉDIATEMENT
EN PRÉ-PROD/STRESS
MongoDB Management Services (MMS)
Sauvegarde
Surveillance
Automatisation
MMS : Indicateurs de base de données
Configuration de la surveillance MMS
Version Cloud de MMS
1. Rendez-vous sur
http://mms.mongodb.com
2. Créez un compte
3. Installez un agent dans votre centre
de données
4. Ajoutez des hôtes à partir de
l'interface Web
5. Et voilà !
Moteur de stockage WiredTiger
Performances multipliées de 7 à 10 fois,
économie de 50 à 80 % sur l'espace de stockage
Présentation du moteur de
stockage WiredTiger
• Modèle de données, langage de
requête, opérations identiques
• Amélioration des performances
d'écriture en raison du contrôle
des accès simultanés au niveau
du document
• Économies de stockage en raison
d'une compression native
• Rétrocompatible à 100%
• Mise à niveau sans temps d'arrêt
MongoDB 3.0MongoDB 2.6
Performances
Montée en charge verticale
Facteurs :
– RAM
– Disque
– CPU
– Réseau
Nous sommes ici pour vous soutenir
Primaire
Secondaire
Secondaire
Jeu de réplicas Primaire
Secondaire
Secondaire
Jeu de réplicas
Le jeu de travail dépasse la mémoire
physique
Exemple concret
• Modifications d'état pour des entités de
l'entreprise
• Modifications d'état dans des lots
– parfois, 10 % des entités sont mises à
jour
– parfois, 100 % sont mises à jour
Architecture initiale
Cluster partitionné, 4 partitions soutenues par un
disque rotatif
Application / mongos
mongod
Montée en charge horizontale
L'évolution rapide d'une entreprise entraîne
des partitionnements supplémentaires
Application / mongos
…16 partitionnements supplémentaires…
mongod
Montée en charge verticale
Montée en charge des E/S par seconde avec des
disques SSD
Application / mongos
mongod SSD
Avant d'ajouter du matériel...
• Vérifiez que vous résolvez le bon problème de montée en
charge
• Résolvez d'abord les problèmes touchant le schéma et l'index
– les problèmes de schéma et d'index peuvent ressembler à
des problèmes de matériel
• Réglez le système d'exploitation
– Planificateur ulimits, swap, NUMA, NOOP avec hyperviseurs
• Réglez le sous-système d'E/S
– ext4 ou XFS par rapport à SAN, RAID10, readahead, noatime
• Consultez la page « Notes de production » de MongoDB
• Tenez compte des avertissements au démarrage du fichier
journal
Montée en charge horizontale
Présentation du partitionnement
Primaire
Secondaire
Secondaire
Partition 1
Primaire
Secondaire
Secondaire
Partition 2
Primaire
Secondaire
Secondaire
Partition 3
Primaire
Secondaire
Secondaire
Partition N
…
Routeur de
requête
Routeur de
requête
Routeur de
requête
……
Pilote
Application
Partitionnement par plage
mongod
Scalabilité de lecture/écriture
Plage de clés
0...100
Partitionnement par plage
Scalabilité de lecture/écriture
mongod mongod
Plage de clés
0...50
Plage de clés
51...100
Partitionnement
mongod mongod mongod mongod
Plage de clés
0...25
Plage de clés
26...50
Plage de clés
51...75
Plage de clés
76... 100
Scalabilité de lecture/écriture
Caractéristiques d'une clé de partition
• Une clé de partition adéquate a :
– une cardinalité suffisante
– des écritures distribuées
– des lectures ciblées (« isolement des requêtes »)
• Si possible, la clé de partition doit être dans chaque
requête
– sinon, procédez par ventilation/regroupement
• Il est important de choisir une clé de partition
adéquate.
– Elle a une incidence sur les performances et la
scalabilité.
– Le fait de la changer ultérieurement s'avère
coûteux.
Attention aux clés de partition ascendantes
• L'augmentation régulière des valeurs d'une clé de
partition peut entraîner des « points sensibles »
lors des insertions
• Exemples : horodatages, _id
Partition
1
mongos
Partition
2
Partition
3
Partition
N
[ ISODate(…), $maxKey )
Procéder à la montée en charge d'une
équipe opérationnelle
MongoDB Management Service (MMS)
Montée en
charge simplifiée
Respect des
accords sur les
niveaux de
service (ANS)
Automatisation
de vos meilleures
pratiques
Réduction des
frais de gestion
Sans MMS
Exemple de déploiement : 12 serveurs
Installation et configuration
Plus de 150 étapes
…Gestion des erreurs, limitation, alertes
Montée en charge, déplacement des serveurs,
redimensionnement du journal des opérations
(oplog), etc.
De 10 à plus de 180 étapes
Mises à niveau vers une version supérieure ou
antérieure
Plus de 100 étapes
Avec MMS
Les tâches courantes sont effectuées en
quelques minutes
• Déploiement : n'importe quelle taille, pour la plupart des
topologies
• Mise à niveau vers une version supérieure/antérieure :
sans temps d'arrêt
• Montée en charge : ajout/suppression de partitions ou de
réplicas sans temps d'arrêt
• Redimensionnement du journal des opérations (Oplog) :
sans temps d'arrêt
• Spécification des utilisateurs, des rôles et des rôles
personnalisés
• Provisionnement d'instances AWS et optimisation pour
MongoDB
MongoDB à l'échelle
250 M de
fluctuations/seco
nde
Plus
de 300 000 opér
ations/seconde
Plus
de 500 000 opér
ations/seconde
Agence fédérale
Performances
1 400 serveurs
Plus de
1 000 serveurs
Plus de
250 serveurs
Entreprise de
loisirs
Cluster
Pétaoctets
Dizaines de milliards
d'objets
13 milliards de
documents
Données
Société Internet
asiatique
Réussir une montée en charge avec MongoDB

Contenu connexe

Tendances

Chapitre 2 hadoop
Chapitre 2 hadoopChapitre 2 hadoop
Chapitre 2 hadoop
Mouna Torjmen
 
Cours Big Data Chap4 - Spark
Cours Big Data Chap4 - SparkCours Big Data Chap4 - Spark
Cours Big Data Chap4 - Spark
Amal Abid
 
BigData_TP4 : Cassandra
BigData_TP4 : CassandraBigData_TP4 : Cassandra
BigData_TP4 : Cassandra
Lilia Sfaxi
 
BigData_Chp3: Data Processing
BigData_Chp3: Data ProcessingBigData_Chp3: Data Processing
BigData_Chp3: Data Processing
Lilia Sfaxi
 
Introduction à la big data V2
Introduction à la big data V2Introduction à la big data V2
Introduction à la big data V2
Mehdi TAZI
 
Hadoop Hbase - Introduction
Hadoop Hbase - IntroductionHadoop Hbase - Introduction
Hadoop Hbase - Introduction
Blandine Larbret
 
BigData_Chp2: Hadoop & Map-Reduce
BigData_Chp2: Hadoop & Map-ReduceBigData_Chp2: Hadoop & Map-Reduce
BigData_Chp2: Hadoop & Map-Reduce
Lilia Sfaxi
 
Une introduction à MapReduce
Une introduction à MapReduceUne introduction à MapReduce
Une introduction à MapReduce
Modern Data Stack France
 
Big Data, Hadoop & Spark
Big Data, Hadoop & SparkBig Data, Hadoop & Spark
Big Data, Hadoop & Spark
Alexia Audevart
 
Hive ppt (1)
Hive ppt (1)Hive ppt (1)
Hive ppt (1)
marwa baich
 
Cours Big Data Chap6
Cours Big Data Chap6Cours Big Data Chap6
Cours Big Data Chap6
Amal Abid
 
Cours Big Data Chap2
Cours Big Data Chap2Cours Big Data Chap2
Cours Big Data Chap2
Amal Abid
 
Chapitre1 introduction
Chapitre1 introductionChapitre1 introduction
Chapitre1 introduction
Mouna Torjmen
 
BigData_Chp4: NOSQL
BigData_Chp4: NOSQLBigData_Chp4: NOSQL
BigData_Chp4: NOSQL
Lilia Sfaxi
 
noSQL
noSQLnoSQL
noSQL
Klee Group
 
BigData_TP2: Design Patterns dans Hadoop
BigData_TP2: Design Patterns dans HadoopBigData_TP2: Design Patterns dans Hadoop
BigData_TP2: Design Patterns dans Hadoop
Lilia Sfaxi
 
BigData_TP1: Initiation à Hadoop et Map-Reduce
BigData_TP1: Initiation à Hadoop et Map-ReduceBigData_TP1: Initiation à Hadoop et Map-Reduce
BigData_TP1: Initiation à Hadoop et Map-Reduce
Lilia Sfaxi
 
Chapitre i-intro
Chapitre i-introChapitre i-intro
Chapitre i-intro
WaelKhemakhem
 
Technologies pour le Big Data
Technologies pour le Big DataTechnologies pour le Big Data
Technologies pour le Big Data
Minyar Sassi Hidri
 
Cours Big Data Chap5
Cours Big Data Chap5Cours Big Data Chap5
Cours Big Data Chap5
Amal Abid
 

Tendances (20)

Chapitre 2 hadoop
Chapitre 2 hadoopChapitre 2 hadoop
Chapitre 2 hadoop
 
Cours Big Data Chap4 - Spark
Cours Big Data Chap4 - SparkCours Big Data Chap4 - Spark
Cours Big Data Chap4 - Spark
 
BigData_TP4 : Cassandra
BigData_TP4 : CassandraBigData_TP4 : Cassandra
BigData_TP4 : Cassandra
 
BigData_Chp3: Data Processing
BigData_Chp3: Data ProcessingBigData_Chp3: Data Processing
BigData_Chp3: Data Processing
 
Introduction à la big data V2
Introduction à la big data V2Introduction à la big data V2
Introduction à la big data V2
 
Hadoop Hbase - Introduction
Hadoop Hbase - IntroductionHadoop Hbase - Introduction
Hadoop Hbase - Introduction
 
BigData_Chp2: Hadoop & Map-Reduce
BigData_Chp2: Hadoop & Map-ReduceBigData_Chp2: Hadoop & Map-Reduce
BigData_Chp2: Hadoop & Map-Reduce
 
Une introduction à MapReduce
Une introduction à MapReduceUne introduction à MapReduce
Une introduction à MapReduce
 
Big Data, Hadoop & Spark
Big Data, Hadoop & SparkBig Data, Hadoop & Spark
Big Data, Hadoop & Spark
 
Hive ppt (1)
Hive ppt (1)Hive ppt (1)
Hive ppt (1)
 
Cours Big Data Chap6
Cours Big Data Chap6Cours Big Data Chap6
Cours Big Data Chap6
 
Cours Big Data Chap2
Cours Big Data Chap2Cours Big Data Chap2
Cours Big Data Chap2
 
Chapitre1 introduction
Chapitre1 introductionChapitre1 introduction
Chapitre1 introduction
 
BigData_Chp4: NOSQL
BigData_Chp4: NOSQLBigData_Chp4: NOSQL
BigData_Chp4: NOSQL
 
noSQL
noSQLnoSQL
noSQL
 
BigData_TP2: Design Patterns dans Hadoop
BigData_TP2: Design Patterns dans HadoopBigData_TP2: Design Patterns dans Hadoop
BigData_TP2: Design Patterns dans Hadoop
 
BigData_TP1: Initiation à Hadoop et Map-Reduce
BigData_TP1: Initiation à Hadoop et Map-ReduceBigData_TP1: Initiation à Hadoop et Map-Reduce
BigData_TP1: Initiation à Hadoop et Map-Reduce
 
Chapitre i-intro
Chapitre i-introChapitre i-intro
Chapitre i-intro
 
Technologies pour le Big Data
Technologies pour le Big DataTechnologies pour le Big Data
Technologies pour le Big Data
 
Cours Big Data Chap5
Cours Big Data Chap5Cours Big Data Chap5
Cours Big Data Chap5
 

Similaire à Réussir une montée en charge avec MongoDB

Azure Camp 9 Décembre - slides session développeurs webmedia
Azure Camp 9 Décembre - slides session développeurs webmediaAzure Camp 9 Décembre - slides session développeurs webmedia
Azure Camp 9 Décembre - slides session développeurs webmedia
Microsoft
 
Exchange 2013 Bonnes pratiques
Exchange 2013 Bonnes pratiques Exchange 2013 Bonnes pratiques
Exchange 2013 Bonnes pratiques
Microsoft Technet France
 
IBM FlashSystem : Les bonnes raisons de passer au Flash
IBM FlashSystem : Les bonnes raisons de passer au Flash IBM FlashSystem : Les bonnes raisons de passer au Flash
IBM FlashSystem : Les bonnes raisons de passer au Flash
Solutions IT et Business
 
BBL - Monitoring - kyriba
BBL - Monitoring - kyribaBBL - Monitoring - kyriba
BBL - Monitoring - kyriba
Olivier BAZOUD
 
JBoss clustering et tuning (lab 3/3)
JBoss clustering et tuning (lab 3/3)JBoss clustering et tuning (lab 3/3)
JBoss clustering et tuning (lab 3/3)
Fourat Zouari
 
Capacity Planning : Pratiques et outils pour regarder la foudre tomber sans p...
Capacity Planning : Pratiques et outils pour regarder la foudre tomber sans p...Capacity Planning : Pratiques et outils pour regarder la foudre tomber sans p...
Capacity Planning : Pratiques et outils pour regarder la foudre tomber sans p...
Normandy JUG
 
Tout ce que le getting started MongoDB ne vous dira pas
Tout ce que le getting started MongoDB ne vous dira pasTout ce que le getting started MongoDB ne vous dira pas
Tout ce que le getting started MongoDB ne vous dira pas
Bruno Bonnin
 
Tout ce que le getting started mongo db ne vous dira pas
Tout ce que le getting started mongo db ne vous dira pasTout ce que le getting started mongo db ne vous dira pas
Tout ce que le getting started mongo db ne vous dira pas
Pierre-Alban DEWITTE
 
Support NodeJS avec TypeScript Express MongoDB
Support NodeJS avec TypeScript Express MongoDBSupport NodeJS avec TypeScript Express MongoDB
Support NodeJS avec TypeScript Express MongoDB
ENSET, Université Hassan II Casablanca
 
Les nouveautés stockage dans Windows Server 2012 R2
Les nouveautés stockage dans Windows Server 2012 R2Les nouveautés stockage dans Windows Server 2012 R2
Les nouveautés stockage dans Windows Server 2012 R2
Georgeot Cédric
 
JSS2013 : Haute disponibilité
JSS2013 : Haute disponibilitéJSS2013 : Haute disponibilité
JSS2013 : Haute disponibilité
Christophe Laporte
 
MongoDB 3.6 Customer Deck pptx.pptx
MongoDB 3.6 Customer Deck pptx.pptxMongoDB 3.6 Customer Deck pptx.pptx
MongoDB 3.6 Customer Deck pptx.pptx
MongoDB
 
Les nouveautés de MongoDB 3.6
Les nouveautés de MongoDB 3.6Les nouveautés de MongoDB 3.6
Les nouveautés de MongoDB 3.6
MongoDB
 
MasterClass SQL : Comment avoir de bonnes performances avec SQL Server ?
MasterClass SQL : Comment avoir de bonnes performances avec SQL Server ?MasterClass SQL : Comment avoir de bonnes performances avec SQL Server ?
MasterClass SQL : Comment avoir de bonnes performances avec SQL Server ?
Benoit Fillon
 
Spark-adabra, Comment Construire un DATALAKE ! (Devoxx 2017)
Spark-adabra, Comment Construire un DATALAKE ! (Devoxx 2017) Spark-adabra, Comment Construire un DATALAKE ! (Devoxx 2017)
Spark-adabra, Comment Construire un DATALAKE ! (Devoxx 2017)
univalence
 
Morning tech #2 - Démarche performance slides
Morning tech #2 - Démarche performance slidesMorning tech #2 - Démarche performance slides
Morning tech #2 - Démarche performance slides
Oxalide
 
Oxalide Morning tech #2 - démarche performance
Oxalide Morning tech #2 - démarche performanceOxalide Morning tech #2 - démarche performance
Oxalide Morning tech #2 - démarche performance
Ludovic Piot
 
Poitou Charentes JUG - Traçabilité dans une architecture distribuée avec Node...
Poitou Charentes JUG - Traçabilité dans une architecture distribuée avec Node...Poitou Charentes JUG - Traçabilité dans une architecture distribuée avec Node...
Poitou Charentes JUG - Traçabilité dans une architecture distribuée avec Node...
Sébastien Prunier
 
Drupal7 - Bonnes Pratiques (Partie 1)
Drupal7 - Bonnes Pratiques (Partie 1)Drupal7 - Bonnes Pratiques (Partie 1)
Drupal7 - Bonnes Pratiques (Partie 1)
Alexandre Marie
 

Similaire à Réussir une montée en charge avec MongoDB (20)

Azure Camp 9 Décembre - slides session développeurs webmedia
Azure Camp 9 Décembre - slides session développeurs webmediaAzure Camp 9 Décembre - slides session développeurs webmedia
Azure Camp 9 Décembre - slides session développeurs webmedia
 
Wygday 2008
Wygday 2008Wygday 2008
Wygday 2008
 
Exchange 2013 Bonnes pratiques
Exchange 2013 Bonnes pratiques Exchange 2013 Bonnes pratiques
Exchange 2013 Bonnes pratiques
 
IBM FlashSystem : Les bonnes raisons de passer au Flash
IBM FlashSystem : Les bonnes raisons de passer au Flash IBM FlashSystem : Les bonnes raisons de passer au Flash
IBM FlashSystem : Les bonnes raisons de passer au Flash
 
BBL - Monitoring - kyriba
BBL - Monitoring - kyribaBBL - Monitoring - kyriba
BBL - Monitoring - kyriba
 
JBoss clustering et tuning (lab 3/3)
JBoss clustering et tuning (lab 3/3)JBoss clustering et tuning (lab 3/3)
JBoss clustering et tuning (lab 3/3)
 
Capacity Planning : Pratiques et outils pour regarder la foudre tomber sans p...
Capacity Planning : Pratiques et outils pour regarder la foudre tomber sans p...Capacity Planning : Pratiques et outils pour regarder la foudre tomber sans p...
Capacity Planning : Pratiques et outils pour regarder la foudre tomber sans p...
 
Tout ce que le getting started MongoDB ne vous dira pas
Tout ce que le getting started MongoDB ne vous dira pasTout ce que le getting started MongoDB ne vous dira pas
Tout ce que le getting started MongoDB ne vous dira pas
 
Tout ce que le getting started mongo db ne vous dira pas
Tout ce que le getting started mongo db ne vous dira pasTout ce que le getting started mongo db ne vous dira pas
Tout ce que le getting started mongo db ne vous dira pas
 
Support NodeJS avec TypeScript Express MongoDB
Support NodeJS avec TypeScript Express MongoDBSupport NodeJS avec TypeScript Express MongoDB
Support NodeJS avec TypeScript Express MongoDB
 
Les nouveautés stockage dans Windows Server 2012 R2
Les nouveautés stockage dans Windows Server 2012 R2Les nouveautés stockage dans Windows Server 2012 R2
Les nouveautés stockage dans Windows Server 2012 R2
 
JSS2013 : Haute disponibilité
JSS2013 : Haute disponibilitéJSS2013 : Haute disponibilité
JSS2013 : Haute disponibilité
 
MongoDB 3.6 Customer Deck pptx.pptx
MongoDB 3.6 Customer Deck pptx.pptxMongoDB 3.6 Customer Deck pptx.pptx
MongoDB 3.6 Customer Deck pptx.pptx
 
Les nouveautés de MongoDB 3.6
Les nouveautés de MongoDB 3.6Les nouveautés de MongoDB 3.6
Les nouveautés de MongoDB 3.6
 
MasterClass SQL : Comment avoir de bonnes performances avec SQL Server ?
MasterClass SQL : Comment avoir de bonnes performances avec SQL Server ?MasterClass SQL : Comment avoir de bonnes performances avec SQL Server ?
MasterClass SQL : Comment avoir de bonnes performances avec SQL Server ?
 
Spark-adabra, Comment Construire un DATALAKE ! (Devoxx 2017)
Spark-adabra, Comment Construire un DATALAKE ! (Devoxx 2017) Spark-adabra, Comment Construire un DATALAKE ! (Devoxx 2017)
Spark-adabra, Comment Construire un DATALAKE ! (Devoxx 2017)
 
Morning tech #2 - Démarche performance slides
Morning tech #2 - Démarche performance slidesMorning tech #2 - Démarche performance slides
Morning tech #2 - Démarche performance slides
 
Oxalide Morning tech #2 - démarche performance
Oxalide Morning tech #2 - démarche performanceOxalide Morning tech #2 - démarche performance
Oxalide Morning tech #2 - démarche performance
 
Poitou Charentes JUG - Traçabilité dans une architecture distribuée avec Node...
Poitou Charentes JUG - Traçabilité dans une architecture distribuée avec Node...Poitou Charentes JUG - Traçabilité dans une architecture distribuée avec Node...
Poitou Charentes JUG - Traçabilité dans une architecture distribuée avec Node...
 
Drupal7 - Bonnes Pratiques (Partie 1)
Drupal7 - Bonnes Pratiques (Partie 1)Drupal7 - Bonnes Pratiques (Partie 1)
Drupal7 - Bonnes Pratiques (Partie 1)
 

Plus 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 Atlas
MongoDB
 
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 MongoDB
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
 
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
 
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
 
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.2
MongoDB
 
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 Mindset
MongoDB
 
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
 
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 Dive
MongoDB
 
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
 
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
 

Plus 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...
 

Réussir une montée en charge avec MongoDB

  • 2. Réussir une montée en charge avec MongoDB Thomas Boyd Directeur de l'équipe d'architecture de solutions chez MongoDB
  • 3. Montée en charge avec MongoDB 0 5,000 10,000 15,000 20,000 25,000 30,000 1 2 3 4 5 6 7 8 Opérations/seconde Nombre de nœuds Débit du cluster MongoDB
  • 4. Sommaire • Conseils d'optimisation – Conception de schéma – Index – Surveillance – WiredTiger • Montée en charge verticale • Montée en charge horizontale • Procéder à la montée en charge d'une équipe opérationnelle
  • 5. Conseils d'optimisation : Conception de schéma
  • 6. Modèle de document • Correspondance d'objets d'application • Flexibilité • Performances élevées { "customer_id" : 123, "first_name" : ”John", "last_name" : "Smith", "address" : { "street": "123 Main Street", "city": "Houston", "state": "TX", "zip_code": "77027" } policies: [ { policy_number : 13, description: “short term”, deductible: 500 }, { policy_number : 14, description: “dental”, visits: […] } ] }
  • 7. Importance de la conception de schémas • Très différente de la conception de schémas RDBMS • Schéma MongoDB : – dénormaliser les données – créer un schéma (potentiellement complexe) en ayant une connaissance préalable (et non une simple prévision) de vos modèles de requête réels – écrire des requêtes simples
  • 8. Exemple concret Catalogue de produits pour un détaillant en activité dans 20 pays { _id: 375, en_US: { name: …, description: …, <etc…> }, en_GB: { name: …, description: …, <etc…> }, fr_FR: { name: …, description: …, <etc…> }, fr_CA: { name: …, description: …, <etc…> }, de_DE: …, <… and so on for other locales …> }
  • 9. Correspondance incorrecte pour un modèle d'accès Requêtes d'application réelles : db.catalog.find( { _id: 375 }, { en_US: true } ); db.catalog.find( { _id: 375 }, { fr_FR: true } ); db.catalog.find( { _id: 375 }, { de_DE: true } ); … et ainsi de suite pour les autres paramètres régionaux
  • 10. Utilisation insuffisante des ressources Les données en ROUGE sont en cours d'utilisation. Les données en BLEU occupent de la mémoire, mais ne sont pas sollicitées. { _id: 375, en_US: { name: …, description: …, <etc…> }, en_GB: { name: …, description: …, <etc…> }, fr_FR: { name: …, description: …, <etc…> }, fr_CA: { name: …, description: …, <etc…> }, de_DE: …, de_CH: …, <… and so on for other locales …> } { _id: 42, en_US: { name: …, description: …, <etc…> }, en_GB: { name: …, description: …, <etc…> }, fr_FR: { name: …, description: …, <etc…> }, fr_CA: { name: …, description: …, <etc…> }, de_DE: …, de_CH: …, <… and so on for other locales …> }
  • 11. Conséquences de la nouvelle conception de schéma • Les requêtes ont provoqué une surcharge de mémoire minime • x20, car de nombreux produits consomment simultanément de la RAM • Réduction de l'utilisation des E/S du disque • Réduction de la latence de l'application{ _id: "375-en_GB", name: …, description: …, <… the rest of the document …> }
  • 12. Modèles de conception de schéma • Modèle : quantités de pré-calcul intéressantes, idéalement avec chaque opération d'écriture • Modèle : placement d'éléments non liés dans différentes collections pour exploiter l'indexation • Modèle à ne pas suivre : ajouter constamment des tableaux • Modèle à ne pas suivre : importer des schémas relationnels directement dans MongoDB
  • 13. Ressources pour la conception de schémas • En savoir plus sur la modélisation des données, à 14 h à l'auditorium Robertston 1 (en anglais) • Série de billets de blog, « 6 règles empiriques » (en anglais) – Partie 1 : http://goo.gl/TFJ3dr – Partie 2 : http://goo.gl/qTdGhP – Partie 3 : http://goo.gl/JFO1pI • Webinaires, formations, conseils, etc.
  • 15. Index par arbre-B • Références structurées en arbre vers vos documents • Premier facteur de performance réglable • L'indexation et la conception de schémas vont de pair
  • 16. Présentation des erreurs d'indexation courantes et des solutions pour les résoudre • Échec du développement des index requis – Exécutez .explain(), examinez attentivement le journal de la requête, mtools, collection system.profile • Développement d'index superflus – Discutez avec les développeurs de votre application à propos de son utilisation • Exécution des requêtes ad hoc en environnement de production – Utilisez un environnement de simulation, utilisez des membres secondaires
  • 17. Fichiers journaux mongod Sun Jun 29 06:35:37.646 [conn2] query test.docs query: { parent.company: "22794", parent.employeeId: "83881" } ntoreturn:1 ntoskip:0 nscanned:806381 keyUpdates:0 numYields: 5 locks(micros) r:2145254 nreturned:0 reslen:20 1156ms
  • 18. mtools • http://github.com/rueckstiess/mtools • Analyse du fichier journal pour examiner les requêtes aux performances faibles – Découvrir les requêtes dont la durée dépasse 1 000 ms entre 6 h et 18 h : – mlogfilter mongodb.log --from 06:00 --to 18:00 --slow 1000 > mongodb-filtered.log
  • 19. Stratégies d'indexation • Créez des index pouvant prendre en charge vos requêtes. • Créez des index hautement sélectifs • Éliminez les index en double en utilisant des index composés – db.collection.ensureIndex({A:1, B:1, C:1}) – permet aux requêtes d'utiliser le préfixe situé le plus à gauche • Organisez les colonnes d'index pour prendre en charge les analyses et les tris • Créez des index prenant en charge les requêtes traitées • Empêchez les analyses de collections dans des environnements de pré-production db.getSiblingDB("admin").runCommand( { setParameter: 1, notablescan: 1 } )
  • 22. MongoDB Management Services (MMS) Sauvegarde Surveillance Automatisation
  • 23. MMS : Indicateurs de base de données
  • 24. Configuration de la surveillance MMS
  • 25. Version Cloud de MMS 1. Rendez-vous sur http://mms.mongodb.com 2. Créez un compte 3. Installez un agent dans votre centre de données 4. Ajoutez des hôtes à partir de l'interface Web 5. Et voilà !
  • 26. Moteur de stockage WiredTiger
  • 27. Performances multipliées de 7 à 10 fois, économie de 50 à 80 % sur l'espace de stockage Présentation du moteur de stockage WiredTiger • Modèle de données, langage de requête, opérations identiques • Amélioration des performances d'écriture en raison du contrôle des accès simultanés au niveau du document • Économies de stockage en raison d'une compression native • Rétrocompatible à 100% • Mise à niveau sans temps d'arrêt MongoDB 3.0MongoDB 2.6 Performances
  • 28. Montée en charge verticale
  • 29. Facteurs : – RAM – Disque – CPU – Réseau Nous sommes ici pour vous soutenir Primaire Secondaire Secondaire Jeu de réplicas Primaire Secondaire Secondaire Jeu de réplicas
  • 30. Le jeu de travail dépasse la mémoire physique
  • 31. Exemple concret • Modifications d'état pour des entités de l'entreprise • Modifications d'état dans des lots – parfois, 10 % des entités sont mises à jour – parfois, 100 % sont mises à jour
  • 32. Architecture initiale Cluster partitionné, 4 partitions soutenues par un disque rotatif Application / mongos mongod
  • 33. Montée en charge horizontale L'évolution rapide d'une entreprise entraîne des partitionnements supplémentaires Application / mongos …16 partitionnements supplémentaires… mongod
  • 34. Montée en charge verticale Montée en charge des E/S par seconde avec des disques SSD Application / mongos mongod SSD
  • 35. Avant d'ajouter du matériel... • Vérifiez que vous résolvez le bon problème de montée en charge • Résolvez d'abord les problèmes touchant le schéma et l'index – les problèmes de schéma et d'index peuvent ressembler à des problèmes de matériel • Réglez le système d'exploitation – Planificateur ulimits, swap, NUMA, NOOP avec hyperviseurs • Réglez le sous-système d'E/S – ext4 ou XFS par rapport à SAN, RAID10, readahead, noatime • Consultez la page « Notes de production » de MongoDB • Tenez compte des avertissements au démarrage du fichier journal
  • 36. Montée en charge horizontale
  • 37. Présentation du partitionnement Primaire Secondaire Secondaire Partition 1 Primaire Secondaire Secondaire Partition 2 Primaire Secondaire Secondaire Partition 3 Primaire Secondaire Secondaire Partition N … Routeur de requête Routeur de requête Routeur de requête …… Pilote Application
  • 38. Partitionnement par plage mongod Scalabilité de lecture/écriture Plage de clés 0...100
  • 39. Partitionnement par plage Scalabilité de lecture/écriture mongod mongod Plage de clés 0...50 Plage de clés 51...100
  • 40. Partitionnement mongod mongod mongod mongod Plage de clés 0...25 Plage de clés 26...50 Plage de clés 51...75 Plage de clés 76... 100 Scalabilité de lecture/écriture
  • 41. Caractéristiques d'une clé de partition • Une clé de partition adéquate a : – une cardinalité suffisante – des écritures distribuées – des lectures ciblées (« isolement des requêtes ») • Si possible, la clé de partition doit être dans chaque requête – sinon, procédez par ventilation/regroupement • Il est important de choisir une clé de partition adéquate. – Elle a une incidence sur les performances et la scalabilité. – Le fait de la changer ultérieurement s'avère coûteux.
  • 42. Attention aux clés de partition ascendantes • L'augmentation régulière des valeurs d'une clé de partition peut entraîner des « points sensibles » lors des insertions • Exemples : horodatages, _id Partition 1 mongos Partition 2 Partition 3 Partition N [ ISODate(…), $maxKey )
  • 43. Procéder à la montée en charge d'une équipe opérationnelle
  • 44. MongoDB Management Service (MMS) Montée en charge simplifiée Respect des accords sur les niveaux de service (ANS) Automatisation de vos meilleures pratiques Réduction des frais de gestion
  • 45. Sans MMS Exemple de déploiement : 12 serveurs Installation et configuration Plus de 150 étapes …Gestion des erreurs, limitation, alertes Montée en charge, déplacement des serveurs, redimensionnement du journal des opérations (oplog), etc. De 10 à plus de 180 étapes Mises à niveau vers une version supérieure ou antérieure Plus de 100 étapes
  • 47. Les tâches courantes sont effectuées en quelques minutes • Déploiement : n'importe quelle taille, pour la plupart des topologies • Mise à niveau vers une version supérieure/antérieure : sans temps d'arrêt • Montée en charge : ajout/suppression de partitions ou de réplicas sans temps d'arrêt • Redimensionnement du journal des opérations (Oplog) : sans temps d'arrêt • Spécification des utilisateurs, des rôles et des rôles personnalisés • Provisionnement d'instances AWS et optimisation pour MongoDB
  • 48. MongoDB à l'échelle 250 M de fluctuations/seco nde Plus de 300 000 opér ations/seconde Plus de 500 000 opér ations/seconde Agence fédérale Performances 1 400 serveurs Plus de 1 000 serveurs Plus de 250 serveurs Entreprise de loisirs Cluster Pétaoctets Dizaines de milliards d'objets 13 milliards de documents Données Société Internet asiatique

Notes de l'éditeur

  1. MMS peut être très utile pour les [équipes des opérations]. Automatisation de vos meilleures pratiques. MMS s'appuie sur vos meilleures pratiques pour exécuter MongoDB et les automatise. Vous pouvez donc exécuter vos opérations tout comme les ingénieurs MongoDB l'auraient fait. En plus d'éviter des erreurs, cette fonctionnalité permet également de réduire les coûts de gestion. Vous n'avez pas besoin d'employer un script personnalisé ou une configuration spécifique. Vous pouvez réduire le temps consacré à l'exécution et à la gestion des tâches manuelles, car MMS s'occupe d'un grand nombre d'entre elles, vous permettant ainsi de vous concentrer sur d'autres tâches. Respectez les ANS. L'automatisation des tâches de gestion critique simplifie le respect de la disponibilité stipulée dans les ANS. Cela inclut la gestion des basculements, ainsi que celle des mises à niveau propagées sans temps d'arrêt. La montée en charge est simplifiée. Un simple clic vous suffit pour provisionner de nouveaux nœuds et systèmes.
  2. Il est bien évidemment possible d'effectuer toutes ces opérations sans MMS. La tâche est alors cependant fastidieuse. Il s'agit d'un travail manuel classique ou d'une création de script personnalisé. Dans les deux cas, cela prend du temps, requiert de nombreuses vérifications et introduit des risques d'erreurs.
  3. Pour en savoir plus : http://www.mongodb.com/mongodb-scale