CouchDB 和 Couchbase 有什么区别?

2024-04-03

之间有什么本质区别吗CouchDB http://couchdb.apache.org/ and 沙发底座 http://www.couchbase.com/?


我认为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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

CouchDB 和 Couchbase 有什么区别? 的相关文章

  • Firebase 数据库 - 编码错误

    我是 Firebase 的新手 我想使用他们的数据库 但编码似乎存在一些问题 这是我使用 UTF 8 编码的示例 json Stack This is madness Overflow 666 这就是当我将 json 导入 Firebase
  • OT 和 CRDT 之间的区别

    有人可以简单地向我解释一下操作转换和 CRDT 之间的主要区别吗 据我了解 两者都是允许数据在分布式系统的不同节点上无冲突地收敛的算法 在哪种用例中您会使用哪种算法 据我了解 OT主要用于文本 而CRDT更通用 可以处理更高级的结构 对吧
  • couchdb读取身份验证

    我如何处理 couchdb 中的读取身份验证 我知道角色可以在单独的数据库中定义 但我想在文档级别实现读取身份验证 我正在考虑使用node js 但它似乎不是一个优雅的解决方案 因为couchdb也有一个http服务器 我不想再添加一个 或
  • 内置方法读取couchdb文件大小?

    我正在尝试使用 couchdb 作为消息存储 并想报告消息大小 理想情况下 读取 size 属性会很好 最坏的情况是我可以检查整个文档 JSON 的字符串长度 我什至可能想使用尺寸作为查看键 您认为记录文档大小的最佳方法是什么 为什么您认为
  • 用户如何登录定义了读者角色的 couchapp?

    我通过 Couchapp 部署了我的应用程序 这意味着整个应用程序是从数据库中提供服务的 我不希望 Couchdb 数据库中的数据公开可用 因此我指定了用户在向他提供数据之前必须具有的读者角色 然而 当我去申请时 我所能得到的是 error
  • Ionic/Cordova 应用程序中的身份验证

    首先 我不是专业人士 在我成为一名更好的开发人员的过程中 我试图了解需要什么以及如何完成为 Ionic Framework 应用程序创建注册 登录 大多数单页应用程序 SPA 在节点服务器上处理身份验证 该服务器还为客户端提供 HTML 就
  • Couchdb - 为读者用户提供的蒲团

    我想知道如何阻止读者访问 couchdb 中的 futon utils 只允许管理员访问 我需要这样做 为什么如果读者用户访问蒲团 他可以看到我所有数据库的名称以及有多少文档 我的应用程序应该让读者只有在知道文档 ID 时才能访问文档 引用
  • MongoDB 支持浮点类型吗?

    我正在将 mysql 数据库迁移到 mongodb 但我读过 MongoDb 数据类型 然后没有引用浮点类型 如 float double decimal 我如何在 mysql 模式中拥有一些带有十进制类型的字段 我该怎么做或我能做什么 M
  • MongoDB中批量FindAndModify的解决方案

    我的用例如下 我在 mongoDB 中有一组文档 我必须发送这些文档进行分析 文件格式如下 id ObjectId 517e769164702dacea7c40d8 日期 1359911127494 状态 可用 其他字段 我有一个阅读器进程
  • 如何同步nosql db(ravendb)中的更改

    我已经开始在 RavenDB 的示例上学习 NoSQL 我从一个最简单的模型开始 假设我们有由用户创建的主题 public class Topic public string Id get protected set public stri
  • Firestore从集合中获取文档ID

    我正在尝试使用 id 检索我的文档 但无法弄清楚 目前我像这样检索我的文档 const racesCollection AngularFirestoreCollection
  • jQuery PUT ajax 请求不起作用

    我正在尝试在 couchdb 中保存 Backbone 模型 因此我已经覆盖了save向 couchdb 发出 ajax 请求的方法 ajax type PUT url http 127 0 0 1 5984 movies this get
  • 如何导入 nano (couchdb) - typescript

    我在节点应用程序中导入和使用 nano 时遇到问题 js 方式 来自文档 是 var nano require nano http localhost 5984 我该如何用打字稿做到这一点 I tried import as Nano fr
  • 如何使用对 Azure 表存储的单个查询检索多种类型的实体?

    我试图了解 Azure 表存储如何创建 facebook 风格的提要 但我陷入了如何检索条目的困境 我的问题几乎和https stackoverflow com questions 6843689 retrieve multiple typ
  • redis能完全取代mysql吗?

    简单的问题 我是否可以使用 redis 而不是 mysql 来处理各种 Web 应用程序 社交网络 地理位置服务等 IT 领域没有什么是不可能的 但有些事情可能会变得极其复杂 将键值存储用于全文搜索之类的事情可能会非常痛苦 另外 据我所知
  • 为什么 CouchDB 归约函数接收“键”作为参数

    使用 CouchDB 减少功能 function keys values rereduce 这被称为这样 reduce key1 id1 key2 id2 key3 id3 value1 value2 value3 false 问题1 将键
  • Nodejs 中的 Couchdb

    我刚刚开始在nodejs 中使用couchdb 我正在寻找可以帮助我入门的教程或文章 或者至少是一些代码行 我不想使用任何模块进行数据库抽象 因为这会违背学习的目的 我希望制作自己的与 Couch 一起使用的模块 根据我的理解 这可以通过请
  • 如何决定使用哪种NoSQL技术? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 MongoDB 基于文档 HBase 基于列 和 Neo4j 对象图 的优缺点是什么 我特别有兴趣了解
  • PHP 中的 MongoDB - 如何将项目插入集合中的数组中?

    这必须很容易 但我似乎无法弄清楚 假设我有一个集合users这是集合中的第一项 id ObjectId 4d8653c027d02a6437bc89ca name Oscar Godson email email protected cdn
  • 如何在 Spring-data 中更改/定义 Mongodb 的默认数据库?

    我有从 MongoRepository 扩展的接口 他们使用默认数据库 mongodb 我想定义类的数据库名称 public interface CustomerRepository extends MongoRepository

随机推荐

  • Tar:创建除一个之外的存档排除目录

    我有一些目录和一些文件 dir archive somedir1 dir archive somedir2 dir archive somedir3 dir archive mydir dir archive mydir excludedi
  • 在控制台中检测 Ctrl + S

    I m developing a console application in which I need to detect several hotkeys such as Ctrl N Ctrl O and Ctrl S Here s a
  • 如何在Excel中无法以图形方式显示的外部数据查询中添加参数?

    我经常使用 MS ExcelGet External Data创建简单的报告 对数据库运行查询并在 Excel 中很好地显示 Excel 的强大功能 例如过滤和数据透视表 以及用户熟悉的界面使其非常适合此目的 但是 Microsoft Qu
  • 如何反转 go 中的切片?

    如何反转任意切片 interface 在 Go 中 我宁愿不必写Less and Swap to use sort Reverse 有没有一种简单的内置方法可以做到这一点 Use 切片 反转 https pkg go dev slices
  • 错误:我们没有使用 Azure CLI 的有效访问权限

    我是 Azure CLI 的新用户 所以 我昨天开始使用它 一切正常 直到我在控制台上收到一条消息 要求我使用 Azure 登录命令再次登录 我按照消息所说的做了 打开我的浏览器并输入代码 浏览器加载页面 一切正常 但是 当我进入控制台窗口
  • 如何在 Maven 中创建校验和然后将其输出到文本文件?

    还在学习如何使用Maven 我想知道是否有办法做到checksum在生成的WAR file The Maven目标是package 我想要实现的是得到一个checksum价值 包装的WAR文件 与打包文件一起放入文本文件中 提前致谢 让它与
  • 当我移动轨迹栏时,如何防止 Windows 通用控件 6.0 中的控件(选项卡)闪烁和消失?

    滑动滑动条并释放鼠标按钮时 整个窗口都会闪烁 并且选项卡会消失 当我使用旧版本时 一切正常 当我使用新的 Microsoft Windows Common Controls ver 6 0 时 出现此问题 include
  • Flink 检查点到 Google Cloud Storage

    我正在尝试为 GCS 中的 flink 作业配置检查点 如果我在本地运行测试作业 没有 docker 和任何集群设置 一切正常 但如果我使用 docker compose 或集群设置运行它并在 flink 仪表板中使用作业部署 fat ja
  • Android 中的文本转语音完成后立即播放音频文件

    我正在尝试开发一个 Android 应用程序 一旦文本到语音完成 就必须播放音频文件 这个怎么做 如果我没有理解错的话 您想使用文本转语音来读取一些文本 同时将语音音频存储到手机中 然后再播放音频 你检查过吗录音测试 http develo
  • Mesos 任务 - 无法接受套接字:未来已丢弃

    我只是想将 mesos 版本从 1 0 3 升级到 1 3 1 Chronos 调度程序能够通过 mesos 调度作业 该作业运行良好并且能够查看 mesos 标准输出日志 但是 仍然在 mesos stderr 日志中看到以下内容 doc
  • 使用 MySQL 进行 SVN 身份验证

    我正在尝试通过 MySQL 设置每个存储库 SVN 身份验证 但遇到一些问题 首先 两者有什么区别mod authn dbd and mod auth mysql 其次 我已经有一个 MySQL 数据库设置 其中包含用户 组和权限的表 是否
  • 如何从 Amplify 生成的 Lambda 函数中访问其他 AWS 资源?

    我一直在使用 AWS Amplify 作为 AWS 的新手 我非常喜欢 Amplify 如何在 AWS 上为我配置必要的资源和 IAM 角色 我的问题是关于将 Lambda 与 GraphQL 结合使用 按照文档 我可以创建一个自定义 Gr
  • 可以使用反射覆盖 IEnumerable 中的项目吗?

    不顾任何合理的理由这样做 只是出于好奇是否可以获取任何给定的 IEnumerable T 并覆盖其中包含的项目 例如 给定 IEnuemrable String 是否可以完全替换 IEnumerable 中的所有字符串 正如其他人所说 如果
  • 背景尺寸:包含

    我想要一个带有背景图像的 div 保持图像的纵横比 固定高度为 500px 并且我不希望该 div 的背景上有 填充 这可以吗 我可以获得一个具有固定高度和保持宽高比的背景图像的 div div style background url s
  • 如何使用 Google 字体更改 Bootstrap 默认字体系列?

    我正在创建一个博客网站 我想更改 Bootstrap 字体 在 header 中的 import CSS 中我添加了这个字体 如何使用它作为我的引导程序默认字体 首先 你不能通过这种方式将字体导入到 CSS 中 您可以在 HTML 头中添加
  • Swift 中的元组是否可以完全替代 C# 中的匿名类型

    Like C 中的匿名类型 http msdn microsoft com en us library bb397696 aspx 新推出的语言 Swift 中的元组可以做 C 中的匿名类型可以做的事情吗 在学习 swift 时 我发现了一
  • 如何打开图像并在其上绘图

    我正在创建一个应用程序 人们可以在其中绘制草图并保存到图库中 这我已经完成并且运行良好 我希望能够从画廊中获取一张图像并能够在其上进行绘制 我已经能够打开图库来选择图像 但我无法弄清楚如何将该图像嵌入到画布上然后进行绘制 但问题是 它打开了
  • 存储过程返回 int 而不是结果集

    我有一个包含动态选择的存储过程 像这样的事情 ALTER PROCEDURE dbo usp GetTestRecords p1 int 0 p2 int 0 groupId nvarchar 10 0 AS BEGIN SET NOCOU
  • ES6 类中的 ES6 函数、箭头函数和“this”[重复]

    这个问题在这里已经有答案了 class App extends Component constructor props onChange e gt this setState term e target value onSubmit e e
  • CouchDB 和 Couchbase 有什么区别?

    之间有什么本质区别吗CouchDB http couchdb apache org and 沙发底座 http www couchbase com 我认为CouchDB和Couchbase Server之间有一些本质的区别需要指出 我不会写