CouchDB和Couchbase之间的区别

时间:2011-04-07 09:06:50

标签: nosql couchdb couchbase

CouchDBCouchbase之间是否存在重大差异。

4 个答案:

答案 0 :(得分:512)

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

我不会谈到从CouchDB切换到Couchbase服务器的优势,因为几乎所有地方都有这些优点(请参阅Damien Katz撰写的The Future of CouchDBCouchbase vs. Apache CouchDB 通过Couchbase)。相反,我将尝试枚举您在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服务器不完全是open-source / free software。有两个版本:社区版(免费但没有最新的错误修复)和企业版(使用限制,保密规定,Couchbase公司的审核,"将在正常工作时间内在被许可方和#39;设施"和other terms是许多人可能认为不可接受的专有软件的典型特征。

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

哲学

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

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

CouchDB AP 类型系统(提供可用性分区容差)。

Couchbase服务器 CP 类型系统(根据Wikipedia)或 CA 类型系统(根据{ {3}}) - 这些是正确的吗?请评论。

功能

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

  • 没有Couchbase technical update API(仅适用于视图,不适用于CRUD操作)
  • RESTful
  • _changes feed
  • peer-to-peer replication
  • CouchApps(可提供不同的管理界面)
  • Futon
  • 没有数据库的概念(只有桶)
  • CouchDB数据库和Couchbase服务器之间没有复制
  • 没有明确的附件(您必须将其他文件存储为新的键/值对)
  • 没有针对所有内容的HTTP API(您需要在document IDs使用Couchbase Server SDK或其中一个实验客户端库,因此不能使用Couchbase Developcurl进行实验
  • 没有CouchDB API(它使用wget API)
  • 您无法通过浏览器执行所有操作(您必须编写服务器端应用程序)
  • 没有可用于Web应用程序的双层体系结构(您必须编写服务器端应用程序以放置在浏览器和数据库之间,就像关系数据库一样)
  • Memcached
  • 不完全是eventual consistency / open-source
  • 不是替换CouchDB的替代品(看起来像是Memcached的直接替代品)

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

例如,如果您在看过Mikeal Rogers的free software NodeCamp讲话或者J. Chris Anderson的优秀CouchApp教程之后您对CouchDB感兴趣,那么您必须意识到如果您想切换到Couchbase服务器,那么你将不得不忘记他们所谈论的几乎所有内容。

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

人们经常会得到错误的印象(可能是在阅读Migration to Couchbase for CouchDB Users之类的内容之后)CouchDB服务器以某种方式淘汰了CouchDB,或者它是Couchbase的旧版本。同时"What's the future of CouchDB? It's Couchbase."是一个积极维护的开源项目,Couchbase服务器是一个完全独立的项目(它是一个较新的项目,但它不是CouchDB的新版本 - 它们甚至不兼容),因为甚至新的工具创建CouchApps仍然在不断发展(例如,参见CouchDB项目),然后CouchDB不会很快发布。

我希望它澄清了这种混乱。如果我在这里遇到任何错误,请纠正我。

更新

Couchbase Server实际上是Membase Server的新名称(Membase Server在1.8版本左右重命名为Couchbase Server)。见Kanso

  

不幸的是,我们混淆了许多潜在用户。除了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版本(目前在开发人员预览版3中)将添加索引和查询功能。虽然Couchbase Server 2.0将包含来自CouchDB项目的大量技术,但它不会与CouchDB向上兼容,也不应被视为“CouchDB版本”。 [强调添加]

另见:

答案 1 :(得分:60)

我们已经更详细地写了relationship between CouchDB and Couchbase。简而言之,Couchbase Server获取了CouchDB所有耐用的NoSQL优点,并赋予它一个memcache结霜的清晰硬边。

如果您是NoSQL的新手,基本上,您将JSON存储在Couchbase中。它非常快,可以scale up to traffic loads as large you're likely to see.

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

与关系数据库不同,您不必先预先指定要存储的内容,而只需存储它(如果您使用的是memcached,我们是直接升级),我们会帮您排序它出来了。

答案 2 :(得分:28)

它们是不同但相似的软件。我已将the top answer中的内容重新混合到一张可能有助于澄清差异的图片中。以及常见的事情:

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

Matt Ingenthron的评论补充说:

  

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

答案 3 :(得分:1)

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