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

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

682人阅读 评论(1) 收藏 举报
本文来源于我在InfoQ中文站翻译的文章,原文地址是:http://www.infoq.com/cn/news/2012/05/couchdb-vs-couchbase-membase

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

转载于:https://www.cnblogs.com/xiayong123/archive/2012/10/17/3717042.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/474912.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Sklearn.metrics评估方法

文章目录混淆矩阵分类准确率 accuracy精确率Precision召回率 recallF1值Roc曲线、AUC混淆矩阵 混淆矩阵又称误差矩阵,针对预测值和真实值之间的关系,我们可以将样本分为四个部分,分别是: 真正例(True Positive&#x…

HDU 1492 The number of divisors(约数) about Humble Numbers

The number of divisors(约数) about Humble Numbers Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 1741 Accepted Submission(s): 852 Problem DescriptionA number whose only prime factors are 2,3,5 or …

LeetCode MySQL 1083. 销售分析 II

文章目录1. 题目2. 解题1. 题目 Table: Product ----------------------- | Column Name | Type | ----------------------- | product_id | int | | product_name | varchar | | unit_price | int | ----------------------- product_id 是这张表的主键Tabl…

常见的几种流失预警模型

建立预警模型的目的是提前识别潜在流失用户,为挽留用户赢得时间。 流失预警模型,不应该只是单一的模型,而应该是一系列模型。预警模型的优劣通常用准确率、召回率来衡量。准确率:预测为流失的用户中,有多少真的流失。召…

WP7 网络请求之WebClient

WebClient运行于UI线程,支持编码方式的设定、支持POST/GET方式提交、不支持同步请求、不支持超时设定。WP7会缓存URL链 接,所以两次请求,尽管网络端数据发生了变化,得到的还会是同样的数据,这点要特别注意,…

Jupyter Notebook安装 nbextensions 插件

安装 nbextensions 插件 一、打开Anaconda Prompt窗口,执行第一个命令,用于安装nbextensions: pip install jupyter_contrib_nbextensions 二、再执行第二个命令,用于安装 javascript and css files jupyter contrib nbextens…

LeetCode MySQL 1084. 销售分析III

文章目录1. 题目2. 解题1. 题目 Table: Product ----------------------- | Column Name | Type | ----------------------- | product_id | int | | product_name | varchar | | unit_price | int | ----------------------- product_id 是这个表的主键Tabl…

15.使用using和try/finally来做资源清理

只有是实现了IDispose接口的类型的调用都应使用using 或者try/finally释放对象。转载于:https://www.cnblogs.com/movemoon/archive/2012/10/24/2736571.html

数据分析常用Python库:数值计算、可视化、机器学习等领域

镜像pip安装 阿里云 http://mirrors.aliyun.com/pypi/simple/ 中国科技大学 https://pypi.mirrors.ustc.edu.cn/simple/ 豆瓣(douban) http://pypi.douban.com/simple/ 清华大学 https://pypi.tuna.tsinghua.edu.cn/simple/ 中国科学技术大学 http://pypi.mirrors.ustc.edu.cn…

LeetCode MySQL 1322. 广告效果

文章目录1. 题目2. 解题1. 题目 表: Ads ------------------------ | Column Name | Type | ------------------------ | ad_id | int | | user_id | int | | action | enum | ------------------------ (ad_id, user_id) 是该表的主键…

linux下练习 c++ 容器set、multimset的特性

print.h //print.h#include <iostream>using namespace std;#ifndef print_fun#define print_funtemplate<typename T>///显示序列数据void print(T b,T e,char c ){bool isExitfalse;while (b!e){cout<<*b<<c;isExittrue;}if(isExit) cout<<end…

Python数据预处理数据的方法总结(使用sklearn-preprocessing)

文章目录数据预处理思路数据预处理方法1 标准化&#xff1a;去均值&#xff0c;方差规模化2 规模化稀疏数据3 规模化有异常值的数据4 正则化Normalization5 二值化–特征的二值化6 类别特征编码7 弥补缺失数据7 创建多项式特征数据预处理思路 1.首先要明确有多少特征&#xff…

LeetCode MySQL 1179. 重新格式化部门表

文章目录1. 题目2. 解题1. 题目 部门表 Department&#xff1a; ------------------------ | Column Name | Type | ------------------------ | id | int | | revenue | int | | month | varchar | ------------------------ (id, mo…

消息推送生命周期_一套完整的APP推送体系方案|附思维导图

写这篇文章的初衷是前几天在脉脉上看到一个问题&#xff1a;线上app push故障&#xff0c;该不该给用户发送补救推送信息&#xff1f;联想到自己当初作为实习菜鸟也犯过类似的推送事故&#xff0c;好在补救处理尚可&#xff0c;最终结果不错。这次仔细看了问题下的每一条回答&a…

七、jdk工具之jconsole命令(Java Monitoring and Management Console)

目录 一、jdk工具之jps&#xff08;JVM Process Status Tools&#xff09;命令使用 二、jdk命令之javah命令(C Header and Stub File Generator) 三、jdk工具之jstack(Java Stack Trace) 四、jdk工具之jstat命令(Java Virtual Machine Statistics Monitoring Tool) 四、jdk工具…

kaggle共享单车数据分析及预测(随机森林)

文章目录一、数据收集1.1、项目说明1.2、数据内容及变量说明二、数据处理2.1、导入数据2.2、缺失值处理2.3、Label数据(即count)异常值处理2.4、其他数据异常值处理2.5、时间型数据数据处理三、数据分析3.1 描述性分析3.2、探索性分析3.2.1、整体性分析3.2.2、相关性分析3.2.3、…

LeetCode MySQL 197. 上升的温度

文章目录1. 题目2. 解题1. 题目 给定一个 Weather 表&#xff0c;编写一个 SQL 查询&#xff0c;来查找与之前&#xff08;昨天的&#xff09;日期相比温度更高的所有日期的 Id。 --------------------------------------------- | Id(INT) | RecordDate(DATE) | Temperature…

c 语言输出后不关闭_穿书+娱乐圈 |再不跑路就要被迫C位出道了花瓶女配和影帝组CP后豪门娇美人是爽文剧本...

书单再不跑路就要被迫C位出道了花瓶女配和影帝组CP后豪门娇美人是爽文剧本1再不跑路就要被迫C位出道了作者&#xff1a;墨流霜文案&#xff1a;顾星染一觉醒来发现自己是某小说炮灰&#xff0c;未来会嫁给某女主爱慕者&#xff0c;度过悲惨的下半生。她为了逆天改命&#xff0c…

基于FPGA的图像处理(一)--System Generator介绍

计算机视觉系统通常需要进行大量的信息处理才能够得到所需要的信息。目前主要有CPU、GPU、ASIC、DSP、FPGA等计算平台。 常用的计算机视觉系统通过通用计算机进行视觉信息处理&#xff0c;但是&#xff0c;由于CPU的计算能力有限&#xff0c;对于一些计算复杂度很高的视觉算法&…

营销组合(4P营销)分析案例:采用SPSS+Excel进行分析

文章目录1、研究目的&#xff1a;营销决策2、研究内容&#xff1a;营销组合分析2.1规模预测分析2.1.1 预测思路与方法2.1.2季节分解法预测市场规模2.2 产品属性分析2.2.1 KANO模型基本思想2.2.2 KANO模型的数据分析步骤2.2.2.1 数据准备2.2.2.2 Better—Worse系数矩阵2.3 定价决…