SlideShare una empresa de Scribd logo
1 de 39
Mongo db/ C# / Linq cas du site www.citizart.com Erwan de Cadoudal le 23 mars 2011
Agenda Contexte du site CitizArt Utilisation de Mongo db Exemples de code simples Evolutions
Agenda Contexte du site CitizArt Utilisation de Mongo db Exemples de code simples Evolutions
Le site en quelques slides Citizart.com Mise en relation de créateurs d’objets de mode et de déco avec des acheteurs et avec des professionnels de l’évènementiel Enjeux Exposer et permettre d’acheter des objets uniques et de qualité Faire connaître les créateurs et leurs talents Etre agile dans les développements
Home page – ajaxsearchengine
RefineFacets and Searchresults
Detailed data sheet
General informations – form
Photos Gallery – form
Les besoins fonctionnels Entités complexes :  product, event, customer, email, showroom, photos gallery, … Beaucoup de formulaires de saisie  Chaque créateur possède son espace de saisie (11 formulaires) Recherches Attributes, full text, refine by (facet) Site en évolution constante Besoin de souplesse dans l’ajout/modification des données et de leur structure Back office Gestion de listes d’autorités arborescentes Publication des produits Saisie de contenus (CMS)
Les réponses techniques Choix des technos ASP.NET  / C# IIS SQL Server puis Mongo DB Objets fortement typés  Permet la complétion de code dans Visual Studio Développement plus rapide quand on y est habitué Linq Permet l’écriture de requêtes complexes en C# sans avoir besoin de regarder la syntaxe json / javascript de mongo (ou SQL) Pas de maintenance de code dans la base (pb de versionning) Fonctions de MapReduce de Mongo Permet le faceting (grouping)
Agenda Contexte du site CitizArt Utilisation de Mongo db Exemples de code simples Evolutions
Historique Site initialement créé sur une racine NopCommerce ASP.NET / C# SQL Server Entity Framework Pourquoi me suis-je tourné vers Mongo db ? Lenteurs de Entityfrmwk avec de petits volumes de données Un jour un Save() n’a pas enregistré données sans rien dire Caractéristiques importantes de Mongo Rapidité à l’insertion et à la recherche Montée en charge assurée nativement Pas de setup avec un JRE ou gros installer, juste un « exe » Monitoring/Metrics du serveur MapReducecapapilities (Group by)
Faire le choix de Mongo Après plusieurs mois à surveiller la tendance noSQL Après avoir regardé Cassandra, Reddis, CouchDB Vu les grands noms qui utilisaient Mongo DB : Shutterfly, Foursquare, bit.ly, Source Forge, Etsy, … Mongo semblait bien pour du logging ou de l’insertion de masse, je voulais savoir si l’on pouvait également l’utiliser pour une application plus « classique » La meilleure façon de faire était de se jeter à l’eau
Le driver NoRM Avantages Open source écrit en C# Gère la persistance des objets avec Mongo Requêtes en Linq Commandes d’admin : indexs, drop, … Support de Mono (pour évolutions futures) Mais Communauté limitée Peu de commits depuis juillet 2010 (adopté en octobre 2010) https://github.com/atheken/NoRM/wiki/
Modèle et données Avant (en SQL server) Création de l’entité et des champs dans la base de données Ajout de la classe dans les objets métiers Ajout de l’entité « Collection » dans le Context Mapping dans le fichier « graphique » model.edmx Design des formulaires de saisie Maintenant (Mongo) Ajout de la classe dans les objets métiers Design des formulaires de saisie Conclusion Concentré sur le métier moins sur le paramétrage et le code de plomberie avec la base de données
Comparaison rapide SQL / noSQL
Agenda Contexte du site CitizArt Utilisation de Mongo db Exemples de code simples Evolutions
Server 1 Architecture très classique IIS 7 ASP.NET 4.0 NoRM C# Driver HTTP Mongo DB 1.6.5 / 64b
Un peu de code ?
Conception rapide - Exemple Un client avec 0 ou n adresses de facturation Customer Id, First name, Last name Date of birth Billingaddresses (collection de Address) Address Street,  Zipcode, City Country
Cas d’utilisations typiques
Documents imbriqués
C’est vraiment enregistré ? On lance la console mongo.exe > show dbs NoRMSample1 Admin > use NoRMSample1 switched to db NoRMSample1 > show collections Customer NormHiLoKey system.indexes >
C’est vraiment enregistré ? On vérifie > db.Customer.find() { "_id" : 1, "FirstName" : "Andrew",  "LastName" : "SMITH",  "BirthDate" : "Sun Oct 05 1980 00:00:00 GMT+0200", "BillingAddresses" : [         {                 "Street" : "151 rue Montmartre",                 "ZipCode" : "75002",                 "City" : "Paris",                 "Country" : "FR"         } ] } >
Plutôt graphique ? : Mongo VUE
OK. On peut relire maintenant ? Un peu de Linq
On peut chercher sur les objets imbriqués ? Un peu de Linq et expression Lambda pour le fun
La partie déclarative du code C# C’est un language statique, donc on doit définir les objets que l’on manipule : Connexion Couches objets La classe d’aide que j’ai définie (PersistantObject)
Connexion à Mongo Utilisation d’une chaine de connexion
Objets en C# - Pas de magie, faisons simple
PersistantObject
Et c’est rapide ? A l’insertion Source : Michael Kennedy, http://www.michaelckennedy.net/blog/CommentView,guid,c5043397-ad33-4141-9bb7-64707a9c987d.aspx
Et c’est rapide ? A la recherche Source : Michael Kennedy, http://www.michaelckennedy.net/blog/CommentView,guid,c5043397-ad33-4141-9bb7-64707a9c987d.aspx Recherche par Id Recherche complexe avec relation Customer > Order
Batch Update field value MONGO javascript SQL db.Customer.find("this.GeoCountyId === 7169") .forEach(function (customer) { customer.GeoCountyId = 7355; db.Customer.save(customer);   } ) update Customer setGeoCountryId = 7355 whereGeoCountryId = 7169
Agenda Contexte du site CitizArt Utilisation de Mongo db Exemples de code simples Evolutions
Les problèmes rencontrés Courbe d’apprentissage de Mongo DB Se défaire de ses habitudes des RDBMS Il me reste beaucoup de choses à apprendre Id non linéaires de NoRM (HiLoalgo) Obligé de développer un algo pour rendre les Id continus Bug dans NoRM Quand un champ existant dans Mongo et non en C# Correction faite dans le code NoRM Problème de stabilité / memoryleak Corrigé en fermant proprement les connexions après chaque utilisation
Prochaines Evolutions Passer sur Mongo 1.8 GeoQueries Data durability Montée en charge  Poser des index Passer les images sur GridFS Envisager d’utiliser le Sharding Cloud pour l’applicatif Si NoRM non maintenu sur la durée et bugs bloquants regarder du côté de Mongo C# driverFluent Mongo pour Linq
Pour en savoir plus Contactez  Erwan de Cadoudal, edecadoudal@eca-solutions.fr www.citizart.com Resources http://www.mongodb.org/ https://github.com/atheken/NoRM http://normproject.org/ Merci

Más contenido relacionado

Destacado

MongoDB NoSQL database a deep dive -MyWhitePaper
MongoDB  NoSQL database a deep dive -MyWhitePaperMongoDB  NoSQL database a deep dive -MyWhitePaper
MongoDB NoSQL database a deep dive -MyWhitePaperRajesh Kumar
 
La web 2
La web 2La web 2
La web 2olga
 
Sesion 5 mejorando tu vida sexual
Sesion 5 mejorando tu vida sexualSesion 5 mejorando tu vida sexual
Sesion 5 mejorando tu vida sexualAsael Lopez
 
ShareConf 2013 - Implementierung von Hybridumgebungen mit SharePoint 2013 und...
ShareConf 2013 - Implementierung von Hybridumgebungen mit SharePoint 2013 und...ShareConf 2013 - Implementierung von Hybridumgebungen mit SharePoint 2013 und...
ShareConf 2013 - Implementierung von Hybridumgebungen mit SharePoint 2013 und...1stQuad Solutions
 
Mon idole. sergio
Mon idole. sergioMon idole. sergio
Mon idole. sergioSchool
 
GenY und der Arbeitsmarkt - eine Liebesbeziehung?!
GenY und der Arbeitsmarkt - eine Liebesbeziehung?!GenY und der Arbeitsmarkt - eine Liebesbeziehung?!
GenY und der Arbeitsmarkt - eine Liebesbeziehung?!Laura Wolfs
 
La cité des dieux sauvages. alberto
La cité des dieux sauvages. albertoLa cité des dieux sauvages. alberto
La cité des dieux sauvages. albertoSchool
 
Presentación2
Presentación2Presentación2
Presentación21B35
 
Miguel. son frère
Miguel. son frèreMiguel. son frère
Miguel. son frèreSchool
 
Arte e decoupage
Arte e decoupageArte e decoupage
Arte e decoupageAutonoma
 

Destacado (18)

MongoDB NoSQL database a deep dive -MyWhitePaper
MongoDB  NoSQL database a deep dive -MyWhitePaperMongoDB  NoSQL database a deep dive -MyWhitePaper
MongoDB NoSQL database a deep dive -MyWhitePaper
 
La web 2
La web 2La web 2
La web 2
 
Sesion 5 mejorando tu vida sexual
Sesion 5 mejorando tu vida sexualSesion 5 mejorando tu vida sexual
Sesion 5 mejorando tu vida sexual
 
ShareConf 2013 - Implementierung von Hybridumgebungen mit SharePoint 2013 und...
ShareConf 2013 - Implementierung von Hybridumgebungen mit SharePoint 2013 und...ShareConf 2013 - Implementierung von Hybridumgebungen mit SharePoint 2013 und...
ShareConf 2013 - Implementierung von Hybridumgebungen mit SharePoint 2013 und...
 
Metodología
Metodología Metodología
Metodología
 
Mon idole. sergio
Mon idole. sergioMon idole. sergio
Mon idole. sergio
 
Planetas del Sistema Solar
Planetas del Sistema SolarPlanetas del Sistema Solar
Planetas del Sistema Solar
 
Guia access 2007
Guia access 2007Guia access 2007
Guia access 2007
 
GenY und der Arbeitsmarkt - eine Liebesbeziehung?!
GenY und der Arbeitsmarkt - eine Liebesbeziehung?!GenY und der Arbeitsmarkt - eine Liebesbeziehung?!
GenY und der Arbeitsmarkt - eine Liebesbeziehung?!
 
GIBT ES EINE WAHRE RELIGION?
GIBT ES EINE WAHRE RELIGION?GIBT ES EINE WAHRE RELIGION?
GIBT ES EINE WAHRE RELIGION?
 
La cité des dieux sauvages. alberto
La cité des dieux sauvages. albertoLa cité des dieux sauvages. alberto
La cité des dieux sauvages. alberto
 
Presentación2
Presentación2Presentación2
Presentación2
 
Les 09 1
Les 09 1Les 09 1
Les 09 1
 
Miguel. son frère
Miguel. son frèreMiguel. son frère
Miguel. son frère
 
Parte
ParteParte
Parte
 
Arte e decoupage
Arte e decoupageArte e decoupage
Arte e decoupage
 
Les 10 1
Les 10 1Les 10 1
Les 10 1
 
Portrait énergétique de l'Abitibi-Ouest, Villebois et Valcanton
Portrait énergétique de l'Abitibi-Ouest, Villebois et ValcantonPortrait énergétique de l'Abitibi-Ouest, Villebois et Valcanton
Portrait énergétique de l'Abitibi-Ouest, Villebois et Valcanton
 

Similar a Mongo db with C#

Linq et Entity framework
Linq et Entity frameworkLinq et Entity framework
Linq et Entity frameworkDNG Consulting
 
2014 03-26-appdevseries-session3-interactingwiththedatabase-fr-phpapp01
2014 03-26-appdevseries-session3-interactingwiththedatabase-fr-phpapp012014 03-26-appdevseries-session3-interactingwiththedatabase-fr-phpapp01
2014 03-26-appdevseries-session3-interactingwiththedatabase-fr-phpapp01MongoDB
 
Introduction au Domain Driven Design
Introduction au Domain Driven DesignIntroduction au Domain Driven Design
Introduction au Domain Driven DesignDNG Consulting
 
Gestion des données d'entreprise à l'ère de MongoDB et du Data Lake
Gestion des données d'entreprise à l'ère de MongoDB et du Data LakeGestion des données d'entreprise à l'ère de MongoDB et du Data Lake
Gestion des données d'entreprise à l'ère de MongoDB et du Data LakeMongoDB
 
ASP.NET MVC, Web API & KnockoutJS
ASP.NET MVC, Web API & KnockoutJSASP.NET MVC, Web API & KnockoutJS
ASP.NET MVC, Web API & KnockoutJSRenaud Dumont
 
SQL Server et les développeurs
SQL Server et les développeurs SQL Server et les développeurs
SQL Server et les développeurs Microsoft
 
Fondamentaux d'architecture d'une application Flex
Fondamentaux d'architecture d'une application FlexFondamentaux d'architecture d'une application Flex
Fondamentaux d'architecture d'une application Flexdavid deraedt
 
Fondamentaux d'architecture d'une application Flex
Fondamentaux d'architecture d'une application FlexFondamentaux d'architecture d'une application Flex
Fondamentaux d'architecture d'une application Flexdavid deraedt
 
Introduction aux bases de données NoSQL
Introduction aux bases de données NoSQLIntroduction aux bases de données NoSQL
Introduction aux bases de données NoSQLAntoine Augusti
 
Symposium2008 Open Source 08 02 2008
Symposium2008    Open Source   08 02 2008Symposium2008    Open Source   08 02 2008
Symposium2008 Open Source 08 02 2008juflo
 
Présentation mongoDB et mongoId
Présentation mongoDB et mongoIdPrésentation mongoDB et mongoId
Présentation mongoDB et mongoIdvtabary
 
Retour d’expérience sur ‘TFS Online’ (VSTS) dans une solution industrielle (c...
Retour d’expérience sur ‘TFS Online’ (VSTS) dans une solution industrielle (c...Retour d’expérience sur ‘TFS Online’ (VSTS) dans une solution industrielle (c...
Retour d’expérience sur ‘TFS Online’ (VSTS) dans une solution industrielle (c...Microsoft Technet France
 
Microsoft Experieces 2016 - Retour d’expériences sur TFS Online
Microsoft Experieces 2016 - Retour d’expériences sur TFS OnlineMicrosoft Experieces 2016 - Retour d’expériences sur TFS Online
Microsoft Experieces 2016 - Retour d’expériences sur TFS OnlineDenis Voituron
 
Introduction aux web components
Introduction aux web componentsIntroduction aux web components
Introduction aux web componentsFrancois ANDRE
 
Paul valery et les Web components
Paul valery et les Web componentsPaul valery et les Web components
Paul valery et les Web componentsFrancois ANDRE
 
L'histoire d'html5 pour les développeurs windows phone 8
L'histoire d'html5 pour les développeurs windows phone 8L'histoire d'html5 pour les développeurs windows phone 8
L'histoire d'html5 pour les développeurs windows phone 8davrous
 
MongoDB 3.6 Customer Deck pptx.pptx
MongoDB 3.6 Customer Deck pptx.pptxMongoDB 3.6 Customer Deck pptx.pptx
MongoDB 3.6 Customer Deck pptx.pptxMongoDB
 
Les nouveautés de MongoDB 3.6
Les nouveautés de MongoDB 3.6Les nouveautés de MongoDB 3.6
Les nouveautés de MongoDB 3.6MongoDB
 

Similar a Mongo db with C# (20)

Linq et Entity framework
Linq et Entity frameworkLinq et Entity framework
Linq et Entity framework
 
2014 03-26-appdevseries-session3-interactingwiththedatabase-fr-phpapp01
2014 03-26-appdevseries-session3-interactingwiththedatabase-fr-phpapp012014 03-26-appdevseries-session3-interactingwiththedatabase-fr-phpapp01
2014 03-26-appdevseries-session3-interactingwiththedatabase-fr-phpapp01
 
Introduction au Domain Driven Design
Introduction au Domain Driven DesignIntroduction au Domain Driven Design
Introduction au Domain Driven Design
 
Gestion des données d'entreprise à l'ère de MongoDB et du Data Lake
Gestion des données d'entreprise à l'ère de MongoDB et du Data LakeGestion des données d'entreprise à l'ère de MongoDB et du Data Lake
Gestion des données d'entreprise à l'ère de MongoDB et du Data Lake
 
ASP.NET MVC, Web API & KnockoutJS
ASP.NET MVC, Web API & KnockoutJSASP.NET MVC, Web API & KnockoutJS
ASP.NET MVC, Web API & KnockoutJS
 
SQL Server et les développeurs
SQL Server et les développeurs SQL Server et les développeurs
SQL Server et les développeurs
 
Linq Tech Days08 Lux
Linq Tech Days08 LuxLinq Tech Days08 Lux
Linq Tech Days08 Lux
 
Fondamentaux d'architecture d'une application Flex
Fondamentaux d'architecture d'une application FlexFondamentaux d'architecture d'une application Flex
Fondamentaux d'architecture d'une application Flex
 
Fondamentaux d'architecture d'une application Flex
Fondamentaux d'architecture d'une application FlexFondamentaux d'architecture d'une application Flex
Fondamentaux d'architecture d'une application Flex
 
Introduction aux bases de données NoSQL
Introduction aux bases de données NoSQLIntroduction aux bases de données NoSQL
Introduction aux bases de données NoSQL
 
Symposium2008 Open Source 08 02 2008
Symposium2008    Open Source   08 02 2008Symposium2008    Open Source   08 02 2008
Symposium2008 Open Source 08 02 2008
 
Présentation mongoDB et mongoId
Présentation mongoDB et mongoIdPrésentation mongoDB et mongoId
Présentation mongoDB et mongoId
 
Retour d’expérience sur ‘TFS Online’ (VSTS) dans une solution industrielle (c...
Retour d’expérience sur ‘TFS Online’ (VSTS) dans une solution industrielle (c...Retour d’expérience sur ‘TFS Online’ (VSTS) dans une solution industrielle (c...
Retour d’expérience sur ‘TFS Online’ (VSTS) dans une solution industrielle (c...
 
Microsoft Experieces 2016 - Retour d’expériences sur TFS Online
Microsoft Experieces 2016 - Retour d’expériences sur TFS OnlineMicrosoft Experieces 2016 - Retour d’expériences sur TFS Online
Microsoft Experieces 2016 - Retour d’expériences sur TFS Online
 
Introduction aux web components
Introduction aux web componentsIntroduction aux web components
Introduction aux web components
 
Paul valery et les Web components
Paul valery et les Web componentsPaul valery et les Web components
Paul valery et les Web components
 
Jcom02.ppt
Jcom02.pptJcom02.ppt
Jcom02.ppt
 
L'histoire d'html5 pour les développeurs windows phone 8
L'histoire d'html5 pour les développeurs windows phone 8L'histoire d'html5 pour les développeurs windows phone 8
L'histoire d'html5 pour les développeurs windows phone 8
 
MongoDB 3.6 Customer Deck pptx.pptx
MongoDB 3.6 Customer Deck pptx.pptxMongoDB 3.6 Customer Deck pptx.pptx
MongoDB 3.6 Customer Deck pptx.pptx
 
Les nouveautés de MongoDB 3.6
Les nouveautés de MongoDB 3.6Les nouveautés de MongoDB 3.6
Les nouveautés de MongoDB 3.6
 

Mongo db with C#

  • 1. Mongo db/ C# / Linq cas du site www.citizart.com Erwan de Cadoudal le 23 mars 2011
  • 2. Agenda Contexte du site CitizArt Utilisation de Mongo db Exemples de code simples Evolutions
  • 3. Agenda Contexte du site CitizArt Utilisation de Mongo db Exemples de code simples Evolutions
  • 4. Le site en quelques slides Citizart.com Mise en relation de créateurs d’objets de mode et de déco avec des acheteurs et avec des professionnels de l’évènementiel Enjeux Exposer et permettre d’acheter des objets uniques et de qualité Faire connaître les créateurs et leurs talents Etre agile dans les développements
  • 5. Home page – ajaxsearchengine
  • 10. Les besoins fonctionnels Entités complexes : product, event, customer, email, showroom, photos gallery, … Beaucoup de formulaires de saisie Chaque créateur possède son espace de saisie (11 formulaires) Recherches Attributes, full text, refine by (facet) Site en évolution constante Besoin de souplesse dans l’ajout/modification des données et de leur structure Back office Gestion de listes d’autorités arborescentes Publication des produits Saisie de contenus (CMS)
  • 11. Les réponses techniques Choix des technos ASP.NET / C# IIS SQL Server puis Mongo DB Objets fortement typés Permet la complétion de code dans Visual Studio Développement plus rapide quand on y est habitué Linq Permet l’écriture de requêtes complexes en C# sans avoir besoin de regarder la syntaxe json / javascript de mongo (ou SQL) Pas de maintenance de code dans la base (pb de versionning) Fonctions de MapReduce de Mongo Permet le faceting (grouping)
  • 12. Agenda Contexte du site CitizArt Utilisation de Mongo db Exemples de code simples Evolutions
  • 13. Historique Site initialement créé sur une racine NopCommerce ASP.NET / C# SQL Server Entity Framework Pourquoi me suis-je tourné vers Mongo db ? Lenteurs de Entityfrmwk avec de petits volumes de données Un jour un Save() n’a pas enregistré données sans rien dire Caractéristiques importantes de Mongo Rapidité à l’insertion et à la recherche Montée en charge assurée nativement Pas de setup avec un JRE ou gros installer, juste un « exe » Monitoring/Metrics du serveur MapReducecapapilities (Group by)
  • 14. Faire le choix de Mongo Après plusieurs mois à surveiller la tendance noSQL Après avoir regardé Cassandra, Reddis, CouchDB Vu les grands noms qui utilisaient Mongo DB : Shutterfly, Foursquare, bit.ly, Source Forge, Etsy, … Mongo semblait bien pour du logging ou de l’insertion de masse, je voulais savoir si l’on pouvait également l’utiliser pour une application plus « classique » La meilleure façon de faire était de se jeter à l’eau
  • 15. Le driver NoRM Avantages Open source écrit en C# Gère la persistance des objets avec Mongo Requêtes en Linq Commandes d’admin : indexs, drop, … Support de Mono (pour évolutions futures) Mais Communauté limitée Peu de commits depuis juillet 2010 (adopté en octobre 2010) https://github.com/atheken/NoRM/wiki/
  • 16. Modèle et données Avant (en SQL server) Création de l’entité et des champs dans la base de données Ajout de la classe dans les objets métiers Ajout de l’entité « Collection » dans le Context Mapping dans le fichier « graphique » model.edmx Design des formulaires de saisie Maintenant (Mongo) Ajout de la classe dans les objets métiers Design des formulaires de saisie Conclusion Concentré sur le métier moins sur le paramétrage et le code de plomberie avec la base de données
  • 18. Agenda Contexte du site CitizArt Utilisation de Mongo db Exemples de code simples Evolutions
  • 19. Server 1 Architecture très classique IIS 7 ASP.NET 4.0 NoRM C# Driver HTTP Mongo DB 1.6.5 / 64b
  • 20. Un peu de code ?
  • 21. Conception rapide - Exemple Un client avec 0 ou n adresses de facturation Customer Id, First name, Last name Date of birth Billingaddresses (collection de Address) Address Street, Zipcode, City Country
  • 24. C’est vraiment enregistré ? On lance la console mongo.exe > show dbs NoRMSample1 Admin > use NoRMSample1 switched to db NoRMSample1 > show collections Customer NormHiLoKey system.indexes >
  • 25. C’est vraiment enregistré ? On vérifie > db.Customer.find() { "_id" : 1, "FirstName" : "Andrew", "LastName" : "SMITH", "BirthDate" : "Sun Oct 05 1980 00:00:00 GMT+0200", "BillingAddresses" : [ { "Street" : "151 rue Montmartre", "ZipCode" : "75002", "City" : "Paris", "Country" : "FR" } ] } >
  • 26. Plutôt graphique ? : Mongo VUE
  • 27. OK. On peut relire maintenant ? Un peu de Linq
  • 28. On peut chercher sur les objets imbriqués ? Un peu de Linq et expression Lambda pour le fun
  • 29. La partie déclarative du code C# C’est un language statique, donc on doit définir les objets que l’on manipule : Connexion Couches objets La classe d’aide que j’ai définie (PersistantObject)
  • 30. Connexion à Mongo Utilisation d’une chaine de connexion
  • 31. Objets en C# - Pas de magie, faisons simple
  • 33. Et c’est rapide ? A l’insertion Source : Michael Kennedy, http://www.michaelckennedy.net/blog/CommentView,guid,c5043397-ad33-4141-9bb7-64707a9c987d.aspx
  • 34. Et c’est rapide ? A la recherche Source : Michael Kennedy, http://www.michaelckennedy.net/blog/CommentView,guid,c5043397-ad33-4141-9bb7-64707a9c987d.aspx Recherche par Id Recherche complexe avec relation Customer > Order
  • 35. Batch Update field value MONGO javascript SQL db.Customer.find("this.GeoCountyId === 7169") .forEach(function (customer) { customer.GeoCountyId = 7355; db.Customer.save(customer); } ) update Customer setGeoCountryId = 7355 whereGeoCountryId = 7169
  • 36. Agenda Contexte du site CitizArt Utilisation de Mongo db Exemples de code simples Evolutions
  • 37. Les problèmes rencontrés Courbe d’apprentissage de Mongo DB Se défaire de ses habitudes des RDBMS Il me reste beaucoup de choses à apprendre Id non linéaires de NoRM (HiLoalgo) Obligé de développer un algo pour rendre les Id continus Bug dans NoRM Quand un champ existant dans Mongo et non en C# Correction faite dans le code NoRM Problème de stabilité / memoryleak Corrigé en fermant proprement les connexions après chaque utilisation
  • 38. Prochaines Evolutions Passer sur Mongo 1.8 GeoQueries Data durability Montée en charge Poser des index Passer les images sur GridFS Envisager d’utiliser le Sharding Cloud pour l’applicatif Si NoRM non maintenu sur la durée et bugs bloquants regarder du côté de Mongo C# driverFluent Mongo pour Linq
  • 39. Pour en savoir plus Contactez Erwan de Cadoudal, edecadoudal@eca-solutions.fr www.citizart.com Resources http://www.mongodb.org/ https://github.com/atheken/NoRM http://normproject.org/ Merci