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

标签: couchdb couchbase membase | 发表时间:2012-05-23 01:53 | 作者:
出处:http://pipes.yahoo.com/pipes/pipe.info?_id=10560380f804c7341f042a2b8a03e117

去年二月, 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?

译者 张龙 热衷于编程,乐于分享,对新技术有强烈的探索欲,对Java轻量级框架有一定研究。

相关 [couchdb couchbase membase] 推荐:

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

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

结合使用 Hadoop 和 Couchbase

- - 博客 - 伯乐在线
来源: IBM Developerworks. 简介: Hadoop 非常适合处理大量数据并将该信息解析为您可查询的较小的信息集. 但是,通过与 Couchbase Server 集成,您可以对信息执行实时查询和报告,同时继续使用 Hadoop 处理大型数据集和数据集的繁重处理工作. Couchbase Server 还使用了一个 MapReduce 查询系统,这使您能够轻松地迁移和集成索引和查询系统,从而有效地提取和操作信息.

Couchbase:更好的Cache系统

- - 博客园_知识库
  在移动互联网时代,我们面对的是更多的客户端,更低的请求延迟,这当然需要对数据做大量的 Cache 以提高读写速度.   现有 Cache 系统的特点.   目前业界使用得最多的 Cache 系统主要是 memcached 和 redis. 这两个 Cache 系统都有都有很大的用户群,可以说是比较成熟的解决方案,也是很多系统当然的选择.

Couchbase Server 2.0 发布,NoSQL 数据库

- - 开源中国社区最新新闻
Couchbase Server 2.0 发布了,主要特性包括:. 增量 Map Reduce. 详细功能描述和下载地址请看:. Couchbase Server (前身是 Membase) 是一个分布式的面向文档的 NoSQL 数据库管理系统,该系统联合了 CouchDB 的简单和可靠以及 Memcached 的高性能以及 Membase 的伸缩性.

[转][转]Cassandra、MongoDB、CouchDB、Redis、Riak、HBase比较

- - heiyeluren的blog(黑夜路人的开源世界)
来源: http://blog.nosqlfan.com/html/1845.html. 在NoSQL如日中天的今天,各种NoSQL产品可谓百花齐放,但每一个产品都有自己的特点,有长处也有不适合的场景. 本文对 Cassandra,  Mongodb,  CouchDB,  Redis,  Riak 以及  HBase 进行了多方面的特点分析,希望看完此文的您能够对这些NoSQL产品的特性有所了解.

[原]Couchbase之环境搭建与Java小试

- - 上善若水 厚德载物
Couchbase Server 是一个集群化的、基于文档的数据库系统,网上有MongoDB与Couchbase的对比,请参考:. Couchbase主页: http://www.couchbase.com/. 本文的目标是搭建简单的Couchbase环境并用Java语言进行读写测试. 1)下载  Couchbase Server ,本文用到的版本是1.8.1 for win32 ,2.0在我的机器上装不上,内核问题.

缓存的进化之路—Couchbase的分布式架构

- - 午夜咖啡
本文从缓存的演进,分析了Couchbase分布式缓存的架构. 单机时代一切都是美好的,缓存只是为了解决磁盘访问速度问题,大多数本地缓存基本上都是个HashMap.存储型应用内部都会内置一个缓存,复杂度一般不在缓存本身,而在于存储型应用提供的访问方式.(比如mysql缓存的复杂在于sql查询转换成缓存的key-value查询).

PouchDB:一个JavaScript与HTML5实现的浏览器端CouchDB

- Vingel - NoSQLFan
CouchDB的一大特点是利用其同步机制在终端与服务端进行数据同步,比如在移动终端Android系统和iOS系统下都有CouchDB的实现,其策略是离线时将数据存在本地,在线后将数据与服务端进行同步. 而今天要说的是利用JavaScript和HTML5的IndexedDatabase实现的一个完全兼容CouchDB同步协议的家伙:PouchDB.

CouchDB 最佳 App 大奖得主 blitz.io 技术架构剖析

- jiaosq - NoSQLFan
Blitz是一家提供压力测试服务的公司,最近它获得了在CouchConf上评选的最佳CouchDB App大奖,本文就是讲述Blitz的CouchDB使用架构. 他们何以能被评为最佳CouchDB App的,其具体技术架构都将在本文中为大家呈现. 从图上我们大概能看到,他们在不同的地区分别部署了两个CouchDB集群,这两个集群分别服务不同区域的数据写入,并保持双向的数据同步.