mongodb et c#
DESCRIPTION
MongoDB et C#. 08/02/2011 Rui Carvalho Yann Schwartz. Au menu. NoSQL en 5 minutes MongoDB dans les grandes lignes Modéliser ses données dans Mongo Le requêtage Fonctionnalités avancées Un exemple : MongOverlfow. D’où vient NoSQL ?. SGBDR vs. NoSQL. SGBDR Tables – Relations SQL - PowerPoint PPT PresentationTRANSCRIPT
![Page 1: MongoDB et C#](https://reader036.vdocuments.mx/reader036/viewer/2022081503/568166b0550346895ddaab74/html5/thumbnails/1.jpg)
![Page 2: MongoDB et C#](https://reader036.vdocuments.mx/reader036/viewer/2022081503/568166b0550346895ddaab74/html5/thumbnails/2.jpg)
2
MongoDB et C#08/02/2011Rui Carvalho Yann Schwartz
![Page 3: MongoDB et C#](https://reader036.vdocuments.mx/reader036/viewer/2022081503/568166b0550346895ddaab74/html5/thumbnails/3.jpg)
3
Au menu• NoSQL en 5 minutes
• MongoDB dans les grandes lignes
• Modéliser ses données dans Mongo
• Le requêtage
• Fonctionnalités avancées
• Un exemple : MongOverlfow
![Page 4: MongoDB et C#](https://reader036.vdocuments.mx/reader036/viewer/2022081503/568166b0550346895ddaab74/html5/thumbnails/4.jpg)
4
D’où vient NoSQL ?
![Page 5: MongoDB et C#](https://reader036.vdocuments.mx/reader036/viewer/2022081503/568166b0550346895ddaab74/html5/thumbnails/5.jpg)
5
SGBDR vs. NoSQL
SGBDR
• Tables – Relations
• SQL
• Transactions fortes
• Centralisé
NoSQL
• Autre chose…
• Ca dépend…
• Ca dépend aussi
• Réparti
![Page 6: MongoDB et C#](https://reader036.vdocuments.mx/reader036/viewer/2022081503/568166b0550346895ddaab74/html5/thumbnails/6.jpg)
6
Modèles de données• Clé-valeur
• Memcached, Reddis
• ColonnesBig Table, Cassandra
• Documents• CouchDB, MongoDB
![Page 7: MongoDB et C#](https://reader036.vdocuments.mx/reader036/viewer/2022081503/568166b0550346895ddaab74/html5/thumbnails/7.jpg)
7
Requêtage
• Propre au modèle de données
• Par clé
• Map/Reduce (agrégation)
• JSON
![Page 8: MongoDB et C#](https://reader036.vdocuments.mx/reader036/viewer/2022081503/568166b0550346895ddaab74/html5/thumbnails/8.jpg)
8
Transactions• Les garanties dépendent du modèle et des choix
de conception de la base…
• Toujours des transactions atomiques
• Mais pas forcément de transactions explicites pour plusieurs actions
![Page 9: MongoDB et C#](https://reader036.vdocuments.mx/reader036/viewer/2022081503/568166b0550346895ddaab74/html5/thumbnails/9.jpg)
9
De nouveaux acronymes !• ACIDAtomic Consistent Isolated Durable
• CAP (choisir deux sur trois)Consistent Available Partitionned
• BASEBAsically AvailableSoft StateEventually Consistent
![Page 10: MongoDB et C#](https://reader036.vdocuments.mx/reader036/viewer/2022081503/568166b0550346895ddaab74/html5/thumbnails/10.jpg)
10
A quoi ça sert ?• Caches à valeur ajoutée (requêtables, distribués,
persistents)
• Données transitoires
• Contraintes de charge
• Modèles élastiques
• Résoudre l’ impedance mismatch
![Page 11: MongoDB et C#](https://reader036.vdocuments.mx/reader036/viewer/2022081503/568166b0550346895ddaab74/html5/thumbnails/11.jpg)
11
Au menu• NoSQL en 5 minutes
• MongoDB dans les grandes lignes
• Modéliser ses données dans Mongo
• Le requêtage
• Fonctionnalités avancées
• Un exemple : MongOverlfow
![Page 12: MongoDB et C#](https://reader036.vdocuments.mx/reader036/viewer/2022081503/568166b0550346895ddaab74/html5/thumbnails/12.jpg)
12
MongoDB
• Base de données orientée documents
• Schémas souples
• Requêtes exprimées en JSON
• Données stockées et transmises en BSON (binary JSON)
• Montée en charge (réplication, sharding)
![Page 13: MongoDB et C#](https://reader036.vdocuments.mx/reader036/viewer/2022081503/568166b0550346895ddaab74/html5/thumbnails/13.jpg)
13
Pourquoi MongoDB• Facile à mettre en œuvre
• Open Source, gratuit et vivant
• Des drivers pour tous les langages
• Riche mais pas trop exotique (une partie des concepts relationnels s’appliquent toujours)
• Outillage assez riche
• Modèle riche
![Page 14: MongoDB et C#](https://reader036.vdocuments.mx/reader036/viewer/2022081503/568166b0550346895ddaab74/html5/thumbnails/14.jpg)
14
Au menu• NoSQL en 5 minutes
• MongoDB dans les grandes lignes
• Modéliser ses données dans Mongo
• Le requêtage
• Fonctionnalités avancées
• Un exemple : MongOverlfow
![Page 15: MongoDB et C#](https://reader036.vdocuments.mx/reader036/viewer/2022081503/568166b0550346895ddaab74/html5/thumbnails/15.jpg)
15
Orienté document
• Les documents (ligne) de même nature sont stockées dans des collections (tables)
• Un document est un arbre, composé de clés et de valeurs
• Une valeur peut être:• Scalaire (int, long, string, date, binary, bool,
etc.)• Tableau• Un document imbriqué
![Page 16: MongoDB et C#](https://reader036.vdocuments.mx/reader036/viewer/2022081503/568166b0550346895ddaab74/html5/thumbnails/16.jpg)
Un document
{Id : 1,user : 1,Titre : "mon premier post",Date : 123456789,Views : 123,CommentsCount : 1,Comments : [{ Content : "super ton post!", User : "toto”}, {Content: ‘Preums !’, User: “Le Troll”}]}
![Page 17: MongoDB et C#](https://reader036.vdocuments.mx/reader036/viewer/2022081503/568166b0550346895ddaab74/html5/thumbnails/17.jpg)
17
Comment modéliser• Document complexe
• Documents imbriqués• Les value objects font partie du document• Parfois gourmands (dénormalisation)• Limite (actuelle) de 4Mo par document
• Normalisation
• Approche mixte
![Page 18: MongoDB et C#](https://reader036.vdocuments.mx/reader036/viewer/2022081503/568166b0550346895ddaab74/html5/thumbnails/18.jpg)
18
• Relationnel / Document
Question
Comment
Response
User
SQL Document
Question
List(Comment)
List(Response)
User
![Page 19: MongoDB et C#](https://reader036.vdocuments.mx/reader036/viewer/2022081503/568166b0550346895ddaab74/html5/thumbnails/19.jpg)
19
Au menu• NoSQL en 5 minutes
• MongoDB dans les grandes lignes
• Modéliser ses données dans Mongo
• Le requêtage
• Fonctionnalités avancées
• Un exemple : MongOverlfow
![Page 20: MongoDB et C#](https://reader036.vdocuments.mx/reader036/viewer/2022081503/568166b0550346895ddaab74/html5/thumbnails/20.jpg)
20
Requêtes dans MongoDB• Requêtes en JSON
• On retrouve l’équivalent des projections de SQL
• Quelques agrégations par défaut… Map/Reduce pour les
autres
![Page 21: MongoDB et C#](https://reader036.vdocuments.mx/reader036/viewer/2022081503/568166b0550346895ddaab74/html5/thumbnails/21.jpg)
21
DémoLa console mongo
![Page 22: MongoDB et C#](https://reader036.vdocuments.mx/reader036/viewer/2022081503/568166b0550346895ddaab74/html5/thumbnails/22.jpg)
22
API d’accès• Trois bibliothèques, dont une officielle
• 10gen : fonctionnalités complètes, pas de LINQ• Extension pour LINQ : fluent-mongo
• NORM, mongodb-csharp : LINQ
• En commun : mode document brut ou sérialisation de POCO
![Page 23: MongoDB et C#](https://reader036.vdocuments.mx/reader036/viewer/2022081503/568166b0550346895ddaab74/html5/thumbnails/23.jpg)
23
Au menu• NoSQL en 5 minutes
• MongoDB dans les grandes lignes
• Modéliser ses données dans Mongo
• Le requétage
• Fonctionnalités avancées
• Un exemple : MongOverlfow
![Page 24: MongoDB et C#](https://reader036.vdocuments.mx/reader036/viewer/2022081503/568166b0550346895ddaab74/html5/thumbnails/24.jpg)
24
Sharding et réplication• Le sharding permet un partitionnement
automatique des données
![Page 25: MongoDB et C#](https://reader036.vdocuments.mx/reader036/viewer/2022081503/568166b0550346895ddaab74/html5/thumbnails/25.jpg)
25
Autres fonctionnalités• Requêtes géographiques
• Capped collections
• FSGrid (file system réparti pour les blobs)
• Javascript exécuté sur le serveurdb.eval (~ procédures stockées)map/reduce ( agrégations)db.system.js ( fonctions)
![Page 26: MongoDB et C#](https://reader036.vdocuments.mx/reader036/viewer/2022081503/568166b0550346895ddaab74/html5/thumbnails/26.jpg)
26
Au menu• NoSQL en 5 minutes
• MongoDB dans les grandes lignes
• Modéliser ses données dans Mongo
• Le requétage
• Fonctionnalités avancées
• Un exemple : MongOverlfow
![Page 27: MongoDB et C#](https://reader036.vdocuments.mx/reader036/viewer/2022081503/568166b0550346895ddaab74/html5/thumbnails/27.jpg)
27
DémoMongoverflow
![Page 28: MongoDB et C#](https://reader036.vdocuments.mx/reader036/viewer/2022081503/568166b0550346895ddaab74/html5/thumbnails/28.jpg)
28
RessourcesSite officielwww.mongodb.org
Driver officielgithub.com/mongodb/mongo-csharp-driverExtensions LINQgithub.com/craiggwilson/fluent-mongo
Code des démos de la sessionbitbucket.org/rhwy/techdays-paris-2011-mongodb-csharp
Code des démos de la sessionNews, demos : artofnet.fr, objectnull.comTwitter: @rhwy,@abolibibelot
![Page 29: MongoDB et C#](https://reader036.vdocuments.mx/reader036/viewer/2022081503/568166b0550346895ddaab74/html5/thumbnails/29.jpg)
29
MSDN et TechNet : l’essentiel des ressources techniques à portée de clic
http://technet.com http://msdn.com
Portail administration et infrastructure pour informaticiens
Portail de ressources technique pour développeurs
![Page 30: MongoDB et C#](https://reader036.vdocuments.mx/reader036/viewer/2022081503/568166b0550346895ddaab74/html5/thumbnails/30.jpg)