官方原文:
http://www.mongodb.org/display/DOCS/Comparing+Mongo+DB+and+Couch+DB
本文见于MongoDB官方网站,MongoDB与CouchDB 很相似,他们都是文档型存储,数据存储格式都是JSON型的,都使用Javascript进行操作,都支持Map/Reduce。但是其实二者有着很多本质的区别,本文透过现象追寻本质,让你更好的理解MongoDB 与CouchDB。nosqlfan 翻译如下:
1.MVCC(Multiversion concurrency control)
MongoDB 与 CouchDB 的一大区别就是CouchDB 是一个MVCC的系统,而MongoDB是一个update-in-place 的系统。这二者的区别就是,MongoDB 进行写操作时都是即时完成写操作,写操作成功则数据就写成功了,而CouchDB 一个支持多版本控制的系统,此类系统通常支持多个结点写,而系统会检测到多个系统的写操作之间的冲突并以一定的算法规则予以解决。
2.水平扩展性
在扩展性方面,CouchDB 使用replication 去做,而MongoDB 的replication 仅仅用来增强数据的可靠性,MongoDB 在实现水平扩展性方面使用的是Sharding。(据说CouchDB 也有开发分片功能的计划)
3.数据查询操作
这个区别在用户接口上了,MongoDB 与传统的数据库系统类似,支持动态查询,即使在没有建立索引的行上,也能进行任意的查询。而 CouchDB 不同,CouchDB 不支持动态查询,你必须为你的每一个查询模式建立相应的view,并在此view的基础上进行查询。
4.原子性
这一点上两者比较一致,都支持针对行的原子性修改(concurrent modifications of single documents),但不支持更多的复杂事务操作。
5.数据可靠性
CouchDB 是一个”crash-only” 的系统,你可以在任何时候停掉CouchDB 并能保证数据的一致性。而MongoDB 在不正常的停掉后需要运行 repairDatabase() 命令来修复数据文件,在1.7.5 版本后支持单机可靠的 –dur命令。
6.Map/Reduce
MongoDB 和 CouchDB 都支持Map/Reduce ,不同的是MongoDB 只有在数据统计操作中会用到,而CouchDB 在变通查询时也是使用 Map/Reduce。
7.使用 javascript
MongoDB 和CouchDB 都支持javascript,CouchDb 用javascript来创建view。MongoDB 使用JSON作为普通数据库操作的表达式。当然你也可以在操作中包含javascript语句。MongoDB还支持服务端的javascript脚本(running arbitrary javascript functions server-side),当然,MongoDB 的Map/Reduce 函数也是javascript 格式的。
8.REST
CouchDB 是一个RESTFul 的数据库,其操作完全走HTTP协议,而MongoDB是走的自己的二进制协议。MongoDB Server在启动时可以开放一个HTTP 的接口供状态监控。
9.性能
此处主要列举了MongoDB 自己具有高性能的原因:
- 采用二进制协议,而非CouchDB REST的HTTP 协议
- 使用Momary Map 内存映射的做法
- collection-oriented,面向集合的存储,同一个collection的数据是连续存储的
- update-in-place 直接修改,而非使用MVCC的机制
- 使用C++ 编写
10.适用场景
- 如果你在构建一个 Lotus Notes 型的应用,我们推荐使用CouchDB,主要是由于它的MVCC机制。另外如果我们需要master-master 的架构,需要基于地理位置的数据分布,或者在数据结点可能不在线的情况下,我们推荐使用CouchDB。
- 如果你需要高性能的存储服务,那我们推荐 MongoDB,比如用于存储大型网站的用户个人信息,比如用于构建在其它存储层之上的Cache层。
- 如果你的需求中有大量 update 操作,那么使用MongoDB吧。就像我们在例子updating real time analytics counters 中的一样,对于那种经常变化的数据,比如浏览量,访问数之类的数据存储。
分享到:
相关推荐
HBase、Redis、MongoDB、Couchbase、LevelDB对比
### MySQL与MongoDB性能对比分析 #### 测试背景与目的 随着大数据时代的到来,数据库的选择对系统的性能至关重要。本报告旨在通过一系列实验对比MySQL和MongoDB两种不同类型的数据库(关系型数据库与NoSQL数据库)...
芒果计划No-SQL 数据库(MongoDB、CouchDB 和 RethinkDB)的智能查看器一个 No-Sql 模式推理引擎。 它读取无架构 NoSql 数据库的架构。 它还试图找到两个不同集合之间的关系。 找到类 ScalaUI.scala 并运行。
Mango 是源自 MongoDB 的 Apache CouchDB 查询语言接口,也就是 CouchDB 的 MongoDB API 层。 标签:Cloudant
3.MySQL 与 MongoDB 之间最基本的差别是什么? 4.你怎么比较 MongoDB、CouchDB 及 CouchBase? 5.分析器在 MongoDB 中的作用是什么? 6.什么是 master 或 primary? 7.我应该启动一个集群分片(sharded)还是一个非集群分...
解决方案提供了从NoSQL数据库(MongoDb,CouchDb)检索和分析日志数据的机会。 包括功能: 查询和搜索数据 多维对象渲染; 错误和信息的分析图; 实时数据观察和更新; 去做 资料模型 JSON范例 { "Message" : ...
mocody通过集成DynamoDB的SDK,为开发者提供了与MongoDB和CouchDB一致的访问接口,使得跨数据库的代码复用成为可能。 **TypeScript** 是JavaScript的一个超集,增加了静态类型检查和面向对象编程的特性,提高了代码...
在对比分析中,我们可以看到MySQL的事务支持更加成熟和全面,而MongoDB虽然在4.0版本中增加了多文档事务,但仍然存在一些限制,特别是在分布式和大事务处理方面。选择使用哪种数据库取决于应用的需求,如对事务复杂...
### 千万级Mysql-MongoDB性能对比报告 #### 测试环境配置 - CPU: i5 3.30GHz - 内存: 8GB - 操作系统: Windows 7 #### 测试工具与语言 - **Python**作为测试语言 - **MySQL**版本: 5.1,连接工具为**PyMySQL** -...
名为《深入浅出MongoDB应用实战开发(基础、开发指南、系统管理、集群及系统架构)》,教程侧重于讲解MongoDB的常用特性及高级特性,从实际开发的角度出发对MongoDB进行全方位深入剖析,学员从中可领会到MongoDB设计...
安装Mongo数据库: 在发布本文的时间官方提供的最新版本是:1.6.5 ,如果不做特殊声明,本教程所用的版本将会是这个...记住,以上窗口不要关闭,重新开一个窗口,到D:\MongoDb输入mongo.exe你就可以查询数据库啦
例如,MongoDB 和 CouchDB 的核心支持可以直接使用,无需调用 Spring 容器的 IoC 服务,这类似于 JdbcTemplate 可以独立使用,而不依赖 Spring 容器的其他服务。 Spring Data MongoDB 的文档模块涵盖了概念和语义,...
本文将对MongoDB数据库进行详细的介绍,主要包括MongoDB与SQL的概念对比、数据库概念的介绍、 MongoDB数据库的特点、数据库的命名规则等内容。 一、MongoDB与SQL的概念对比 在学习MongoDB之前,我们需要了解...
教程名称:从浅入深学习 MongoDB视频教程全集 课程目录:【】MongoDB视频教程-00_MongoDB代码【】MongoDB视频教程01_第一讲_上【】MongoDB视频教程02_第一讲_下【】MongoDB视频教程03_第二讲_上【】MongoDB视频教程...
请注意,这些结果仅部分具有可比性,因为将为 CouchDB 和 ArangoDB 发出单独的 HTTP 请求,但对于 MongoDB,将使用具有二进制协议的持久连接。 这是事物的本质。 可以通过在 CLI 模式下运行 run.php 脚本来启动...
与传统的关系型数据库不同,MongoDB通过灵活的数据模型和高效的查询语言,为大规模数据存储和处理提供了强大的支持。 ### 燕十八MongoDB视频教程全集21讲知识点概览 #### 第一部分:MongoDB基础篇 **第1讲:...
MongoDB、CouchDB和CouchBase虽然都是面向文档的数据库,但它们在数据模型实现、接口、对象存储、复制方法等方面存在显著差异。MongoDB以高性能和易扩展性著称,而CouchDB则强调简单的分布式模型和对版本控制的支持...
MongoDB和MySQL是两种广泛应用的数据库系统,但它们在数据模型、操作方式和适用场景上存在显著差异。MySQL是基于ACID(原子性、一致性、隔离性和持久性)原则的关系型数据库,支持标准的SQL查询语言,而MongoDB是非...