rsp*_*rsp 526

我认为需要指出CouchDB和Couchbase Server之间存在一些本质区别.

我不会谈到从CouchDB切换到Couchbase服务器的优势,因为几乎所有地方都有这些优点(参见Damien Katz 的CouchDB的未来Couchbase的Couchbase与Apache CouchDB ).相反,我将尝试枚举您在Couchbase服务器中找不到的CouchDB功能.

所有与CouchDB和Couchbase相关的名称都可能令人困惑,所以我更新了这个答案,首先简要介绍一下最重要的答案.

名字和混乱

有CouchDB,CouchIO,CouchOne,Couchbase,Couchbase服务器,Couchbase Mobile,Couchbase Lite,CouchApps,BigCouch,Touchbase,Membase,Memcached,MemcacheDB ......所有这些都有所不同,但它们之间的相关性并不是很明显.

首先,有一个CouchDB,一个由前IBM开发人员Damien Katz创建的数据库.它的官方名称在成为Apache项目后改为Apache CouchDB.

一家名为CouchIO的公司成立于Apache CouchDB,后来更名为CouchOne("名称"是指公司名称 - 而不是数据库名称).

CouchOne(前身为CouchIO)与Membase(原名为NorthScale)合并成立了一家名为Couchbase的新公司.Membase(该公司)开发了Membase(同名产品).Membase是由Memcached项目的几位领导者创建的,它使用了Memcached协议.在CouchOne和Membase合并之后,Couchbase继续开发Membase软件,后来更名为Couchbase Server.

今天我想大多数人都认为Couchbase Server是CouchDB的新版本,但它实际上是Membase的新版本.它仍然使用Memcached协议而不是CouchDB的RESTful API.同时,CouchDB仍然是CouchDB,作为Apache项目积极维护和增强.

现在来看相关的差异:

许可

Couchbase Server不是完全开源/免费软件.有两个版本:社区版(免费但没有最新的错误修复)和企业版(对使用,保密规定,Couchbase Inc.的审核"将在被许可方设施的正常工作时间内进行"和其他典型术语的限制)许多人可能认为不可接受的专有软件.

CouchDB是Apache Software Foundation的开源/免费软件(无附加条件)项目,并在Apache许可证2.0版本下发布(DFSG兼容,FSF认证,OSI认证,GPL兼容,非Copyleft ,商业友好).

哲学

我从未直接指出它,但实际上这可能是这两个数据库之间最重要的区别,因为它深深地关注分布式计算模型的基本理念,而不仅仅是关于某些特性,API或许可.CouchDB和Couchbase Server在构建分布式系统和数据库的理念上完全不同.

根据CAP定理,分布式数据库不可能同时提供一致性,可用性和分区容错.

CouchDB是一种AP类型系统(提供可用性分区容差).

Couchbase Server是一个CP类型系统(根据维基百科)或CA类型系统(根据Couchbase技术更新) - 这些是正确的吗?请评论.

特征

这是我发现的Couchbase服务器不支持的CouchDB功能列表:

  • 没有RESTful API(仅适用于视图,不适用于CRUD操作)
  • 没有_改变饲料
  • 没有点对点复制
  • 没有CouchApps
  • 没有被褥(有不同的管理界面可用)
  • 没有文件ID
  • 没有数据库的概念(只有桶)
  • CouchDB数据库和Couchbase服务器之间没有复制
  • 没有明确的附件(您必须将其他文件存储为新的键/值对)
  • 没有HTTP API适用于所有内容(您需要使用Couchbase Server SDK或Couchbase Develop中的一个实验客户端库,因此不需要使用curlwget进行实验)
  • 没有CouchDB API(它使用Memcached API代替)
  • 你不能从浏览器做任何事情(你必须编写服务器端应用程序)
  • 没有Web应用程序的双层体系结构(您必须编写一个服务器端应用程序来放置在浏览器和数据库之间,就像关系数据库一样)
  • 没有最终的一致性
  • 不完全是开源/免费软件
  • 不是CouchDB的直接替代品(看起来像是Memcached的直接替代品)

CouchDB的这些功能对你来说可能是重要的,也可能不重要,所以缺乏它们是否是一个缺点是严格主观的,但我认为是否从CouchDB切换到Couchbase Server的决定应该基于这些差异和您在当前CouchDB部署中对这些功能的依赖.

例如,如果您在观看CouchDB后更改了CouchDB,那么Mikeal Rogers 改变了Feed NodeCamp的讲话,或者来自J. Chris Anderson的一个很棒的CouchApp教程,那么你必须意识到,如果你想切换到Couchbase服务器,那么你将不得不忘记他们谈论的几乎所有事情.

因此,我会说Couchbase Server看起来像是Memcached和Membase的演变(不是CouchDB的演变),因此如果你当前正在使用Memchached或Membase,它看起来像一个很棒的产品.如果你是在最基本的方式使用CouchDB的,那么你可以考虑使用Couchbase Server以同样的事情,它可能会或可能不会有更好的表现(如果你不介意的许可限制).但是,如果您实际使用CouchDB中独有的任何功能(如更改提要,CouchApps,双层体系结构,对等复制等),那么您可以忘记这些功能或者使用CouchDB.在任何情况下,在考虑切换之前,请务必阅读并理解" 迁移到Couchbase for CouchDB用户"教程.

人们经常会得到错误的印象(也许在阅读了"CouchDB的未来是什么?它是Couchbase."之后),CouchDB在某种程度上被Couchbase Server淘汰了,或者它是Couchbase的旧版本.同时CouchDB是一个积极维护的开源项目,Couchbase服务器是一个完全独立的项目(它是一个较新的项目,但它不是CouchDB的新版本 - 它们甚至不兼容),因为即使是创建CouchApps的新工具仍然存在正在开发中(例如,参见Kanso项目),CouchDB不会很快到来.

我希望它澄清了这种混乱.如果我在这里做错了,请纠正我.

更新:

Couchbase Server实际上是Membase Server的新名称(Membase Server在1.8版本左右重命名为Couchbase Server).参见Couchbase 2011年度回顾:

不幸的是,我们混淆了许多潜在用户.除了Membase Server和我们的新移动产品,我们还提供了Couchbase Single Server,它是Apache CouchDB的打包"发行版".最重要的是我们开始发布Couchbase Server 2.0中,其中纳入CouchDB的技术进入Membase的服务器的开发者预览-但这个产品不符合Couchbase单个服务器(或CouchDB的)兼容.[...] Membase Server将在1月份的下一个版本中重命名为Couchbase Server 1.8 - 这一小步骤可以简化"名称"的混乱.正如从一开始就计划的那样,Couchbase Server 2.0版本(目前在开发人员预览版3中)将添加索引和查询功能.虽然Couchbase Server 2.0将采用CouchDB项目的大量技术,但它不会与CouchDB向上兼容,也不应被视为"CouchDB版本". [强调添加]

也可以看看:

  • 布拉沃.很高兴看到实际解释这方面的事情(所有现有的比较,如你所列,有明显的Couchbase偏见). (67认同)
  • 我认为这是答案.谢谢. (24认同)
  • 关于你的"CP vs CA"问题:简而言之,除非你在谈论一台机器,否则不可能拥有"CA"系统.网络中始终存在分区(http://aphyr.com/posts/288-the-network-is-reliable),因此分布式系统将在任何给定时间内进行折衷以使其可用或一致面对分区(但绝不是两者).因此,通过感应Couchbase是CP.实际上,这是由于它们在vBuckets背后的复制策略,它是a)1:n主/从(s)或b)1..n基于链,而不是说在Dynamo(AP)之后建模的系统. (9认同)
  • 截至今天,本文还有一个非常重要的补充:Couchbase SyncGateway.这基本上是在API兼容级别上将CouchDB复制带到Couchbase的一部分,这样CouchDB可以通过SyncGateway与Couchbase一起复制.从Couchbase Lite的角度来看,这是一个巨大的优势,它可以(除了一些极端情况)从与CouchDB的同步无缝切换到与SyncGateway同步 (8认同)
  • @WalterTross:实际上不使用CouchDB API,不是RESTful而不是使用HTTP并不完全相同.例如,Riak不使用CouchDB API,但仍使用RESTful API.此外,它可能不使用REST但仍使用HTTP(例如SOAP或其他Web服务).在这里,我想明确表示Couchbase服务器不仅不使用CouchDB API,而且它的API不是RESTful,甚至根本不使用HTTP. (6认同)
  • 这个答案已经过时了。有REST API,DCP(数据更改协议)提要代替了更改提要,附件,文档ID,最终的一致性和事件(涵盖了某些CouchApps,但现在不赞成使用CouchApps)。相当多的链接已失效,因此很难准确地称呼出什么,但是我认为可以肯定地说这个答案不再准确。 (2认同)

J C*_*s A 58

我们已经更详细地写了CouchDB和Couchbase之间关系.简而言之,Couchbase Server采用了CouchDB所有耐用的NoSQL优点,并为它提供了memcache结霜的清晰硬边.

如果您是NoSQL的新手,基本上,您将JSON存储在Couchbase中.它非常快,可以扩展到您可能看到的大量流量负载.

与关系数据库一样,它可以在您需要时为您提供存储的内容.耶的数据库!

与关系数据库不同,您不必先预先指定要存储的内容,而是可以存储它(如果您使用的是memcached,我们是一个直接升级),我们将帮助您稍后对其进行排序.

  • 这可能是我在SO上看到的最模糊的答案.我甚至不知道为什么会有这么多的赞成. (152认同)
  • JC - 我在couchbase网站上找不到任何许可证或购买信息.它是免费产品吗?你可以区分什么是免费的,什么是付款? (14认同)
  • 有偏见和无益; 几乎没有回答两者如何不同的问题.解释差异的链接并不是更好.社区的答案在解释差异方面非常好,甚至可以稍微说明如何选择更合适的方式. (7认同)
  • 我喜欢这里的"简言之"答案.随着链接.我是NoSQL和CouchDB以及Couchbase的新手.我一直在尝试访问端口5984和"Futon",并想知道为什么我在Couchbase服务器中看不到它.然后我意识到,"哦,这不是CouchDB,它的Couchbase,不是完全一样的东西!呃!" 让我对这一切感兴趣的是适用于iOS的Couchbase Lite和Sync Gateway.如果不是这样的话,我甚至不会费心去学习CouchDB/Couchbase.PS:将所有这些描述为"文档"为基础,对我们SQL人员来说真的很可怕.我甚至不知道这意味着"JSON数据文档" (5认同)
  • 另一个区别可能是couchbase的python驱动程序和它的社区/维护方法完全糟糕,而couchdb python库只是按预期工作. (4认同)
  • 我们的目标是尽可能多地提供Apache CouchDB.但是有些东西不适合(例如Mobile或我们计划的Elastic Server产品),它们将是开源的,但不一定是Apache项目的一部分. (2认同)

Jer*_*oen 31

它们是不同但相似的软件.我已经将顶部答案中的内容重新混合成了一张图片,可能有助于澄清"差异"以及常见的事物:

上面链接的另一个答案是对此图像的扩展描述

Matt Ingenthron的评论补充说:

添加一些背景/更正:NorthScale的创始人是Steve Yen和Dustin Sallings.我在创立后不久加入了他们.此外,达米恩后来没有加入Couchbase,他在合并前是CouchIO/Couch One的一员.引用有趣的历史资料来源:https://youtube.com/watch?v = aZ_JOnU8tkI

  • 这是一个超级有用的信息图形! (4认同)
  • 添加一些背景/更正:NorthScale的创始人是Steve Yen和Dustin Sallings.我在创立后不久加入了他们.此外,达米恩后来没有加入Couchbase,他在合并前是CouchIO/Couch One的一员.引用有趣的历史资料来源:https://www.youtube.com/watch?v = aZ_JOnU8tkI (3认同)