Webinaire 1 de la série Retour aux fondamentaux : Introduction à NoSQL

38

Transcript of Webinaire 1 de la série Retour aux fondamentaux : Introduction à NoSQL

Page 1: Webinaire 1 de la série Retour aux fondamentaux : Introduction à NoSQL
Page 2: Webinaire 1 de la série Retour aux fondamentaux : Introduction à NoSQL

Code RemiForest40 gets you a 25% discount off the list price

Page 3: Webinaire 1 de la série Retour aux fondamentaux : Introduction à NoSQL

Back to Basics 2016 : Webinar 1

Introduction à NoSQL

Remi ForestSenior Solution ArchitectMongoDBV1.0

Page 4: Webinaire 1 de la série Retour aux fondamentaux : Introduction à NoSQL

Bienvenue !

Page 5: Webinaire 1 de la série Retour aux fondamentaux : Introduction à NoSQL

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

Page 6: Webinaire 1 de la série Retour aux fondamentaux : Introduction à NoSQL

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

Page 7: Webinaire 1 de la série Retour aux fondamentaux : Introduction à NoSQL

7

Relational

Expressive Query Language& Secondary Indexes

Strong Consistency

Enterprise Management& Integrations

Page 8: Webinaire 1 de la série Retour aux fondamentaux : Introduction à NoSQL

8

Le monde a changé

Données Risques Temps Budgets

Page 9: Webinaire 1 de la série Retour aux fondamentaux : Introduction à NoSQL

9

NoSQL

Scalability& Performance

Always On,Global Deployments

FlexibilityExpressive Query Language& Secondary Indexes

Strong Consistency

Enterprise Management& Integrations

Page 10: Webinaire 1 de la série Retour aux fondamentaux : Introduction à NoSQL

10

Nexus Architecture

Scalability& Performance

Always On,Global Deployments

FlexibilityExpressive Query Language& Secondary Indexes

Strong Consistency

Enterprise Management& Integrations

Page 11: Webinaire 1 de la série Retour aux fondamentaux : Introduction à NoSQL

11

Les types de bases NoSQL

• Key/Value Stores• Column Stores• Graph Stores• Multi-model Databases• Document Stores

Page 12: Webinaire 1 de la série Retour aux fondamentaux : Introduction à NoSQL

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

Page 13: Webinaire 1 de la série Retour aux fondamentaux : Introduction à NoSQL

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

Page 14: Webinaire 1 de la série Retour aux fondamentaux : Introduction à NoSQL

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

Page 15: Webinaire 1 de la série Retour aux fondamentaux : Introduction à NoSQL

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

Page 16: Webinaire 1 de la série Retour aux fondamentaux : Introduction à NoSQL

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.

Page 17: Webinaire 1 de la série Retour aux fondamentaux : Introduction à NoSQL

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

Page 18: Webinaire 1 de la série Retour aux fondamentaux : Introduction à 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 ]

}

Page 19: Webinaire 1 de la série Retour aux fondamentaux : Introduction à NoSQL

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

Page 20: Webinaire 1 de la série Retour aux fondamentaux : Introduction à NoSQL

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)

Page 21: Webinaire 1 de la série Retour aux fondamentaux : Introduction à NoSQL

21

Pourquoi des Documents?• Schema dynamique• Elimination de la couche Object/Relational Mapping• Dénormalisation des données pour améliorer la performance

Page 22: Webinaire 1 de la série Retour aux fondamentaux : Introduction à NoSQL

22

Pourquoi des Documents?• Schema dynamique• Elimination de la couche Object/Relational Mapping• Dénormalisation des données pour améliorer la performance

Page 23: Webinaire 1 de la série Retour aux fondamentaux : Introduction à NoSQL

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 ?)

Page 24: Webinaire 1 de la série Retour aux fondamentaux : Introduction à NoSQL

24

Haute-disponibilité et durabilité – Replica Sets

SecondarySecondary

Primary

Page 25: Webinaire 1 de la série Retour aux fondamentaux : Introduction à NoSQL

25

Replica Set Creation

SecondarySecondary

Primary

Heartbeat

Page 26: Webinaire 1 de la série Retour aux fondamentaux : Introduction à NoSQL

26

Replica Set Node Failure

SecondarySecondary

Primary

No Heartbeat

Page 27: Webinaire 1 de la série Retour aux fondamentaux : Introduction à NoSQL

27

Replica Set Recovery

SecondarySecondary

HeartbeatAnd Election

Page 28: Webinaire 1 de la série Retour aux fondamentaux : Introduction à NoSQL

28

New Replica Set – 2 Nodes

SecondaryPrimary

HeartbeatAnd New Primary

Page 29: Webinaire 1 de la série Retour aux fondamentaux : Introduction à NoSQL

29

Replica Set Repair

SecondaryPrimary

Secondary

Rejoin and resync

Page 30: Webinaire 1 de la série Retour aux fondamentaux : Introduction à NoSQL

30

Replica Set Stable

SecondaryPrimary

Secondary

Heartbeat

Page 31: Webinaire 1 de la série Retour aux fondamentaux : Introduction à NoSQL

31

Scalabilité horizontale – Sharding

Shard 1 Shard 2 Shard N

Page 32: Webinaire 1 de la série Retour aux fondamentaux : Introduction à NoSQL

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

Page 33: Webinaire 1 de la série Retour aux fondamentaux : Introduction à NoSQL

33

Scalabilité horizontale – ShardingMongoS MongoS

Shard 1 Shard 2 Shard N

Shard Key

Page 34: Webinaire 1 de la série Retour aux fondamentaux : Introduction à NoSQL

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

Page 35: Webinaire 1 de la série Retour aux fondamentaux : Introduction à NoSQL

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

Page 36: Webinaire 1 de la série Retour aux fondamentaux : Introduction à NoSQL

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 : [email protected]

Page 37: Webinaire 1 de la série Retour aux fondamentaux : Introduction à NoSQL

Q&A

Page 38: Webinaire 1 de la série Retour aux fondamentaux : Introduction à NoSQL