【问题标题】:Difference between CouchDB and CouchbaseCouchDB 和 Couchbase 的区别
【发布时间】:2011-07-31 12:28:29
【问题描述】:

CouchDBCouchbase 之间有什么本质区别吗?

【问题讨论】:

  • 对名称感到困惑?我也是,所以我首先将this top answer 中的命名信息重新混合为visualization of the naming history,这应该有助于理解这些答案。
  • @Jeroen 这是一个很棒的可视化。是否应该将其编辑为最佳答案?
  • @shoover Thx,很高兴它有帮助。我不能完全判断它是否足够准确,但如果 rsp(该答案的主要作者)/社区认为它值得,那么请随意包含它在 SO 许可下。

标签: nosql couchdb couchbase


【解决方案1】:

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

我不会写从 CouchDB 切换到 Couchbase Server 的优势,因为这些优势几乎随处可见(参见 Damien Katz 的 The Future of CouchDBCouchbase vs. Apache CouchDB 由沙发基地)。相反,我将尝试列举 您在 Couchbase 服务器中找不到的 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 服务器不完全是open-source/free software。有两个版本:社区版(免费但没有最新的错误修复)和企业版(对使用、保密条款、Couchbase Inc. 的审计有限制,“将在被许可方设施的正常工作时间进行”和other terms专有软件的典型特征,许多人可能会觉得不可接受)。

CouchDB 是 Apache 软件基金会的一个开源/免费软件(无附加条件)项目,在 Apache License, Version 2.0(DFSG 兼容、FSF 批准、OSI 批准、GPL 兼容、非Copyleft,商业友好)。

哲学

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

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

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

Couchbase ServerCP 类型系统(根据 Wikipedia)或 CA 类型系统(根据 Couchbase technical update ) - 哪些是正确的?请发表评论。

特点

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

  • 没有RESTful API(仅用于视图,不适用于 CRUD 操作)
  • 没有_changes feed
  • 没有peer-to-peer replication
  • 没有CouchApps
  • 没有Futon(有不同的管理界面可用)
  • 没有document IDs
  • 没有数据库的概念(只有存储桶)
  • CouchDB 数据库和 Couchbase 服务器之间没有复制
  • 没有明确的附件(您必须将其他文件存储为新的键/值对)
  • 没有适用于所有内容的 HTTP API(您需要使用 Couchbase 服务器 SDK 或 Couchbase Develop 的实验性客户端库之一,因此无需使用 curlwget 进行实验)
  • 没有 CouchDB API(它使用 Memcached API 代替)
  • 您无法从浏览器中完成所有操作(您必须编写服务器端应用程序)
  • Web 应用程序不可能有两层架构(您必须编写一个服务器端应用程序以位于浏览器和数据库之间,就像关系数据库一样)
  • 没有eventual consistency
  • 不完全是open-source/free software
  • 不是 CouchDB 的直接替代品(似乎是 Memcached 的替代品)

CouchDB 的这些特性对你来说可能重要也可能不重要,因此缺少它们是否是劣势完全是主观的,但我认为是否从 CouchDB 切换到 Couchbase Server 的决定应该基于这些差异以及您在当前 CouchDB 部署中对这些功能的依赖。

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

因此,我会说 Couchbase Server 看起来像是 Memcached 和 Membase 的演变(而不是 CouchDB 的演变),因此如果您当前使用 Memchached 或 Membase,它看起来像是一个很棒的产品。如果您以最基本的方式使用 CouchDB,那么您可以考虑将 Couchbase 服务器用于相同的事情,它可能会或可能不会更好地执行(如果您不介意许可证限制)。但是,如果您实际上正在使用 CouchDB 中的任何独特功能(例如更改提要、CouchApps、两层架构、点对点复制等),那么您可以忘记这些功能或继续使用 CouchDB。 无论如何,在考虑切换之前,请务必阅读并理解 Migration to Couchbase for CouchDB Users 教程。

人们经常得到错误的印象(可能是在阅读了"What's the future of CouchDB? It's Couchbase." 之类的内容之后),即 CouchDB 不知何故被 Couchbase 服务器淘汰了,或者它是 Couchbase 的旧版本。同时CouchDB 是一个积极维护的开源项目,Couchbase 服务器是一个完全独立的项目(它是一个较新的项目,但它不是 CouchDB 的较新版本 - 它们甚至不兼容),因为甚至用于创建 CouchApps 的新工具仍在继续开发(例如,请参阅Kanso 项目)然后 CouchDB 不会很快出现。

我希望它能澄清困惑。如果我在这里有任何错误,请纠正我。

更新:

Couchbase Server 实际上是 Membase Server 的新名称(Membase Server 在 1.8 版左右重命名为 Couchbase Server)。见Couchbase 2011 Year in 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 版本(目前处于开发者预览版 3)将添加索引和查询功能。虽然 Couchbase Server 2.0 将整合来自 CouchDB 项目的大量技术,但它不会与 CouchDB 向上兼容,也不应被视为“CouchDB 的版本”。 [强调]

另见:

【讨论】:

  • 太棒了。很高兴看到一些东西实际上解释了这方面的事情(所有现有的比较,正如你所列出的,都有明显的 Couchbase 偏差)。
  • @WalterTross:实际上不使用 CouchDB API、不使用 RESTful 和不使用 HTTP 并不完全相同。例如,Riak 不使用 CouchDB API,但它仍然使用 RESTful API。此外,它可能不使用 REST 但仍使用 HTTP(例如 SOAP 或其他 Web 服务)。在这里我想明确一点,Couchbase 服务器不仅不使用 CouchDB API,而且它的 API 不是 RESTful,甚至根本不使用 HTTP。
  • 我认为这就是答案。谢谢。
  • 关于您的“CP vs CA”问题:简而言之,除非您谈论的是单台机器,否则不可能拥有“CA”系统。网络中始终存在分区 (aphyr.com/posts/288-the-network-is-reliable),因此分布式系统在任何给定时间都会在面对分区时权衡可用或一致(但绝不会两者兼而有之)。所以,通过归纳Couchbase是CP。事实上,这源于他们在 vBuckets 背后的复制策略,即 a) 1:n master/slave(s) 或 b) 1..n 基于链,而不是在 Dynamo (AP) 之后建模的系统。
  • 截至今天,本文有一个非常重要的补充:Couchbase SyncGateway。这本质上是在 API 兼容级别上将 CouchDB 复制带到 Couchbase 的部分,这样 CouchDB 可以通过 SyncGateway 与 Couchbase 一起复制。从 Couchbase Lite 的角度来看,这是一笔巨大的交易,它可以(除了一些极端情况)从与 CouchDB 同步无缝切换到与 SyncGateway 同步
【解决方案2】:

它们是不同但相似的软件。我已将the top answer 中的内容重新混合成一张图片,这可能有助于澄清“差异”以及共同点:

来自 Matt Ingenthron 的评论补充了这一点:

添加一些上下文/更正:NorthScale 创始人是 Steve Yen 和 Dustin Sallings。我在成立后不久就加入了他们。此外,Damien 没有后来加入 Couchbase,在合并之前他是 CouchIO/Couch One 的一部分。引用一个有趣的历史来源:https://youtube.com/watch?v=aZ_JOnU8tkI

【讨论】:

  • 这是一个超级有用的信息图表!
  • 添加一些上下文/更正:NorthScale 创始人是 Steve Yen 和 Dustin Sallings。我在成立后不久就加入了他们。此外,Damien 没有后来加入 Couchbase,在合并之前他是 CouchIO/Couch One 的一部分。引用一个有趣的历史来源:youtube.com/watch?v=aZ_JOnU8tkI
  • @MattIngenthron 感谢更新。如果我找到时间我可能会相应地调整流程图,我已经在答案中添加了您的评论。
【解决方案3】:

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

【讨论】:

    猜你喜欢
    • 2013-12-27
    • 2017-03-01
    • 2013-08-27
    • 2023-03-16
    • 1970-01-01
    • 1970-01-01
    • 2014-11-02
    • 2013-09-20
    • 1970-01-01
    相关资源
    最近更新 更多