Your SlideShare is downloading. ×
0
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

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

2,855

Published on

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

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

Published in: Technology
0 Comments
4 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
2,855
On Slideshare
0
From Embeds
0
Number of Embeds
5
Actions
Shares
0
Downloads
124
Comments
0
Likes
4
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. MongoDB la base NoSQL qui réinvente la gestion de données 11/28/13 @dwursteisen !1
  • 2. MongoDB Big Database @DWURSTEISEN
  • 3. http://fr.slideshare.net/soatexpert
  • 4. WARNING
  • 5. Il n’y a pas si longtemps que cela, un site internet faisait sensation…
  • 6. 20:00:00
  • 7. Ce site déboite
  • 8. Oups ! Database Error
  • 9. no more space disk available
  • 10. IG B TA A D
  • 11. oat nS tio ima An 013 ce 2 ran xF vox De
  • 12. Caractéristiques (sous le capot)
  • 13. Orienté document
  • 14. {! } ! "enigme1", ! "_id": v e n d r e d i ", du e": "Enigme "titr e! a t i o n ": t r u "activ
  • 15. {! ! "enigme1", ! "_id": v e n d r e d i ", du e": "Enigme "titr e! a t i o n ": t r u "activ } {! }! "_id": "enig me1", ! "activation" : true, ! "joueurs": [ ! { "email": " john@doe.com ], ! ", " s c o r e ": 20 }! "indices": [ ! {! "contenu": " je suis ton p è r e ", ! " f l a s h c o d e ": "111-111-111 1 ", ! "joueurs": [ { "email": " } john@doe.com ]! " } ]!
  • 16. Sans schéma
  • 17. CREATE TABLE example_default_now ( id INT NOT NULL PRIMARY KEY AUTO_INCREMENT, data VARCHAR(100), created TIMESTAMP DEFAULT NOW() );
  • 18. CREATE TABLE example_default_now ( id INT NOT NULL PRIMARY KEY AUTO_INCREMENT, data VARCHAR(100), created TIMESTAMP DEFAULT NOW() );
  • 19. Sans transaction
  • 20. Transaction
  • 21. Transaction
  • 22. Transaction
  • 23. Transaction
  • 24. Transaction
  • 25. Transaction
  • 26. Sans transaction
  • 27. Sans transaction
  • 28. Sans transaction
  • 29. Sans transaction
  • 30. Update atomique
  • 31. Sans jointure
  • 32. {! }! "_id": "enig me1", ! "activation" : true, ! "joueurs": [ ! { "email": " john@doe.com ], ! ", " s c o r e ": 20 }! "indices": [ ! {! "contenu": " je suis ton p è r e ", ! " f l a s h c o d e ": "111-111-111 1 ", ! "joueurs": [ { "email": " } john@doe.com ]! " } ]!
  • 33. {! }! "_id": "enig me1", ! "activation" : true, ! "joueurs": [ ! { "email": " john@doe.com ], ! ", " s c o r e ": 20 }! "indices": [ ! {! "contenu": " je suis ton p è r e ", ! " f l a s h c o d e ": "111-111-111 1 ", ! "joueurs": [ { "email": " } john@doe.com ]! " } ]! jointure ?
  • 34. Distribué
  • 35. Document = 16Mb Hard Limit
  • 36. Design des structures des données
  • 37. 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/
  • 38. Organiser les données selon leurs Utilisations
  • 39. ci gît la 
 4ème forme 
 normale
  • 40. Question : Structure de donnée pour l’affichage d’un message ?
  • 41. 2
  • 42. Auteur 2
  • 43. Auteur 2 Contenu
  • 44. Auteur Contenu 2 Recouicoui
  • 45. { _id: ObjectId(11),
  • 46. { _id: ObjectId(11), user: {mail: « user1 », avatar: « http://…. »,
  • 47. { _id: ObjectId(11), user: {mail: « user1 », avatar: « http://…. », content: « blabla »,
  • 48. { _id: ObjectId(11), user: {mail: « user1 », avatar: « http://…. », content: « blabla », …
  • 49. { _id: ObjectId(11), user: {mail: « user1 », avatar: « http://…. », content: « blabla », … recouicoui: [ObjectId(22), ObjectId(33)] 
  • 50. { ! _id: ObjectId(11), user: {mail: « user1 », avatar: « http://…. », content: « blabla », … recouicoui: 2, // compteur
  • 51. { ! _id: ObjectId(11), user: {mail: « user1 », avatar: « http://…. », content: « blabla », … recouicoui: [{user: {…}, {user: {…}]
  • 52. { ! _id: ObjectId(11), user: {mail: « user1 », avatar: « http://…. », content: « blabla », … recouicoui: [{user: {…}, {user: {…}]
  • 53. { ! _id: ObjectId(11), user: {mail: « user1 », avatar: « http://…. », content: « blabla », … recouicoui: [{user: {…} * 789013]
  • 54. { ! _id: ObjectId(11), user: {mail: « user1 », avatar: « http://…. », content: « blabla », … recouicoui: [{user: {…} * 789013] > 16Mb
  • 55. 2
  • 56. 2 Information partielle
  • 57. { _id: ObjectId(11), user: {mail: « user1 », avatar: « http://…. », content: « blabla », … recouicoui: { users: [{user: {…} * 5], compteur: 789013 }
  • 58. Le design d’une bonne complexe structure de donnée est
  • 59. Query language s u o v z e l ? r a s i P a ç n a r F select * from table
  • 60. Le shell : mongo
  • 61. Lecture
  • 62. Sélection d’un document db.collection.findOne(…)
  • 63. Query Sélection d’un document db.collection.findOne(…)
  • 64. Sélection de documents db.collection.find(…)
  • 65. Sélection et mise à jour de document db.collection.findAndModify(…)
  • 66. Champ unique {_id: ‘azerty’}
  • 67. Champ unique {_id: ‘azerty’} {! "_id": "azerty", ! "titre": "Enigme du vendredi", ! "activation": true! } ✓
  • 68. Champ unique {_id: ‘azerty’} {! "_id": "azerty", ! "titre": "Enigme du vendredi", ! "activation": true! ✓ "_id": "azerty", ! "activation": true,! "titre": "Enigme du vendredi"! ✓ } {! }
  • 69. Champ unique {_id: ‘azerty’} {! "_id": "azerty", ! "titre": "Enigme du vendredi", ! "activation": true! ✓ "_id": "azerty", ! "activation": true,! "titre": "Enigme du vendredi"! ✓ "_id": "azerty12345", ! "activation": true,! "titre": "Enigme du vendredi"! ✗ } {! } {! }
  • 70. Sous document spécifique {auteur: {nom: ‘Wursteisen’}}
  • 71. Sous document spécifique {auteur: {nom: ‘Wursteisen’}} {! "_id": "azerty", ! "auteur": {"nom":"Wursteisen"}! } ✓
  • 72. Sous document spécifique {auteur: {nom: ‘Wursteisen’}} {! "_id": "azerty", ! "auteur": {"nom":"Wursteisen"}! } ✓ {! "_id": "azerty", ! "auteur": {"nom":"Wursteisen", "prénom":"David"}! } ✗
  • 73. Sous document spécifique {auteur: {prénom: ‘David’, nom: ‘Wursteisen’}}
  • 74. Sous document spécifique {auteur: {prénom: ‘David’, nom: ‘Wursteisen’}} {! "_id": "azerty", ! "auteur": {"prénom":"David", "nom":"Wursteisen"}! } ✓
  • 75. 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"}! } ✗
  • 76. Sous champ {‘auteur.nom’: ‘Wursteisen’}
  • 77. Sous champ {‘auteur.nom’: ‘Wursteisen’} {! "_id": "azerty", ! "auteur": {"nom":"Wursteisen"}! } ✓
  • 78. Sous champ {‘auteur.nom’: ‘Wursteisen’} {! "_id": "azerty", ! "auteur": {"nom":"Wursteisen"}! } ✓ {! "_id": "azerty", ! "auteur": {"nom":"Wursteisen", "prénom":"David"}! } ✓
  • 79. 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"}! } ✗
  • 80. Champ unique {recouicoui: {$gt: 20}}
  • 81. Champ unique {recouicoui: {$gt: 20}} {! "_id": "azerty", ! "titre": "Enigme du vendredi", ! "recouicoui": 50! } ✓
  • 82. Champ unique {recouicoui: {$gt: 20}} {! "_id": "azerty", ! "titre": "Enigme du vendredi", ! "recouicoui": 50! ✓ "_id": "azerty", ! "titre": "Enigme du vendredi", ! "recouicoui": 10! ✗ } {! }
  • 83. 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", ! ✗ } {! } {! ! }
  • 84. Écriture
  • 85. Insertion d’un document db.collection.insert(…)
  • 86. Insertion d’un document db.collection.insert(…) Document
  • 87. Update d’un document db.collection.update(<query>, <update>)
  • 88. Update d’un document db.collection.update(<query>, <update>) modifier
  • 89. Update de documents db.collection.update(…, …, {multi: true})
  • 90. Écrire un document db.collection.update(…, {prénom:’David’})
  • 91. Écrire un document db.collection.update(…, {prénom:’David’}) {! "_id": "azerty", ! "nom": "wursteisen", ! "prénom": "bob"! }
  • 92. Écrire un document db.collection.update(…, {prénom:’David’}) {! "_id": "azerty", ! "nom": "wursteisen", ! "prénom": "bob"! } {! "_id": "azerty", ! "prénom": "David"! }
  • 93. Modifier un champ db.collection.update(…, {$set: {prénom:’David’}})
  • 94. Modifier un champ db.collection.update(…, {$set: {prénom:’David’}}) {! "_id": "azerty", ! "nom": "wursteisen", ! "prénom": "bob"! }
  • 95. Modifier un champ db.collection.update(…, {$set: {prénom:’David’}}) {! "_id": "azerty", ! "nom": "wursteisen", ! "prénom": "bob"! } {! "_id": "azerty", ! "nom": "wursteisen", ! "prénom": "David"! }
  • 96. Incrémentation db.collection.update(…, {$inc: {recouicoui: 2 }})
  • 97. Incrémentation db.collection.update(…, {$inc: {recouicoui: 2 }}) {! "_id": "azerty", ! "nom": "wursteisen", ! "recouicoui": 5! }
  • 98. Incrémentation db.collection.update(…, {$inc: {recouicoui: 2 }}) {! "_id": "azerty", ! "nom": "wursteisen", ! "recouicoui": 5! } {! "_id": "azerty", ! "nom": "wursteisen", ! "recouicoui": 7! }
  • 99. Ajout dans un tableau db.collection.update(…, {$push: {contact: ‘Robert’ }})
  • 100. Ajout dans un tableau db.collection.update(…, {$push: {contact: ‘Robert’ }}) {! "_id": "azerty", ! "contact": ["John", "Bob"] } !
  • 101. Ajout dans un tableau db.collection.update(…, {$push: {contact: ‘Robert’ }}) {! "_id": "azerty", ! "contact": ["John", "Bob"] ! } {! "_id": "azerty", ! "contact": ["John", "Bob", "Robert"] } !
  • 102. Index
  • 103. Index simple db.couicoui.ensureIndex({ name:1 })
  • 104. Index composé db.couicoui.ensureIndex({ name:1, date:-1 })
  • 105. Géo index db.couicoui.ensureIndex({ geo: ‘2d‘ })
  • 106. Index avec Time To Live db.couicoui.ensureIndex({ name:1 }, {expireAfterSeconds: 3600})
  • 107. db.find({…}).explain()
  • 108. { "cursor" : "<Cursor Type and Index>", "n" : <num>, "nscanned" : <num>, "scanAndOrder" : <boolean>, … }
  • 109. Replica Set
  • 110. Driver Primary Secondary Secondary
  • 111. Driver Écriture Primary Secondary Secondary
  • 112. Driver Écriture Primary Réplication Secondary Secondary
  • 113. Driver Écriture Primary Réplication Secondary Réplication Secondary
  • 114. Driver Écriture Primary Réplication Secondary Lecture Réplication Secondary
  • 115. Lecture Driver Écriture Primary Réplication Secondary Lecture Réplication Secondary
  • 116. Primary Secondary Secondary
  • 117. Primary Heartbeats Secondary Secondary
  • 118. Primary Heartbeats Secondary Secondary
  • 119. Primary Secondary Secondary
  • 120. Primary Secondary Secondary Primary ?
  • 121. Primary Primary Secondary Primary ?
  • 122. Réplication Primary Primary Secondary Primary ?
  • 123. Réplication Primary Primary Secondary Primary ?
  • 124. Réplication Primary Heartbeats Primary Secondary Primary ?
  • 125. Réplication Primary Heartbeats Primary Secondary Primary ?
  • 126. Réplication Secondary Heartbeats Primary Secondary Primary ?
  • 127. Réplication Secondary Heartbeats Primary Secondary Primary ?
  • 128. Write Concern notification d’écriture
  • 129. collection.insert(…, WriteConcern.ACKNOWLEDGED); ! db.getLastError(); (dépendant du driver)
  • 130. w=1 collection.insert(…, WriteConcern.ACKNOWLEDGED); ! db.getLastError(); (dépendant du driver)
  • 131. w=1 collection.insert(…, WriteConcern.ACKNOWLEDGED); ! db.getLastError(); bloquant (dépendant du driver)
  • 132. disable acknowledgment w=0
  • 133. Driver Mongod
  • 134. Driver write Mongod
  • 135. write Mongod getLastError
 w=0 Driver
  • 136. getLastError response write Mongod getLastError
 w=0 Driver
  • 137. acknowledgment w=1
  • 138. Driver Mongod
  • 139. Driver write Mongod
  • 140. write Mongod getLastError
 w=1 Driver
  • 141. write getLastError
 w=1 Driver Mongod apply
  • 142. Mongod apply getLastError response write getLastError
 w=1 Driver
  • 143. bloquant Mongod apply getLastError response write getLastError
 w=1 Driver
  • 144. journal j=1
  • 145. Driver Mongod
  • 146. Driver write Mongod
  • 147. write Mongod getLastError
 w=1,j=1 Driver
  • 148. write getLastError
 w=1,j=1 Driver Mongod apply
  • 149. write getLastError
 w=1,j=1 Driver Mongod apply write to journal
  • 150. write to journal apply getLastError response write getLastError
 w=1,j=1 Driver Mongod
  • 151. bloquant write to journal apply getLastError response write getLastError
 w=1,j=1 Driver Mongod
  • 152. replica acknowledgment w=2
  • 153. Driver Primary Secondary Secondary
  • 154. Driver write Primary Secondary Secondary
  • 155. write Primary Secondary Secondary getLastError
 w=2 Driver
  • 156. write getLastError
 w=2 Driver Primary apply Secondary Secondary
  • 157. write getLastError
 w=2 Driver apply Secondary Secondary replicate Primary
  • 158. write getLastError
 w=2 Driver apply Secondary Secondary replicate Primary
  • 159. apply Secondary replicate Primary getLastError response write Secondary getLastError
 w=2 Driver
  • 160. apply Secondary replicate Primary getLastError response Driver getLastError
 w=2 write Secondary bloquant
  • 161. Secondary replicate apply replicate Primary getLastError response Driver getLastError
 w=2 write Secondary bloquant
  • 162. Sharding Répartition
  • 163. collection
  • 164. collection Shard1 Shard2 Shard3
  • 165. collection Shard1 {x: min} Shard2 {x: -11} Shard3 {x: 50} {x: max}
  • 166. Avec une clé de sharding
  • 167. db.collect.find({key: …}) Mongos
  • 168. db.collect.find({key: …}) Mongos
  • 169. db.collect.find({key: …}) Mongos
  • 170. db.collect.find({key: …}) Mongos
  • 171. db.collect.find({key: …}) Mongos
  • 172. Avec une clé non shardé
  • 173. db.collect.find({other: …}) Mongos
  • 174. db.collect.find({other: …}) Mongos
  • 175. db.collect.find({other: …}) Mongos
  • 176. Question : Clé de sharding pour gérer 
 les messages d’un utilisateur ?
  • 177. Répartition Cardinalité Isolation en écriture _id Fiabilité
  • 178. ObjectId(« 507f1f77bcf86cd799439011 ») http://www.mongodb.com/presentations/advanced-sharding-features-mongodb-24
  • 179. Timestamp ObjectId(« 507f1f77bcf86cd799439011 ») http://www.mongodb.com/presentations/advanced-sharding-features-mongodb-24
  • 180. Timestamp ObjectId(« 507f1f77bcf86cd799439011 ») Host http://www.mongodb.com/presentations/advanced-sharding-features-mongodb-24
  • 181. Timestamp PID ObjectId(« 507f1f77bcf86cd799439011 ») Host http://www.mongodb.com/presentations/advanced-sharding-features-mongodb-24
  • 182. Timestamp PID ObjectId(« 507f1f77bcf86cd799439011 ») Host Compteur http://www.mongodb.com/presentations/advanced-sharding-features-mongodb-24
  • 183. Timestamp ObjectId(« 507f1f77bcf86cd799439011 ») http://www.mongodb.com/presentations/advanced-sharding-features-mongodb-24
  • 184. Répartition Cardinalité Isolation en écriture _id ✓ ✗ ✗ Fiabilité ✗
  • 185. db.collect.insert({…}) Mongos
  • 186. db.collect.insert({…}) Mongos
  • 187. db.collect.find({…}) Mongos
  • 188. db.collect.find({…}) Mongos
  • 189. db.collect.find({…}) Mongos
  • 190. Répartition Cardinalité Isolation en écriture _id hash(_id) Fiabilité ✓ ✗ ✗ ✓ ✓ ✗ ✗ ✗
  • 191. db.collect.insert({…}) Mongos
  • 192. db.collect.insert({…}) Mongos
  • 193. db.collect.insert({…}) Mongos
  • 194. db.collect.insert({…}) Mongos
  • 195. db.collect.find({…}) Mongos
  • 196. db.collect.find({…}) Mongos
  • 197. db.collect.find({…}) Mongos
  • 198. Répartition Cardinalité Isolation en écriture _id hash(_id) user Fiabilité ✓ ✗ ✗ ✗ ✓ ✓ ✗ ✗ ✗ ✓ ✓ ✓
  • 199. db.collect.insert({…}) Mongos
  • 200. db.collect.insert({…}) Mongos
  • 201. db.collect.insert({…}) Mongos
  • 202. db.collect.insert({…}) Mongos
  • 203. db.collect.find({…}) Mongos
  • 204. db.collect.find({…}) Mongos
  • 205. db.collect.find({…}) Mongos
  • 206. Répartition Cardinalité Isolation en écriture _id hash(_id) user user, time ✓ ✓ ✗ ✓ ✗ ✓ ✓ ✓ ✗ ✗ ✓ ✓ Fiabilité ✗ ✗ ✓ ✓
  • 207. db.collect.insert({…}) Mongos
  • 208. db.collect.insert({…}) Mongos
  • 209. db.collect.insert({…}) Mongos
  • 210. db.collect.insert({…}) Mongos
  • 211. db.collect.find({…}) Mongos
  • 212. db.collect.find({…}) Mongos
  • 213. db.collect.find({…}) Mongos
  • 214. Aller plus loin…
  • 215. https://education.mongodb.com
  • 216. http://www.meetup.com/Paris-MongoDB-User-Group/
  • 217. Demo
  • 218. https://github.com/dwursteisen/atelier-mongodb
  • 219. Questions ? @dwursteisen
  • 220. Crédits photos
  • 221. http://bit.ly/HNvkfZ http://bit.ly/1hTARzS http://bit.ly/HGb1BO http://bit.ly/1hrvZ7z http://bit.ly/1d5OVTr http://bit.ly/17SGXwC http://bit.ly/1awf0XL http://bit.ly/HNvRP4 http://bit.ly/MMaRr8
  • 222. http://bit.ly/HGf2Gh http://bit.ly/1967kv2 http://bit.ly/1c6uCUA

×