MongoDB ou CouchDB - aptes à la production? [fermé]

485

Je me demandais si quelqu'un pouvait me dire si MongoDB ou CouchDB étaient prêts pour un environnement de production .

Je regarde maintenant ces solutions de stockage (je suis en faveur de MongoDB pour le moment), mais ces projets sont assez jeunes et je prévois donc que je vais devoir travailler assez dur pour convaincre mon manager que nous devrions l'adopter nouvelle technologie.

Ce que j'aimerais savoir c'est:

  1. Qui utilise MongoDB ou CouchDB aujourd'hui dans un environnement de production?

  2. Comment utilisez-vous MongoDB / CouchDB?

  3. Quels problèmes (le cas échéant) avez-vous rencontrés lorsque vous avez adopté ce nouveau mécanisme de stockage (et comment les avez-vous surmontés)?

  4. Comment avez-vous géré les problèmes de migration auxquels vous avez dû faire face?

  5. Avez-vous des bonnes / mauvaises expériences avec l'une de ces solutions que vous aimeriez partager?

Alan
la source
2
En parcourant les réponses, je n'ai pas vraiment trouvé ce que je cherchais. Étant donné que les deux bases de données se ressemblent beaucoup, laquelle choisir? Quels sont les avantages de l'un ou l'autre? Pour quel type d'application dois-je choisir laquelle? Ce serait bien si quelqu'un pouvait répondre à ces questions.
polemon
Cela dépend vraiment de la façon dont ils seront utilisés. Le manque de transactions est troublant pour de nombreux environnements, mais parfaitement bien pour d'autres. Il est également fondamentalement difficile de «sauvegarder» une base de données distribuée, bien que l'argument soit que la persistance des données est assurée par la réplication sur plusieurs fragments.
Samuel O'Malley
2
@ pauluss86 Je pense que vous devriez probablement ajouter l'avertissement au lien de pauluss86 que l'auteur (Emin) est en fait un concurrent de MongoDB (Hyperdex) - donc juste un léger biais là-bas. Pour être vraiment juste, il y a une réponse correspondante sur InfoQ de MongoDB ici - infoq.com/news/2013/02/MongoDB-Fault-Tolerance-Broken
victorhooi
@victorhooi true, mais cela reste une préoccupation valable à mon avis. Il y a aussi un suivi de la réponse InfoQ: lien . Personnellement, je ne suis pas trop convaincu par la défense de Mongo. Dans tous les cas, je recommande à quiconque de lire le problème (des deux côtés) avant de choisir une base de données.
pauluss86
Cela dit tout db-engines.com/en/ranking MongoDB gagne du terrain de jour en jour et est le magasin de documents le plus populaire sur le web
arkoak

Réponses:

268

Je suis le CTO de 10gen (développeurs de MongoDB), donc je suis un peu biaisé, mais je gère également quelques sites qui utilisent MongoDB en production.

businessinsider utilise le mongo dans la production depuis plus d'un an maintenant. Ils l'utilisent pour tout, depuis les utilisateurs et les articles de blog, jusqu'à chaque image du site.

shopwiki l' utilise pour plusieurs choses, y compris des analyses en temps réel et une couche de mise en cache. Ils effectuent plus de 1 000 écritures par seconde dans une base de données assez volumineuse.

Si vous accédez à la page Déploiements de production de mongodb, vous verrez des personnes qui utilisent mongo en production.

Si vous avez des questions sur l'échelle ou la portée des déploiements de production, publiez sur notre liste d'utilisateurs et nous serons ravis de vous aider.

utilisateur111359
la source
1
cela vous dérangerait de faire fonctionner mongodb avec la v8 par défaut. et mongodb mangent trop de mémoire pour les pauvres qui utilisent un VPS avec 512M de mémoire.
guilin
Vous pouvez avoir AC (i) D au moins - atomicité parce que seul maître écrivain, cohérence parce que vous avez une cohérence par document, durabilité parce que vous pouvez spécifier le nombre d'écritures nécessaires avant l'écriture ACK, par exemple, combien d'autres nœuds ont besoin d'obtenir les données avant ACKing it.
Henrik
+1 pour les liens. incroyable combien de personnes utilisant mongodb en production
Michael Malura
On dirait que beaucoup de choses ont changé au cours des 5 dernières années. Cette liste est énorme! :)
asynchrone
110

La BBC et meebo.com utilisent CouchDB en production, tout comme l'un de mes clients. Voici une liste d'autres personnes utilisant Couch: CouchDB à l'état sauvage

L'enjeu majeur est de savoir organiser ses documents et de ne plus penser en termes de données relationnelles.

Matt Aimonetti
la source
7
En fait pour moi, le défi majeur est de revenir si vous en avez besoin. Une fois que vous avez supprimé les «contraintes relationnelles» de votre esprit, il est difficile de revenir en arrière. :)
johndodo
34

Nous utilisons CouchDB en tant que remplaçant de MySQL pour nos boutiques (70,0000 articles / boutique, un total de 4 millions d'attributs de tous les articles, connexions croisées entre les articles).

Nos objectifs étaient les suivants:

  1. Réplication facile d'un master-db vers plusieurs clients avec différents documents.

  2. Données précalculées rapides comme "combien de pièces ai-je avec cet attribut et ce filtre, adaptés à ces conditions"

faits:

  1. Nos boutiques fonctionnent maintenant beaucoup plus rapidement qu'avec MySQL (et la base de données mysql nécessitait en outre 1 à 3 jours de pré-calcul (donc la mise à jour était deux fois par mois), ce qui rend les données prêtes pour le comptage et le filtrage des produits, CouchDB a besoin de 5 heures, donc nous pourrions mettre à jour les données produit tous les soirs)
  2. La configuration (filtrée) de la distribution et des sauvegardes de données sur les nœuds de la boutique est rapide et facile

mais aussi:

  1. Comprendre la carte / réduire et les limites de ne pas avoir de jointures est assez difficile
  2. Aucune opération sur les données comme "supprimer où" ou "mettre à jour où" sans programmes externes
  3. La réplication fonctionne bien, sauf en cas de problème; alors c'est vraiment difficile de trouver la raison (pour les débutants)
  4. L'installation de CouchDB sans binaires (oui, il y en a dans la nature, mais pas pour tous les OS / versions) pourrait être difficile, si vous n'êtes pas un geek Linux. Mais la communauté CouchDB est utile (#couchdb), et heureusement, il existe des entreprises (cloudant, iriscouch) qui offrent des services gratuits aux grandes entreprises.
  5. CouchDB va de l'avant, il y a donc beaucoup de changements (améliorations) en cours qui pourraient changer leur façon de travailler. Mais les choses de base restent stables.

En conséquence: MySQL en tant que base de données pour la création et la maintenance de données est fiable et facile à comprendre et à gérer. Je pense que nous ne changerons pas cela. Mais je ne veux pas non plus manquer la puissance des vues CouchDB et la facilité de configuration de la réplication.

Les canapés de production ont parfois causé des problèmes après des mois de travail en raison d'une mauvaise configuration et de rotations de mémoire oubliées (la création de vues prend trop de temps ou se bloque, la réplication s'arrête), mais n'a jamais perdu de données et peut toujours être facilement réinitialisée.

okurow
la source
70 000 ou 700 000 articles par boutique? aussi, est-ce que quelque chose a changé depuis que vous avez écrit le post? certaines fonctionnalités manquantes implémentées peut-être?
Erik Kaplun
27

J'utilise CouchDB en production. Actuellement, il stocke tous les champs «facultatifs» qui n'étaient pas dans le schéma de base de données d'origine. Et en ce moment, je pense à déplacer toutes les données vers CouchDB.

C'est une étape assez risquée, je l'avoue. D'abord parce que ce n'est pas encore la v1.0. Et deuxièmement, parce qu'il a faim d'espace disque. D'après mes calculs, le fichier CouchDB (avec index) est ~ 30 fois plus grand que la base de données MySQL avec les mêmes lignes. Mais je suis presque sûr que cela fonctionnera très bien.

Sergio Tulentsev
la source
1
Eh bien, cela n'a pas fonctionné du tout. Je me suis débarrassé de couchdb après quelques mois.
Sergio Tulentsev
@aetheria: Il n'a pas supporté la charge. De plus, nous avions tellement d'écritures que nous devions le compacter toutes les heures environ. CouchDB n'est pas destiné aux applications nécessitant beaucoup d'écriture.
Sergio Tulentsev
Merci. Ai-je raison de penser que ce sont les mises à jour des documents existants qui posent problème? c'est-à-dire que l'écriture de nouveaux documents est OK, mais la mise à jour laisse les déchets inutilisés dans le fichier. Est-ce exact?
ᴇʟᴇvᴀтᴇ
IIRC, même les nouvelles écritures n'étaient pas trop performantes. Trop de disques recherchés avec cette approche à double en-tête.
Sergio Tulentsev
2
@aetheria: retour à mysql puis à mongo. Il y avait une bonne part de problèmes partout. :)
Sergio Tulentsev
17

Je ne sais rien de MongoDB, mais de la FAQ CouchDB :

CouchDB est-il prêt pour la production?

Oui, voir InTheWild pour une liste partielle des projets utilisant CouchDB. Un autre bon aperçu est les études de cas CouchDB

Aussi, quelques liens:

Sasha Chedygov
la source
C'est une vieille nouvelle: maintenant le lien dit "Oui, voir InTheWild pour une liste partielle des projets utilisant CouchDB. Un autre bon aperçu est les études de cas CouchDB"
J Chris A
14
@J Chris A: Bien sûr, c'est vieux, je l'ai posté il y a un an et demi. :)
Sasha Chedygov
16

Nous utilisons couchdb en production et depuis, juste avant que le projet ne passe sous l'égide d'Apache.

Nous l'utilisons pour stocker tout ce que nous pourrions autrement utiliser un dbms, ainsi que toutes sortes de données non structurées. Personnellement, j'aime vraiment la façon dont vous pouvez simplement y ajouter toutes sortes de données et utiliser les vues pour sélectionner ce dont vous n'avez pas besoin en fonction de la situation.

La partie la plus difficile s'éloignait de l'état d'esprit dbms. Nous avons écrit nos propres utilitaires de migration lorsque le format de stockage a changé juste pour être sûr, donc ce n'était pas vraiment un problème.

Nous n'avons pas encore eu d'expériences négatives, mais encore une fois, nous n'avons pas eu la configuration sous aucune sorte de charge énorme. Je pense que les choses fonctionneraient plutôt bien puisque nous avons deux serveurs de type esclave qui se répliquent à partir d'un seul serveur maître qui obtient toutes les écritures. Je suis à peu près sûr que nous n'avons pas à le faire de cette façon pour que la réplication fonctionne correctement, mais c'est comme cela que nous l'avons configurée au début et elle est bloquée.

clintm
la source
13

Nous utilisons CouchDB pour stocker les messages entrants et sortants mobiles et pour signaler ce trafic via certaines vues personnalisées que j'ai écrites. Le front-end est écrit en Python. Nous n'avons eu aucun vrai problème technique, et cela fonctionne depuis fin décembre. Le seul obstacle que j'ai rencontré était au départ de penser en termes de MapReduce, mais une fois que j'ai appris à le faire, tout le reste s'est bien passé.

Ryan Duffield
la source
9

Nous utilisons actuellement MongoDB en production comme couche de mise en cache ainsi que moteur de stockage pour l'importation et la manipulation de données de produit. Nous sommes une entreprise de commerce électronique gérant plus de deux millions de produits (plus de 100 millions d'attributs), couvrant plus de 10 distributeurs et sans MongoDB, cette tâche serait presque impossible.

Joshua Burns
la source
2
Quelle est la fiabilité de mongoDB pour vous? + Dans quelle mesure la réplication a-t-elle fonctionné dans la vie réelle?
Industrial
4
Nous implémentons la topologie de jeu de réplicas en exécutant la version 1.6. Jusqu'à présent, le seul problème que nous avons rencontré est apparemment lorsqu'un disque manque d'espace, même avec les écritures de sauvegarde activées, aucun indicateur n'est levé. Assurez-vous donc que vous avez BEAUCOUP d'espace!
Joshua Burns
1
La fiabilité a cependant été phénoménale, étonnamment aussi bonne que nous l'avions espéré. Aucun problème de plantage pour le moment - bien qu'il s'agisse en quelque sorte d'une nouvelle implémentation.
Joshua Burns
1

Nous utilisons actuellement mongodb comme service de stockage de fichiers pour notre collaboration sur LAN. De plus, des projets comme trello utilisent mongodb comme magasin de données principal. J'ai utilisé couchdb plus tôt, mais pas en capacité de production.

Sumit Bisht
la source
0

Nous utilisons MongoDB en production dans notre service de backend mobile à savoir Netmera. Nous l'utilisons pour stocker toutes les données des utilisateurs et du contenu.

Parvin Gasimzade
la source
0

J'utilise CouchDB en production depuis près de 2 ans maintenant. Il n'y a pas de travail de migration car le projet a commencé directement avec l'implémentation de CouchDB. Il sert de base de données qui stocke les données d'un seul produit électronique du début à l'emballage.

Puisque nous vendons des capteurs avec une exigence de haute précision, nous faisons beaucoup de tests à différentes étapes et tous ces éléments seront stockés dans un seul document sur CouchDB.

Il y a une courbe d'apprentissage que j'ai apprise de mon expérience, qui consiste à tirer pleinement parti des vues (ou également appelées vues permanentes). Les vues doivent être un "petit filtre" d'une fraction de la base de données qui sera appelée souvent.

Ma base de données CouchDB n'est pas aussi folle qu'une autre société gigantesque. Mais jusqu'à présent, je vais toujours bien. Actuellement, j'ai 24 000 documents à 700 Mo.

La fonctionnalité de CouchDB que j'aime est la «réplication», «stocker les révisions d'un document».

J'avais lu beaucoup de bonnes critiques sur MongoDB et je voudrais l'essayer s'il y a une chance.

Nicholas TJ
la source
0

Nous utilisons mongodb en production pour

www.beachfront.io - près de 5 000 requêtes d'écriture par seconde www.beachfrontbuilder.com - 500 requêtes de lecture / écriture par seconde, maintiennent 10 millions de données utilisateurs et olap.

Le seul défi rencontré autour de l'archivage des données, nous l'avons surmonté en implémentant notre composant personnalisé.

Udit
la source
0

Cette question a déjà accepté la réponse, mais maintenant, un jour de plus, une base de données NoSQL est en vogue pour bon nombre de ses excellentes fonctionnalités. C'est Couchbase; qui fonctionne comme CouchbaseLitesur la plate-forme mobile et Couchbase Servercôté serveur.

Voici quelques-unes des principales fonctionnalités de Couchbase Lite.

Couchbase Lite est un moteur de base de données léger, orienté document (NoSQL) et synchronisable, adapté à l'intégration dans des applications mobiles.

Léger signifie:

Embarqué: le moteur de base de données est une bibliothèque liée à l'application, pas un processus serveur distinct. Petite taille de code - importante pour les applications mobiles, qui sont souvent téléchargées sur des réseaux cellulaires. Temps de démarrage rapide - important car les appareils mobiles ont des processeurs relativement lents. Faible utilisation de la mémoire - les ensembles de données mobiles typiques sont relativement petits, mais certains documents peuvent contenir de grandes pièces jointes multimédias. Bonnes performances - les chiffres exacts dépendent bien sûr de vos données et de votre application.

Orienté document signifie:

Stocke les enregistrements au format JSON flexible au lieu d'exiger des schémas prédéfinis ou une normalisation. Les documents peuvent avoir des pièces jointes binaires de taille arbitraire, telles que du contenu multimédia. Le format des données d'application peut évoluer dans le temps sans avoir besoin de migrations explicites. L'indexation MapReduce fournit des recherches rapides sans avoir besoin d'utiliser des langages de requête spéciaux.

Syncable signifie:

Deux copies d'une base de données peuvent être synchronisées via un algorithme de réplication efficace, fiable et éprouvé. La synchronisation peut être à la demande ou continue (avec une latence de quelques secondes). Les appareils peuvent se synchroniser avec un sous-ensemble d'une grande base de données sur un serveur distant. Le moteur de synchronisation prend en charge les connexions réseau intermittentes et peu fiables. Les conflits peuvent être détectés et résolus, la logique de l'application contrôlant pleinement la fusion. Les arborescences de révision permettent des topologies de réplication complexes, y compris de serveur à serveur (pour plusieurs centres de données) et d'égal à égal, sans perte de données ni faux conflits. Couchbase Lite fournit des API natives pour le développement transparent iOS (Objective-C) et Android (Java). En outre, il comprend le plug-in Couchbase Lite pour PhoneGap,

Vous pouvez en savoir plus sur Couchbase Lite

et Couchbase Server

Cela va à la prochaine grande chose.

Maître
la source
0

En parlant de production, le basculement / récupération sans couture nécessite tous les deux une baby-sitter
1- Couchbase, il n'y a pas de basculement / récupération sans couture, une intervention manuelle est requise.
le rééquilibrage prend trop de temps, trop de risques si plusieurs nœuds sont perdus.

2- Mongo avec des fragments, la récupération de données après avoir perdu un serveur de configuration, n'est pas une tâche facile

Muayad
la source
0

Adobe utilise MongoDB pour sa prochaine version d' Adobe Experience Manager (anciennement Day CQ ) comme moteur de base de données.

Plusieurs clients de l'agence dans laquelle je travaille utilisent CouchDB sur des projets pour de gros clients.

Les deux sont des bases de données formidables et viables, à mon avis. :)

Andrei
la source
-2

Voici une liste des sites de production déployés avec mongoDB

  • The New Yorks Times : l'utiliser dans une application de création de formulaire pour les soumissions de photos. Le manque de schéma de Mongo donne aux producteurs la possibilité de définir n'importe quelle combinaison de champs de formulaire personnalisés.
  • SourceForge : est utilisé pour le stockage back-end sur les premières pages de SourceForge, les pages de projet et les pages de téléchargement pour tous les projets.
  • Bit.ly
  • Etsy
  • IGN : alimente l'analyse de trafic en temps réel d'IGN et les API de contenu RESTful.
  • Justin.tv : alimente les outils d'analyse internes de Justin.tv pour la viralité, la rétention des utilisateurs et les statistiques d'utilisation générales que les solutions prêtes à l'emploi ne peuvent pas fournir.
  • Postérieur
  • Intuit
  • Foursquare : les bases de données Sharded Mongo sont utilisées pour la plupart des données sur foursquare.
  • Business Insider : l'utilise depuis début 2008. Toutes les données du site, y compris les publications, les commentaires et même les images, sont stockées sur MongoDB.
  • Github : est utilisé pour une application de reporting interne.
  • Examinateur : migration de leur site de Cold Fusion et SQL Server vers Drupal 7 et MongoDB.
  • Grooveshark : utilise actuellement Mongo pour gérer plus d'un million de sessions utilisateur uniques par jour.
  • Buzzfeed
  • Disque
  • Evite : utilisé pour l'analyse et la création de rapports rapides.
  • Squarespace
  • Shutterfly : est utilisé pour diverses exigences de stockage de données persistantes dans Shutterfly. MongoDB aide Shutterfly à créer un service inégalé qui permet des relations plus profondes et plus personnelles entre les clients et ceux qui comptent le plus dans leur vie.
  • Topsy
  • Sharethis
  • Mongohq : fournit une plateforme d'hébergement pour MongoDB et utilise également MongoDB comme back-end pour son service. Notre page des centres d'hébergement fournit plus d'informations sur MongoHQ et d'autres options d'hébergement MongoDB.

et plus...

Extrait de: http://lineofthought.com/tools/mongodb

Vous pouvez également consulter d'autres bases de données ou outils.

fernandopasik
la source
Ajout d'une grande partie de la liste au post
fernandopasik
-6

MongoDB a quelques problèmes avec l'octroi de licences aux entreprises, je ne suis pas sûr des détails mais notre service juridique nous a dit en termes non certains que nous n'étions pas autorisés à utiliser MongoDB dans aucun de nos produits.

Mike Carr
la source
1
bien que vous n'ayez pas spécifié les problèmes exacts liés aux licences, il n'y a rien de mal à la licence MongoDB mongodb.org/about/licensing Il utilise la licence AGPL qui peut être la cause de problèmes dans votre service juridique, mais ils indiquent que tout client DB est travail séparé. "Nous promettons que votre application cliente qui utilise la base de données est un travail distinct. Pour faciliter cela, les pilotes pris en charge par mongodb.org (la partie que vous liez à votre application) sont publiés sous licence Apache, qui est sans copyleft."
Marek