Cassandra vs MongoDB vs CouchDB vs Redis vs Riak vs HBase vs Memcache Vs Neo4j对比
本人新浪微博:http://weibo.com/guoyunwb
SQL已经风靡了15年,但似乎好日子就要结束.似乎说的有点危言耸听,但这只是时间问题.
NoSQL和SQL之间有个区别是NoSql的产品远比SQL要多很多,这也意味着,这对架构师来说是一个很大的责任,因为他们需要从中选择一个合适的产品.
这里将对比下 Cassandra, Mongodb, CouchDB, Redis, Riak, Membase, Neo4j 以及HBase
1.MongoDB
开发语言:C++
要点:介于SQL和NoSql之间的产品,保留了SQL的一些特性,如查询和索引
许可:AGPL
协议:自定义,二进制(BSON)
优点和缺点:
1)主从复制(自动故障转移)
2)内置Sharding分片功能
3)查询为javascript表达式
4)可以执行任意serer-side的javascript
5)update-in-place支持比CouchDB更好
6)可以通过memory mapped files(内存映射文件)来保存数据
7)性能优于特性
8)Journaling最好打开(通过-journal)
9)在32位的操作系统上,数据文件大小不能超过2.5G
10)一个空的数据库也会占据192M的磁盘空间
11)通过GridFS文件系统去存储大数据和元数据,不是一般的文件系统.
12)支持索引
适用:
如果你想动态查询,索引比map/reduce更合适.面对大数据有更好的性能.如果你想使用CounchDB,但需要实时写数据并刷新到硬盘,那MongoDB更适合
使用场景:
Mysql,PostgreSQL能够用到的场景,同时你的列并不固定的时候可以使用.
2.Riak(V1.0)
开发语言:Erlang+C+一些javascribpt
要点:高容错性
许可:AGPL
协议:HTTP/RESTful或者自定义二进制
优点和缺点:
1)可调节的分布式分发以及复制
2)用JavaScript和Erlang后台自动推送进行验证和安全
3)可以通过JavaScript和Erlang写MapReduce
4)可以用来作为图形数据库
5)同时只能有一个Secondary
6)大数据支持(Luwak)
7)提供开源和收费两个版本
8)可以通过Riak Search Server来提供全文检索和索引,查询服务
9)后台存储从Bitcask迁移到Google的LevelDB
10)支持Masterless多点赋值以及有SNMP授权的监控服务
适用:
如果你想拥有Cassandra的特性,并且还想有bloat以及complexity特性.同时在你只有单台机器有更好的扩展性,容错性,可用性,以及将来可以无缝扩展到多台机器那推荐使用Riak
使用场景介绍:
销售数据集,工厂控制系统,对宕机时长有严格要求,易于更新的webserver
3.CouchDB(V1.1.1)
更多技术文章、感悟、分享、勾搭,请用微信扫描: