Différence entre CouchDB et Couchbase


270

Existe-t-il des différences essentielles entre CouchDB et Couchbase .


45
Confus au sujet des noms? Moi aussi, j'ai commencé par remixer les informations de nommage de cette réponse supérieure dans une visualisation de l'historique de nommage , ce qui devrait aider à comprendre l'une de ces réponses.
Jeroen

@Jeroen C'est une visualisation impressionnante. Doit-il être édité dans cette première réponse?
shoover

@shoover Thx, heureux que cela ait aidé, je ne peux pas vraiment juger si c'est assez précis, mais si rsp (l'auteur principal de cette réponse) / la communauté le juge digne, n'hésitez pas à l'inclure sous la licence SO.
Jeroen

Réponses:


555

Je pense qu'il y a des différences essentielles entre CouchDB et Couchbase Server qui doivent être signalées.

Je n'écrirai pas sur les avantages du passage de CouchDB au serveur Couchbase car ceux-ci sont décrits à peu près partout (voir The Future of CouchDB by Damien Katz ou Couchbase vs.Apache CouchDB by Couchbase). Au lieu de cela, j'essaierai d'énumérer les fonctionnalités de CouchDB que vous ne trouverez pas sur le serveur Couchbase .

Tous les noms relatifs à CouchDB et Couchbase peuvent être vraiment déroutants, j'ai donc mis à jour cette réponse, pour commencer par une brève explication des plus importants.

Noms et confusion

Il y a CouchDB, CouchIO, CouchOne, Couchbase, Couchbase Server, Couchbase Mobile, Couchbase Lite, CouchApps, BigCouch, Touchbase, Membase, Memcached, MemcacheDB ... tous différents et pourtant liés d'une manière qui n'est pas du tout évidente du seul nom.

Tout d'abord, il y avait CouchDB, une base de données créée par Damien Katz, un ancien développeur IBM. Son nom officiel a été changé en Apache CouchDB après qu'il soit devenu un projet Apache.

Une entreprise nommée CouchIO a été fondée pour travailler sur Apache CouchDB et a ensuite changé son nom en CouchOne (par «son nom», je veux dire le nom de l'entreprise - pas le nom de la base de données).

CouchOne (anciennement CouchIO) a fusionné avec Membase (anciennement NorthScale) pour former une nouvelle société appelée Couchbase. Membase (la société) a développé Membase (un produit du même nom). Membase a été créée par plusieurs leaders du projet Memcached et a utilisé le protocole Memcached. Après la fusion de CouchOne et de Membase, Couchbase a poursuivi le développement du logiciel Membase et a par la suite changé de nom pour Couchbase Server.

Aujourd'hui, je pense que la plupart des gens croient que Couchbase Server est une nouvelle version de CouchDB mais c'est, en fait, une nouvelle version de Membase. Il utilise toujours le protocole Memcached et non l'API RESTful de CouchDB. Pendant ce temps, CouchDB est toujours CouchDB, activement maintenu et amélioré en tant que projet Apache.

Passons maintenant aux différences pertinentes:

Licence

Le serveur Couchbase n'est pas un logiciel entièrement open source / gratuit . Il existe deux versions: Community Edition (gratuite mais pas de correctifs de bogues les plus récents) et Enterprise Edition (il y a des restrictions d'utilisation, des dispositions de confidentialité, des audits par Couchbase Inc. qui "seront effectués pendant les heures normales de travail dans les installations du Licencié" et d' autres termes typiques à des logiciels propriétaires que beaucoup de gens peuvent trouver inacceptables).

CouchDB est un projet de logiciel libre / gratuit (sans aucune chaîne attachée) de The Apache Software Foundation et est publié sous la licence Apache, version 2.0 (compatible DFSG, approuvé FSF, approuvé OSI, compatible GPL, non copyleft) , commercial).

Philosophie

Je ne l'ai jamais vu directement souligné, mais c'est peut-être la différence la plus importante entre ces deux bases de données, car il s'agit profondément de la philosophie sous-jacente des modèles informatiques distribués et pas seulement de certaines fonctionnalités, API ou licences. CouchDB et le serveur Couchbase diffèrent complètement dans leur philosophie de création de systèmes distribués et de bases de données.

Selon le théorème de CAP, il est impossible pour une base de données distribuée de fournir simultanément cohérence, disponibilité et tolérance de partition.

CouchDB est un système de type AP (fournit la disponibilité et la tolérance de partition ).

Le serveur Couchbase est soit un système de type CP (selon Wikipedia ) OU un système de type CA (selon la mise à jour technique de Couchbase ) - LEQUEL DE CEUX EST CORRECT? COMMENTEZ S'IL VOUS PLAÎT.

Caractéristiques

Voici ce que j'ai trouvé être une liste de fonctionnalités CouchDB qui ne sont pas prises en charge par le serveur Couchbase:

  • pas d' API RESTful (uniquement pour les vues, pas pour les opérations CRUD)
  • pas de flux _changes
  • pas de réplication d'égal à égal
  • pas de CouchApps
  • pas de Futon (il existe une interface d'administration différente disponible)
  • aucun ID de document
  • aucune notion de bases de données (il n'y a que des seaux)
  • pas de réplication entre une base de données CouchDB et le serveur Couchbase
  • pas de pièces jointes explicites (vous devez stocker des fichiers supplémentaires en tant que nouvelles paires clé / valeur)
  • pas d'API HTTP pour tout (vous devez utiliser les SDK du serveur Couchbase ou l'une des bibliothèques client expérimentales de Couchbase Develop, donc aucune expérience avec curl et wget )
  • pas d'API CouchDB (il utilise à la place l'API Memcached )
  • vous ne pouvez pas tout faire à partir du navigateur (vous devez écrire une application côté serveur)
  • aucune architecture à deux niveaux pour les applications Web n'est possible (vous devez écrire une application côté serveur pour s'asseoir entre le navigateur et la base de données, comme avec les bases de données relationnelles)
  • pas de cohérence éventuelle
  • pas entièrement open source / logiciel libre
  • pas un remplacement sans rendez-vous pour CouchDB (semble plutôt un remplacement sans rendez-vous pour Memcached)

Ces fonctionnalités de CouchDB peuvent ou non être importantes pour vous, donc si leur absence est un inconvénient ou non est strictement subjectif, mais je pense que la décision de passer de CouchDB à Couchbase Server ou non devrait être basée sur ces différences et votre dépendance à l'égard de ces fonctionnalités dans vos déploiements CouchDB actuels.

Par exemple, si vous vous êtes intéressé à CouchDB après avoir regardé les changements de CouchDB, alimentez NodeCamp talk par Mikeal Rogers ou l'un des excellents tutoriels CouchApp de J. Chris Anderson, alors vous devez vous rendre compte que si vous voulez passer au serveur Couchbase, vous devra oublier à peu près tout ce dont ils parlaient.

Pour cette raison, je dirais que Couchbase Server ressemble à une évolution de Memcached et Membase (pas une évolution de CouchDB) et à ce titre, il ressemble à un excellent produit si vous utilisez actuellement Memchached ou Membase. Si vous utilisez CouchDB de la manière la plus élémentaire, vous pouvez envisager d'utiliser le serveur Couchbase pour les mêmes choses et il peut ou non fonctionner mieux (si cela ne vous dérange pas les restrictions de licence). Mais si vous utilisez réellement l'une des fonctionnalités uniques de CouchDB (comme le flux de modifications, les CouchApps, l'architecture à deux niveaux, la réplication entre homologues, etc.), vous pouvez soit oublier ces fonctionnalités, soit rester avec CouchDB. Dans tous les cas, assurez-vous de lire et de comprendre le didacticiel Migration vers Couchbase pour les utilisateurs de CouchDB avant de penser à changer.

Les gens ont souvent la mauvaise impression (peut-être après avoir lu des choses comme "Quel est l'avenir de CouchDB? C'est Couchbase." ) Que CouchDB est en quelque sorte obsolète par le serveur Couchbase, ou qu'il s'agit d'une ancienne version héritée de Couchbase. Pendant ce temps, CouchDB est un projet open source activement maintenu, le serveur Couchbase est un projet complètement distinct (c'est un projet plus récent mais ce n'est pas une version plus récente de CouchDB - ils ne sont même pas compatibles) et puisque même de nouveaux outils pour créer des CouchApps continuent en cours de développement (par exemple, voir le projet Kanso ) alors CouchDB ne va nulle part bientôt.

J'espère que cela clarifie la confusion. Veuillez me corriger si je me trompe sur quelque chose ici.

Mettre à jour:

Couchbase Server est en fait un nouveau nom pour Membase Server (le Membase Server a été renommé Couchbase Server quelque part autour de la version 1.8). Voir le bilan de l'année 2011 de Couchbase :

Malheureusement, nous avons confondu bon nombre de nos utilisateurs potentiels. En plus de Membase Server et de nos nouveaux produits mobiles, nous avons également proposé Couchbase Single Server qui était une «distribution» packagée d'Apache CouchDB. En plus de cela, nous avons commencé à publier des aperçus des développeurs de Couchbase Server 2.0, qui incorporaient la technologie CouchDB dans Membase Server - mais ce produit n'était pas compatible avec Couchbase Single Server (ou CouchDB). [...] Membase Server sera renommé Couchbase Server 1.8 lors de sa prochaine version en janvier - une toute petite étape qui atténue tout simplement la confusion des «noms». Comme prévu depuis le début, la version de Couchbase Server 2.0 (actuellement à Developer Preview 3) ajoutera des fonctionnalités d'index et de requête. Alors que Couchbase Server 2.0 incorporera une technologie substantielle du projet CouchDB,il ne sera pas compatible avec CouchDB et ne devrait pas être considéré comme une «version de CouchDB». [non souligné dans l'original]

Voir également:


69
Bravo. Heureux de voir quelque chose expliquer réellement ce côté des choses (toutes les comparaisons existantes, comme vous l'avez indiqué, ont un biais Couchbase notable).
Stuart P. Bentley

6
@WalterTross: En fait, ne pas utiliser l'API CouchDB, ne pas être RESTful et ne pas utiliser HTTP ne sont pas exactement les mêmes choses. Par exemple, Riak n'utilise pas l'API CouchDB mais il utilise toujours une API RESTful. En outre, il peut ne pas utiliser REST mais toujours utiliser HTTP (par exemple, SOAP ou un autre service Web). Ici, je voulais préciser que le serveur Couchbase non seulement n'utilise pas l'API CouchDB, mais que son API n'est pas RESTful et n'utilise même pas HTTP du tout.
rsp

24
Je considère que c'est la réponse. Merci.
skift

10
Concernant votre question "CP vs CA": en un mot, il est impossible d'avoir un système "CA" à moins que vous ne parliez d'une seule machine. Il y a toujours des partitions dans le réseau ( aphyr.com/posts/288-the-network-is-reliable ) et donc un système distribué fera, à tout moment, des compromis pour être disponible ou cohérent face à Partitions (mais jamais les deux). Ainsi, par induction, Couchbase est CP. En fait, cela découle de leur stratégie de réplication derrière les vBuckets qui est soit a) 1: n maître / esclave (s) ou b) 1..n basé sur une chaîne contre, disons, un système modélisé d'après Dynamo (AP).
Greg Burd

9
À ce jour, il y a un ajout très important à cet article: Couchbase SyncGateway. C'est essentiellement une partie qui apporte la réplication CouchDB à la Couchbase à un niveau compatible avec l'API, de sorte que CouchDB peut être répliqué avec Couchbase via SyncGateway. Ce qui est énorme du point de vue de Couchbase Lite, qui peut (sauf certains cas d'angle) passer de la synchronisation avec CouchDB à la synchronisation avec SyncGateway de manière transparente
Leonid Usov

39

Ce sont des logiciels différents mais similaires. J'ai remixé le contenu de la réponse du haut dans une image qui pourrait aider à clarifier la "différence" ainsi que les choses courantes:

l'autre réponse liée ci-dessus est une description détaillée de cette image

Un commentaire de Matt Ingenthron ajoute à cela:

Pour ajouter un peu de contexte / corrections: les fondateurs de NorthScale sont Steve Yen et Dustin Sallings. Je les ai rejoints peu de temps après la fondation. De plus, Damien n'a pas rejoint Couchbase plus tard, il faisait partie de CouchIO / Couch One avant la fusion. Citant une source historique amusante: https://youtube.com/watch?v=aZ_JOnU8tkI


4
C'est un info-graphique super utile!
Zach Smith

3
Pour ajouter un peu de contexte / corrections: les fondateurs de NorthScale sont Steve Yen et Dustin Sallings. Je les ai rejoints peu de temps après la fondation. De plus, Damien n'a pas rejoint Couchbase plus tard, il faisait partie de CouchIO / Couch One avant la fusion. Citant une source historique amusante: youtube.com/watch?v=aZ_JOnU8tkI
Matt Ingenthron

1
@MattIngenthron Thx pour la mise à jour. J'ai intégré votre remarque dans la réponse, si je trouve le temps de modifier le diagramme en conséquence.
Jeroen

1

Je pense que CouchBase semble être perçu comme l'alternative «entreprise» de CouchDB. Ce qui semble en quelque sorte être vrai. Mis à part le manque de capacité à joindre des fichiers aux enregistrements (documents) et aux points de terminaison REST `` prêts à l'emploi '' par rapport à CouchDB, CouchBase a un langage similaire à SQL, c'est-à-dire N1QL (parfois prononcé Nickel). C'est l'une des raisons pour lesquelles je n'aime pas vraiment / ne recommande pas d'utiliser le terme «NoSQL». Personnellement, j'aime le terme «non relationnel».

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.