2010 Lots of traffic
SQL
* *
SQL
* *
NoSQL
#NoSQL
Johan Oskarsson
2131101200
252544425
554245453
2456534534
{
name: ‘Mongo DB‘,
signification: 'humongous',
fr: ‘enorme',
Release : ‘MongoV3,1'
}
{
name: ‘NoSQL meeting ',
date: ISODate("2016-10-08T09:00:00.382Z"),
speakers: [
{ name: ‘Speacker1' },
{ name: ‘Speacker2’ }
]
}
No schema
A chaises C lunettesB Portes1 Choses
A Arabe C AnglaisB Français2 Langues
A C# B JAVA3 Langages
RDBMS Mongo DB
Database Database
Table Collection
Tuple/Row Document
Column/attribute/Variable Field
Table Join Embedded Documents
Foreing Key Reference
Index Index
Primary Key Object id _id
{ id: ’doc1’,
name: ‘Mongo DB‘,
signification: 'humongous',
fr: ‘enorme',
Release : ‘MongoV3,1'
}
{ _id:’doc2’,
name: ‘NoSQL meeting ',
date: ISODate("2016-10-08T09:00:00.382Z"),
speakers: [
{ name: ‘Speacker1' },
{ name: ‘Speacker2’ }
],
programme:{
name: ‘Mongo DB‘,
signification: 'humongous',
fr: ‘enorme',
Release : ‘MongoV3,1'
}
}
https://www.tutorialspoint.com/mongodb_terminal_online.php
{ _id:ObjectId(‘xxxxxxxxxxxxxxxxx’),
name: ‘NoSQL meeting ',
date: ISODate("2016-10-08T09:00:00.382Z"),
speakers: [
{ name: ‘Speacker1' },
{ name: ‘Speacker2’ }
],
programme:{
_id:ObjectId(‘yyyyyyyyyyyy’),
name: ‘Mongo DB‘,
signification: 'humongous',
fr: ‘enorme',
Release : ‘MongoV3,1'
}
}
{ _id:ObjectId(‘xxxxxxxxxxxxxxxxx’),
name: ‘NoSQL meeting ',
date: ISODate("2016-10-08T09:00:00.382Z"),
speakers: [
{ name: ‘Speacker1' },
{ name: ‘Speacker2’ }
],
programmeid:{ObjectId(‘yyyyyyyyyyyy’),}
}
{
_id:ObjectId(‘yyyyyyyyyyyy’),
name: ‘Mongo DB‘,
signification: 'humongous',
fr: ‘enorme',
Release : ‘MongoV3,1'
}
{ _id:ObjectId(‘xxxxxxxxxxxxxxxxx’),
name: ‘NoSQL meeting ',
date: ISODate("2016-10-08T09:00:00.382Z"),
speakers: [
{ name: ‘Speacker1' },
{ name: ‘Speacker2’ }
],
programmeid:
{ "$ref" : "creators",
"$id" : ObjectId("5126bc054aed4daf9),
"$db" : "users"
}
}
{_id:ObjectId(‘5126bc054aed4daf9’),
name: ‘Mongo DB‘,
signification: 'humongous',
fr: ‘enorme',
Release : ‘MongoV3,1'
}
Collection : creators
Db : Users
 Is 12-byte BSON type :
4 Bytes
a 4-byte value
the Unix epoch
3-byte machine
identifier
2-byte process
id
3-byte counter,
starting
Id = ObjectId()
db.<collection >. Find()
 Skip()
 Pagin()
 Count()
 Limit()
 Next()
 Foreach()
 Etc
db.<collection >. Find(
{_id : ObjectId (‘YYYYYYYYYYYY’)}
)
Create Index on any field in the document
// 1 means ascending, -1 means descending
> db.posts.ensureIndex({‘author’: 1});
// unique index
> db.posts.ensureIndex({<field>:
1},{unique:true});
db.collection.mapReduce(
<mapfunction>,
<reducefunction>,
{
out: <collection>,
query: <>,
sort: <>,
limit: <number>,
finalize: <function>,
scope: <>,
jsMode: <boolean>,
verbose: <boolean>
}
)
var mapFunction1 = function() { emit(this.cust_id, this.price); };
var reduceFunction1 = function(keyCustId, valuesPrices)
{ return sum(valuesPrices); };
 It is a specification for storing and retrieving
files that exceed the BSON-document size
limite of 16 MB.
 Mongofiles -d <db> put photo.jpg
 Db.fs.files.find();
 PHP
 C#
 Python
 Ruby
 C++
 Node js
 Etc ,,
MongoLab
MongoHQ
AWS
Joyent
 Robomongo
 MongoBooster
 MongoDB Compass
 Etc
Primary
Secondary Secondary
Driver
Write
Update Update
Primary
Secondary Secondary
Heartbeats
Primary
Secondary Secondary
Heartbeats
Primary
Secondary Secondary
Primary ?
Primary
Primary Secondary
Secondary
Primary Secondary
Heartbeats
Query router
Mongo DB V3.0
Mongo DB V3.0
Performance & Efficiency
Gains,
New Storage Architecture
Thz
Thanks

Introduction to MongoDB

Editor's Notes

  • #5 Après l’an 2000 le web s’est enfin libérer et le trafic n’a pas cesser d’évoluer jusqu’à ce que s’est devenu très complexe de gérer les taux des données du trafic , alors les grosses boite tel que google et amazon
  • #6 alors les grosses boite tel que google et amazon commencer à s’équipper de grosses machine bien puissantes et puis quand celle-ci ne suffisaient pas on a commencé à faire du clustring
  • #7  la montée en charge par l’ajout de serveur puissants mais cette solution est cher et elle a une limitation physique les solutions était l’ajout de dautre machine puissante et encore plus puissante mais la encore
  • #8 rencontre un autre probleme concernant l’enregisrtement de ces données est que sql n’est pas très performant sur une large template de cluster puissant
  • #9 A ce moment la les grosses enteprise ont dit stop et la il developpe leur proprre outils de base de données chaquun c’est carement différent des bases de données realtionnel il y a eu des publication et c’est en ce moment la que le mouvement du No SQL s’est fait vraiment sentir
  • #10 Nous allons parler rapidement de l’origine de ce mot il y a eu des conf par rapport à sa signification qui n’est l’est même pas ! Au fait c’est tout simple Johan Oskarsson proposa un meetup pour conceranant ces nouvelles bases de données qui viennet de naitre et pour ce faire il a reflechit pour un tweeter # à emmètre sur le web qui doit etre court et significatife alors il trouve le #nosql
  • #11 Nous allons parler rapidement de l’origine de ce mot il y a eu des conf par rapport à sa signification qui n’est l’est même pas ! Au fait c’est tout simple Johan Oskarsson proposa un meetup pour conceranant ces nouvelles bases de données qui viennet de naitre et pour ce faire il a reflechit pour un tweeter # à emmètre sur le web qui doit etre court et significatife alors il trouve le #nosql
  • #12 Ce qui a fait surgir cet ecosystem qui n’arrête pas d’évoluer
  • #13 Non-relatinel open-source (la plut part le sont) on y trouve quelque uns payent ou proposent des fonctionnalités payantes cluster-friendly puisque c’est le but lors de la création de ces base pas de schéma on est libre schema-less pas de schema à respecter 21st centry web il arrivent pour faire face aux big data
  • #15 Le model de donnée de ces est classifié sur différents types nous allons présenter les plus important on prends les plus importantes qui sont
  • #17 On donne une key on reçoit du contenue n’importe lequel tout dépend du besoin et de la spécificité du produit, un numbre, un document complexe une image il faut voir ça comme une hashmap qui est distribué sur un espace de disk
  • #18 Oriente document enregistre toute une masse de document avec des structure différentes sous forme de JSON model puisque c’est plus jolie d’afficher un document JSON que du XML par exemple
  • #19 C’est au fait travailler avec les column; la clè nous donne accés aux différent aggregats
  • #20 C’est carement des nœud et des relations entre ces nœud , c’est utiliser le plus en génétique par exemple
  • #21 Nous allons nous interesser à la base Mongo DB
  • #22 C’est une base de donnée orienté docuement , ces documents en format BSON , JSON en format binaire ,accelerer le process d’écriture et de lecture accélérer le développement en le rendant plus simple On a quelque chose de rapide et portable ça marche tres bien sur tout les os faciliter le scaling horizontal de la couche de persistance des données sharding ce qu’on va voir dans la suite, permettre de stocker un nombre bien plus important de données qu’auparavant. Ainsi, une approche non relationnelle est le meilleur chemin à suivre pour résoudre les problèmes de scalabilité horizontale et ainsi, de répartir la charge des bases de données sur plusieurs machines. index, les dynamic queries, le tri des résultats, les upserts (update si le document existe, inserts sinon), etc… Cela laisse au développeur la possibilité d’utiliser les « mêmes » fonctionnalités qu’avec un RDBMS, mais avec la flexibilité et les capacités de scaling qu’un système non-relationnel propose.
  • #23 On passe du monde sgbdr au monde nosql on doit s’appropier un nouveau vocabulaire , en meme tempe il est pas vraiement déconnecté il va falloir faire des amalgame Collection unité de base qui contient tout les docuement, Champs ou d’attribue Document embarqué Db ref
  • #24 Document json binaire, il peut contenir au aussi des document ou des tableaux de documents
  • #25 Un terminal interactif si on veut l’essayer avant de l’adopter
  • #26 Quand on programme en objet on présente souvent des aggregats c’est un ensemble d’objet lié aux autre avec un objet racine, quand on veut persister ça dans le monde relationel nous devons passer au mapping objet relationnel pour passer de l’objet au tables et vice versa Les aggregats c’est assez naturel pour nous les developpeur et c’est issu du domaine driven designe qui définit tres bien le design pattern
  • #27 Avec mongo db la tache sera plus facile, puisque on va pouvoir gerer des structure imbriqués que je gere pas dans les base relationnel, gere aussi les tableaux , j’ai pas mis les photos on verra par la suite comment gere les documents volumineux objectId est toujours porté par un champs qu’est _id c’est mongo db qui le définit pas vous C’est carement imbriqué dans mon docuement C’est tres pratique sur une seule requete je vais avoir toutes ces info d’un bloc
  • #28 Si on a une donné qui se répete beaucoup on peut le mettre dans une collection a part Mais ça reste manuelle c’est vous qui gérez et vous devrier effecturer deux requetes pour avoir l’info total Mais comme les performances sont tres bonnes on peut se permettre
  • #29 On peut donner la ref de la collection ainsi que celle de la base de donnée L’information peut trainer sur une autre base
  • #30 On retrouve le crud standard avec l’upsert si not exist insert Map Reduce qui nous permettra de retourner un dictionnaire clè faleurs et puis faire le calcule finale , pour de grand volume ça marche super bien GridFS va nous permettre d’élaborer la perssistante des gros fichier >16 mb Le troisième exe est mongofiles.exe fs.chunks > la data le contenu binaire fs.files > metadonnée
  • #31 Qu’est ce qu’un objectId ! C’est une grosse valeur qui est composé par plusieurs parties La première Timestamp au fil du temps être incrémenté La machine sur laquelle est enregistré le document – ce qui est intressant quand on est en mode cluster de retrouver la machine sur laquelle est enregister le doc Le PID le numéro du prossus du serveur C’est un compteur On est garantie de récupérer un message et le bon
  • #32 Ce qui nous retourne un curseur
  • #33 On peur faire le tri, le sort il y en de tout allez voir la doc elle est tres bien faite
  • #34 Ça me ressort ce doc en particulier
  • #35 Nous avons des lindexe par defaut le _id et on peut créer différents indexes On peut créer un unique et aussi sur Avec les versions recentes nous pouvons allez jusqu’à 50 indxes,
  • #37 Une selection des documents suivant les valeurs recherché , Par la suite on fait un trie et puis calcule des valeurs ce qui sera affiché en out put Ce qui a vraiment donner un grand souffle pour les big data
  • #38 GridFS va nous permettre d’élaborer la perssistante des gros fichier >16 mb Le troisième exe est mongofiles.exe plus important des exe après le mongod le serveur et mongo pour le shell fs.chunks > la data le contenu binaire fs.files > metadonnée
  • #40 Mongolab ,meme sans rien on peut avoir une instance developpeur ça suffit pour tester un petit poke Joyent qui est un grand acteur Une api rest si on met rest = true on pourai requer la base via le code
  • #41 Moi personnellement j’ai utilisé Robomongo il permet de visualiser les document plus clairement
  • #43 Grosso modo est un système de backup incrémental Notre application va ecrir sur le primary après le primary va envoyer les modif au deux secondary
  • #44 Comment ça marche ? Examinon un sénario catastrophe
  • #45 Comment ça marche ? Heartbeats tout est bon avec les secondary Examinon un sénario catastrophe
  • #46 Nouvelle election qui va se faire : un des deux va devenir primary
  • #47 Il va devenir primary et va repliquer sur le secondary
  • #48 Le premier primary qui sera le bon Ceci dit il faut toujours mettre un secondry ailleur que l’autre secondary et le primary Comme ça on sera sure que s’il arrive un pepin aux deux dernier notre secondary pourra nous sauvez le temps de remettre tout dans l’ordre
  • #49 Notification d’écriture si on veut ou pas d’une écriture si ça bien déroulé
  • #50 Si on a beaucoup de donnée on doit répartir sur plusieurs machines c’est ça le but du sharding
  • #51 Si on a beaucoup de donnée on doit répartir sur plusieurs machines c’est ça le but du sharding
  • #52 En production on conseille que chaque shard soit un replicatset, et comme vous voyer on peut définier les limite du shard par la clè du sharding
  • #53 Avec la sortie de la nouvelle version de Mongo 3.0 où ils ont integrer de nouveaux systemes de sécurité ansi que de stockage , je pense que le Nosql va prendre le relais sur le chemain de la data
  • #54 Performance & Efficiency Gains, New Storage Architecture