web-dev-qa-db-fra.com

Différence entre CouchDB et Couchbase

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

251
yojimbo87

Nous avons écrit plus en détail le relation entre CouchDB et Couchbase . En résumé, Couchbase Server prend toute la bonté NoSQL de CouchDB et lui donne le tranchant dur du glaçage memcache.

Si vous êtes nouveau sur NoSQL, vous stockez votre JSON dans Couchbase. C'est très rapide et peut adapter à la charge du trafic aussi grande que vous êtes susceptible de voir.

Comme une base de données relationnelle, il vous restitue ce que vous avez stocké, quand vous en avez besoin. Yay bases de données!

Contrairement à une base de données relationnelle, au lieu de devoir spécifier à l’avance ce que vous allez stocker, vous pouvez simplement le stocker (nous sommes une mise à niveau immédiate si vous utilisez memcached) et nous vous aiderons à le régler plus tard. .

59
J Chris A

Je pense qu'il y a des différences essentielles entre CouchDB et Couchbase Server qu'il convient de souligner.

Je ne parlerai pas des avantages de passer de CouchDB à Couchbase Server car ils sont décrits un peu partout (voir L'avenir de CouchDB par Damien Katz ou Couchbase contre Apache CouchDB = par Couchbase). Au lieu de cela, je vais essayer d’énumérer les fonctionnalités de CouchDB que vous ne trouverez pas dans le serveur Couchbase .

Tous les noms relatifs à CouchDB et à Couchbase peuvent être très 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, Serveur Couchbase, Couchbase Mobile, Couchbase Lite, CouchApps, BigCouch, Touchbase, Membase, Memcache, MemcacheDB ... tous différents et liés d'une manière qui n'est pas évidente à partir des noms.

Il y a tout d'abord CouchDB, une base de données créée par Damien Katz, un ancien développeur IBM. Son nom officiel a été changé pour Apache CouchDB après être devenu un projet Apache.

Une société appelée CouchIO a été créée pour travailler sur Apache CouchDB. Elle a ensuite changé de nom et s'appelle désormais CouchOne ("son nom" désigne le nom de la société et non 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éé par plusieurs responsables du projet Memcached et utilisait 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 devenir Couchbase Server.

Aujourd'hui, je pense que la plupart des gens pensent que Couchbase Server est une nouvelle version de CouchDB, mais il s'agit en fait d'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 entièrement open-source / logiciel libre . Il existe deux versions: Community Edition (gratuite, mais pas les dernières corrections de bugs) et Enterprise Edition (il existe des restrictions d'utilisation, des clauses de confidentialité, des audits de Couchbase Inc. qui "seront effectués pendant les heures normales de bureau dans les locaux du Titulaire de la licence" et autres termes typique des logiciels propriétaires que de nombreuses personnes peuvent trouver inacceptable).

CouchDB est un projet de logiciel libre/à code source libre (sans chaînes attachées) de The Apache Software Foundation et est publié sous la version Licence Apache, Version 2. (compatible avec DFSG, approuvé par la FSF, approuvé par l'OSI, Compatible GPL, sans copyleft, adapté aux publicités).

Philosophie

Je ne l’ai jamais vu directement, mais c’est peut-être en réalité la différence la plus importante entre ces deux bases de données, car elle concerne profondément la philosophie sous-jacente des modèles informatiques distribués et pas seulement certaines fonctionnalités, API ou licences. CouchDB et le serveur Couchbase diffèrent complètement par leur philosophie de construction de systèmes et de bases de données répartis.

Selon le théorème CAP , il est impossible pour une base de données répartie d'assurer simultanément la cohérence, la disponibilité et la tolérance de partition.

CouchDB est un [~ # ~] ap [~ # ~] système de type (fournit la disponibilité et la tolérance de partition ).

Couchbase Server est soit [~ # ~] cp [~ # ~] système de types (selon Wikipedia ) OR a [~ # ~] ca [~ # ~] système de types (selon mise à jour technique de Couchbase ) - QU'IL EN EST DE IS CORRECT? VEUILLEZ COMMENTER.

Caractéristiques

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

  • no RESTful API (uniquement pour les vues, pas pour les opérations CRUD)
  • non _ change le fil
  • non réplication entre homologues
  • non CouchApps
  • non Futon (une interface d'administration différente est disponible)
  • non ID de document
  • pas de 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 Couchbase Server
  • 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 kits de développement logiciel (SDK) de Couchbase Server ou l'une des bibliothèques de clients expérimentaux à Couchbase Develop donc pas d'expériences avec curl et wget )
  • pas d'API CouchDB (elle utilise plutôt 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 vous asseoir entre le navigateur et la base de données, comme avec les bases de données relationnelles)
  • non cohérence éventuelle
  • pas entièrement open-source / logiciel libre
  • pas un remplacement instantané de CouchDB (semble plutôt un remplacement instantané de Memcached)

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

Par exemple, si CouchDB vous intéresse après avoir regardé le flux de modifications de CouchDB Exposé de NodeCamp par Mikeal Rogers ou l'un des excellents tutoriels sur CouchApp de J. Chris Anderson, vous devez vous rendre compte que si vous le souhaitez passez au serveur Couchbase, vous devrez alors oublier à peu près tout ce dont ils parlaient.

Pour cette raison, je dirais que Couchbase Server ressemble à une évolution de Memcached et de Membase (et non à une évolution de CouchDB) et, en tant que tel, à 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 tâches et les performances pourraient être meilleures ou non (si les restrictions de licence ne vous dérangent pas). Mais si vous utilisez réellement l'une des fonctionnalités uniques dans CouchDB (flux de modifications, CouchApps, architecture à deux niveaux, réplication entre homologues, etc.), vous pouvez oublier ces fonctionnalités ou rester avec CouchDB. Dans tous les cas, assurez-vous de lire et de comprendre le tutoriel Migration vers Couchbase pour les utilisateurs de CouchDB avant de songer à changer de système.

Les gens ont souvent une mauvaise impression (peut-être après avoir lu des choses telles que "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 séparé (c’est un projet plus récent mais il ne s’agit pas d’une version plus récente de CouchDB - ils ne sont même pas compatibles) et même de nouveaux outils pour créer des CouchApps continuent à être développés (par exemple, voir le projet Kanso ), puis CouchDB ne va plus nulle part.

J'espère que cela clarifie la confusion. S'il vous plaît corrigez-moi si je me trompe sur quelque chose ici.

Mise à jour:

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

Malheureusement, nous avons mal compris nombre de nos utilisateurs potentiels. En plus de Membase Server et de nos nouveaux produits mobiles, nous avons également proposé Couchbase Single Server, une "distribution" packagée d'Apache CouchDB. De plus, nous avons commencé à publier des aperçus des développeurs sur Couchbase Server 2.0, qui intégrait 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 dissipe tout simplement la confusion du "nom". Comme prévu depuis le début, la version Couchbase Server 2.0 (actuellement disponible dans Developer Preview 3) ajoutera une fonctionnalité d'index et de requête. Alors que Couchbase Server 2.0 intégrera une technologie substantielle issue du projet CouchDB, , il ne sera pas compatible avec CouchDB et ne devrait pas être considéré comme une "version de CouchDB". [emphase ajoutée]

Voir également:

518
rsp

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

the other answer linked above is an extended description of this image

Un commentaire de Matt Ingenthron ajoute à cela:

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

28
Jeroen