CouchDB和Couchbase之间的区别
CouchDB和Couchbase之间有什么本质区别,使得一个或另一个更适合使用?
我们更详细地写了CouchDB和Couchbase之间的关系 。 简而言之, Couchbase服务器充分利用了CouchDB的耐嚼NoSQL优势,并为其提供了memcache结霜的清晰硬边缘。
如果您是NoSQL的新手,基本上,您将您的JSON存储在Couchbase中。 速度非常快,可以扩大到您可能会看到的很大的交通负荷。
就像一个关系数据库一样,它会在需要时将您所存储的内容还给您。 耶数据库!
与关系型数据库不同的是,您不必事先指定要存储的内容,而只需将其存储(如果使用的是memcached,则可以直接升级),稍后我们将帮助您将其解决。
我认为CouchDB和Couchbase Server之间有一些本质区别需要指出。
我不会写关于从CouchDB切换到Couchbase服务器的好处,因为这些描述几乎在任何地方都有描述(请参阅由Damien Katz或Couchbase提供 的CouchDB的未来与由Couchbase提供的Apache CouchDB 的未来 )。 相反,我将尝试枚举在Couchbase服务器中找不到的CouchDBfunction 。
所有与CouchDB和Couchbase有关的名字都可能会让人感到困惑,所以我已经更新了这个答案,首先对最重要的一个进行了简单的解释。
名称和困惑
有CouchDB,CouchIO,CouchOne,Couchbase,Couchbase服务器,Couchbase移动,Couchbase Lite,CouchApps,BigCouch,Touchbase,Membase,Memcached,MemcacheDB …都是不同的,但相关的方式并不明显。
首先,CouchDB是由前IBM开发人员Damien Katz创build的数据库。 它的官方名称在成为Apache项目后更改为Apache CouchDB。
一家名为CouchIO的公司成立于Apache CouchDB之后,后来改名为CouchOne(“名字”,我的意思是公司名称 – 不是数据库名称)。
CouchOne(之前的CouchIO)与Membase(之前的NorthScale)合并组build一家名为Couchbase的新公司。 Membase(公司)开发了Membase(同名产品)。 Membase由Memcached项目的几位领导创build,并使用Memcached协议。 CouchOne和Membase合并后,Couchbase继续开发Membase软件,后来更名为Couchbase Server。
今天我想大多数人都认为Couchbase Server是CouchDB的一个新版本,但实际上它是一个新版本的Membase。 它仍然使用Memcached协议,而不是CouchDB的RESTful API。 同时,CouchDB仍然是CouchDB,作为Apache项目得到了积极的维护和增强。
现在到有关的区别:
许可
Couchbase服务器并不完全是开源 / 免费软件 。 有两个版本:Community Edition(免费但没有最新的错误修复)和Enterprise Edition(使用限制,保密规定,Couchbase Inc.对“将在被许可人设施的正常工作时间进行的审计”以及其他典型到许多人可能认为不可接受的专有软件)。
CouchDB是Apache软件基金会的开源/免费软件(无附加条款)项目,并且在Apache许可证2.0版 (DFSG兼容,FSF认可,OSI认可,GPL兼容,非copyleft ,商业友好)。
哲学
我从来没有看到它直接指出,但这可能实际上是这两个数据库之间最重要的区别,因为它深深地关注分布式计算模型的底层理念,而不仅仅是关于某些特性,API或许可。 CouchDB和Couchbase服务器在构build分布式系统和数据库的理念上完全不同。
根据CAP定理 ,分布式数据库不可能同时提供一致性,可用性和分区容差。
CouchDB是一个APtypes系统(提供可用性和分区容限 )。
Couchbase服务器是CPtypes系统(根据维基百科 )或CAtypes系统(根据Couchbase技术更新 ) – 哪些是正确的? 请给出意见。
特征
这是我发现的Couchbase服务器不支持的CouchDBfunction列表:
- 没有RESTful API(仅适用于视图,不适用于CRUD操作)
- 没有_changes饲料
- 没有对等复制
- 没有CouchApps
- 没有蒲团 (有一个不同的pipe理界面可用)
- 没有文件ID
- 没有数据库的概念(只有桶)
- CouchDB数据库和Couchbase服务器之间没有复制
- 没有明确的附件(你必须存储额外的文件作为新的键/值对)
- 没有任何HTTP API(您需要使用Couchbase服务器SDK或Couchbase上的其中一个实验客户端库进行开发,因此无法使用curl和wget进行实验)
- 没有CouchDB API(它使用Memcached API)
- 你不能做任何事情从浏览器(你必须编写一个服务器端应用程序)
- 没有Web应用程序的两层体系结构是可能的(您必须编写一个服务器端应用程序来位于浏览器和数据库之间,就像关系数据库一样)
- 没有最终的一致性
- 不完全开源 / 免费软件
- 不是CouchDB的替代品(看起来像是替代Memcached)
CouchDB的这些特性对你来说可能并不重要,所以缺less它们是否是一个缺点是非常主观的,但我认为是否从CouchDB切换到Couchbase服务器的决定应该基于这些差异和您在当前CouchDB部署中对这些function的依赖。
例如,如果您在观看CouchDB更改Feed NodeCamp对话(由Mikeal Rogers或J. Chris Anderson编写的一个很棒的CouchApp教程)之后对CouchDB有兴趣,那么您必须认识到,如果您想切换到Couchbase服务器,那么您将不得不忘记他们正在谈论的几乎所有事情。
因此,我会说Couchbase服务器看起来像Memcached和Membase(不是CouchDB的演变)的演变,因此,如果您正在使用Memchached或Membase,它看起来像一个伟大的产品。 如果你以最基本的方式使用CouchDB,那么你可以考虑使用Couchbase服务器来做同样的事情,它可能会或可能不会更好地执行(如果你不介意许可限制)。 但是,如果您实际上使用了CouchDB中唯一的function(如更改提要,CouchApps,双层体系结构,对等复制等),那么您可以忘记这些function或保留在CouchDB中。 无论如何,在考虑切换之前,请务必阅读并理解CouchDB用户的Couchbase迁移教程。
人们往往会得到错误的印象(可能是在阅读了“CouchDB的未来是什么?它是Couchbase”之类的东西 ),CouchDB被Couchbase服务器过时了,或者是Couchbase的旧版本。 同时CouchDB是一个积极维护的开源项目,Couchbase服务器是一个完全独立的项目(这是一个较新的项目,但它不是一个新版本的CouchDB – 它们甚至不兼容),因为甚至用于创buildCouchApps的新工具仍然保持正在开发(例如看到Kanso项目),那么CouchDB不会马上就要去。
我希望澄清这个混乱。 如果我在这里有任何错误,请纠正我。
更新:
Couchbase服务器实际上是Membase服务器的一个新名称(Membase服务器在1.8版本的某个地方被重命名为Couchbase服务器)。 查看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中)将增加索引和查询function。 虽然Couchbase Server 2.0将包含来自CouchDB项目的大量技术, 但它不会与CouchDB向上兼容,因此不应将其视为“CouchDB版本”。 [着重点]
也可以看看:
- 对Damien Katz的“CouchDB的未来”的评论 (2012年删除 – 可在Web Archive中find )
- 评论“为什么Couchbase?” 由Damien Katz撰写 (2012年删除 – 可在Web Archive中find )
- Couchbase 2011年回顾
- Membase服务器现在是Couchbase服务器
- Couchbase技术更新
- Cloudant和CouchOne之间的区别
他们是不同的但类似的软件。 我已经把最上面的答案中的内容重新混合成了一幅可能有助于澄清“差异”以及常见事物的图片: