NoSQL-MongoDB vs CouchDB [fermé]

je suis un noob complet quand il s'agit du mouvement NoSQL. J'ai beaucoup entendu parler de MongoDB et CouchDB. Je sais qu'il existe des différences entre les deux. Que recommandez-vous comme première étape dans le monde NoSQL?

147
demandé sur Community 2010-07-31 01:30:39

5 réponses

voir les liens suivants""

Update : j'ai trouvé grand comparaison de NoSQL bases de données.

MongoDB (3.2)

  • écrit en: C++
  • point Principal: document JSON magasin
  • licence: AGPL (pilotes: Apache)
  • protocole: personnalisé, binaire (BSON)
  • réplication Maître/esclave (basculement automatique avec les jeux de réplicas)
  • Sharding "intégré 151960920"
  • les requêtes sont des expressions javascript
  • Exécuter javascript arbitraire fonctions côté serveur
  • A géospatiales de l'indexation et des requêtes
  • moteurs à accumulation multiples avec des caractéristiques de performance différentes
  • la Performance sur les fonctionnalités
  • validation du Document
  • Journalisation
  • Puissant agrégation cadre
  • Sur les systèmes 32 bits, limité à ~2,5 Go
  • recherche textuelle intégrée
  • GridFS pour stocker des données big data + métadonnées (pas vraiment une FS)
  • centre de Données

le mieux utilisé : si vous avez besoin de requêtes dynamiques. Si vous préférez définir des index, pas map/reduce functions. Si vous avez besoin d'une bonne performance sur un grand DB. Si vous voulez CouchDB, mais que vos données changent trop, remplir des 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 dans: Erlang
  • point Principal: DB la cohérence, la simplicité d'utilisation
  • Licence: Apache
  • protocole: HTTP /REST
  • Bi-directionnel (! la réplication,
  • continu ou ad hoc,
  • avec la détection de conflit,
  • donc, réplication maître-maître. (!)
  • MVCC - les opérations d'écriture ne pas bloquer lit
  • les versions précédentes des documents sont disponibles
  • Crash-seulement (fiable) design
  • a besoin de compactage de temps en temps
  • vues: carte intégrée / réduire
  • formatage des vues: listes et spectacles
  • document Côté Serveur validation possible
  • authentification possible
  • mises à jour en temps réel via '_changes' (!)
  • manipulation des attaches
  • ainsi, CouchApps (standalone js apps)

"Best used : pour accumuler, changer à l'occasion des données, sur lesquelles des requêtes prédéfinies doivent être exécutées. Les endroits où le versioning est important.

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

144
répondu amra 2017-07-23 18:22:39

si vous venez du monde MySQL, MongoDB va" se sentir " beaucoup plus naturel pour vous en raison de son langage de requête-comme le soutien.

je pense que c'est ce qui le rend si sympathique pour beaucoup de gens.

CouchDB est fantastique si vous voulez utiliser le très grand support de réplication maître-Maître avec une configuration multi-noeuds, peut-être dans différents centres de données ou quelque chose comme ça.

réplique de MongoDB (replica sets) est une configuration maître-esclave-esclave-esclave -*, vous ne pouvez écrire au maître dans une réplique et lire à partir de l'un d'eux.

pour une configuration de site standard, c'est très bien. Il correspond très bien à L'usage MySQL.

mais si vous essayez de créer un service global comme un CDN qui a besoin de garder tous les noeuds globaux synchronisés même si vous les lisez/écrivez à tous, quelque chose comme la réplication dans CouchDB va être une énorme aubaine pour vous.

tandis que MongoDB a un langage de requête que vous pouvez utiliser et que vous vous sentez très intuitif, CouchDB adopte une approche" map-reduce " et ces concepts de vues. Cela semble étrange au début, mais au fur et à mesure que vous vous y habituez, cela commence vraiment à être intuitif.

voici un bref aperçu, donc logique:

  • CouchDB stocke toutes vos données dans un b-tree
  • vous ne pouvez pas" interroger " il dynamiquement avec quelque chose comme " SELECT * FROM user WHERE..."
  • à la place, vous définissez des" vues " discrètes de vos données... "voici une vue de l'ensemble de mes utilisateurs", "ici est une vue de tous les utilisateurs âgés de plus de 10" ", voici une vue de tous les utilisateurs âgés de plus de 30" et ainsi de suite.
  • ces vues sont définies en utilisant l'approche map-reduce et sont définies comme des fonctions JavaScript.
  • lorsque vous définissez une vue, la base de données commence à alimenter tous les documents de la base de données que vous avez assignée voir, à travers elle et enregistrer les résultats de vos fonctions comme "l'index" sur ces données.
  • il y a quelques requêtes de base que vous pouvez faire sur les vues comme Demander une clé spécifique (ID) ou une plage d'IDs indépendamment de ce que fait votre fonction map/reduce.
  • Lisez ces diapositives , c'est la meilleure clarification de map/reduce dans le Canapé que j'ai vu.

donc ces deux sources utilisent JSON "chaque serveur est un maître et peut se synchroniser avec le monde" approche qui est fantastique si vous en avez besoin, alors que MongoDB est vraiment le MySQL du monde NoSQL.

donc si cela ressemble plus à ce que vous voulez, allez-y.

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

si vous voulez la vitesse brute et au diable la sécurité des données, vous pouvez faire courir Mongo plus vite que CouchDB car vous pouvez lui dire d'opérer hors de la mémoire et de ne pas commettre des choses sur le disque sauf pour des intervalles épars.

vous pouvez faire la même chose avec Couch, mais C'est protocole de communication basé sur HTTP va être 2-4x plus lent que la communication binaire brute avec Mongo dans cette "vitesse sur tout!" scénario.

gardez à l'esprit que la vitesse folle brute est inutile si un serveur crash ou un disque l'échec corrompt et toasts votre DB dans l'oubli, de sorte que le point de données n'est pas aussi étonnant qu'il pourrait sembler (à moins que vous faites des systèmes de trading en temps réel sur Wall Street, dans ce cas, regardez Redis).

Espérons que tous permet de!

120
répondu Riyad Kalla 2011-09-17 03:28:51

il existe maintenant sur le marché beaucoup plus de bases de données NoSQL que jamais. Je suggère même de jeter un coup d'oeil au Quadrant magique de Gartner si vous êtes à la recherche d'une base de données qui sera également idéal pour les applications d'entreprise basées sur le soutien, l'extensibilité, la gestion, et le coût.

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

Je voudrais suggérer Couchbase à quiconque n'est pas essayé encore, mais pas basé sur la version qui est montrée dans le rapport (2.5.1) parce qu'il est près de 2 révisions derrière où CB Server est aujourd'hui, approchant la libération de 4.0 en 2H15.

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

L'autre partie sur Couchbase en tant que Vendeur/produit est qu'il s'agit d'un type multi-usage de DB. Il peut agir comme un magasin K/V pur, base de données orientée documents avec échelle multidimensionnelle, Memcached, cache-mis à part avec persistence, et prend en charge le SQL compatible ANSI 92 avec des jointures automatiques, la réplication aux clusters DR en appuyant sur un bouton, et a même un composant mobile intégré à l'écosystème.

si rien d'autre, il est intéressant de vérifier les derniers repères:

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

2
répondu Austin Gonyou 2015-03-30 16:24:05

Edureka vidéos sur youtube concernant NoSQL sont quelques-uns des meilleurs tutoriels vidéo. J'ai commencé sur MongoDb & Cassandra après avoir regardé 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 en 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 

Edureka présentation en slideshare est une extension de la vidéo sur youtube. Vous pouvez traiter cette présentation sommaire de la vidéo youtube.

1
répondu Ravindra babu 2015-07-23 16:57:49