Download - NoSQL MongoDBkn/teaching/dcw/cours/pdf/dcw_07.pdf · 6 NoSQL/MongoDB 6.1 Propriétés et limites des bases SQL 6.2 MongoDB ... MongoDB vs BD Relationnelle. 1 Introduction, UTF-8 et

Transcript
Page 1: NoSQL MongoDBkn/teaching/dcw/cours/pdf/dcw_07.pdf · 6 NoSQL/MongoDB 6.1 Propriétés et limites des bases SQL 6.2 MongoDB ... MongoDB vs BD Relationnelle. 1 Introduction, UTF-8 et

Données et connaissances pour le WebMaster 2 Miage

NoSQLMongoDB

[email protected]

Page 2: NoSQL MongoDBkn/teaching/dcw/cours/pdf/dcw_07.pdf · 6 NoSQL/MongoDB 6.1 Propriétés et limites des bases SQL 6.2 MongoDB ... MongoDB vs BD Relationnelle. 1 Introduction, UTF-8 et

1 Introduction, UTF-8 et XML ✓2 XPath (1) ✓3 XPath (2) ✓4 XSLT ✓5 DOM & JAXP ✓

6 NoSQL/MongoDB

6.1 Propriétés et limites des bases SQL6.2 MongoDB6.3 MongoDB : langage de requêtes6.4 Modèle distribué

Plan

Page 3: NoSQL MongoDBkn/teaching/dcw/cours/pdf/dcw_07.pdf · 6 NoSQL/MongoDB 6.1 Propriétés et limites des bases SQL 6.2 MongoDB ... MongoDB vs BD Relationnelle. 1 Introduction, UTF-8 et

Le standard SQL spécifie un grand nombre d'aspects des bases de donnéesrelationnelles :

◆ Un langage de requête (SELECT …)◆ Un langage de modification de données (CREATE …, UPDATE …)◆ Un langage de schéma et de contraintes◆ Un langage de programmation (SQL/PSM)◆ Un modèle de concurrence (transactions, BEGIN … END, COMMIT, ROLLBACK)

3 / 34

SQL

Page 4: NoSQL MongoDBkn/teaching/dcw/cours/pdf/dcw_07.pdf · 6 NoSQL/MongoDB 6.1 Propriétés et limites des bases SQL 6.2 MongoDB ... MongoDB vs BD Relationnelle. 1 Introduction, UTF-8 et

Le modèle relationnel et les bases de données SQL offrent des garanties très fortes :

◆ Atomicity (Atomicité) : chaque transaction est du « tout ou rien ». Il est impossible pourquelqu'un en dehors de la transaction d'observer une étape intermédiaire.◆ Consistency (Cohérence) : chaque transaction fait passer la base d'un état cohérent àun nouvel état cohérent. Toute donnée sauvegardée dans la base doit être valide vis à visd'un ensemble de règles (types, contraintes, triggers, …).◆ Isolation : l'exécution concurrente de deux transactions T1 et T2 doit être la même queleur exécution séquentielle.◆ Durability (Durabilité) : une transaction confirmée (COMMIT;) le reste même en cas deproblèmes (perte de courant, erreur interne, …).

4 / 34

Garanties

Page 5: NoSQL MongoDBkn/teaching/dcw/cours/pdf/dcw_07.pdf · 6 NoSQL/MongoDB 6.1 Propriétés et limites des bases SQL 6.2 MongoDB ... MongoDB vs BD Relationnelle. 1 Introduction, UTF-8 et

Maintenir un modèle ACID a un impact énorme sur les performances (création desnapshots, mise en place de verrous coûteux, attente de confirmation par le disque queles données sont sauvées, …).

Comment augmenter les performances et le volume des données ?

◆ Prendre un serveur plus puissant (ex. Oracle Exadata de 40 000 à 1 300 000 USD +souscription mensuelle, entretien, …)◆ Mettre plusieurs serveurs ? Très difficile, pourquoi ?

5 / 34

Quel impact ?

Page 6: NoSQL MongoDBkn/teaching/dcw/cours/pdf/dcw_07.pdf · 6 NoSQL/MongoDB 6.1 Propriétés et limites des bases SQL 6.2 MongoDB ... MongoDB vs BD Relationnelle. 1 Introduction, UTF-8 et

Il existe deux modèles de distribution possible :

◆ Plusieurs serveurs contenant chacun une copie complète de la base :◆ Performances accrues pour les requêtes◆ Diversité géographique possible (plus grande résistance aux évènement extérieurs)◆ Baisse des performances pour les mises à jour◆ Ne permet pas de stocker plus de données que sur un seul serveur

◆ Partitionnement des données. Une relation R peut être découpés en morceaux R1, …,R1, disposés sur des machines différentes. Le découpage peut se faire par colonnes oupar lignes.

◆ Augmentation de la capacité de stockage globale◆ Jointures très coûteuses si deux colonnes sont sur deux machines différentes◆ Agrégats coûteux si les lignes sont sur deux machines différentes◆ Une machine en panne ou inaccessible compromet tout le système

6 / 34

Distribution et modèle ACID

Page 7: NoSQL MongoDBkn/teaching/dcw/cours/pdf/dcw_07.pdf · 6 NoSQL/MongoDB 6.1 Propriétés et limites des bases SQL 6.2 MongoDB ... MongoDB vs BD Relationnelle. 1 Introduction, UTF-8 et

Le modèle ACID est parfois trop contraignant :

◆ Système de réservation de billets d'avion ? Modèle ACID nécessaire◆ Calcul du nombre de messages envoyé par utilisateurs de chaque tranche d'âge, surFacebook ? Modèle ACID inutile

Y a t-il un modèle alternatif ?

7 / 34

Le modèle ACID est-il toujours adapté ?

Page 8: NoSQL MongoDBkn/teaching/dcw/cours/pdf/dcw_07.pdf · 6 NoSQL/MongoDB 6.1 Propriétés et limites des bases SQL 6.2 MongoDB ... MongoDB vs BD Relationnelle. 1 Introduction, UTF-8 et

Le théorème (énoncé comme une conjecture en 1999 par E. Brewer et prouvé en 2004)dit que dans un système distribué partageant des données, au plus 2 des 3 propriétéssuivantes peuvent être optimale :

◆ Consistency (cohérence) : tous les nœuds de calcul voient les même données au mêmemoment◆ Availability (disponibilité) : chaque requête reçoit une réponse de succès ou d'échec◆ Partition tolerence (tolérance aux pannes) : le système continue de fonctionnercorrectement malgré un découpage arbitraire lié à des pannes réseau

Le théorème en lui-même est souvent mal interprété. Il a surtout été énoncé (d'aprèsBrewer) pour inciter les gens à explorer d'autres modèles/compromis.

8 / 34

Théorème de Brewer

Page 9: NoSQL MongoDBkn/teaching/dcw/cours/pdf/dcw_07.pdf · 6 NoSQL/MongoDB 6.1 Propriétés et limites des bases SQL 6.2 MongoDB ... MongoDB vs BD Relationnelle. 1 Introduction, UTF-8 et

Le modèle BASE est régit par les propriétés suivantes :

◆ Basically Available (toujours disponible) : le système s'efforce de répondre à unerequête, quel que soit son état◆ Soft state (état « mou ») : l'état interne du système peut changer sans intervention d'unutilisateur◆ Eventually consistent (cohérent au bout d'un temps fini) : si on laisse passersuffisamment de temps entre deux mises à jour ou pannes, le système converge vers unétat cohérent

9 / 34

Modèle BASE

Page 10: NoSQL MongoDBkn/teaching/dcw/cours/pdf/dcw_07.pdf · 6 NoSQL/MongoDB 6.1 Propriétés et limites des bases SQL 6.2 MongoDB ... MongoDB vs BD Relationnelle. 1 Introduction, UTF-8 et

On considère un système avec deux nœuds N1 et N2 :

◆ Mise à jour M suivi de deux fois la même requête Q :◆ ACID : si M est dans une transaction, alors Q s'effectue strictement après M et lesdeux instances de Q renvoient le même résultat◆ BASE : les deux instances de Q peuvent renvoyer des résultats différents, M peuts'exécuter en même temps que Q et ne même pas être fini.

◆ N2 tombe en panne :◆ ACID : le système entier est en panne◆ BASE : N1 continue de répondre

10 / 34

Exemple concret

Page 11: NoSQL MongoDBkn/teaching/dcw/cours/pdf/dcw_07.pdf · 6 NoSQL/MongoDB 6.1 Propriétés et limites des bases SQL 6.2 MongoDB ... MongoDB vs BD Relationnelle. 1 Introduction, UTF-8 et

Le modèle BASE permet de créer des systèmes composés de plusieurs nœuds, capablede stocker des données indépendemment et de répondre rapidement. Comment lemettre à profit ?

11 / 34

Que peut on faire avec BASE ?

Page 12: NoSQL MongoDBkn/teaching/dcw/cours/pdf/dcw_07.pdf · 6 NoSQL/MongoDB 6.1 Propriétés et limites des bases SQL 6.2 MongoDB ... MongoDB vs BD Relationnelle. 1 Introduction, UTF-8 et

1 Introduction, UTF-8 et XML ✓2 XPath (1) ✓3 XPath (2) ✓4 XSLT ✓5 DOM & JAXP ✓

6 NoSQL/MongoDB

6.1 Propriétés et limites des bases SQL ✓6.2 MongoDB6.3 MongoDB : langage de requêtes6.4 Modèle distribué

Plan

Page 13: NoSQL MongoDBkn/teaching/dcw/cours/pdf/dcw_07.pdf · 6 NoSQL/MongoDB 6.1 Propriétés et limites des bases SQL 6.2 MongoDB ... MongoDB vs BD Relationnelle. 1 Introduction, UTF-8 et

◆ Une base de données◆ NoSQL (i.e. non relationnelle)◆ Distribuée (gestion de la distribution et de la réplication◆ Orientée documents, basées sur JSON◆ Manipulée Javascript◆ Un framework Map/Reduce

Ce cours n'est qu'une introduction rapide. On se concentrera sur la modélisation dedonnées, les requêtes et la distribution.

13 / 34

Qu'est-ce que MongoDB

Page 14: NoSQL MongoDBkn/teaching/dcw/cours/pdf/dcw_07.pdf · 6 NoSQL/MongoDB 6.1 Propriétés et limites des bases SQL 6.2 MongoDB ... MongoDB vs BD Relationnelle. 1 Introduction, UTF-8 et

Une valeur JSON est représenté par un sous-ensemble de la syntaxe Javascript pour lesobjets.

◆ null : la constante null◆ Booléens : les constates true ou false◆ Nombres : les nombres au format IEEE-759◆ Les chaînes de caractères : délimitées par des " (obligatoirement), avec les séquencesd'échappement usuelles (\n, …)◆ Les tableaux : suite de valeurs séparées par des virgules, entre [ ]◆ Des objets : les nom propriétés sont des chaines de caractères (séparés par desvirgules)

{ "nom" : "Nguyen", "prénom" : "Kim", "cours": [ "Javascript", "TER" ], "full time" : true, "age" : 3.6e1, "hobby" : null }

14 / 34

JSON : syntaxe

Page 15: NoSQL MongoDBkn/teaching/dcw/cours/pdf/dcw_07.pdf · 6 NoSQL/MongoDB 6.1 Propriétés et limites des bases SQL 6.2 MongoDB ... MongoDB vs BD Relationnelle. 1 Introduction, UTF-8 et

◆ Pas de syntaxe pour des commentaires◆ Une propriété est n'importe quelle chaine syntaxiquement valide◆ Les tableaux peuvent contenir des types différents◆ Les blancs en dehors des chaînes ne sont pas significatifs◆ Les chaînes ne peuvent pas être sur plusieurs lignes

15 / 34

JSON : syntaxe (suite)

Page 16: NoSQL MongoDBkn/teaching/dcw/cours/pdf/dcw_07.pdf · 6 NoSQL/MongoDB 6.1 Propriétés et limites des bases SQL 6.2 MongoDB ... MongoDB vs BD Relationnelle. 1 Introduction, UTF-8 et

Après avoir lancé le serveur, on exécute le shell : mongo etud

> db.getName()etud> db.createCollection("test"){ "ok" : 1 }> db.test.insert( [ { "nom" : "Toto" , "note" : 17 },

... { "nom" : "Titi" , "note" : 12 }, ... { "nom" : "Tata" , "note" : 9.5, "point_jury" : 0.5 } ])

BulkWriteResult({ "writeErrors" : [ ], "writeConcernErrors" : [ ], "nInserted" : 3, "nUpserted" : 0, "nMatched" : 0, "nModified" : 0, "nRemoved" : 0, "upserted" : [ ]})

16 / 34

Exemple

Page 17: NoSQL MongoDBkn/teaching/dcw/cours/pdf/dcw_07.pdf · 6 NoSQL/MongoDB 6.1 Propriétés et limites des bases SQL 6.2 MongoDB ... MongoDB vs BD Relationnelle. 1 Introduction, UTF-8 et

> db.test.find(){ "_id" : ObjectId("5bcdf22840901d2552acbe95"), "nom" : "Toto", "note" : 17 }{ "_id" : ObjectId("5bcdf22840901d2552acbe96"), "nom" : "Titi", "note" : 12 }{ "_id" : ObjectId("5bcdf22840901d2552acbe97"), "nom" : "Tata", "note" : 9.5, "point_jury" : 0.5 }> db.test.find({ "note" : { "$gt" : 10 } }, { "nom" : 1}){ "_id" : ObjectId("5bcdf22840901d2552acbe95"), "nom" : "Toto", "note" : 17 }{ "_id" : ObjectId("5bcdf22840901d2552acbe96"), "nom" : "Titi", "note" : 12 }>> db.test.find( { "$where" : function () { return (this.point_jury || 0) + this.note <= 12;} }){ "_id" : ObjectId("5bcdf22840901d2552acbe96"), "nom" : "Titi", "note" : 12 }{ "_id" : ObjectId("5bcdf22840901d2552acbe97"), "nom" : "Tata", "note" : 9.5, "point_jury" : 0.5 }

17 / 34

Exemple (suite)

Page 18: NoSQL MongoDBkn/teaching/dcw/cours/pdf/dcw_07.pdf · 6 NoSQL/MongoDB 6.1 Propriétés et limites des bases SQL 6.2 MongoDB ... MongoDB vs BD Relationnelle. 1 Introduction, UTF-8 et

On peut dresser le tableau comparatif suivant :

SGBDR MongoDBBase de donnée Base de donnéeTable CollectionLigne (ou tuple) Document (JSON)Colonne (ou attribut) Clé/ValeurSQL Javascript + Query DocumentsJointures Documents imbriquésClé Primaire Clé Primaire (_id)Contraintes Validateurs

18 / 34

MongoDB vs BD Relationnelle

Page 19: NoSQL MongoDBkn/teaching/dcw/cours/pdf/dcw_07.pdf · 6 NoSQL/MongoDB 6.1 Propriétés et limites des bases SQL 6.2 MongoDB ... MongoDB vs BD Relationnelle. 1 Introduction, UTF-8 et

1 Introduction, UTF-8 et XML ✓2 XPath (1) ✓3 XPath (2) ✓4 XSLT ✓5 DOM & JAXP ✓

6 NoSQL/MongoDB

6.1 Propriétés et limites des bases SQL ✓6.2 MongoDB ✓

6.3 MongoDB : langage de requêtes6.4 Modèle distribué

Plan

Page 20: NoSQL MongoDBkn/teaching/dcw/cours/pdf/dcw_07.pdf · 6 NoSQL/MongoDB 6.1 Propriétés et limites des bases SQL 6.2 MongoDB ... MongoDB vs BD Relationnelle. 1 Introduction, UTF-8 et

db.createCollection (nom, options) :

db.getCollection(nom) :

db.nom :

crée une collection vide dans la base (le nom estobligatoire et les options faculatitives)

Renvoie la collection dont le nom est donnéRenvoie la collection dont le nom est donné (ne fonctionne pas si le nom de la

collection est identique à un nom de méthode)

L'API contient beaucoup d'autre méthodes (copie d'une base, changement des droits,destruction d'une base, création de vues, …)

20 / 34

Bases de données (objets DB)

Page 21: NoSQL MongoDBkn/teaching/dcw/cours/pdf/dcw_07.pdf · 6 NoSQL/MongoDB 6.1 Propriétés et limites des bases SQL 6.2 MongoDB ... MongoDB vs BD Relationnelle. 1 Introduction, UTF-8 et

C'est sur les objets collections que se trouvent toutes les opérations CRUD (Create/Read/Update/Delete)

Points essentiels :

◆ Les documents insérés peuvent être non-uniformes (champs de noms et de typesdifférents◆ Tous les documents possèdent une clé primaire (insérée automatiquement si nonfournie), le champ _id◆ Les requêtes reposent sur des Document Query des objets avec des champsparticuliers représentant la requête

21 / 34

Collections (objets Collection)

Page 22: NoSQL MongoDBkn/teaching/dcw/cours/pdf/dcw_07.pdf · 6 NoSQL/MongoDB 6.1 Propriétés et limites des bases SQL 6.2 MongoDB ... MongoDB vs BD Relationnelle. 1 Introduction, UTF-8 et

db.col.insert (docs)où docs est soit un document, soit un tableau de documentsExemple:

> db.col.insert( [ { "nom" : "Toto" , "note" : 17 }, ... { "nom" : "Titi" , "note" : 12 }, ... { "nom" : "Tata" , "note" : 9.5, "point_jury" : 0.5 } ])

> db.col.insert({ "name" : "Toto" })MongoDB crée automatiquement un champs _id contenant un id unique

22 / 34

Insertion

Page 23: NoSQL MongoDBkn/teaching/dcw/cours/pdf/dcw_07.pdf · 6 NoSQL/MongoDB 6.1 Propriétés et limites des bases SQL 6.2 MongoDB ... MongoDB vs BD Relationnelle. 1 Introduction, UTF-8 et

db.col.find (cond, proj)

◆ Sans argument, la requête renvoie tous les documents de la collection◆ L'argument cond peut être un document query (cf. slide suivant)◆ L'argument cond peut être une fonction Javascript renvoyant un booléen. Dans ce cas,le document courant est associé à la variable this.◆ Proj est une spécification de projection (un document JSON qui indique quels champsgarder)◆ La fonction renvoie un objet de type curseur (Cursor). Dans le shell, ce dernier estdirectement itéré et affiché

23 / 34

Lectures

Page 24: NoSQL MongoDBkn/teaching/dcw/cours/pdf/dcw_07.pdf · 6 NoSQL/MongoDB 6.1 Propriétés et limites des bases SQL 6.2 MongoDB ... MongoDB vs BD Relationnelle. 1 Introduction, UTF-8 et

Un query document est un objet JSON ordinaire, dont certains champs ou valeurs sontinterprété par le moteur de requêtes de MongoDB.Syntaxe :

{ "champ1" : valeur1, …, "champn" : valeurn }

◆ Le document est évalué à vrai si tous tous les champs sont évalués à vrai◆ Si le nom d'un champ ne commence pas par $, alors il est considéré comme un champdu document d'entrée. La valeur est associée est alors utilisée comme test :

◆ Si la valeur est une constante, alors le test vaut vrai si le champ du même nom dansl'entrée à la même valeur◆ Si la valeur est unquery documentalors il est recursivement évalué

24 / 34

Query Documents

Page 25: NoSQL MongoDBkn/teaching/dcw/cours/pdf/dcw_07.pdf · 6 NoSQL/MongoDB 6.1 Propriétés et limites des bases SQL 6.2 MongoDB ... MongoDB vs BD Relationnelle. 1 Introduction, UTF-8 et

$eq, $ne, $lt, $lte, $gt, $gte :

$in, $nin :

$and, $or, $not :

Compare la valeur du champ à une constante : db.t.find( { "note" : { "$gte" : 18 } } )

Teste si la valeur du champ appartient (ou non) à un tableau : db.t.find( { "note" : { "$in" : [ 16, 17, 20 ] } } )

Combinaisons booléenes de tests. $and et $or prennent leursopérandes dans un tableau : db.t.find({ "note" : { "$and" : [ "$gt" : 10, "$lt" : 20 ] })

… et bien d'autres choses (operations sur les tableaux, expressions régulières, codeJavascript arbitraire)

25 / 34

Query Documents : quelques opérateurs

Page 26: NoSQL MongoDBkn/teaching/dcw/cours/pdf/dcw_07.pdf · 6 NoSQL/MongoDB 6.1 Propriétés et limites des bases SQL 6.2 MongoDB ... MongoDB vs BD Relationnelle. 1 Introduction, UTF-8 et

Attention : quand les tests ne sont pas des opérateurs spécifiques aux tableaux, ils sontautomatiquement distribués (comme les comparaisons en XPath) avec une sémantique «il existe » :

> db.t.insert( [ { "nom" : "Toto", "note" : 18 }, { "nom" : "Titi", "note" : [ 12, 15, 17 ] } ]) > db.find( { "note" : { "$gt" : 16 } }){ "_id" : ObjectId("…"), "nom" : "Toto", "note" : 18 }{ "_id" : ObjectId("…"), "nom" : "Titi", "note" : [ 12, 15, 17 ] }

26 / 34

Query Documents et tableaux

Page 27: NoSQL MongoDBkn/teaching/dcw/cours/pdf/dcw_07.pdf · 6 NoSQL/MongoDB 6.1 Propriétés et limites des bases SQL 6.2 MongoDB ... MongoDB vs BD Relationnelle. 1 Introduction, UTF-8 et

Dans une opération find, on peut spécifier les champs à garder ou ceux à supprimer(mais pas les deux à la fois).Pour conrserver uniquement certains champs :

{ champ1 : 1, … , champn : 1 }

Pour supprimer certains champs :

{ champ1 : 0, … , champn : 0 }

On n'a pas le droit de mélanger le mode 1 (garder) et le mode 0 (supprimer). Uneexception est le champ _id qui est toujours par défaut dans le résultat sauf si on ajoute_id : 0 (ce qui est toujours possible

> db.t.find({ "note" : 18 }, { "nom" : 1 }){ "_id" : ObjectId("…"), "nom" : "Toto" }> db.t.find({ "note" : 18 }, { "note" : 0 }){ "_id" : ObjectId("…"), "nom" : "Toto" }> db.t.find({ "note" : 18 }, { "nom" : 1, "_id" : 0}){ "nom" : "Toto" }

27 / 34

Projections

Page 28: NoSQL MongoDBkn/teaching/dcw/cours/pdf/dcw_07.pdf · 6 NoSQL/MongoDB 6.1 Propriétés et limites des bases SQL 6.2 MongoDB ... MongoDB vs BD Relationnelle. 1 Introduction, UTF-8 et

db.t.update(cond, update, options)db.t.deleteOne(cond)db.t.deleteMany(cond)

◆ cond est un query document permettant de sélectionner◆ update est un update document (même principe, avec des opérateurs de mise à jour)

> db.t.update({ "note" : 18 }, { "$set" : { "note" : 17, "malus" : 1})

Par défaut, update ne met à jour qu'un seul document qui vérifie le critère. Pour desmises à jours multiple, passer l'option multi:

> db.t.update({ "note" : 9 },{ "$set" : { "note" : 10 }}, { "multi" : true})

28 / 34

Mises à jour

Page 29: NoSQL MongoDBkn/teaching/dcw/cours/pdf/dcw_07.pdf · 6 NoSQL/MongoDB 6.1 Propriétés et limites des bases SQL 6.2 MongoDB ... MongoDB vs BD Relationnelle. 1 Introduction, UTF-8 et

1 Introduction, UTF-8 et XML ✓2 XPath (1) ✓3 XPath (2) ✓4 XSLT ✓5 DOM & JAXP ✓

6 NoSQL/MongoDB

6.1 Propriétés et limites des bases SQL ✓6.2 MongoDB ✓

6.3 MongoDB : langage de requêtes ✓6.4 Modèle distribué

Plan

Page 30: NoSQL MongoDBkn/teaching/dcw/cours/pdf/dcw_07.pdf · 6 NoSQL/MongoDB 6.1 Propriétés et limites des bases SQL 6.2 MongoDB ... MongoDB vs BD Relationnelle. 1 Introduction, UTF-8 et

MongoDB s'inscrit dans le paradigme BASE

◆ Assurer une plus grande disponibilité (meilleur temps de réponse)◆ Assurer la resistence aux pannes

MongoDB introduit le concept de Replica Set.

Un Replica Set est un ensemble de serveurs MongoDB qui contiennent tous une copie dumême ensemble de données

Parmi cet ensemble, l'un des nœuds est le nœud primaire et les autres des nœudssecondaires

Un nœud primaire est le seul qui reçoit les mises à jours. Par contre tous les nœuds dureplica set peuvent répondre aux lectures/requêtes

30 / 34

Redondance pour la tolérence aux pannes

Page 31: NoSQL MongoDBkn/teaching/dcw/cours/pdf/dcw_07.pdf · 6 NoSQL/MongoDB 6.1 Propriétés et limites des bases SQL 6.2 MongoDB ... MongoDB vs BD Relationnelle. 1 Introduction, UTF-8 et

(source : documentation MongoDB)

En cas de défaillance du nœud primaire, les nœuds secondaires restants élisent unnouveau nœud primaire

31 / 34

Replica sets

Page 32: NoSQL MongoDBkn/teaching/dcw/cours/pdf/dcw_07.pdf · 6 NoSQL/MongoDB 6.1 Propriétés et limites des bases SQL 6.2 MongoDB ... MongoDB vs BD Relationnelle. 1 Introduction, UTF-8 et

MongoDB permet aussi de stocker des grands volumes de données

Un une base de donnée peut être distribuée sur un ensemble de shards (éclat,fragments)

Le sharding (fragmentation) des données se fait selon une clé de sharding

32 / 34

Passage à l'échelle horizontal

Page 33: NoSQL MongoDBkn/teaching/dcw/cours/pdf/dcw_07.pdf · 6 NoSQL/MongoDB 6.1 Propriétés et limites des bases SQL 6.2 MongoDB ... MongoDB vs BD Relationnelle. 1 Introduction, UTF-8 et

(source : documentation MongoDB)

◆ Une collection peut être fragmentée (collection 1) ou non (collection 2)◆ Au sein d'un même fragment, la partie de la collection stockée est repliquée (via unreplica set)◆ Un routeur de requête reçoit les requêtes et mises à jour depuis l'application cliente ettransmets aux fragments

33 / 34

Sharding

Page 34: NoSQL MongoDBkn/teaching/dcw/cours/pdf/dcw_07.pdf · 6 NoSQL/MongoDB 6.1 Propriétés et limites des bases SQL 6.2 MongoDB ... MongoDB vs BD Relationnelle. 1 Introduction, UTF-8 et

C'est un survol rapide de MongoDB…

◆ Permet de faire des transformations Map/Reduce◆ Implémente les agrégats, des group by◆ Beaucoup de concepts sont présents dans d'autres systèmes (Spark, Hadoop,Cassandra, CouchDB)

34 / 34

Conclusion