Post on 14-Apr-2017
Code RemiForest40 gets you a 25% discount off the list price
Back to Basics 2016 : Webinar 1
Introduction à NoSQL
Remi ForestSenior Solution ArchitectMongoDBV1.0
Bienvenue !
5
Agenda
Date Time Webinar25-Mai-2016 11:00 CET Introduction à NoSQL09-Juin-2016 14:00 CET Votre première application MongoDB23-Juin-2016 14:00 CET Schema Design – Pensez Documents13-Jullet-2016 14:00 CET Advanced Indexing : Text et Geo-Spatial Indexes28-Juillet-2016 14:00 CET Introduction au Framework d’Aggregation01-Sept-2016 14:00 CET Déploiement en production
6
Agenda
• Pourquoi NoSQL• Les différents types de bases NoSQL• Vue d’ensemble de MongoDB• Durabilité / Disponibilité – MongoDB Replica Sets• Scalabilité – MongoDB Sharding• Q&A
7
Relational
Expressive Query Language& Secondary Indexes
Strong Consistency
Enterprise Management& Integrations
8
Le monde a changé
Données Risques Temps Budgets
9
NoSQL
Scalability& Performance
Always On,Global Deployments
FlexibilityExpressive Query Language& Secondary Indexes
Strong Consistency
Enterprise Management& Integrations
10
Nexus Architecture
Scalability& Performance
Always On,Global Deployments
FlexibilityExpressive Query Language& Secondary Indexes
Strong Consistency
Enterprise Management& Integrations
11
Les types de bases NoSQL
• Key/Value Stores• Column Stores• Graph Stores• Multi-model Databases• Document Stores
12
Bases clé / valeur
• Simple tableau associatif : 1 clé 1 valeur• Requêtes sur la clé primaire uniquement• Très rapides pour les requêtes simples• Pas adapté pour les “reverse lookups”
Key Value
12345 4567.3456787
12346 { addr1 : “The Grange”, addr2: “Dublin” }
12347 “top secret password”
12358 “Shopping basket value : 24560”
12787 12345
13
Revision : Bases relationnelles
• Données stockées par ligne (RDBMS traditionnelles, ie. MySQL)• Chaque lecture récupère une ligne entière• Les lectures nécessitant une ou deux colonnes ne sont pas
optimisées.ID Name Salary Start Date
1 Joe D $24000 1/Jun/1970
2 Peter J $28000 1/Feb/1972
3 Phil G $23000 1/Jan/1973
1 Joe D $24000 1/Jun/1970 2 Peter J $28000 1/Feb/1972 3 Phil G $23000 1/Jan/1973
14
Bases de données orientées colonnes
1 2 3
ID Name Salary Start Date
1 Joe D $24000 1/Jun/1970
2 Peter J $28000 1/Feb/1972
3 Phil G $23000 1/Jan/1973
Joe D Peter J Phil G $24000 $28000 $23000 1/Jun/1970 1/Feb/1972 1/Jan/1973
15
Quel est l’intérêt ?
• L’ensemble des données d’une colonne peut être récupéré de façon très efficace.
• La compression est bien meilleure• Les opérations de lectures récupèrent plus de données par accès• En cas de besoin de quelques colonnes, pas besoin de lire
l’ensemble des lignes.• MAIS:
– L’update et le delete sont très coûteux• Append only de préférence• Plus adapté à OLAP qu’à OLTP
16
Graph Stores
• Stocke des graphs (arrêtes et sommets)• Par exemple : réseau social• Conçu pour optimiser la traversée des graphs• Parfait pour représenter les connexions• Peut être implémenté dans un key/value store• Si le cas d’usage n’est pas “graph”, vous n’avez pas besoin d’une
base Graph.
17
Multi-Model Databases
• Combine plusieurs modèles d’accès / stockage• Souvent une base graph + “quelque chose d’autre”• Permet d’éviter d’avoir recours à plusieurs bases (complexe de
garantir la cohérence – “Polyglot Persistance”)• Derniers arrivés dans le monde NoSQL
18
Document Store• Documents != PDFs, Microsoft Word ou HTML• Structures hiérarchiques définies en JSON (Javascript Object Notation)
{ name : “Remi Forest”,title : “Senior Solution Architect”,Address : {
address1 : “Latin Hall”,address2 : “Golden Lane”,eircode : “D09 N623”,
}expertise: [ “MongoDB”, “Python”, “Javascript” ],employee_number : 320,location : [ 53.34, -6.26 ]
}
19
MongoDB Documents
{
name : “Remi Forest”,
title : “Senior Solution Architect”,
Address : {
address1 : “Latin Hall”,
address2 : “Golden Lane”,
eircode : “D09 N623”,
}
expertise: [ “MongoDB”, “Python”, “Javascript” ],
employee_number : 320,
location : [ 53.34, -6.26 ]
}
Strings
Nested Document
Array
Integer
Geo-spatial Coordinates
20
MongoDB comprend les documents JSON
• JSON database depuis le début• Stocke le JSON sous format binaire (BSON)• Efficace pour les transferts sur le réseau• MongoDB peut indexer n’importe quel partie du document• (Nous couvrirons ça plus tard)
21
Pourquoi des Documents?• Schema dynamique• Elimination de la couche Object/Relational Mapping• Dénormalisation des données pour améliorer la performance
22
Pourquoi des Documents?• Schema dynamique• Elimination de la couche Object/Relational Mapping• Dénormalisation des données pour améliorer la performance
23
Modèles de requètes
Rich Queries
• Quelle est la voiture de Paul• Qui avait une voiture entre 1970 et 1980
Geospatial • Qui possède une voiture dans les 5km autour de la place de la Concorde ?
Text Search • Quels sont les voitures avec des sièges en cuir ?
Aggregation • Quelle est la valeur moyenne des véhicules par département ?
Map Reduce
• Quelle est l’évolution des couleurs en fonction de l’année ? (est-ce que le rose est tendance en Chine ?)
24
Haute-disponibilité et durabilité – Replica Sets
SecondarySecondary
Primary
25
Replica Set Creation
SecondarySecondary
Primary
Heartbeat
26
Replica Set Node Failure
SecondarySecondary
Primary
No Heartbeat
27
Replica Set Recovery
SecondarySecondary
HeartbeatAnd Election
28
New Replica Set – 2 Nodes
SecondaryPrimary
HeartbeatAnd New Primary
29
Replica Set Repair
SecondaryPrimary
Secondary
Rejoin and resync
30
Replica Set Stable
SecondaryPrimary
Secondary
Heartbeat
31
Scalabilité horizontale – Sharding
Shard 1 Shard 2 Shard N
32
Scalabilité horizontale – Sharding
• La clé de sharding partitionne les données• MongoDB distribue automatiquement les donnée• Les shards peuvent être ajoutés à la volée• L’équilibrage se fait en tâche de fond• La clé de sharding est fixe• La clé permet de diriger les requêtes vers les shards appropriés• Une query sans la clé de sharding est envoyée à tous les shards
33
Scalabilité horizontale – ShardingMongoS MongoS
Shard 1 Shard 2 Shard N
Shard Key
34
Routage des requêtes
• Avec un cluster shardé, on utilise une couche de routage pour distribuer les requêtes.
• C’est effectué par le process MongoS (Mongo Shard Router)• C’est un process stateless• On peut en lancer autant que nécessaire• Typiquement un process par serveur d’application
35
En résumé
• Pourquoi NoSQL• Les différents types de bases NoSQL• Vue d’ensemble de MongoDB• Disponibilité / Durabilité – MongoDB Replica Sets• Scalabilité – MongoDB Sharding
36
Prochain Webinar – Votre première application MongoDB
• 9 Juin 2016 – 14:00 CET.• Inscrivez-vous !• Apprenez à construire votre première application MongoDB• Création des bases et des collections• Requêtes• Création d’indexes• Introduction aux critères de performance• Feedbacks : back-to-basics@mongodb.com
Q&A