web-dev-qa-db-fra.com

MongoDB ou CouchDB - aptes à la production?

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

Je regarde maintenant ces solutions de stockage (je privilégie 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 responsable que nous devrions adopter cette 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 que vous avez dû affronter?

  5. Avez-vous des expériences positives/négatives avec l’une ou l’autre de ces solutions que vous aimeriez partager?

485
Alan

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

businessinsider utilise mongo en production depuis plus d'un an maintenant. Ils l'utilisent pour tout, des utilisateurs aux billets de blogs, en passant par toutes les images du site.

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

Si vous allez à la page page de déploiement de la production mongodb , vous verrez certaines personnes utiliser le mongo en production.

Si vous avez des questions sur l'ampleur ou la portée des déploiements en production, publiez-les sur notre liste d'utilisateurs et nous nous ferons un plaisir de vous aider.

270
user111359

Les BBC et meebo.com utilisent CouchDB en production, de même qu'un de mes clients. Voici une liste des utilisateurs de Couch: CouchDB à l'état sauvage

Le défi majeur est de savoir organiser vos documents et de ne plus penser en termes de données relationnelles.

111
Matt Aimonetti

SourceForge utilise MongoDB. Voir cette présentation ou lire ici .

44
dormsbee

Nous utilisons CouchDB pour remplacer MySQL dans nos magasins (70.0000 articles/magasin, un total de 4 millions d’attributs de tous les articles, connexions croisées entre les articles).

Nos objectifs étaient:

  1. Réplication facile d'une base de données principale vers plusieurs clients avec différents documents.

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

faits:

  1. Nos magasins fonctionnent maintenant beaucoup plus rapidement qu'avec MySQL (et mysql-database a également besoin de 1 à 3 jours de pré-calcul (la mise à jour a donc lieu 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. nous pourrions mettre à jour les données du produit tous les soirs)
  2. La configuration (filtrée) de la distribution des données et des sauvegardes sur les nœuds de la boutique est simple et rapide

mais aussi:

  1. Comprendre map/réduire et les limites du fait de ne pas avoir de jointures est assez difficile
  2. Aucune opération sur des données telles que "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 quelle était la raison (pour les débutants)
  4. L'installation de CouchDB sans fichiers binaires (oui, il en existe certains dans la nature, mais pas pour chaque système d'exploitation/version) pourrait être difficile, si vous n'êtes pas un geek Linux. Mais la communauté CouchDB est utile (#couchdb) et, heureusement, il existe des sociétés (cloudant, iriscouch) qui offrent des services gratuits aux grandes entreprises.
  5. CouchDB avance, alors il y a 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, 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.

Des divans de production posaient parfois des problèmes après des mois de travail en raison d’une mauvaise configuration ou de la perte de traces logariales (la création de vues prend trop de temps ou s’arrêtait, la réplication s’arrêtait), mais jamais de données perdues et elles pouvaient toujours être facilement réinitialisées.

34
okurow

J'utilise CouchDB en production. Actuellement, il stocke tous les champs "facultatifs" qui ne figuraient pas dans le schéma de base de données d'origine. Et pour le moment, je pense à transférer toutes les données vers CouchDB.

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

27
Sergio Tulentsev

CouchDB 0.11 (publié à la fin du mois de mars) est une version gelant les fonctionnalités de la version 1.0. Cela signifie que nous allons maintenir la compatibilité avec l'API actuelle pour la version 1.0; il est donc temps de jeter un nouveau regard sur CouchDB si vous ne l'avez pas déjà fait.

Le la version du code source de CouchDB 0.11 est disponible ici. Il y a les installateurs binaires et autres goodies sont liés ici.

18
J Chris A

Je ne connais rien à MongoDB, mais à partir de la FAQ de 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 Études de cas CouchDB

En outre, quelques liens:

17
Sasha Chedygov

Nous utilisons couchdb en production et depuis, juste avant que le projet soit passé sous le parapluie Apache.

Nous l'utilisons pour stocker tout ce que nous pourrions utiliser autrement, ainsi que toutes sortes de données non structurées. Personnellement, j'aime beaucoup le fait que vous puissiez y insérer 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’esprit de dbms. Nous avons écrit nos propres outils de migration lorsque le format de stockage a été modifié pour des raisons de sécurité. Ce n'était donc pas vraiment un problème.

Nous n'avons pas encore eu d'expériences négatives, mais là encore, nous n'avons pas eu la configuration sous une charge énorme. I pensez les choses fonctionneraient plutôt bien puisque nous avons deux serveurs de type esclave qui se répliquent à partir d'un serveur maître unique 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 mis en place au début et que cela a marché.

16
clintm

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'avions pas de problèmes techniques réels et cela fonctionne depuis fin décembre. Le seul obstacle que j’ai rencontré était au départ de penser à MapReduce, mais une fois que j’ai appris à le faire, tout se passait bien.

13
Ryan Duffield

Nous utilisons actuellement MongoDB en production en tant que couche de mise en cache ainsi que moteur de stockage pour importer et manipuler des données de produit. Nous sommes une société 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.

9
Joshua Burns

Nous utilisons actuellement mongodb en tant que service de stockage de fichiers pour notre collaboration sur le réseau local. En outre, des projets tels que trello utilisent mongodb comme magasin de données backend. J'ai utilisé couchdb plus tôt, mais pas dans la capacité de production.

1
Sumit Bisht

Cette question a déjà accepté de répondre, mais il reste maintenant un jour de plus NoSQL DB pour bon nombre de ses fonctionnalités. C'est Couchbase; qui s'exécute en tant que CouchbaseLite sur la plate-forme mobile et Couchbase Server sur votre serveur.

Voici certaines des principales caractéristiques de Couchbase Lite.

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

Léger signifie:

Embarqué: le moteur de base de données est une bibliothèque liée à l'application, et non un processus serveur distinct. Petite taille de code - importante pour les applications mobiles, qui sont souvent téléchargées sur des réseaux de cellules. Temps de démarrage rapide: important car les périphériques 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 comporter de grandes pièces jointes multimédias. Bonne performance - 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 qu'il soit nécessaire de procéder à des migrations explicites. L'indexation MapReduce permet des recherches rapides sans avoir à utiliser des langages de requête spéciaux.

Syncable signifie:

Deux copies quelconques 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 périphériques peuvent se synchroniser avec un sous-ensemble d'une base de données volumineuse 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 entièrement la fusion. Les arborescences de révision permettent de créer des topologies de réplication complexes, notamment 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 inclut le plug-in Couchbase Lite pour PhoneGap, qui vous permet de créer des applications iOS et Android que vous développez à l'aide de techniques de programmation d'applications Web et du cadre de développement mobile PhoneGap.

Vous pouvez explorer plus sur Couchbase Lite

et serveur Couchbase

Cela va à la prochaine grande chose.

0
Master

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, maintien de 10 millions de données d'utilisateurs et d'olap.

Le seul défi à relever concernant l’archivage des données, nous avons surmonté la mise en œuvre de notre composant personnalisé.

0
Udit

Adobe utilise MongoDB pour sa prochaine version de Adobe Experience Manager (---) ( anciennement Day CQ ) en tant que moteur de base de données.

Plusieurs clients de l'agence où je travaille utilisent CouchDB sur des projets destinés à de gros clients.

Les deux sont d'excellents DB et viables, à mon avis. :)

0
Todd

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 démarré 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 à la fin.

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

Mon expérience m'a appris une courbe d'apprentissage: utiliser pleinement les vues (ou vues permanentes). Les vues doivent être un "petit filtre" d'une fraction de la base de données appelée souvent.

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

La fonctionnalité de CouchDB que j'aime bien 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 avait une chance.

0
Nicholas TJ

Nous utilisons MongoDB en production dans notre service backend mobile, à savoir Netmera. Nous l’utilisons pour stocker toutes les données relatives aux utilisateurs et au contenu.

0
Parvin Gasimzade

Parlant de production, le basculement/la récupération en continu nécessite une baby-sitter
1- Couchbase, il n'y a pas de reprise en ligne/reprise en ligne transparente, 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 la perte d'un serveur de configuration n'est pas une tâche facile

0
Muayad