CouchDB和Couchbase之间的区别


270

CouchDBCouchbase之间有本质上的区别


45
对名称感到困惑?我也是,所以我首先将顶级答案的命名信息混合到命名历史可视化中,这应该有助于理解所有这些答案。
Jeroen 2015年

@Jeroen这是一个很棒的可视化。是否应将其编辑为最重要的答案?
shoover

@shoover Thx,很高兴它提供了帮助。我无法完全判断它是否足够准确,但是如果rsp(该答案的主要作者)/社区认为值得,那么可以随时将其包含在SO许可下。
Jeroen

Answers:


555

我认为需要指出CouchDB与Couchbase Server之间的一些本质区别。

我不会写从CouchDB切换到Couchbase服务器的优点,因为到处都有描述(请参见Damien Katz 撰写的《 CouchDB的未来》Couchbase与Couchbase的Apache CouchDB 的比较)。相反,我将尝试枚举Couchbase Server中找不到的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 License 2.0版(DFSG兼容,FSF认可,OSI认可,GPL兼容,非copyleft)发行,对商业友好)。

哲学

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

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

CouchDB是一种AP类型的系统(提供AvailabilityPartition tolerance)。

Couchbase ServerCP类型的系统(根据Wikipedia还是CA类型的系统(根据Couchbase技术更新))- 这些正确吗?请评论。

特征

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

  • 没有RESTful API(仅用于视图,不适用于CRUD操作)
  • 没有_change提要
  • 没有对等复制
  • 没有CouchApps
  • 没有蒲团(有其他可用的管理界面)
  • 没有文件编号
  • 没有数据库的概念(只有存储桶)
  • CouchDB数据库和Couchbase服务器之间没有复制
  • 没有明确的附件(您必须将其他文件存储为新的键/值对)
  • 没有适用于所有内容的HTTP API(您需要使用Couchbase Server SDK或Couchbase Develop上的实验客户端库之一,因此无需使用curlwget进行实验)
  • 没有CouchDB API(它改用Memcached API)
  • 您无法通过浏览器完成所有操作(必须编写服务器端应用程序)
  • Web应用程序的两层体系结构是不可能的(您必须编写一个服务器端应用程序,使其位于浏览器和数据库之间,就像关系数据库一样)
  • 没有最终的一致性
  • 并非完全开源 / 免费软件
  • 不是CouchDB的替代品(似乎像是Memcached的替代品)

CouchDB的这些功能可能对您而言并不重要,因此,缺少这些功能是否严格来说是主观的,但是我认为是否从CouchDB切换到Couchbase Server的决定应基于这些差异,并且您对当前CouchDB部署中这些功能的依赖。

例如,如果您在观看了CouchDB更改 Mikeal Rogers 提要的 NodeCamp提要或J. Chris Anderson撰写的一篇很棒的CouchApp教程之后对CouchDB感兴趣,那么您必须意识到,如果要切换到Couchbase服务器,则您将不得不忘记他们所谈论的几乎所有内容。

因此,我想说Couchbase Server看起来像是Memcached和Membase的演进(不是CouchDB的演进),因此,如果您当前正在使用Memchached或Membase,那么它看起来像是一个很棒的产品。如果您以最基本的方式使用CouchDB,则可以考虑将Couchbase Server用于相同的用途,并且它可能会或可能不会更好(如果您不介意许可证限制)。但是,如果您实际上使用的是CouchDB中独有的任何功能(例如更改提要,CouchApps,两层体系结构,对等复制等),那么您可以忘记这些功能或留在CouchDB中。无论如何,在考虑进行切换之前,请确保阅读并理解《为CouchDB用户迁移到Couchbase》教程。

人们常常会产生错误的印象(也许在阅读了诸如“ 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 Server中-但是该产品与Couchbase Single Server(或CouchDB)不兼容。[...] Membase Server将在明年1月发布的下一个版本中重命名为Couchbase Server 1.8 –这只是一个小步骤,可以减轻“名称”的混乱。正如从一开始就计划的那样,Couchbase Server 2.0版本(当前位于Developer Preview 3)将添加索引和查询功能。尽管Couchbase Server 2.0将采用CouchDB项目中的实质性技术,它不会与CouchDB向上兼容,也不应被视为“ CouchDB的版本”。[重点添加]

也可以看看:


69
太棒了 很高兴看到实际解释了这方面的内容(如您所列出的,所有现有比较都有明显的Couchbase偏见)。
Stuart P. Bentley

6
@WalterTross:实际上,不使用CouchDB API,不使用RESTful和不使用HTTP并不是完全一样的。例如,Riak不使用CouchDB API,但仍使用RESTful API。此外,它可能不使用REST,但仍使用HTTP(例如SOAP或其他Web服务)。在这里,我想说明一下,Couchbase服务器不仅不使用CouchDB API,而且其API不是RESTful的,甚至根本不使用HTTP。
rsp

24
我认为这就是答案。谢谢。
13年

10
关于您的“ CP vs CA”问题:简而言之,除非您谈论的是一台机器,否则不可能拥有“ CA”系统。网络中总是存在分区(aphyr.com/posts/288-the-network-is-reliable),因此面对分布式系统,分布式系统将在任何给定时间进行权衡以实现可用或一致分区(但不要同时分区)。因此,归纳的Couchbase是CP。实际上,这是基于他们在vBuckets之后的复制策略,该策略是a)1:n主/从或b)1..n基于链的,而不是以Dynamo(AP)为模型的系统。
格雷格·伯德

9
到目前为止,本文还有一个非常重要的补充:Couchbase SyncGateway。这实质上是将CouchDB复制以API兼容级别带到Couchbase的一部分,以便可以通过SyncGateway用Couchbase复制CouchDB。从Couchbase Lite的角度来看,这是一笔很大的交易,它可以(除了一些特殊情况)从与CouchDB同步无缝转换为与SyncGateway同步
Leonid Usov

39

它们是不同但相似的软件。我将最上面的答案中的内容重新混合到一张图片中,这可能有助于弄清“差异”以及常见问题:

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

Matt Ingenthron的评论增加了这一点:

要添加一些上下文/更正:NorthScale的创建者是史蒂夫·颜和史密斯。我成立后不久就加入了他们。而且,达米安后来没有加入Couchbase,在合并之前他是CouchIO / Couch One的一部分。引用了一个有趣的历史资料:https : //youtube.com/watch?v=aZ_JOnU8tkI


4
这是一个超级有用的信息图形!
扎克·史密斯

3
要添加一些上下文/更正:NorthScale的创建者是史蒂夫·颜和史密斯。我成立后不久就加入了他们。而且,达米安后来没有加入Couchbase,在合并之前他是CouchIO / Couch One的一部分。引用有趣的历史资料:youtube.com/watch?
v=aZ_JOnU8tkI

1
@MattIngenthron Thx更新。如果您发现我可以根据需要调整流程图的时间,我会在回答中略加说明。
耶隆(Jeroen)'18年

1

我认为CouchBase似乎被视为CouchDB的“企业”替代方案。在某种程度上,这似乎是真的。与CouchDB相比,CouchBase除了缺乏将文件附加到记录(文档)和“现成的” REST端点的能力之外,还具有类似sql的语言,即N1QL(有时发音为Nickel)。这就是为什么我不喜欢/不推荐使用“ NoSQL”一词的原因之一。我个人很喜欢“非关系”一词。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.