QCon 演讲火热征集中,快来分享技术实践与洞见! 了解详情
写点什么

CouchDB 与 Couchbase:区别何在,Membase 又将如何?

  • 2012-05-22
  • 本文字数:2923 字

    阅读完需:约 10 分钟

去年二月, CouchOne 与 Membase 合并了,合并之后的公司叫做 Couchbase。Membase 公司有一个名为 Membase 的产品,它是个键 / 值、持久化、可伸缩的解决方案,使用了 memcached wire 协议。CouchOne 支持 CouchDB 。CouchDB 是个文档数据库,提供了端到端的复制方法,这对于移动与分布在不同位置的数据中心来说是很有用的。Couchbase 基于 Membase 与 CouchDB 开发了一款新产品,新产品的名字叫做 Couchbase。

近日,Couchbase 发表了一篇文章,比较了Couchbase 与CouchDB ,指出了这两者之间的差别与相似点。这篇文章重点回答了这样一个问题:“CouchDB 与Couchbase 有哪些差别”?

实际情况是Couchbase 与CouchDB 是紧密相关的。Couchbase 产品包含了CouchDB 的一个副本。Couchbase 产品向CouchDB 添加了缓存、集群等功能。InfoQ 有幸采访到了Couchbase 创始人之一的 James Phillips 以详细了解 Membase 与 CouchDB 这两个产品之间的差别与融合。

InfoQ:Membase 是个非常强劲的品牌,你们为何会将产品名变更为 Couchbase 呢?

去年初,Membase 公司与 CouchOne 公司合并了。合并之后的公司名取自每个公司名的一部分,即 Couchbase。从根本上来说,名字的变化更好地反映了我们所提供的技术——Couchbase 是个面向文档的数据库(其所用的技术来自于 Apache CouchDB 项目),能够实现水平伸缩,并且对于数据的读写来说都能提供低延迟的访问(这要归功于 Membase 技术)。

InfoQ:在选择 CouchDB 作为持久化与查询引擎前,Membase 使用的是什么?

SQLite 是 Membase 使用的嵌入式存储引擎,在 Couchbase Server 中已经被 Apache CouchDB 技术替代了。

InfoQ:对于 Membase 的使用来说,memcached wire 协议的重要性如何?

对于 Membase 和现在的 Couchbase Server(支持同样的 wire 协议)使用来说,Memcached 兼容性是非常重要的。每种语言与应用开发框架都原生支持 memcached,大多数开发者都曾使用过 memcached,因此很容易就可以上手 Membase 并开始使用。

InfoQ:Membase 看起来是个很不错的解决方案,当然了,它也拥有一些大名鼎鼎的客户与使用案例,如 Zynga 等。通过将 Membase 客户所希望的 CouchDB 作为持久 / 查询层,你们能得到什么呢?

通常,Couchbase 用作交互式软件系统的记录系统——取代了之前由 MySQL 或 Oracle 等关系数据库技术所扮演的角色。Membase 所支持的键——值操作当然可以构建可用的系统,但简单的键——值存储对于一些相当简单的问题却是无能为力的,比如“哪些用户的农场中有绵羊”?为了基于纯粹的键——值存储来回答这个问题,应用必须得读取整个数据库,一个键一个键地读,然后“查看”键——值对的值部分以确定里面是否有绵羊。通过嵌入 CouchDB,数据库现在可以在应用中完成这个任务,无需扫描整个数据库(因为 CouchDB 可以维护能够加速这种查询的索引)。

InfoQ:在 NoSQL、分布式数据领域中谁是你最大的竞争对手?

MongoDB。

InfoQ:CouchBase 与 MongoDB 都是面向文档的且取得了相当大的成功。相比于 Cassandra(BigTable/Dynamo hybrid)之类的面向列的数据库来说,面向文档的数据库有哪些优势呢?

对于面向文档的数据库来说,应用可以在无需考虑结构的情况下插入记录(即“文档”),只要他们遵循某些标准的格式化规则(如 XML、JSON)即可。接下来,无论是否定义了某些列,你都可以执行查询,但面向列的数据库则要求维护一个列簇、或是父列、或是其他类型的结构。面向文档的模型为事务性的数据管理提供了一个更加灵活、通用性的方式,同时又不会限制执行的查询种类。

InfoQ:Couchdb/Couchbase 比较的文章中提到了 couchbase 向 CouchDB 增加了自动分片的功能。除了核心 CouchDB 所提供的功能外,Couchbase 是否增加了对复制、高可用性之类的支持呢?

Couchbase Server 实际上提供了两种“复制”技术:对于内部数据中心部署(集群)来说,它使用了 Membase 风格的复制(在网络分区的情况下提供了快速的一致性),因为它提供了最自然的部署模型,从统计学上来说,网络分区中出现脑裂(split-brain)的可能性要比数据中心出现碰撞的可能性低。对于交互数据中心部署(集群从地理位置来说是分布式的)来说,网络分区中出现脑裂的可能性是相当高的,因为应用服务器与数据库服务器位于相对脆弱的 WAN 连接的两端。在跨数据中心的部署中使用了 CouchDB 风格的复制,因为它支持碰撞检测和决议,而在这种场景中此情况是很可能会出现的。

InfoQ:Couchbase 使用 Membase 替换掉了 Memcached,因此使用 Memcached 的应用可以很轻松地使用 Couchbase,但不带自动分片功能的客户端驱动该如何使用 Couchbase 的自动分片特性呢?

Couchbase Server 中内建一个代理层(叫做 moxi),或是将该代理层部署到应用服务器上,它会填平“现有”memcached 客户端所用的一致性哈希算法与 Couchbase Server 所用的两级间接(通过哈希找到虚拟服务器,然后将虚拟服务器映射为真实服务器)之间的沟壑。

InfoQ:Couchbase 是如何解决应用需要可靠的持久化这一问题的?有日志选项么?是否有数据需要复制到多个结点的选项?你们是如何平衡写速度与可靠的持久化的?你们是否至少需要两台服务器来保证持久性呢?

你可以配置 Couchbase(基于每个操作),使之立刻(异步写)、完成了数据的复制或是数据写到了持久化媒体后才对写操作进行响应。用户可以权衡他们自己的持久化与性能问题。

关于 Membase、Couchbase 与 Northscale 的背景信息

Membase 产品于 2010 年 10 月发布,是由 Zynga 、NorthScale 与 NHN 联合开发的。NorthScale 后来变成了 Membase Inc ,接下来在去年与 CouchOne Inc 合并后又变成了 Couchbase Inc。Membase 被 Zynga 用来开发其流行的社交游戏,如 Farmville、Mafia Wars 与 Cafe World。Membase 针对 Web 应用数据的存储(如 Farmville 的数据)进行了优化。这些在线社交游戏存储了大量的数据。根据 ReadWrite Cloud 的 Audrey Watters 所述,“数据量令人难以置信。这是一种新的数据类型,需要开发一种新的数据库管理系统(Membase)”。 Zynga 已经在使用 Memcached ,因此向 Membase 的转换是个自然而然的过程。InfoQ 曾采访过来自Couchbase 的工程师Dustin Sallings,他介绍了为支持Membase 之类的产品对Memcached wire 协议所做的改变。

在InfoQ 此前发布的一篇新闻中,CouchDB 的创建者及Couchbase 的联合创始人 Damien Katz 表示他将专注于 Couchbase,因为这是一个很好的机会,可以重新实现CouchDB,抛弃无法满足需求的、强化可用的功能,并将Membase 的可伸缩性、速度、集群与缓存特性添加到合并后的Couchbase 产品中。Damien 对根据意见来决定的Apache 项目的速度与进展表示遗憾,人们对于成功的商业产品需求的增长速度是飞快的。他对于合并之后的产品的职责是创造出一款能够充分发挥两者优势的产品。在随后的一篇博文中,Damien 说Membase 产品的速度很快且具有可伸缩性,但却没有报表与跨数据中心的复制功能。CouchDB 产品具有更多的特性,如高级的复制与报表功能,但速度上却不尽如人意,也无法应付高负载。这两个产品的融合是成功的,Couchbase 终将破茧而出。

查看英文原文: CouchDB versus Couchbase: What are the differences, and what happened to Membase?

2012-05-22 12:5326583
用户头像

发布了 88 篇内容, 共 263.8 次阅读, 收获喜欢 8 次。

关注

评论

发布
暂无评论
发现更多内容

Python 用户输入和字符串格式化指南

小万哥

Python 程序员 软件 后端 开发

Util 应用框架开发环境搭建(四)- 安装 数据库

何镇汐

后端 软件开发 .net core 开源框架

Util 应用框架开发环境搭建(六)- 安装 NodeJs

何镇汐

后端 软件开发 .net core 开源框架

Util 应用框架开发环境搭建(七)- 安装 Util代码生成器

何镇汐

后端 软件开发 .net core 开源框架

VMware Fusion Pro 13 for Mac(VM虚拟机)中文激活版

iMac小白

VM虚拟机 VMware Fusion Pro 13 VMware Fusion Pro

云上办赛好帮手,华为云WeLink助力2023年甘肃省大学生GIS应用技能大赛成功举办

轶天下事

开启数字校园新篇章 福建农林大学智慧校园 “数字FAFU”APP发布会成功举行

轶天下事

文心一言 VS 讯飞星火 VS chatgpt (128)-- 算法导论11.1 3题

福大大架构师每日一题

福大大架构师每日一题

AutoCAD 2024 for Mac完美破解版 支持M(cad设计绘图工具)

iMac小白

AutoCAD 2024 Mac版 AutoCAD 2024下载 AutoCAD 2024破解

Nevercenter CameraBag Pro 2023.4.0破解版(mac照片滤镜工具)

iMac小白

CameraBag Pro下载 CameraBag Pro破解版

开发工具:Xcode for Mac正式版下载

iMac小白

Xcode14 Xcode for Mac Xcode Mac版

免费算力优化猫狗识别

打工人!

深度学习

AI驱动管理升级,WeLink携手华为云差旅共探数智转型新路径

轶天下事

数据库管理工具Navicat Premium 16 mac完美激活版

iMac小白

Navicat Premium下载 Navicat Premium破解版 Navicat Premium 16

Tableau Desktop 2019 for Mac(全能数据分析工具) v2019.1.0完美激活版

mac

数据分析工具 Tableau Desktop 2019 苹果mac Windows软件

pycharm pro 2023 for mac(Python编辑开发)中文激活版

iMac小白

pycharm破解 PyCharm中文版 PyCharm下载 PyCharm Pro密钥

亚马逊云 Lightsail尝鲜

孤虹

亚马逊云

喜讯!极限科技成功签约中国一汽搜索数据库三年许可订阅合同!

极限实验室

easysearch 极限科技 中国一汽

【腾讯云 HAI域探秘】StableDiffusionWebUI一小时搞定100张设计图

不叫猫先生

腾讯云 Stable Diffustion

Util应用框架开发环境搭建(一)- 安装 Visual Studio

何镇汐

软件开发 .net core 开源框架 #前端

Util 应用框架开发环境搭建(二)- 安装 Resharper

何镇汐

后端 软件开发 .net core 开源框架

Util 应用框架开发环境搭建(三)- 安装 Docker Desktop

何镇汐

开源 后端 软件开发 .net core

Util 应用框架开发环境搭建(五)- 安装 Git客户端

何镇汐

后端 软件开发 .net core 开源框架

Acrobat Pro DC for Mac(最强PDF编辑器) 22.002.20191中文激活版

mac

苹果mac Windows软件 Acrobat Pro DC 2022 pdf制作软件

加速智慧校园建设,福建农林大学联合华为云WeLink打造“数字FAFU”APP

轶天下事

Linux Vim撤销和恢复撤销快捷键

芯动大师

CouchDB与Couchbase:区别何在,Membase又将如何?_DevOps & 平台工程_Rick Hightower_InfoQ精选文章