380 likes | 686 Views
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
E N D
MongoDB et C# 08/02/2011RuiCarvalho 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
SGBDR vs. NoSQL SGBDR • Tables – Relations • SQL • Transactions fortes • Centralisé NoSQL • Autre chose… • Ca dépend… • Ca dépend aussi • Réparti
Modèles de données • Clé-valeur • Memcached, Reddis • Colonnes Big Table, Cassandra • Documents • CouchDB, MongoDB
Requêtage • Propre au modèle de données • Par clé • Map/Reduce (agrégation) • JSON
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
De nouveaux acronymes ! • ACID AtomicConsistent IsolatedDurable • CAP (choisir deux sur trois) Consistent AvailablePartitionned • BASE BAsicallyAvailableSoft State Eventually Consistent
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’ impedancemismatch
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
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)
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
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
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”} ] }
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
Relationnel / Document Question Question List(Comment) Comment User Response List(Response) User SQL Document
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
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
Démo La console mongo
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
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
Sharding et réplication • Le sharding permet un partitionnement automatique des données
Autres fonctionnalités • Requêtes géographiques • Cappedcollections • FSGrid (file system réparti pour les blobs) • Javascript exécuté sur le serveur db.eval (~ procédures stockées)map/reduce ( agrégations) db.system.js ( fonctions)
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émo Mongoverflow
Ressources Site officiel www.mongodb.org Driver officiel github.com/mongodb/mongo-csharp-driverExtensions LINQgithub.com/craiggwilson/fluent-mongo Code des démos de la session bitbucket.org/rhwy/techdays-paris-2011-mongodb-csharp Code des démos de la session News, demos : artofnet.fr, objectnull.com Twitter: @rhwy,@abolibibelot
MSDN et TechNet: l’essentiel des ressources techniques à portée de clic • Portail administration et infrastructure pour informaticiens • Portail de ressources technique pour développeurs http://technet.com http://msdn.com