CouchDB和Couchbase的区别

CouchDB之间有什么本质的区别吗?

80567 次浏览

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

我不会写从CouchDB切换到Couchbase Server的优点,因为这些优点到处都有描述(参见Damien Katz的CouchDB的未来Couchbase vs. Apache CouchDB 他)。相反,我将尝试枚举CouchDB的一些特性是在Couchbase Server中找不到的.

所有与CouchDB和Couchbase相关的名称都很容易混淆,所以我更新了这个答案,首先简要解释最重要的名称。

名字和混淆

CouchDB, CouchIO, CouchOne, Couchbase, Couchbase Server, 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软件基金会的一个开源/免费软件(没有附加条件)项目,在Apache许可证,版本2.0 (dfsg兼容,fsf批准,osi批准,gpl兼容,非copyleft,商业友好)下发布。

哲学

我从来没有看到有人直接指出这一点,但这可能是这两个数据库之间最重要的区别,因为它深刻地体现了分布式计算模型的基本理念,而不仅仅是某些特性、api或许可。CouchDB和Couchbase Server在构建分布式系统和数据库的理念上完全不同。

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

CouchDB是一个美联社类型的系统(提供可用性分区容忍)。

他服务器要么是一个CP类型系统(根据维基百科),要么是一个CA类型系统(根据Couchbase技术更新) - 哪一个是正确的?请发表评论。

特性

下面是我发现的CouchDB服务器不支持的特性列表:

  • no 宁静的 API(仅用于视图,不用于CRUD操作)
  • 没有_changes饲料
  • 没有对等复制
  • 没有couchapp
  • no 蒲团(有一个不同的管理接口可用)
  • 没有文档id
  • 没有数据库的概念(只有存储桶)
  • CouchDB数据库和Couchbase服务器之间没有复制
  • 没有显式附件(必须将附加文件存储为新的键/值对)
  • 没有任何HTTP API(你需要使用Couchbase服务器sdk或他发展的一个实验客户端库,所以没有旋度wget的实验)
  • 没有CouchDB API(它使用Memcached API代替)
  • 您不能在浏览器上完成所有操作(必须编写服务器端应用程序)
  • Web应用程序不可能有两层架构(你必须编写一个服务器端应用程序位于浏览器和数据库之间,就像使用关系数据库一样)
  • 没有最终一致性
  • 不完全是开源/自由软件
  • 不是CouchDB的临时替代品(看起来像是Memcached的临时替代品)

CouchDB的这些特性对你来说可能重要,也可能不重要,所以缺少这些特性是不是一个缺点完全是主观的,但是我认为决定是否从CouchDB切换到Couchbase Server应该基于这些差异,以及你在当前CouchDB部署中对这些特性的依赖程度。

例如,如果你在看了Mikeal Rogers的CouchDB更改提要 NodeCamp演讲或J. Chris Anderson的一个很棒的CouchApp教程后对CouchDB感兴趣,那么你必须意识到,如果你想切换到Couchbase服务器,那么你将不得不忘记他们谈论的几乎所有东西。

正因为如此,我想说Couchbase Server看起来像Memcached和Membase的进化(而不是CouchDB的进化),因此,如果你目前正在使用Memchached或Membase,它看起来是一个很棒的产品。如果您正在以最基本的方式使用CouchDB,那么您可以考虑使用Couchbase Server来完成相同的任务,并且它的性能可能会更好,也可能不会更好(如果您不介意许可证限制的话)。但是,如果您实际上正在使用CouchDB中的任何独特特性(如更改提要、CouchApps、两层架构、点对点复制等),那么您要么忘记这些特性,要么继续使用CouchDB。 在任何情况下,在考虑切换之前,请确保阅读和理解CouchDB用户迁移到Couchbase教程

人们经常会有错误的印象(可能是在阅读了“CouchDB的未来是什么?这是他。”之类的东西之后),认为CouchDB在某种程度上已经被Couchbase Server淘汰了,或者它是一个旧的、遗留的Couchbase版本。与此同时,CouchDB是一个积极维护的开源项目,Couchbase服务器是一个完全独立的项目(它是一个较新的项目,但它不是CouchDB的新版本——它们甚至不兼容),因为即使是用于创建CouchApps的新工具仍在不断开发(例如。查看Kanso项目),那么CouchDB不会很快消失。

我希望它能澄清困惑。如果我写错了什么,请指正。

更新:

Couchbase Server实际上是Membase Server的一个新名称(Membase Server在1.8版本左右被重命名为Couchbase Server)。看到Couchbase 2011年度回顾:

不幸的是,我们把许多潜在用户弄糊涂了。除了Membase服务器和我们的新移动产品,我们还提供了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的版本”。[强调添加]

参见:

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

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

Matt Ingenthron的评论补充道:

补充一些背景信息/更正:NorthScale的创始人是Steve Yen和Dustin Sallings。公司成立后不久我就加入了。此外,达米安后来没有加入Couchbase,他在合并前是CouchIO/Couch One的一部分。引用一个有趣的历史来源:https://youtube.com/watch?v=aZ_JOnU8tkI

我认为CouchBase似乎被认为是CouchDB的“企业”替代品。这在某种程度上似乎是正确的。 除了缺乏将文件附加到记录(文档)和与CouchDB相比的“开箱即用”REST端点的能力之外,CouchBase有类似sql的语言,即N1QL(有时发音为Nickel, UPDATE在CouchBase 7.0中重命名为sql ++)。 这就是我不喜欢/不推荐使用“NoSQL”这个术语的原因之一。我个人喜欢“非关系型”这个词