Agilité, Développement Java, Nouvelles technologies et plus…
  • rss
  • Accueil
  • Management
  • Programmation agile
  • Technologie
  • Linux
  • Evénement
  • App Android
  • Contact
  • A propos de l'auteur
  • English
  • Francais

Comparaison NoSQL: Couchbase et MongoDB

Fabian Piau | vendredi 8 mars 2013 - 18:30
  • Imprimer
  • Twitter
  • LinkedIn
  • Facebook
  • Pocket

 English version available

Logo NoSQL

Le monde NoSQL est vaste: Cassandra, MongoDB, CouchDB, Redis, HBase, Couchbase, Neo4j, BigTable et j’en passe. Sans parler de Map-reduce, Hadoop, Hive qui se rapprochent des concepts NoSQL… Tous ces outils ont vu récemment le jour pour traiter un volume de données toujours plus grand, on parle de « Big data ». Prenez l’exemple de Facebook, LinkedIn ou Instagram avec leurs millions d’utilisateurs et vous comprendrez pourquoi les bases de données relationnelles atteignent leurs limites.

Les premières bases de données relationnelles remontent à 1979 avec Oracle, cela fait plus de 30 ans qu’elles sont utilisées et elles vont sûrement l’être pour encore très longtemps. Alors que les premières bases NoSQL ont vu le jour il y a à peine 7 ans, si l’on prend en compte l’avant-gardisme de Google et sa technologie BigTable en 2006.

Pour nous, développeurs, il est devenu difficile de s’y retrouver dans cette jungle technologique. Il faudrait beaucoup de temps libre et d’énergie pour tester tout cela. Bien souvent, les projets sur lesquels nous travaillons sont loin d’avoir les mêmes problématiques (quelques centaines d’utilisateurs tout au plus). Dans ce cas, une base de données relationnelle classique telle que MySQL fait très bien le job!

Cet article n’est pas une introduction à NoSQL, je vous conseille de lire cet article ou ce document très complet. Ils ont été écrits entre 2010 et 2011. Ils commencent à dater, mais ils restent valides pour comprendre les principes.

Logo MongoDB

Logo Couchbase












Je vais me focaliser sur ces deux bases de données NoSQL orientées documents. « document-oriented » ou « document store » signifie qu’une clé (l’identifiant) correspond à un « document ». Ne songez pas un document complexe, mais un simple texte au format JSON.

Voici un exemple de document:

{
  '_id' : '5897g42s0245afo4o473ai1e7',
  'firstname': 'John',
  'lastname': 'Doe',
  'age': 26,
  'sex': 'M',
  'interests': [ 'Reading', 'Running', 'Hacking' ]
}

Couchbase et MongoDB sont des bases de données très utilisées aujourd’hui. Elles sont en compétition sur un marché, vous l’aurez compris, déjà bien saturé. Ayant utilisé MongoDB (grâce à la formation 10gen) et étant sensibilisé à Couchbase (session au BruJUG), je vais faire une comparaison (sûrement pas très objective) des deux systèmes. Les choses évoluent tellement vite que cet article sera peut-être obsolète dans quelques mois…

Un peu d’historique pour commencer. MongoDB a été créée en 2009 par la société 10Gen, Couchbase a été créée un peu plus tard en 2011 par l’entreprise du même nom.

A l’heure d’aujourd’hui, les deux systèmes partagent de nombreuses caractéristiques (open source, gratuit, compatible avec la majorité des plateformes, documentation bien fournie…). Ils se différentient tout de même sur certains points.


Scalabilité

Dans Couchbase, on peut facilement ajouter des serveurs pour faire du clustering et obtenir un système distribué, Couchbase est suffisamment flexible pour qu’il n’y ait pas de downtime. En effet, elle s’appuie sur la puissance du langage Erlang, un langage fonctionnel qui gère les tolérances aux pannes et les changements à chaud.
Pour MongoDB, la configuration se complique. Par exemple, une fois la shard key définie (la clé de distribution des documents au sein des clusters), il devient difficile de la changer par la suite. Le système n’est pas aussi souple, il faut donc bien réfléchir à votre modélisation des données avant de mettre votre application en production.
La scalabilité est la raison pour laquelle Couchbase est beaucoup utilisée dans tout ce qui est social gaming, où plusieurs millions de joueurs peuvent s’affronter et où leur nombre peut augmenter exponentiellement du jour au lendemain.

Avantage Couchbase

Outil de monitoring

Couchbase arrive avec un package clé en main alors que MongoDB demande l’inscription à un service supplémentaire pour monitorer le serveur. Vous pouvez monitorer MongoDB en utilisant la ligne de commande, mais un monitoring sans interface graphique reste relativement contraignant.

Monitoring de MongoDB

Monitoring de MongoDB

Monitoring de Couchbase

Monitoring de Couchbase

Finalement, les produits graphiques semblent assez similaires, mais le fait de devoir s’inscrire pour MongoDB (même si c’est gratuit) et que le service ne soit pas hébergé chez vous… Bof!

Avantage Couchbase

Requêtage des données

MongoDB inclut une panoplie d’outils pour faire des requêtes. Ainsi, on trouve un équivalent pour la plupart des opérateurs du langage SQL, bien sûr les jointures sont inexistantes. Quelqu’un qui viendra du monde SQL ne sera donc pas trop dépaysé en retrouvant certains concepts tels que les index et sous-index. Vous trouverez l’ensemble des opérateurs disponibles sur cette page.
Avec Couchbase, on trouve les vues comme en SQL relationnel. C’est une sorte de requête pré-écrite en JavaScript qui se base sur le concept Map-reduce. Et c’est à peu près tout! Si vous voulez faire des opérations plus complexes comme filtrer ou agréger vos données, il faudra utiliser Elastic Search (sous forme de plugin pour Couchbase). Couchbase a fait le choix de se focaliser sur le moteur NoSQL en lui-même, et de laisser faire les outils de recherche spécialisés.

Avantage MongoDB

Conclusion

Ces deux bases de données sont très répandues et il existe une large communauté pour chacune. Vous l’aurez compris, il n’y ni gagnant, ni perdant. Comme toujours, l’adoption d’une technologie plutôt qu’une autre dépendra de vos besoins.


Autres ressources

  • Documentation de Couchbase
  • Documentation de MongoDB
  • Couchbase vs MongoDB (DB-engines)

Articles similaires

OpenStreetMapOpen Street Map, une meilleure carte que Google Maps? mongoDB-trainingFormation en ligne gratuite sur MongoDB Fosdem 2013Retour sur Fosdem 2013 GoogleGoogle s’invite au JUG
Commentaires
Pas de Commentaires »
Catégories
Technologie
Tags
base de données, couchbase, mongodb, nosql
Flux rss des commentaires Flux rss des commentaires

IconFinder, la recherche d’icônes efficace

Fabian Piau | vendredi 1 mars 2013 - 14:00
  • Imprimer
  • Twitter
  • LinkedIn
  • Facebook
  • Pocket

 English version available

Logo IconFinder

Jusqu’à maintenant, j’étais habitué à utiliser Google images pour trouver des icônes, mais je viens de trouver un meilleur outil: IconFinder. Les résultats de recherche sont plus fiables et pertinents, vous n’êtes plus embêté par les photos qui n’ont pas de rapport avec votre recherche.

Vous pouvez parcourir les packs d’icônes disponibles: les nouveautés, les plus populaires… Essayez-le!

Articles similaires

firefox-extensionsListe de mes extensions Firefox favorites
Commentaires
Pas de Commentaires »
Catégories
Technologie
Tags
icone, iconfinder, moteur de recherche d'icones
Flux rss des commentaires Flux rss des commentaires
Page 1 sur 11
Télécharger l'app CarmaBlog

Flux RSS

  • Flux RSS RSS - Articles
  • Flux RSS RSS - Commentaires

Articles les plus vus

  • Changer la langue de Firefox - 115 578 vues
  • Réaliser un sondage en ligne avec Google Forms / Drive / Docs - 63 166 vues
  • FAQ – Sondage en ligne avec Google Forms / Drive / Docs - 52 403 vues
  • Personnaliser Gnome 3 (Shell) - 30 017 vues
  • La signification d’URL, URI et URN - 17 251 vues
  • Java EE & CDI vs. Spring - 15 442 vues
  • Open Street Map, une meilleure carte que Google Maps? - 14 648 vues
  • Comparaison NoSQL: Couchbase et MongoDB - 14 082 vues
  • Firefox Nightly, Aurora, Beta, Desktop, Mobile, ESR & Co. - 13 087 vues
  • API, REST, JSON, XML, HTTP, URI… Vous parlez quelle langue en fait? - 12 718 vues

Commentaires récents

  • Pauline sur FAQ – Sondage en ligne avec Google Forms / Drive / DocsMerci Fabian, mais le but étant que nos clients pu…
  • Fabian Piau sur FAQ – Sondage en ligne avec Google Forms / Drive / DocsProbablement mais ces options sont en général paya…
  • Pauline sur FAQ – Sondage en ligne avec Google Forms / Drive / DocsBonjour Fabian, Merci de votre retour, oui j'avais…
  • Fabian Piau sur FAQ – Sondage en ligne avec Google Forms / Drive / DocsBonjour Pauline, ce n'est pas possible de créer un…
  • Pauline sur FAQ – Sondage en ligne avec Google Forms / Drive / DocsBonjour, Je suis en train de créer un Google Forms…

Articles récents

  • Comment écrire un article de blog? En tout cas à ma façon! - Il y a 3 mois et 2 semaines
  • Attaques de robots: vous n’êtes pas seul… - Il y a 1 an et 11 mois
  • Flagger – Monitorer vos déploiements Canary avec Grafana - Il y a 2 ans et 8 mois
  • Flagger – Déploiements Canary sur Kubernetes - Il y a 2 ans et 10 mois
  • Flagger – Premiers pas avec Istio et Kubernetes - Il y a 2 ans et 10 mois
  • CoderDojo Expedia à Londres - Il y a 3 ans et 7 mois
  • Etre bénévole à Devoxx4Kids - Il y a 3 ans et 10 mois
  • Une migration Java 11 réussie - Il y a 4 ans et 2 mois
  • Conseils pour sécuriser votre site WordPress - Il y a 4 ans et 5 mois
  • Devoxx UK 2018 – Jour 2 - Il y a 4 ans et 9 mois
  • Devoxx UK 2018 – Jour 1 - Il y a 4 ans et 9 mois
  • Wise, Revolut et Monzo, une petite révolution dans le monde des expatriés et voyageurs - Il y a 5 ans et 1 mois
  • Autocomplétion pour Git - Il y a 5 ans et 10 mois
  • Swagger, la documentation API automatisée - Il y a 6 ans et 2 semaines
  • Architecture Microservices – Les bonnes pratiques - Il y a 6 ans et 5 mois
Offre moi un café

Langue

  • Français
  • English

Suivez-moi!

Suivez-moi sur Linkedin
Suivez-moi sur Twitter
Suivez-moi sur Stackoverflow
Suivez-moi sur Github
Suivez-moi sur Rss
Link to my Contact

Abonnement email

Saisissez votre adresse email pour être informé des nouveaux articles.

Étiquettes

.net agile agilité android bash blog bonnes pratiques cache cloud conférence css devoxx docker développeur eclipse extreme programming firefox flagger google helm hibernate informatique intégration continue istio java jug kubernetes londres mobilité informatique métier outil panorama partage performance plugin programmeur script société spring sécurité tdd test ubuntu windows wordpress

Liens

  • Blog Ippon Technologies
  • Blog Publicis Sapient
  • Blog Zenika
  • Classpert
  • CommitStrip
  • Coursera
  • Le Touilleur Express
  • Les Cast Codeurs Podcast
  • OCTO talks !
  • The Twelve-Factor App

Catégories

  • Evénement (15)
  • Linux (3)
  • Management (8)
  • Programmation agile (29)
  • Technologie (45)

Archives

  • décembre 2022 (1)
  • avril 2021 (1)
  • juin 2020 (1)
  • mai 2020 (2)
  • juillet 2019 (1)
  • mai 2019 (1)
  • décembre 2018 (1)
  • octobre 2018 (1)
  • juin 2018 (1)
  • mai 2018 (1)
  • janvier 2018 (1)
  • mai 2017 (1)
  • mars 2017 (1)
  • octobre 2016 (1)
  • avril 2016 (2)
  • mars 2016 (1)
  • novembre 2015 (1)
  • mai 2015 (1)
  • février 2015 (1)
  • décembre 2014 (1)
  • novembre 2014 (1)
  • septembre 2014 (2)
  • août 2014 (1)
  • juillet 2014 (2)
  • juin 2014 (1)
  • avril 2014 (1)
  • mars 2014 (1)
  • février 2014 (2)
  • janvier 2014 (1)
  • décembre 2013 (1)
  • novembre 2013 (1)
  • octobre 2013 (3)
  • septembre 2013 (5)
  • juillet 2013 (1)
  • juin 2013 (1)
  • mai 2013 (1)
  • avril 2013 (1)
  • mars 2013 (2)
  • février 2013 (1)
  • janvier 2013 (2)
  • décembre 2012 (2)
  • octobre 2012 (1)
  • septembre 2012 (1)
  • juillet 2012 (1)
  • mai 2012 (1)
  • avril 2012 (1)
  • mars 2012 (1)
  • février 2012 (1)
  • janvier 2012 (2)
  • décembre 2011 (1)
  • novembre 2011 (2)
  • octobre 2011 (2)
  • septembre 2011 (1)
  • juillet 2011 (1)
  • juin 2011 (2)
  • avril 2011 (1)
  • mars 2011 (1)
  • février 2011 (1)
  • janvier 2011 (2)
  • novembre 2010 (2)
  • septembre 2010 (1)
  • août 2010 (1)
  • juillet 2010 (1)
  • juin 2010 (1)
  • mai 2010 (1)
  • avril 2010 (1)
  • mars 2010 (1)
  • février 2010 (1)
  • décembre 2009 (1)
  • novembre 2009 (1)
  • octobre 2009 (2)
  • septembre 2009 (2)
  • août 2009 (3)
  • juillet 2009 (1)
  • juin 2009 (2)
Suivez-moi sur Twitter
Suivez-moi sur Linkedin
Suivez-moi sur Stackoverflow
Suivez-moi sur Rss
Link to my Contact
Suivez-moi sur Github
 
Fabian Piau | © 2009 - 2023
Tous droits réservés | Haut ↑