【AICon】探索RAG 技术在实际应用中遇到的挑战及应对策略!AICon精华内容已上线73%>>> 了解详情
写点什么

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?

公众号推荐:

2024 年 1 月,InfoQ 研究中心重磅发布《大语言模型综合能力测评报告 2024》,揭示了 10 个大模型在语义理解、文学创作、知识问答等领域的卓越表现。ChatGPT-4、文心一言等领先模型在编程、逻辑推理等方面展现出惊人的进步,预示着大模型将在 2024 年迎来更广泛的应用和创新。关注公众号「AI 前线」,回复「大模型报告」免费获取电子版研究报告。

AI 前线公众号
2012-05-22 12:5326454
用户头像

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

关注

评论

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

详解 Go 程序的启动流程,你知道 g0,m0 是什么吗?

煎鱼

Java php 后端 Go 语言

校友会小程序开发笔记一:背景与技术方案的选型

CC同学

小程序云开发 校友录小程序 校友会小程序

6月26日,HarmonyOS开发者日将于杭州举办

科技汇

阿里云视频云 Retina 多媒体 AI 体验馆开张啦!

阿里云视频云

阿里云 短视频 视频处理 媒体处理 视频制作

校友会小程序开发笔记四:UI基本元素设计

CC同学

小程序云开发

可视化协助矿山,打造“高效率运营战略”,年降成本500W

一只数据鲸鱼

数据可视化 工业4.0 智慧矿山

618 技术特辑(一)不知不觉超预算3倍,你为何买买买停不下来?

华为云开发者联盟

电商 图数据库 知识图谱 618 图引擎服务

校友会小程序开发笔记三:数据库设计

CC同学

小程序云开发 校友录小程序 校友会小程序

pprof排查Golang服务内存问题

循环智能

pprof 性能分析 Go 语言

🌏【架构师指南】分布式技术知识点总结(上)

洛神灬殇

分布式 raft协议 paxos协议 6月日更

并发王者课-铂金1:探本溯源-为何说Lock接口是Java中锁的基础

MetaThoughts

Java 多线程 并发 并发王者

项目经理如何有效管理需求变更?

万事ONES

需求管理 ONES 项目经理

译文 | AI产品经理:如何打造一款SaaS+AI的优质产品

LigaAI

产品经理 研发管理

618 技术特辑(二)几百万人同时下单的秒杀,为什么越来越容易抢到了

华为云开发者联盟

数据库 服务器 流量 618 弹性负载均衡

JavaScript 学习(三)

空城机

JavaScript 大前端 6月日更

开发者如何构建技术影响力

不脱发的程序猿

程序人生 开发者如何构建技术影响力 技术影响力

Python——字典的使用

在即

6月日更

【LeetCode】石子游戏Java题解

Albert

算法 LeetCode 6月日更

针对 MySQL IO 特点进行的存储优化揭秘

焱融科技

MySQL 技术 分布式 高性能 文件存储

快来,这里有23种设计模式的Go语言实现

华为云开发者联盟

线程 设计模式 单例模式 Go 语言

MySQL中的pid与socket是什么?

Simon

MySQL

拍乐云受邀2021亚太CDN峰会,技术创新赋能行业新价值

拍乐云Pano

RTC

校友会小程序开发笔记二:功能需求设计

CC同学

小程序云开发 校友录小程序 校友会小程序

教你两招,解决数据膨胀

华为云开发者联盟

数据 GaussDB(DWS) VACUUM 数据膨胀 FSM

测试工程师如何收拾交接项目的烂摊子

陈磊@Criss

测试

缓存的世界 Redis(二)-持久化

卢卡多多

redis redis持久化 配置文件持久化 6月日更

用EasyRecovery“监控硬盘”功能检测硬盘问题的方法

淋雨

数据恢复 EasyRecovery 文件恢复

PO 就是Scrum中的产品经理?别再搞不清啦

万事ONES

项目管理 Scrum 敏捷开发 PO ONES

JAVA笔记(三)--变量及运算符

加百利

Java 程序员 后端 6月日更

Bzz节点分币系统开发,云算力矿机租赁系统搭建

请阐述vue的diff算法

法医

Vue 大前端 6月日更

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