web-dev-qa-db-fra.com

NoSQL - MongoDB vs CouchDB

Je suis un noob complet en ce qui concerne le mouvement NoSQL. J'ai beaucoup entendu parler de MongoDB et de CouchDB. Je sais qu'il y a des différences entre les deux. Que recommandez-vous d'apprendre comme première étape dans le monde NoSQL?

148
mpenrow

Voir les liens suivants

Mise à jour : J'ai trouvé très bien comparaison de NoSQL bases de données.

MongoDB (3.2)

  • Écrit en: C++
  • Point principal: magasin de documents JSON
  • Licence: AGPL (Pilotes: Apache)
  • Protocole: Personnalisé, binaire (BSON)
  • Réplication maître/esclave (basculement automatique avec jeux de réplicas)
  • Sharding intégré
  • Les requêtes sont des expressions javascript
  • Exécuter des fonctions javascript arbitraires côté serveur
  • A l'indexation géospatiale et les requêtes
  • Plusieurs moteurs de stockage avec différentes caractéristiques de performance
  • Performance sur les fonctionnalités
  • Validation de document
  • La journalisation
  • Cadre d'agrégation puissant
  • Sur les systèmes 32 bits, limité à ~ 2,5 Go
  • Recherche de texte intégrée
  • GridFS pour stocker les données volumineuses et les métadonnées (pas vraiment un FS)
  • Centre de données conscient

Utilisation optimale : Si vous avez besoin de requêtes dynamiques. Si vous préférez définir des index, ne mappez pas/ne réduisez pas les fonctions. Si vous avez besoin de bonnes performances sur une grosse base de données. Si vous vouliez CouchDB, mais que vos données changent trop, remplissant les disques.

Par exemple : Pour la plupart des choses que vous feriez avec MySQL ou PostgreSQL, mais avoir des colonnes prédéfinies vous retient vraiment.

CouchDB (1.2)

  • Écrit en: Erlang
  • Point principal: cohérence de la base de données, facilité d'utilisation
  • Licence: Apache
  • Protocole: HTTP/REST
  • Réplication bidirectionnelle (!),
  • continu ou ad hoc,
  • avec détection de conflit,
  • ainsi, réplication maître-maître. (!)
  • MVCC - les opérations d'écriture ne bloquent pas les lectures
  • Les versions précédentes des documents sont disponibles
  • Conception crash-only (fiable)
  • Besoin de se compacter de temps en temps
  • Vues: carte intégrée/réduire
  • Formatage des vues: listes et spectacles
  • Validation de document côté serveur possible
  • Authentification possible
  • Mises à jour en temps réel via '_changes' (!)
  • Traitement des pièces jointes

Utilisation optimale : Pour accumuler, en modifiant occasionnellement, des données sur lesquelles des requêtes prédéfinies doivent être exécutées. Endroits où la gestion des versions est importante.

Par exemple : CRM, systèmes CMS. La réplication maître-maître est une fonctionnalité particulièrement intéressante, permettant des déploiements faciles sur plusieurs sites.

146
amra

Si vous venez du monde MySQL, MongoDB "se sentira" beaucoup plus naturel pour vous en raison de la prise en charge de son langage de type requête.

Je pense que c'est ce qui le rend si amical pour beaucoup de gens.

CouchDB est fantastique si vous souhaitez utiliser le support vraiment formidable de réplication maître-maître avec une configuration multi-nœuds, éventuellement dans différents centres de données ou quelque chose du genre.

La réplication de MongoDB (jeux de réplicas) est une configuration maître-esclave-esclave-esclave-*. Vous ne pouvez écrire sur le maître que dans un jeu de réplicas et en lire l'un quelconque.

Pour une configuration de site standard, c'est très bien. Cela correspond très bien à l'utilisation de MySQL.

Toutefois, si vous essayez de créer un service global, tel qu'un CDN, qui doit conserver tous les nœuds mondiaux synchronisés, même en lecture/écriture, la réplication dans CouchDB sera un avantage considérable pour vous.

Alors que MongoDB a un langage de type requête que vous pouvez utiliser et qui semble très intuitif, CouchDB adopte une approche de "réduction de carte" et ce concept de vues. Cela semble étrange au début, mais au fur et à mesure que vous maîtrisez la situation, vous commencez à vous sentir intuitif.

Voici un aperçu rapide pour que cela ait du sens:

  • CouchDB stocke toutes vos données dans un b-tree
  • Vous ne pouvez pas "interroger" dynamiquement avec quelque chose comme "SELECT * FROM user WHERE ..."
  • Au lieu de cela, vous définissez des "vues" discrètes de vos données ... "voici une vue de tous mes utilisateurs", "voici une vue de tous les utilisateurs de plus de 10 ans" "voici une vue de tous les utilisateurs de plus de 30 ans" et bientôt.
  • Ces vues sont définies à l’aide d’une approche par réduction de carte et sont définies en tant que fonctions JavaScript.
  • Lorsque vous définissez une vue, la base de données commence à alimenter tous les documents de la base de données à laquelle vous avez attribué la vue et à enregistrer les résultats de vos fonctions sous la forme d'un "index" sur ces données.
  • Vous pouvez effectuer certaines requêtes de base sur les vues, par exemple demander une clé (ID) spécifique ou une plage d'ID, quelle que soit l'action de votre fonction map/réduire.
  • Lisez ces diapositives , c’est la meilleure clarification de carte/réduction en Couch que j’ai vue.

Donc, ces deux sources utilisent des documents JSON, mais CouchDB suit cette approche plus "chaque serveur est un maître et peut se synchroniser avec le monde", ce qui est fantastique si vous en avez besoin, alors que MongoDB est vraiment le MySQL du monde NoSQL.

Donc, si cela ressemble plus à ce dont vous avez besoin/envie, allez-y.

Les petites différences comme le protocole binaire de Mongo et l'interface RESTful de CouchDB sont des détails mineurs.

Si vous voulez une vitesse brute et que vous aimez la sécurité des données, vous pouvez faire fonctionner Mongo plus rapidement que CouchDB car vous pouvez lui indiquer de fonctionner en mémoire insuffisante et non commis des choses sur le disque sauf pour les intervalles clairsemés.

Vous pouvez faire la même chose avec Couch, mais son protocole de communication basé sur HTTP sera 2 à 4 fois plus lent que la communication binaire brute avec Mongo dans cette "vitesse sur tout!" scénario.

Gardez à l'esprit qu'une vitesse folle et insensée est inutile si une panne de serveur ou une défaillance de disque corrompt et fait basculer votre base de données dans un oubli, de sorte que le point de données n'est pas aussi étonnant qu'il y parait Street, dans ce cas, regardez Redis).

J'espère que tout aide!

120
Riyad Kalla
5

Il existe maintenant beaucoup plus de bases de données NoSQL sur le marché que jamais auparavant. Je suggère même de jeter un coup d'œil au quadrant magique Gartner si vous recherchez une base de données qui conviendra également aux applications d'entreprise basée sur le support, l'évolutivité, la gestion et les coûts.

http://www.gartner.com/technology/reprints.do?id=1-23A415Q&ct=141020&st=sb

Je voudrais suggérer Couchbase à tous ceux qui ne l’ont pas encore essayé, mais qui ne sont pas basés sur la version présentée dans le rapport (2.5.1), car il ya près de deux révisions par rapport à CB Server aujourd’hui, la publication de la version 4.0 étant prévue dans 2H15. .

http://www.couchbase.com/coming-in-couchbase-server-4-

L'autre aspect de Couchbase en tant que fournisseur/produit est qu'il s'agit d'un type de base de données multi-usage. Il peut servir de magasin K/V pur, de base de données orientée document avec mise à l’échelle multidimensionnelle, Memcached, de cache-apart avec persistance, et prend en charge la norme SQL conforme à la norme ANSI 92 avec les jointures automatiques, la réplication en clusters DR avec la pression d’un bouton, et a même un composant mobile intégré à l'écosystème.

Si rien d'autre, cela vaut la peine de consulter les derniers points de repère:

http://info.couchbase.com/Benchmark_MongoDB_VS_CouchbaseServer_HPW_BM.htmlhttp://info.couchbase.com/NoSQL-Technical-Comparison-Report.html

2
Austin Gonyou

Les vidéos Edureka sur youtube concernant NoSQL font partie des meilleurs tutoriels vidéo. J'ai commencé sur MongoDb & Cassandra après avoir visionné ces vidéos.

https://www.youtube.com/watch?v=gJFG04Sy6NY
https://www.youtube.com/watch?v=KSq6tMMXZ8s
https://www.youtube.com/watch?v=3z1KFA2qcSo

De bonnes présentations sont disponibles sur slideshare.net

http://www.slideshare.net/quipo/nosql-databases-why-what-and-when?qid=3bb9f7f6-a53d-41b1-8403-cd6f181d0ca7&v=qf1&b=&from_search=1

http://www.slideshare.net/EdurekaIN/no-sql-databases-35591065?qid=f1b9c095-6d70-4d0a-91da-1df664c4f389&v=qf1&b=&from_search=3 

La présentation Edureka dans Slideshare est une extension de la vidéo sur youtube. Vous pouvez traiter cette présentation comme un résumé de la vidéo youtube.

1
Ravindra babu