MongoDB
Jeudi 2 février 2012, Xebia organisait une journée MongoDB dans ses locaux à Paris, avec les équipes de la société 10gen. 10Gen est la société qui édite le logiciel MongoDB. Dwight Merriman, CEO de 10gen, basé à New-York, ouvre la journée. Il a créé la société 10gen il y a 4 ans. Lui, c’est l’ancien CTO de Doubleclick, une régie publicitaire rachetée en 2007 par Google pour 3.1 milliards de dollars. La motivation derrière 10gen est de créer des solutions et assurer du support sur MongoDB.

Dwight explique qu’un des principes de base qu’il a appris au fil des années, c’est l’importance de répliquer les données. Pour réussir, il faut être capable de construire un site web capable de ne pas rendre captif toutes les données qu’il va générer. J’aime beaucoup cette idée. Voyez votre projet comme une source de données. Essayez de ne pas prendre une solution trop captive et trop contraignante, car la clé de votre succès sera les services que vous pourrez construire sur vos données.

Pour s’assurer que les données sont bien sauvegardéss, vous pouvez les répliquer sur différents serveurs. Vous pouvez mettre en place une solution curative avec des backups de votre base. Ou sinon, vous pouvez aussi prévoir une solution préventive au niveau de votre architecture.

MongoDB c’est cela : une base de données type No-SQL orientée document, sans schéma, capable de fonctionner sur un énorme volume de donnée. C’est un serveur qui se configure en cluster en quelques minutes. Bref c’est un système qui coûte moins cher qu’une solution Oracle, et qui permet de répondre à pas mal de besoins. Mais pas à tous.

Aujourd’hui le premier souci est la capacité à monter en charge et à faire tourner sur un même CPU, sur un même espace mémoire, une quantité d’informations plus importante. Traiter en parallèle les données. Sur les bases de données relationnelles, il est acquis aujourd’hui que certaines opérations ne sont pas possibles lorsque le volume et le nombre de transaction à traiter sont importants. Les jointures, la consolidation des données, il s’avère que le prix de tout cela explose au fur et à mesure. Dwight dit que plutôt de parler de « noSQL » il préfère dire « noRelationnal ».

MongoDB est dans la famille des bases de données NoSQL. Jean-Laurent de Morlhon demande pourquoi, alors que l’approche non-relationnelle existe depuis les années 80, pourquoi cette approche est populaire aujourd’hui ? Tout d’abord Dwight explique qu’aujourd’hui, les volumes sont bien plus importants qu’il y a quelques années. L’approche non-relationnel est une solution logicielle, alors qu’il y a 10 ans nous étions dans la solution matérielle. Il y a 10 ans on achetait une machine plus grande. Aujourd’hui on travaille sur le logiciel et on arrête d’empiler la puissance mémoire/CPU.

Dwight explique aussi qu’il y a quelques années, on créait son modèle relationnel pour le minimum de système, en ne pensant qu’à l’application que l’on réalisait à ce moment là. Le souci de cette approche c’est lorsque le métier évolue. Comment garder à peu de frais un schéma ? Comment éviter des développements longs et couteux ? Aujourd’hui, une application et son modèle de donnée doit être pensé pour plusieurs années. Or le stockage devient un problème. Comment stocker et retrouver rapidement ces énormes volumes ?

Je trouve cette idée intéressante. Imaginez vos données comme un immeuble, qui aura besoin d’un ravalement de facade. Plus sérieusement, imaginez l’état de vos données dans 5 ans… Imaginez la quantité et le coût d’exploitation…

Les concurrents de MongoDB ne bénéficient pas de la même couverture médiatique. Apache Cassandra est un excellent produit, arrivé finaliste lors du concours de l’USI 2011. Il existe d’autres solutions comme Redis ou CouchDB, des solutions dites « No-SQL ». Si vous voulez briller en ville : parlez d’Agilité, de Scrum et terminez par une petite saucée de CloudComputing, le tout avec du NoSQL. Les hommes vous trouveront intelligents et les femmes se jetteront sur vous. Ou inversement. Bref.

Dwight parle ensuite d’Oracle, qui se positionne aussi sur ce secteur. Oracle a lancé un système clé/valeur, construit sur le moteur open-source de Berkley. IBM aussi s’intéresse forcément à ce type de solution. Pourquoi ? Car ce sera le nouvel eldorado.

Dans une entreprise traditionnelle, on a souvent une base relationnelle (SGBDR) et une base décisionnelle (data warehouse). Chaque système a ses avantages et ses inconvénients. Une base relationnelle permet de garantir l’intégrité, de gérer les transactions, et de représenter les relations entre les entités du Domaine. Un système de Datawarehouse est pensé pour l’analyse et le reporting sur les données. Enfin Dwight expose que MongoDB se place comme étant un troisième type de base de données. MongoDB offre de l’agilité, une installation et une capacité à s’installer en cluster bien plus simple (et surtout vraiment moins cher) que les solutions classiques des éditeurs comme Oracle ou IBM. Donc on voit ici qu’une entreprise pourra avoir ces 3 logiciels, avec un usage différent à chaque fois.

Si par contre vous regardez le monde des Startups en ce moment, là c’est une toute autre histoire. Traditionnellement, le couple PHP+MySQL+Apache était utilisé pour construire un site Internet. Ruby on Rails est largement utilisé par les startups. Mais comme l’expliquerons les équipes de Fotopedia quelques heures plus tard : Rails n’est pas aussi performant en production que Java/Scala/.NET. Bref, peu importe, si on parlait plutôt de bases de données ?
Et bien MongoDB est une compétence très demandée sur le marché, information que j’ai vérifié :


Source : http://data.story.lu/2011/09/29/facts-and-stats-mongodb-trend

Quelques questions de la salle ensuite parlent des relations entre les développeurs et les DBA. Quelqu’un demande à Dwight son opinion sur le métier de DBA par rapport à MongoDB. Il explique en forçant un peu le trait que tout d’abord, une base de donnée classique, c’est le royaume du DBA. Une base MongoDB, c’est plutôt le royaume des développeurs. En quelques sortes, le développeur prend le pouvoir sur le modèle. Dwight explique qu’il y a des DBAs pour les bases NoSQL, des personnes qui sont souvent aussi des développeurs. L’absence de schéma, sa flexibilité, le fait que ce modèle mappe directement le code, fait que forcément le développeur est le premier évangéliste de MongoDB.

Une autre question porte sur le nombre de clients qui utilisent MongoDB aujourd’hui en production. Personnellement lorsque j’entends ce type de question… ça me fatigue. Il n’y a que les Français pour se dire :
-« Ah moi je prends une techno QUE si c’est utilisé sur de VRAIS SITES ou sur des VRAIS PROJETS.

Pour la société 10gen, aujourd’hui Dwight explique qu’ils ont 400 clients. Il y a bien entendu bien plus de sociétés qui utilisent MongoDB. Dans le monde des startups, 90% des projets qu’il a vu font le choix de l’approche NoSQL, donc souvent MongoDB. Pourquoi ? Car il existe de nombreux drivers pour tous les langages.

Il résume cela avec une phrase en souriant :

It’s happening.

Une question ensuite porte sur Oracle, afin de connaître son opinion. Il voit des entreprises qui ajoutent MongoDB, tout en gardant leur base Oracle. Par ailleurs, Oracle travaille sur des solutions de type MySQL. Et ce sera un compétiteur pour 10gen très important. Il pense que si Oracle venait à ignorer l’approche NoSQL, alors ils perdront des parts de marché.

Pour terminer, nous avons eu aussi une présentation très détaillé de l’importance du schéma sur les performances. Le CEO de MongoDB passe 10 bonnes minutes à nous expliquer le problème de chargement de blocs non-contigus, spécialement lorsque les données recherchées ne sont pas dans un index. C’est impossible pour moi à retranscrire ici.

Mais au final, retenez que le CEO de MongoDB est un Geek, un gars qui assure, et qui peut vous parler de swap et de disques SSD dans une présentation.

Et moi, ça m’a donné envie d’essayer MongoDB.

Une pensée sur « MongoDB : journée chez Xebia France »

Les commentaires sont fermés.