我认为CouchDB和Couchbase Server之间有一些本质的区别需要指出。
我不会写从 CouchDB 切换到 Couchbase Server 的优点,因为这些优点几乎随处都有描述(请参阅CouchDB 的未来 http://damienkatz.net/2012/01/the_future_of_couchdb.html作者:达米安·卡茨 或Couchbase 与 Apache CouchDB http://www.couchbase.com/couchbase-vs-couchdb由 Couchbase 提供)。相反,我会尝试列举您在 Couchbase Server 中找不到的 CouchDB 功能.
与 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 并不完全是开源 http://en.wikipedia.org/wiki/The_Open_Source_Definition/自由软件 http://en.wikipedia.org/wiki/The_Free_Software_Definition。有两个版本:社区版(免费,但没有最新的错误修复)和企业版(有使用限制、保密条款、Couchbase Inc. 的审核“将在被许可方的设施的正常工作时间内进行”以及其他条款 http://web.archive.org/web/20121227105946/http://www.couchbase.com/docs/licensing/licenses-enterprise.html典型的专有软件,许多人可能会觉得不可接受)。
CouchDB 是 Apache 软件基金会的一个开源/免费软件(无附加条件)项目,并在Apache 许可证,版本 2.0 http://www.apache.org/licenses/LICENSE-2.0(DFSG 兼容、FSF 批准、OSI 批准、GPL 兼容、非 Copyleft、商业友好)。
哲学
我从未见过它被直接指出,但这实际上可能是这两个数据库之间最重要的区别,因为它深刻地涉及分布式计算模型的基本原理,而不仅仅是某些功能、API 或许可。 CouchDB 和 Couchbase Server 在构建分布式系统和数据库的理念上完全不同。
根据CAP定理 http://en.wikipedia.org/wiki/CAP_theorem分布式数据库不可能同时提供一致性、可用性和分区容错性。
CouchDB is an AP类型系统(提供可用性 and 分区容错性).
沙发基地服务器是一个CP类型系统(根据维基百科 http://en.wikipedia.org/wiki/Couchbase_Server) OR a CA类型系统(根据Couchbase 技术更新 http://www.dbms2.com/2011/08/13/couchbase-technical-update/) - 以下哪一个是正确的?请给出意见。
Features
这是我发现 Couchbase 服务器不支持的 CouchDB 功能列表:
- no RESTful http://en.wikipedia.org/wiki/Representational_state_transferAPI(仅适用于视图,不适用于CRUD操作)
- no _更改提要 http://wiki.apache.org/couchdb/HTTP_database_API#Changes
- no 点对点复制 http://sdt.bz/34507
- no 沙发应用程序 http://couchapp.org/
- no Futon http://docs.couchdb.org/en/1.6.1/intro/futon.html(有不同的管理界面可用)
- no 文档 ID http://wiki.apache.org/couchdb/HTTP_Document_API#Special_Fields
- 没有数据库的概念(只有桶)
- CouchDB 数据库和 Couchbase Server 之间没有复制
- 没有显式附件(您必须将其他文件存储为新的键/值对)
- 没有适用于所有内容的 HTTP API(您需要使用 Couchbase Server SDK 或位于以下位置的实验客户端库之一沙发基地开发 http://www.couchbase.com/develop所以没有实验curl http://curl.haxx.se/ and wget http://www.gnu.org/software/wget/)
- 没有 CouchDB API(它使用内存缓存 http://memcached.org/API 代替)
- 您无法通过浏览器完成所有操作(您必须编写服务器端应用程序)
- Web 应用程序不可能有两层架构(您必须编写一个服务器端应用程序位于浏览器和数据库之间,就像关系数据库一样)
- no 最终一致性 http://guide.couchdb.org/draft/consistency.html
- 不是完全开源 http://en.wikipedia.org/wiki/The_Open_Source_Definition/自由软件 http://en.wikipedia.org/wiki/The_Free_Software_Definition
- 不是 CouchDB 的直接替代品(看起来像是 Memcached 的直接替代品)
CouchDB 的这些功能对您来说可能重要也可能不重要,因此缺乏它们是否是一个缺点是严格主观的,但我认为是否从 CouchDB 切换到 Couchbase Server 的决定应该基于这些差异和您对当前 CouchDB 部署中这些功能的依赖。
例如,如果您在观看后对 CouchDB 感兴趣CouchDB 更改提要 http://www.youtube.com/watch?v=sXQ_dHaXqoEMikeal Rogers 的 NodeCamp 演讲或 J. Chris Anderson 的精彩 CouchApp 教程之一,那么您必须意识到,如果您想切换到 Couchbase Server,那么您将不得不忘记他们谈论的几乎所有内容。
因此,我想说 Couchbase Server 看起来像是 Memcached 和 Membase 的演变(而不是 CouchDB 的演变),因此,如果您当前正在使用 Memchached 或 Membase,那么它看起来是一个很棒的产品。如果您以最基本的方式使用 CouchDB,那么您可以考虑使用 Couchbase Server 来完成相同的事情,并且它可能会或可能不会表现得更好(如果您不介意许可证限制)。但是,如果您实际上正在使用 CouchDB 中的任何独特功能(例如更改源、CouchApps、两层架构、点对点复制等),那么您可以忘记这些功能或继续使用 CouchDB。
无论如何,请务必阅读并理解CouchDB 用户迁移到 Couchbase http://web.archive.org/web/20130720062813/https://www.couchbase.com/docs/couchbase-manual-2.0/couchbase-introduction-migration-couchdb.html在考虑切换之前先阅读教程。
人们经常会产生错误的印象(也许在阅读了诸如“CouchDB 的未来是什么?它是 Couchbase。” http://damienkatz.net/2012/01/the_future_of_couchdb.html)CouchDB 已被 Couchbase Server 淘汰,或者它是 Couchbase 的旧版本。同时CouchDB http://couchdb.apache.org/是一个积极维护的开源项目,Couchbase 服务器是一个完全独立的项目(它是一个较新的项目,但它不是 CouchDB 的较新版本 - 它们甚至不兼容),而且即使用于创建 CouchApps 的新工具仍在开发中(例如,参见Kanso http://kan.so/项目),那么 CouchDB 不会很快消失。
我希望它能澄清混乱。如果我在这里有任何错误,请纠正我。
Update:
Couchbase Server 实际上是 Membase Server 的新名称(Membase Server 在 1.8 版本左右被重命名为 Couchbase Server)。看Couchbase 2011 年回顾 http://blog.couchbase.com/couchbase-2011-year-review:
不幸的是,我们让许多潜在用户感到困惑。除了 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 版本”。[已添加强调]
也可以看看:
-
Damien Katz 对“CouchDB 的未来”的评论 http://damienkatz.net/2012/01/the_future_of_couchdb.html#comments (2012 年删除 -可在网络档案中找到 http://web.archive.org/web/20130419103337/http://damienkatz.net/2012/01/the_future_of_couchdb.html#comments)
-
对“为什么是 Couchbase?”的评论通过达米安·卡茨 http://damienkatz.net/2012/01/why_couchbase.html#comments (2012 年删除 -可在网络档案中找到 http://web.archive.org/web/20130429052543/http://damienkatz.net/2012/01/why_couchbase.html#comments)
- Couchbase 2011 年回顾 http://blog.couchbase.com/couchbase-2011-year-review
- Membase 服务器现已更名为 Couchbase 服务器 http://blog.couchbase.com/membase-server-now-couchbase-server
- Couchbase 技术更新 http://www.dbms2.com/2011/08/13/couchbase-technical-update/
- Cloudant 和 CouchOne 之间的区别 https://stackoverflow.com/questions/4069976/difference-between-cloudant-and-couchone