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

Post on 14-Apr-2017

1.590 views 3 download

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

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