mongodb : la base nosql qui réinvente la gestion de données

246
@dwursteisen MongoDB 11/28/13 1 la base NoSQL qui réinvente la gestion de données

Upload: soat

Post on 28-Nov-2014

2.587 views

Category:

Technology


1 download

DESCRIPTION

MongoDB : la base NoSQL qui réinvente la gestion de données

TRANSCRIPT

Page 1: MongoDB : la base NoSQL qui réinvente la gestion de données

@dwursteisen

MongoDB

11/28/13 !1

la base NoSQL qui réinvente la gestion de données

Page 2: MongoDB : la base NoSQL qui réinvente la gestion de données

MongoDBBig Database

@DWURSTEISEN

Page 3: MongoDB : la base NoSQL qui réinvente la gestion de données

http://fr.slideshare.net/soatexpert

Page 4: MongoDB : la base NoSQL qui réinvente la gestion de données
Page 5: MongoDB : la base NoSQL qui réinvente la gestion de données

WARNING

Page 6: MongoDB : la base NoSQL qui réinvente la gestion de données
Page 7: MongoDB : la base NoSQL qui réinvente la gestion de données

Il n’y a pas si longtemps que cela, un site internet faisait sensation…

Page 8: MongoDB : la base NoSQL qui réinvente la gestion de données
Page 9: MongoDB : la base NoSQL qui réinvente la gestion de données
Page 10: MongoDB : la base NoSQL qui réinvente la gestion de données

20:00:00

Page 11: MongoDB : la base NoSQL qui réinvente la gestion de données

Ce site déboite

Page 12: MongoDB : la base NoSQL qui réinvente la gestion de données

Oups ! Database Error

Page 13: MongoDB : la base NoSQL qui réinvente la gestion de données

no more space disk available

Page 14: MongoDB : la base NoSQL qui réinvente la gestion de données
Page 15: MongoDB : la base NoSQL qui réinvente la gestion de données
Page 16: MongoDB : la base NoSQL qui réinvente la gestion de données
Page 17: MongoDB : la base NoSQL qui réinvente la gestion de données
Page 18: MongoDB : la base NoSQL qui réinvente la gestion de données
Page 19: MongoDB : la base NoSQL qui réinvente la gestion de données
Page 20: MongoDB : la base NoSQL qui réinvente la gestion de données

BIG DATA

Page 21: MongoDB : la base NoSQL qui réinvente la gestion de données

Animation Soat

Devoxx France 2013

Page 22: MongoDB : la base NoSQL qui réinvente la gestion de données

Caractéristiques(sous le capot)

Page 23: MongoDB : la base NoSQL qui réinvente la gestion de données

Orienté document

Page 24: MongoDB : la base NoSQL qui réinvente la gestion de données
Page 25: MongoDB : la base NoSQL qui réinvente la gestion de données

{! "_id": "e

nigme1", !

"titre": "Enigme du ve

ndredi", !

"activation": true!

}

Page 26: MongoDB : la base NoSQL qui réinvente la gestion de données

{! "_id": "e

nigme1", !

"titre": "Enigme du ve

ndredi", !

"activation": true!

}

{! "_id": "enigme1", ! "activation": true, ! "joueurs": [! { "email": "[email protected]", "score": 20 }! ], ! "indices": [! {! "contenu": "je suis ton père",! "flashcode": "111-111-1111", ! "joueurs": [ { "email": "[email protected]" } ]! } ]!}!

Page 27: MongoDB : la base NoSQL qui réinvente la gestion de données

Sans schéma

Page 28: MongoDB : la base NoSQL qui réinvente la gestion de données

CREATE TABLE example_default_now ( id INT NOT NULL PRIMARY KEY AUTO_INCREMENT, data VARCHAR(100), created TIMESTAMP DEFAULT NOW() );

Page 29: MongoDB : la base NoSQL qui réinvente la gestion de données

CREATE TABLE example_default_now ( id INT NOT NULL PRIMARY KEY AUTO_INCREMENT, data VARCHAR(100), created TIMESTAMP DEFAULT NOW() );

Page 30: MongoDB : la base NoSQL qui réinvente la gestion de données

Sans transaction

Page 31: MongoDB : la base NoSQL qui réinvente la gestion de données

Transaction

Page 32: MongoDB : la base NoSQL qui réinvente la gestion de données

Transaction

Page 33: MongoDB : la base NoSQL qui réinvente la gestion de données

Transaction

Page 34: MongoDB : la base NoSQL qui réinvente la gestion de données

Transaction

Page 35: MongoDB : la base NoSQL qui réinvente la gestion de données

Transaction

Page 36: MongoDB : la base NoSQL qui réinvente la gestion de données

Transaction

Page 37: MongoDB : la base NoSQL qui réinvente la gestion de données

Sans transaction

Page 38: MongoDB : la base NoSQL qui réinvente la gestion de données

Sans transaction

Page 39: MongoDB : la base NoSQL qui réinvente la gestion de données

Sans transaction

Page 40: MongoDB : la base NoSQL qui réinvente la gestion de données

Sans transaction

Page 41: MongoDB : la base NoSQL qui réinvente la gestion de données

Update atomique

Page 42: MongoDB : la base NoSQL qui réinvente la gestion de données

Sans jointure

Page 43: MongoDB : la base NoSQL qui réinvente la gestion de données

{! "_id": "enigme1", ! "activation": true, ! "joueurs": [! { "email": "[email protected]", "score": 20 }! ], ! "indices": [! {! "contenu": "je suis ton père",! "flashcode": "111-111-1111", ! "joueurs": [ { "email": "[email protected]" } ]! } ]!}!

Page 44: MongoDB : la base NoSQL qui réinvente la gestion de données

{! "_id": "enigme1", ! "activation": true, ! "joueurs": [! { "email": "[email protected]", "score": 20 }! ], ! "indices": [! {! "contenu": "je suis ton père",! "flashcode": "111-111-1111", ! "joueurs": [ { "email": "[email protected]" } ]! } ]!}!

jointure ?

Page 45: MongoDB : la base NoSQL qui réinvente la gestion de données

Distribué

Page 46: MongoDB : la base NoSQL qui réinvente la gestion de données

Document = 16Mb Hard Limit

Page 47: MongoDB : la base NoSQL qui réinvente la gestion de données

Design des structures

des données

Page 48: MongoDB : la base NoSQL qui réinvente la gestion de données

Type Exemple

Int / Double / … { a: 1 }

Boolean { b: true }

String { c: ‘hello’ }

Array { d: [1, 2, 3] }

Date {e: ISODate("2012-12-19T06:01:17.171Z")

ObjectId {f: ObjectId(‘123456’)}

Object {g: {a: 1, b: true}}

http://docs.mongodb.org/manual/reference/bson-types/

Page 49: MongoDB : la base NoSQL qui réinvente la gestion de données

Organiserles données selon leurs

Utilisations

Page 50: MongoDB : la base NoSQL qui réinvente la gestion de données
Page 51: MongoDB : la base NoSQL qui réinvente la gestion de données

ci gît la 4ème forme

normale

Page 52: MongoDB : la base NoSQL qui réinvente la gestion de données

Structure de donnée pour l’affichage d’un message ?

Question :

Page 53: MongoDB : la base NoSQL qui réinvente la gestion de données

2

Page 54: MongoDB : la base NoSQL qui réinvente la gestion de données

2

Auteur

Page 55: MongoDB : la base NoSQL qui réinvente la gestion de données

2

Auteur Contenu

Page 56: MongoDB : la base NoSQL qui réinvente la gestion de données

2

Auteur Contenu

Recouicoui

Page 57: MongoDB : la base NoSQL qui réinvente la gestion de données

{ _id: ObjectId(11),

Page 58: MongoDB : la base NoSQL qui réinvente la gestion de données

{ _id: ObjectId(11), user: {mail: « user1 », avatar: « http://…. »,

Page 59: MongoDB : la base NoSQL qui réinvente la gestion de données

{ _id: ObjectId(11), user: {mail: « user1 », avatar: « http://…. », content: « blabla »,

Page 60: MongoDB : la base NoSQL qui réinvente la gestion de données

{ _id: ObjectId(11), user: {mail: « user1 », avatar: « http://…. », content: « blabla », …

Page 61: MongoDB : la base NoSQL qui réinvente la gestion de données

{ _id: ObjectId(11), user: {mail: « user1 », avatar: « http://…. », content: « blabla », … recouicoui: [ObjectId(22), ObjectId(33)] 

Page 62: MongoDB : la base NoSQL qui réinvente la gestion de données

{ _id: ObjectId(11), user: {mail: « user1 », avatar: « http://…. », content: « blabla », … !

recouicoui: 2, // compteur

Page 63: MongoDB : la base NoSQL qui réinvente la gestion de données

{ _id: ObjectId(11), user: {mail: « user1 », avatar: « http://…. », content: « blabla », … !

recouicoui: [{user: {…}, {user: {…}]

Page 64: MongoDB : la base NoSQL qui réinvente la gestion de données
Page 65: MongoDB : la base NoSQL qui réinvente la gestion de données
Page 66: MongoDB : la base NoSQL qui réinvente la gestion de données
Page 67: MongoDB : la base NoSQL qui réinvente la gestion de données
Page 68: MongoDB : la base NoSQL qui réinvente la gestion de données

{ _id: ObjectId(11), user: {mail: « user1 », avatar: « http://…. », content: « blabla », … !

recouicoui: [{user: {…}, {user: {…}]

Page 69: MongoDB : la base NoSQL qui réinvente la gestion de données

{ _id: ObjectId(11), user: {mail: « user1 », avatar: « http://…. », content: « blabla », … !

recouicoui: [{user: {…} * 789013]

Page 70: MongoDB : la base NoSQL qui réinvente la gestion de données

{ _id: ObjectId(11), user: {mail: « user1 », avatar: « http://…. », content: « blabla », … !

recouicoui: [{user: {…} * 789013]

> 16Mb

Page 71: MongoDB : la base NoSQL qui réinvente la gestion de données

2

Page 72: MongoDB : la base NoSQL qui réinvente la gestion de données

2

Information partielle

Page 73: MongoDB : la base NoSQL qui réinvente la gestion de données

{ _id: ObjectId(11), user: {mail: « user1 », avatar: « http://…. », content: « blabla », … recouicoui: { users: [{user: {…} * 5], compteur: 789013 }

Page 74: MongoDB : la base NoSQL qui réinvente la gestion de données

bonnecomplexe

structure de donnée est

Le design d’une

Page 75: MongoDB : la base NoSQL qui réinvente la gestion de données

Parlez-vous

Français ?

Query languageselect * from table

Page 76: MongoDB : la base NoSQL qui réinvente la gestion de données

Le shell : mongo

Page 77: MongoDB : la base NoSQL qui réinvente la gestion de données

Lecture

Page 78: MongoDB : la base NoSQL qui réinvente la gestion de données

Sélection d’un document

db.collection.findOne(…)

Page 79: MongoDB : la base NoSQL qui réinvente la gestion de données

Sélection d’un document

db.collection.findOne(…)

Query

Page 80: MongoDB : la base NoSQL qui réinvente la gestion de données

Sélection de documents

db.collection.find(…)

Page 81: MongoDB : la base NoSQL qui réinvente la gestion de données

Sélection et mise à jour de document

db.collection.findAndModify(…)

Page 82: MongoDB : la base NoSQL qui réinvente la gestion de données

Champ unique {_id: ‘azerty’}

Page 83: MongoDB : la base NoSQL qui réinvente la gestion de données

Champ unique {_id: ‘azerty’}

{! "_id": "azerty", ! "titre": "Enigme du vendredi", ! "activation": true!}

Page 84: MongoDB : la base NoSQL qui réinvente la gestion de données

Champ unique {_id: ‘azerty’}

{! "_id": "azerty", ! "titre": "Enigme du vendredi", ! "activation": true!}

✓{! "_id": "azerty", ! "activation": true,! "titre": "Enigme du vendredi"!}

Page 85: MongoDB : la base NoSQL qui réinvente la gestion de données

{! "_id": "azerty12345", ! "activation": true,! "titre": "Enigme du vendredi"!}

Champ unique {_id: ‘azerty’}

{! "_id": "azerty", ! "titre": "Enigme du vendredi", ! "activation": true!}

✓{! "_id": "azerty", ! "activation": true,! "titre": "Enigme du vendredi"!}

Page 86: MongoDB : la base NoSQL qui réinvente la gestion de données

Sous document spécifique {auteur: {nom: ‘Wursteisen’}}

Page 87: MongoDB : la base NoSQL qui réinvente la gestion de données

Sous document spécifique {auteur: {nom: ‘Wursteisen’}}

{! "_id": "azerty", ! "auteur": {"nom":"Wursteisen"}!} ✓

Page 88: MongoDB : la base NoSQL qui réinvente la gestion de données

Sous document spécifique {auteur: {nom: ‘Wursteisen’}}

{! "_id": "azerty", ! "auteur": {"nom":"Wursteisen"}!} ✓{! "_id": "azerty", ! "auteur": {"nom":"Wursteisen", "prénom":"David"}!} ✗

Page 89: MongoDB : la base NoSQL qui réinvente la gestion de données

Sous document spécifique {auteur: {prénom: ‘David’, nom: ‘Wursteisen’}}

Page 90: MongoDB : la base NoSQL qui réinvente la gestion de données

Sous document spécifique {auteur: {prénom: ‘David’, nom: ‘Wursteisen’}}

{! "_id": "azerty", ! "auteur": {"prénom":"David", "nom":"Wursteisen"}!} ✓

Page 91: MongoDB : la base NoSQL qui réinvente la gestion de données

Sous document spécifique {auteur: {prénom: ‘David’, nom: ‘Wursteisen’}}

{! "_id": "azerty", ! "auteur": {"prénom":"David", "nom":"Wursteisen"}!} ✓{! "_id": "azerty", ! "auteur": {"nom":"Wursteisen", "prénom":"David"}!} ✗

Page 92: MongoDB : la base NoSQL qui réinvente la gestion de données

Sous champ {‘auteur.nom’: ‘Wursteisen’}

Page 93: MongoDB : la base NoSQL qui réinvente la gestion de données

Sous champ {‘auteur.nom’: ‘Wursteisen’}{! "_id": "azerty", ! "auteur": {"nom":"Wursteisen"}!} ✓

Page 94: MongoDB : la base NoSQL qui réinvente la gestion de données

Sous champ {‘auteur.nom’: ‘Wursteisen’}{! "_id": "azerty", ! "auteur": {"nom":"Wursteisen"}!} ✓{! "_id": "azerty", ! "auteur": {"nom":"Wursteisen", "prénom":"David"}!} ✓

Page 95: MongoDB : la base NoSQL qui réinvente la gestion de données

Sous champ {‘auteur.nom’: ‘Wursteisen’}{! "_id": "azerty", ! "auteur": {"nom":"Wursteisen"}!} ✓{! "_id": "azerty", ! "auteur": {"nom":"Wursteisen", "prénom":"David"}!} ✓{! "_id": "azerty", ! "auteur": {"nom":"Bob", "prénom":"David"}!} ✗

Page 96: MongoDB : la base NoSQL qui réinvente la gestion de données

Champ unique {recouicoui: {$gt: 20}}

Page 97: MongoDB : la base NoSQL qui réinvente la gestion de données

Champ unique {recouicoui: {$gt: 20}}

{! "_id": "azerty", ! "titre": "Enigme du vendredi", ! "recouicoui": 50!}

Page 98: MongoDB : la base NoSQL qui réinvente la gestion de données

Champ unique {recouicoui: {$gt: 20}}

{! "_id": "azerty", ! "titre": "Enigme du vendredi", ! "recouicoui": 50!}

✓{! "_id": "azerty", ! "titre": "Enigme du vendredi", ! "recouicoui": 10!}

Page 99: MongoDB : la base NoSQL qui réinvente la gestion de données

Champ unique {recouicoui: {$gt: 20}}

{! "_id": "azerty", ! "titre": "Enigme du vendredi", ! "recouicoui": 50!}

✓{! "_id": "azerty", ! "titre": "Enigme du vendredi", ! "recouicoui": 10!}

✗{! "_id": "azerty", ! "titre": "Enigme du vendredi", ! !}

Page 100: MongoDB : la base NoSQL qui réinvente la gestion de données

Écriture

Page 101: MongoDB : la base NoSQL qui réinvente la gestion de données

Insertion d’un document

db.collection.insert(…)

Page 102: MongoDB : la base NoSQL qui réinvente la gestion de données

Insertion d’un document

db.collection.insert(…)

Document

Page 103: MongoDB : la base NoSQL qui réinvente la gestion de données

Update d’un document

db.collection.update(<query>, <update>)

Page 104: MongoDB : la base NoSQL qui réinvente la gestion de données

Update d’un document

db.collection.update(<query>, <update>)

modifier

Page 105: MongoDB : la base NoSQL qui réinvente la gestion de données

Update de documents

db.collection.update(…, …, {multi: true})

Page 106: MongoDB : la base NoSQL qui réinvente la gestion de données

Écrire un document db.collection.update(…, {prénom:’David’})

Page 107: MongoDB : la base NoSQL qui réinvente la gestion de données

Écrire un document db.collection.update(…, {prénom:’David’})

{! "_id": "azerty", ! "nom": "wursteisen", ! "prénom": "bob"!}

Page 108: MongoDB : la base NoSQL qui réinvente la gestion de données

Écrire un document db.collection.update(…, {prénom:’David’})

{! "_id": "azerty", ! "nom": "wursteisen", ! "prénom": "bob"!}

{! "_id": "azerty", ! "prénom": "David"!}

Page 109: MongoDB : la base NoSQL qui réinvente la gestion de données

Modifier un champ db.collection.update(…, {$set: {prénom:’David’}})

Page 110: MongoDB : la base NoSQL qui réinvente la gestion de données

Modifier un champ db.collection.update(…, {$set: {prénom:’David’}})

{! "_id": "azerty", ! "nom": "wursteisen", ! "prénom": "bob"!}

Page 111: MongoDB : la base NoSQL qui réinvente la gestion de données

Modifier un champ db.collection.update(…, {$set: {prénom:’David’}})

{! "_id": "azerty", ! "nom": "wursteisen", ! "prénom": "bob"!}

{! "_id": "azerty", ! "nom": "wursteisen", ! "prénom": "David"!}

Page 112: MongoDB : la base NoSQL qui réinvente la gestion de données

Incrémentation db.collection.update(…, {$inc: {recouicoui: 2 }})

Page 113: MongoDB : la base NoSQL qui réinvente la gestion de données

Incrémentation db.collection.update(…, {$inc: {recouicoui: 2 }})

{! "_id": "azerty", ! "nom": "wursteisen", ! "recouicoui": 5!}

Page 114: MongoDB : la base NoSQL qui réinvente la gestion de données

Incrémentation db.collection.update(…, {$inc: {recouicoui: 2 }})

{! "_id": "azerty", ! "nom": "wursteisen", ! "recouicoui": 5!}

{! "_id": "azerty", ! "nom": "wursteisen", ! "recouicoui": 7!}

Page 115: MongoDB : la base NoSQL qui réinvente la gestion de données

Ajout dans un tableau db.collection.update(…, {$push: {contact: ‘Robert’ }})

Page 116: MongoDB : la base NoSQL qui réinvente la gestion de données

Ajout dans un tableau db.collection.update(…, {$push: {contact: ‘Robert’ }})

{! "_id": "azerty", ! "contact": ["John", "Bob"] !}

Page 117: MongoDB : la base NoSQL qui réinvente la gestion de données

Ajout dans un tableau db.collection.update(…, {$push: {contact: ‘Robert’ }})

{! "_id": "azerty", ! "contact": ["John", "Bob"] !}

{! "_id": "azerty", ! "contact": ["John", "Bob", "Robert"] !}

Page 118: MongoDB : la base NoSQL qui réinvente la gestion de données

Index

Page 119: MongoDB : la base NoSQL qui réinvente la gestion de données

db.couicoui.ensureIndex({ name:1 })Index simple

Page 120: MongoDB : la base NoSQL qui réinvente la gestion de données

db.couicoui.ensureIndex({ name:1, date:-1 })Index composé

Page 121: MongoDB : la base NoSQL qui réinvente la gestion de données

db.couicoui.ensureIndex({ geo: ‘2d‘ })Géo index

Page 122: MongoDB : la base NoSQL qui réinvente la gestion de données
Page 123: MongoDB : la base NoSQL qui réinvente la gestion de données

db.couicoui.ensureIndex({ name:1 }, {expireAfterSeconds: 3600})Index avec Time To Live

Page 124: MongoDB : la base NoSQL qui réinvente la gestion de données

db.find({…}).explain()

Page 125: MongoDB : la base NoSQL qui réinvente la gestion de données

{ "cursor" : "<Cursor Type and Index>", "n" : <num>, "nscanned" : <num>, "scanAndOrder" : <boolean>, … }

Page 126: MongoDB : la base NoSQL qui réinvente la gestion de données

Replica Set

Page 127: MongoDB : la base NoSQL qui réinvente la gestion de données

Driver

Primary

Secondary Secondary

Page 128: MongoDB : la base NoSQL qui réinvente la gestion de données

Driver

Primary

Secondary Secondary

Écriture

Page 129: MongoDB : la base NoSQL qui réinvente la gestion de données

Driver

Primary

Secondary Secondary

Écriture

Réplication

Page 130: MongoDB : la base NoSQL qui réinvente la gestion de données

Driver

Primary

Secondary Secondary

Écriture

Réplication Réplication

Page 131: MongoDB : la base NoSQL qui réinvente la gestion de données

Driver

Primary

Secondary Secondary

Écriture

Réplication Réplication

Lecture

Page 132: MongoDB : la base NoSQL qui réinvente la gestion de données

Driver

Primary

Secondary Secondary

Écriture

Réplication Réplication

Lecture

Lecture

Page 133: MongoDB : la base NoSQL qui réinvente la gestion de données

Primary

Secondary Secondary

Page 134: MongoDB : la base NoSQL qui réinvente la gestion de données

Primary

Secondary Secondary

Heartbeats

Page 135: MongoDB : la base NoSQL qui réinvente la gestion de données

Primary

Secondary Secondary

Heartbeats

Page 136: MongoDB : la base NoSQL qui réinvente la gestion de données

Primary

Secondary Secondary

Page 137: MongoDB : la base NoSQL qui réinvente la gestion de données

Primary

Secondary Secondary

Primary ?

Page 138: MongoDB : la base NoSQL qui réinvente la gestion de données

Primary

Primary Secondary

Primary ?

Page 139: MongoDB : la base NoSQL qui réinvente la gestion de données

Primary

Primary Secondary

Primary ?

Réplication

Page 140: MongoDB : la base NoSQL qui réinvente la gestion de données

Primary

Primary Secondary

Primary ?

Réplication

Page 141: MongoDB : la base NoSQL qui réinvente la gestion de données

Primary

Primary Secondary

Primary ?

RéplicationHeartbeats

Page 142: MongoDB : la base NoSQL qui réinvente la gestion de données

Primary

Primary Secondary

Primary ?

RéplicationHeartbeats

Page 143: MongoDB : la base NoSQL qui réinvente la gestion de données

Secondary

Primary Secondary

Primary ?

RéplicationHeartbeats

Page 144: MongoDB : la base NoSQL qui réinvente la gestion de données

Secondary

Primary Secondary

Primary ?

RéplicationHeartbeats

Page 145: MongoDB : la base NoSQL qui réinvente la gestion de données
Page 146: MongoDB : la base NoSQL qui réinvente la gestion de données
Page 147: MongoDB : la base NoSQL qui réinvente la gestion de données
Page 148: MongoDB : la base NoSQL qui réinvente la gestion de données
Page 149: MongoDB : la base NoSQL qui réinvente la gestion de données
Page 150: MongoDB : la base NoSQL qui réinvente la gestion de données
Page 151: MongoDB : la base NoSQL qui réinvente la gestion de données
Page 152: MongoDB : la base NoSQL qui réinvente la gestion de données

Write Concernnotification d’écriture

Page 153: MongoDB : la base NoSQL qui réinvente la gestion de données

collection.insert(…, WriteConcern.ACKNOWLEDGED); !

db.getLastError();

(dépendant du driver)

Page 154: MongoDB : la base NoSQL qui réinvente la gestion de données

collection.insert(…, WriteConcern.ACKNOWLEDGED); !

db.getLastError();

(dépendant du driver)

w=1

Page 155: MongoDB : la base NoSQL qui réinvente la gestion de données

collection.insert(…, WriteConcern.ACKNOWLEDGED); !

db.getLastError();

(dépendant du driver)

w=1

bloquant

Page 156: MongoDB : la base NoSQL qui réinvente la gestion de données

disable acknowledgmentw=0

Page 157: MongoDB : la base NoSQL qui réinvente la gestion de données

Driver

Mongod

Page 158: MongoDB : la base NoSQL qui réinvente la gestion de données

write

Driver

Mongod

Page 159: MongoDB : la base NoSQL qui réinvente la gestion de données

write

Driver

Mongod

getLastErrorw=0

Page 160: MongoDB : la base NoSQL qui réinvente la gestion de données

write

Driver

Mongod

getLastError response

getLastErrorw=0

Page 161: MongoDB : la base NoSQL qui réinvente la gestion de données

acknowledgmentw=1

Page 162: MongoDB : la base NoSQL qui réinvente la gestion de données

Driver

Mongod

Page 163: MongoDB : la base NoSQL qui réinvente la gestion de données

write

Driver

Mongod

Page 164: MongoDB : la base NoSQL qui réinvente la gestion de données

write

Driver

Mongod

getLastErrorw=1

Page 165: MongoDB : la base NoSQL qui réinvente la gestion de données

write

Driver

Mongod

getLastErrorw=1

apply

Page 166: MongoDB : la base NoSQL qui réinvente la gestion de données

write

Driver

Mongod

getLastError response

getLastErrorw=1

apply

Page 167: MongoDB : la base NoSQL qui réinvente la gestion de données

write

Driver

Mongod

getLastError response

getLastErrorw=1

apply

bloquant

Page 168: MongoDB : la base NoSQL qui réinvente la gestion de données

journalj=1

Page 169: MongoDB : la base NoSQL qui réinvente la gestion de données

Driver

Mongod

Page 170: MongoDB : la base NoSQL qui réinvente la gestion de données

write

Driver

Mongod

Page 171: MongoDB : la base NoSQL qui réinvente la gestion de données

write

Driver

MongodgetLastError

w=1,j=1

Page 172: MongoDB : la base NoSQL qui réinvente la gestion de données

write

Driver

MongodgetLastError

w=1,j=1

apply

Page 173: MongoDB : la base NoSQL qui réinvente la gestion de données

write

Driver

MongodgetLastError

w=1,j=1

apply write to journal

Page 174: MongoDB : la base NoSQL qui réinvente la gestion de données

write

Driver

Mongod

getLastError response

getLastErrorw=1,j=1

apply write to journal

Page 175: MongoDB : la base NoSQL qui réinvente la gestion de données

write

Driver

Mongod

getLastError response

getLastErrorw=1,j=1

apply write to journal

bloquant

Page 176: MongoDB : la base NoSQL qui réinvente la gestion de données

replica acknowledgmentw=2

Page 177: MongoDB : la base NoSQL qui réinvente la gestion de données

Driver

Primary

Secondary

Secondary

Page 178: MongoDB : la base NoSQL qui réinvente la gestion de données

write

Driver

Primary

Secondary

Secondary

Page 179: MongoDB : la base NoSQL qui réinvente la gestion de données

write

Driver

PrimarygetLastError

w=2

Secondary

Secondary

Page 180: MongoDB : la base NoSQL qui réinvente la gestion de données

write

Driver

PrimarygetLastError

w=2apply

Secondary

Secondary

Page 181: MongoDB : la base NoSQL qui réinvente la gestion de données

write

Driver

PrimarygetLastError

w=2apply

Secondary

Secondary

replicate

Page 182: MongoDB : la base NoSQL qui réinvente la gestion de données

write

Driver

PrimarygetLastError

w=2apply

Secondary

Secondary

replicate

Page 183: MongoDB : la base NoSQL qui réinvente la gestion de données

write

Driver

Primary

getLastError response

getLastErrorw=2

apply

Secondary

Secondary

replicate

Page 184: MongoDB : la base NoSQL qui réinvente la gestion de données

write

Driver

Primary

getLastError response

getLastErrorw=2

apply

Secondary

Secondary

replicate

bloquant

Page 185: MongoDB : la base NoSQL qui réinvente la gestion de données

write

Driver

Primary

getLastError response

getLastErrorw=2

apply

Secondary

Secondary

replicate

replicatebloquant

Page 186: MongoDB : la base NoSQL qui réinvente la gestion de données

Sharding

Répartition

Page 187: MongoDB : la base NoSQL qui réinvente la gestion de données

collection

Page 188: MongoDB : la base NoSQL qui réinvente la gestion de données

Shard2 Shard3Shard1

collection

Page 189: MongoDB : la base NoSQL qui réinvente la gestion de données

Shard2 Shard3Shard1

collection

{x: min} {x: max}{x: -11} {x: 50}

Page 190: MongoDB : la base NoSQL qui réinvente la gestion de données

Avec une clé de sharding

Page 191: MongoDB : la base NoSQL qui réinvente la gestion de données

Mongos

db.collect.find({key: …})

Page 192: MongoDB : la base NoSQL qui réinvente la gestion de données

Mongos

db.collect.find({key: …})

Page 193: MongoDB : la base NoSQL qui réinvente la gestion de données

Mongos

db.collect.find({key: …})

Page 194: MongoDB : la base NoSQL qui réinvente la gestion de données

Mongos

db.collect.find({key: …})

Page 195: MongoDB : la base NoSQL qui réinvente la gestion de données

Mongos

db.collect.find({key: …})

Page 196: MongoDB : la base NoSQL qui réinvente la gestion de données

Avec une clé non shardé

Page 197: MongoDB : la base NoSQL qui réinvente la gestion de données

Mongos

db.collect.find({other: …})

Page 198: MongoDB : la base NoSQL qui réinvente la gestion de données

Mongos

db.collect.find({other: …})

Page 199: MongoDB : la base NoSQL qui réinvente la gestion de données

Mongos

db.collect.find({other: …})

Page 200: MongoDB : la base NoSQL qui réinvente la gestion de données

Clé de sharding pour gérer les messages d’un utilisateur ?

Question :

Page 201: MongoDB : la base NoSQL qui réinvente la gestion de données

Cardinalité Répartition en écriture Isolation Fiabilité

_id

Page 202: MongoDB : la base NoSQL qui réinvente la gestion de données

ObjectId(« 507f1f77bcf86cd799439011 »)

http://www.mongodb.com/presentations/advanced-sharding-features-mongodb-24

Page 203: MongoDB : la base NoSQL qui réinvente la gestion de données

ObjectId(« 507f1f77bcf86cd799439011 »)

http://www.mongodb.com/presentations/advanced-sharding-features-mongodb-24

Timestamp

Page 204: MongoDB : la base NoSQL qui réinvente la gestion de données

ObjectId(« 507f1f77bcf86cd799439011 »)

http://www.mongodb.com/presentations/advanced-sharding-features-mongodb-24

Timestamp

Host

Page 205: MongoDB : la base NoSQL qui réinvente la gestion de données

ObjectId(« 507f1f77bcf86cd799439011 »)

http://www.mongodb.com/presentations/advanced-sharding-features-mongodb-24

Timestamp

Host

PID

Page 206: MongoDB : la base NoSQL qui réinvente la gestion de données

ObjectId(« 507f1f77bcf86cd799439011 »)

http://www.mongodb.com/presentations/advanced-sharding-features-mongodb-24

Timestamp

Host Compteur

PID

Page 207: MongoDB : la base NoSQL qui réinvente la gestion de données

ObjectId(« 507f1f77bcf86cd799439011 »)

http://www.mongodb.com/presentations/advanced-sharding-features-mongodb-24

Timestamp

Page 208: MongoDB : la base NoSQL qui réinvente la gestion de données

Cardinalité Répartition en écriture Isolation Fiabilité

_id ✓ ✗ ✗ ✗

Page 209: MongoDB : la base NoSQL qui réinvente la gestion de données

Mongos

db.collect.insert({…})

Page 210: MongoDB : la base NoSQL qui réinvente la gestion de données

Mongos

db.collect.insert({…})

Page 211: MongoDB : la base NoSQL qui réinvente la gestion de données

Mongos

db.collect.find({…})

Page 212: MongoDB : la base NoSQL qui réinvente la gestion de données

Mongos

db.collect.find({…})

Page 213: MongoDB : la base NoSQL qui réinvente la gestion de données

Mongos

db.collect.find({…})

Page 214: MongoDB : la base NoSQL qui réinvente la gestion de données

Cardinalité Répartition en écriture Isolation Fiabilité

_id ✓ ✗ ✗ ✗hash(_id) ✓ ✓ ✗ ✗

Page 215: MongoDB : la base NoSQL qui réinvente la gestion de données

Mongos

db.collect.insert({…})

Page 216: MongoDB : la base NoSQL qui réinvente la gestion de données

Mongos

db.collect.insert({…})

Page 217: MongoDB : la base NoSQL qui réinvente la gestion de données

Mongos

db.collect.insert({…})

Page 218: MongoDB : la base NoSQL qui réinvente la gestion de données

Mongos

db.collect.insert({…})

Page 219: MongoDB : la base NoSQL qui réinvente la gestion de données

Mongos

db.collect.find({…})

Page 220: MongoDB : la base NoSQL qui réinvente la gestion de données

Mongos

db.collect.find({…})

Page 221: MongoDB : la base NoSQL qui réinvente la gestion de données

Mongos

db.collect.find({…})

Page 222: MongoDB : la base NoSQL qui réinvente la gestion de données

Cardinalité Répartition en écriture Isolation Fiabilité

_id ✓ ✗ ✗ ✗hash(_id) ✓ ✓ ✗ ✗

user ✗ ✓ ✓ ✓

Page 223: MongoDB : la base NoSQL qui réinvente la gestion de données

Mongos

db.collect.insert({…})

Page 224: MongoDB : la base NoSQL qui réinvente la gestion de données

Mongos

db.collect.insert({…})

Page 225: MongoDB : la base NoSQL qui réinvente la gestion de données

Mongos

db.collect.insert({…})

Page 226: MongoDB : la base NoSQL qui réinvente la gestion de données

Mongos

db.collect.insert({…})

Page 227: MongoDB : la base NoSQL qui réinvente la gestion de données

Mongos

db.collect.find({…})

Page 228: MongoDB : la base NoSQL qui réinvente la gestion de données

Mongos

db.collect.find({…})

Page 229: MongoDB : la base NoSQL qui réinvente la gestion de données

Mongos

db.collect.find({…})

Page 230: MongoDB : la base NoSQL qui réinvente la gestion de données

Cardinalité Répartition en écriture Isolation Fiabilité

_id ✓ ✗ ✗ ✗hash(_id) ✓ ✓ ✗ ✗

user ✗ ✓ ✓ ✓user, time ✓ ✓ ✓ ✓

Page 231: MongoDB : la base NoSQL qui réinvente la gestion de données

Mongos

db.collect.insert({…})

Page 232: MongoDB : la base NoSQL qui réinvente la gestion de données

Mongos

db.collect.insert({…})

Page 233: MongoDB : la base NoSQL qui réinvente la gestion de données

Mongos

db.collect.insert({…})

Page 234: MongoDB : la base NoSQL qui réinvente la gestion de données

Mongos

db.collect.insert({…})

Page 235: MongoDB : la base NoSQL qui réinvente la gestion de données

Mongos

db.collect.find({…})

Page 236: MongoDB : la base NoSQL qui réinvente la gestion de données

Mongos

db.collect.find({…})

Page 237: MongoDB : la base NoSQL qui réinvente la gestion de données

Mongos

db.collect.find({…})

Page 238: MongoDB : la base NoSQL qui réinvente la gestion de données

Aller plus loin…

Page 239: MongoDB : la base NoSQL qui réinvente la gestion de données

https://education.mongodb.com

Page 240: MongoDB : la base NoSQL qui réinvente la gestion de données

http://www.meetup.com/Paris-MongoDB-User-Group/

Page 241: MongoDB : la base NoSQL qui réinvente la gestion de données

Demo

Page 242: MongoDB : la base NoSQL qui réinvente la gestion de données

https://github.com/dwursteisen/atelier-mongodb

Page 243: MongoDB : la base NoSQL qui réinvente la gestion de données

Questions ?@dwursteisen

Page 244: MongoDB : la base NoSQL qui réinvente la gestion de données

Crédits photos

Page 245: MongoDB : la base NoSQL qui réinvente la gestion de données

http://bit.ly/HNvkfZ

http://bit.ly/HGb1BO

http://bit.ly/1d5OVTr

http://bit.ly/1awf0XL

http://bit.ly/MMaRr8

http://bit.ly/1hTARzS

http://bit.ly/1hrvZ7z

http://bit.ly/17SGXwC

http://bit.ly/HNvRP4

Page 246: MongoDB : la base NoSQL qui réinvente la gestion de données

http://bit.ly/HGf2Gh

http://bit.ly/1967kv2

http://bit.ly/1c6uCUA