原文:RethinkDB compared to MongoDBmongodb
许多人会问 RethinkDB 与 MongoDB 以及其余 NoSQL 数据库有什么不一样。咱们首先尝试经过在高层面的技术概览比较 RethinkDB 和 MongoDB 来回答这个问题。可是,概览意味着中立,就必然会忽略一些使 RethinkDB 不同凡响的有趣的事情(就好比咱们对 Dota 的痴迷)。在本文中,我想站在更加私人的角度来描述这个产品。数据库
第一代 NoSQL 产品大体能够分红两类——面向开发者的和面向运维的。编程
面向开发者的产品包括 MongoDB 和 CouchDB。他们一般关注易用性,拥有富文档结构,以及灵活的查询功能。然而,当与他们的同行(面向运维的NoSQL)相比时,将他们部署到分片环境和规模大的负载要更加困难。服务器
面向运维的产品包括 Cassandra 和 Riak 。这些产品是为了高可用部署和大规模而设计的。不像面向开发者的产品,以目前的形式面向运维的产品一般较少有强大的查询功能,也不会太关注易用性。架构
得益于前车可鉴以及三年的技术工做,RethinkDB 旨在融合二者的理念,提供一个一箭双鵰的产品。它被设计成很是易用,拥有丰富的数据模型,而且支持及其灵活的查询功能。经过几下点击就能将 RethinkDB 的节点进行分片。并发
咱们还致力于怎样延伸 NoSQL 系统的可能性。RethinkDB 添加了现代查询语言,大规模并行分布式架构,支持分布式 join 和 subqueries,还提供了一个既简单又漂亮的管理工具,下边是咱们的早期用户以为 RethinkDB 亦可赛艇的一些理由。运维
在全部我见过的新型数据库中, RethinkDB 拥有最好的查询语言 @rauchg异步
ReQL 是一个数据驱动的,抽象的,多态查询语言。它很容易学习而且极其灵活。
为主流编程语言(目前有 Python,Ruby,Java 和 JavaScript)提供了定制的、高度集成的 DSL。
不一样于大多数的 NoSQL 系统,RethinkDB 支持服务端 subqueries 和分布式 join 操做,这消除了复杂的客户端代码和多个数据库服务器的往返。
ReQL 并不基于字符串解析,因此被注入攻击的风险大大下降。
这并非说 ReQL 已经完美了,咱们还在不断给它添加更多的功能和操做。编程语言
WOW,RethinkDB 的管理界面简直难以想象。很容易就能安装到 OSX 上。你们快来看看。@mjackson分布式
几下点击就能完成分片和复制。
全部的集群操做均可以用 ReQL 脚本化。
内置数据资源管理器提供了在线文档和查询建议。
不少产品都很易用,但咱们认为 RethinkDB 是其中最漂亮的。
WOW 跨分片 join,分布是数据不是梦 。@kapso
全部的查询,包括 join、aggregation、subqueries,都会自动编译成分布式程序而且跨级群执行,用户不费吹灰之力。
数据密集型操做自动编译成 map-reduce 做业来充分利用分布式结构。
集群协议是对等的,不须要细条节点。这使得集群很是容易设置和操做。
固然,咱们一直都在提升性能,一直致力于消除更多的性能和可扩展性瓶颈。
RethinkDB 看起来像是作对了的 MongoDB:MVCC,非阻塞写入,默认的稳定性,v8,增量 vacuum,容易分片。@herodiade
一个无锁的架构和多版本并发控制系统容许不一样的工做负载在一个集群中共存。
一个自定义的,B-Tree aware buffer cache 中有效地操做数据集要远远大于可用 RAM 的数量。
一个异步的、事件驱动架构,基于高度优化的协同程序代码尺度跨越多个核和处理器、网卡、和存储系统。
一个并发的自定义日志结构化存储引擎,增量磁盘上垃圾压实机利用不一样类型的存储硬件。
RethinkDB 在不少项目上均可以工做的很好,但并非银弹。选型时请阅读 何时 RethinkDB 不是一个好的选择