CouchDB和治疗床底座之间的差异

mbyulnm0  于 2022-12-09  发布在  CouchDB
关注(0)|答案(3)|浏览(182)

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

scyqe7ek

scyqe7ek1#

我认为CouchDB和Couchbase Server之间有一些本质的区别需要指出。
我不会写从CouchDB切换到Couchbase Server的优点,因为这些优点几乎到处都有描述(参见Damien Katz的The Future of CouchDB或Couchbase的Couchbase vs. Apache CouchDB)。相反,我将尝试列举CouchDB的特性,这些特性在Couchbase Server中是找不到的。
所有与CouchDB和Couchbase相关的名称可能会让人感到困惑,所以我更新了这个答案,开始简要解释一下最重要的名称。

名字和困惑

有CouchDB、CouchIO、CouchOne、Couchbase、Couchbase服务器、Couchbase移动、Couchbase Lite、CouchApps、BigCouch、Touchbase、Membase、Memcached、MemcachedDB......所有这些都不同,但仅从名称上看,它们之间的联系并不明显。
首先是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项目进行了积极的维护和增强。
现对有关分歧进行说明:
许可
治疗床服务器不完全是open-source/free software。有两个版本:Community Edition(免费,但没有最新的错误修复)和Enterprise Edition(存在使用限制、保密条款、Couchbase Inc.的审核(“将在正常工作时间在被许可方的设施中进行”)以及许多人可能无法接受的专有软件的典型other terms)。
CouchDB是Apache软件基金会的一个开源/自由软件(没有附加条件)项目,以Apache License, Version 2.0(DFSG兼容,FSF批准,OSI批准,GPL兼容,非copyleft,商业友好)发布。
哲学
我从来没有看到直接指出这一点,但这可能是这两个数据库之间最重要的区别,因为这是分布式计算模型的深层哲学,而不仅仅是某些特性、API或许可。CouchDB和Couchbase Server在构建分布式系统和数据库的哲学上完全不同。
根据CAP theorem,分布式数据库不可能同时提供一致性、可用性和分区容限。

CouchDB是一个AP类型的系统(提供可用性分区容限)。
Couchbase服务器CP型系统(根据Wikipedia)或CA型系统(根据Couchbase technical update)-哪一个是正确的?请评论。

功能
以下是我发现的Couchbase服务器不支持的CouchDB特性列表:

  • RESTful API(仅用于视图,不用于CRUD操作)
  • 无更改提要
  • peer-to-peer replication
  • CouchApps
  • Futon(有不同的管理界面可用)
  • 无文档ID
  • 没有数据库的概念(只有存储桶)
  • CouchDB数据库和Couchbase服务器之间无复制
  • 没有显式附件(必须将其他文件存储为新的键/值对)
  • 没有适用于所有内容的HTTP API(您需要使用Couchbase Server SDK或Couchbase Develop上的一个实验客户端库,因此无需使用curlwget进行实验)
  • 无CouchDB API(它使用Memcached API代替)
  • 您不能从浏览器执行所有操作(您必须编写服务器端应用程序)
  • Web应用程序不可能有两层体系结构(您必须编写一个服务器端应用程序,使其位于浏览器和数据库之间,就像关系数据库一样)
  • eventual consistency
  • 不完全是
  • 不是CouchDB的直接替代(看起来像是Memcached的直接替代)

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

例如,如果您在观看Mikeal Rogers的The CouchDB changes feed NodeCamp演讲或J. Chris安德森的一个很棒的CouchApp教程后对CouchDB感兴趣,那么您必须意识到,如果您想切换到Couchbase Server,那么您将不得不忘记他们谈论的几乎所有内容。
正因为如此我认为Couchbase Server看起来像是Memcached和Memase的演变(不是CouchDB的演变),因此,如果您当前使用的是Memchached或Membase,它看起来是一个很棒的产品。如果您以最基本的方式使用CouchDB,那么您可以考虑使用Couchbase Server来完成同样的任务,它的性能可能会更好,也可能不会更好(如果您不介意许可证限制的话)。但是如果您实际使用的是CouchDB中的任何独特特性,(如更改提要、CouchApps、两层架构、对等复制等),那么您可以忘记这些特性,或者继续使用CouchDB。在考虑切换之前,请确保阅读并理解Migration to Couchbase for CouchDB Users教程。
人们常常会有错误的印象(也许在阅读了"What's the future of CouchDB? It's Couchbase."之类的内容之后)CouchDB不知何故被Couchbase服务器淘汰了,或者它是Couchbase的一个旧的、遗留的版本。Couchbase服务器是完全独立的项目(这是一个较新的项目,但它不是CouchDB的较新版本-它们甚至不兼容),并且由于用于创建CouchApps的新工具仍在开发中(例如,参见Kanso项目),那么CouchDB不会很快去任何地方。
我希望它澄清了混乱。如果我在这里有什么错误请纠正我。

更新:

Couchbase服务器实际上是成员服务器的新名称(成员服务器在版本1.8左右被重命名为Couchbase服务器)。请参见Couchbase 2011 Year in Review
不幸的是,我们把很多潜在用户搞糊涂了。除了MembaseServer和我们的新移动的产品之外,我们还提供了Couchbase Single Server,它是Apache CouchDB的一个打包的“发行版”。除此之外,我们开始发布Couchbase Server 2.0的开发者预览版。它将CouchDB技术整合到了MembaseServer中--但该产品与Couchbase Single Server不兼容(或CouchDB). [...] MembaseServer将在1月份的下一个版本中被重命名为CouchBaseServer1.8--这是一个很小的步骤,只是缓解了“名称”的混乱。正如从一开始就计划的那样,Couchbase服务器2.0版本(目前在开发者预览3)将增加索引和查询功能。0将整合CouchDB项目中的大量技术,它不会向上兼容CouchDB,也不应将其视为“CouchDB版本"。[着重号由作者添加]

另请参阅:

erhoui1w

erhoui1w2#

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

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

rt4zxlrg

rt4zxlrg3#

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

相关问题