Download - MongoDB et C#
2
MongoDB et C#08/02/2011Rui Carvalho Yann Schwartz
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
4
D’où vient NoSQL ?
5
SGBDR vs. NoSQL
SGBDR
• Tables – Relations
• SQL
• Transactions fortes
• Centralisé
NoSQL
• Autre chose…
• Ca dépend…
• Ca dépend aussi
• Réparti
6
Modèles de données• Clé-valeur
• Memcached, Reddis
• ColonnesBig Table, Cassandra
• Documents• CouchDB, MongoDB
7
Requêtage
• Propre au modèle de données
• Par clé
• Map/Reduce (agrégation)
• JSON
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
9
De nouveaux acronymes !• ACIDAtomic Consistent Isolated Durable
• CAP (choisir deux sur trois)Consistent Available Partitionned
• BASEBAsically AvailableSoft StateEventually Consistent
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
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
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)
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
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
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é
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”}]}
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
18
• Relationnel / Document
Question
Comment
Response
User
SQL Document
Question
List(Comment)
List(Response)
User
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
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
21
DémoLa console mongo
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
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
24
Sharding et réplication• Le sharding permet un partitionnement
automatique des données
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)
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
27
DémoMongoverflow
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
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