Un document - Microsoft Center

publicité
MongoDB et C#
08/02/2011
Rui Carvalho
Yann Schwartz
2
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
3
D’où vient NoSQL ?
4
SGBDR vs. NoSQL
SGBDR
NoSQL
•
Tables – Relations
•
Autre chose…
•
SQL
•
Ca dépend…
•
Transactions fortes
•
Ca dépend aussi
•
Centralisé
•
Réparti
5
Modèles de données
•
Clé-valeur
• Memcached, Reddis
•
Colonnes
Big Table, Cassandra
•
Documents
• CouchDB, MongoDB
6
Requêtage
•
Propre au modèle de données
•
Par clé
•
Map/Reduce (agrégation)
•
JSON
7
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
8
De nouveaux acronymes !
•
ACID
Atomic Consistent Isolated Durable
•
CAP (choisir deux sur trois)
Consistent Available Partitionned
•
BASE
BAsically Available
Soft State
Eventually Consistent
9
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
10
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
11
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)
12
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
13
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
14
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é
15
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
17
•
Relationnel / Document
Question
List(Comment)
Comment
Question
Response
List(Response)
User
SQL
Document
18
User
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
19
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
20
Démo
La console mongo
21
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
22
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
23
Sharding et réplication
•
Le sharding permet un partitionnement automatique des
données
24
Autres fonctionnalités
•
Requêtes géographiques
•
Capped collections
•
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)
25
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
26
Démo
Mongoverflow
27
Ressources
Site officiel
www.mongodb.org
Driver officiel
github.com/mongodb/mongo-csharp-driver
Extensions LINQ
github.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
28
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
29
Téléchargement