设为首页 收藏本站
查看: 516|回复: 0

[经验分享] [转]Cassandra、MongoDB、CouchDB、Redis、Riak、HBase比较

[复制链接]

尚未签到

发表于 2016-12-21 07:35:48 | 显示全部楼层 |阅读模式
  

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


  • Written in:Erlang
  • Main point:DB consistency, ease of use
  • License:Apache
  • Protocol:HTTP/REST
  • Bi-directional (!) replication,
  • continuous or ad-hoc,
  • with conflict detection,
  • thus, master-master replication. (!)
  • MVCC – write operations do not block reads
  • Previous versions of documents are available
  • Crash-only (reliable) design
  • Needs compacting from time to time
  • Views: embedded map/reduce
  • Formatting views: lists & shows
  • Server-side document validation possible
  • Authentication possible
  • Real-time updates via _changes (!)
  • Attachment handling
  • thus,CouchApps(standalonejs apps)
  • jQuery library included
Best used:For accumulating, occasionally changing data, on which pre-defined queries are tobe run. Places where versioning is important.
For example:CRM, CMS systems. Master-master replication is an especially interesting feature,allowing easy multi-site deployments.
Redis


  • Written in:C/C++
  • Main point:Blazing fast
  • License:BSD
  • Protocol:Telnet-like
  • Disk-backed in-memory database,
  • but since 2.0, it can swap to disk.
  • Master-slave replication
  • Simple keys and values,
  • butcomplexoperationslike ZREVRANGEBYSCORE
  • INCR & co (good for rate limiting or statistics)
  • Has sets (also union/diff/inter)
  • Has lists (also a queue; blocking pop)
  • Has hashes (objects of multiple fields)
  • Of all these databases, only Redis does transactions (!)
  • Values can be set to expire (as in a cache)
  • Sorted sets (high score table, good for range queries)
  • Pub/Sub and WATCH on data changes (!)
Best used:For rapidly changing data with a foreseeable database size (should fit mostly in memory).
For example:Stock prices. Analytics. Real-time data collection. Real-time communication.
MongoDB


  • Written in:C++
  • Main point:Retains some friendly properties of SQL. (Query, index)
  • License:AGPL (Drivers: Apache)
  • Protocol:Custom, binary (BSON)
  • Master/slave replication
  • Queries are javascript expressions
  • Run arbitrary javascript functions server-side
  • Better update-in-place than CouchDB
  • Sharding built-in
  • Uses memory mapped files for data storage
  • Performance over features
  • After crash, it needs to repair tables
  • Better durablity coming in V1.8
Best used:If you need dynamic queries. If you prefer to define indexes, not map/reduce functions.If you need good performance on a big DB. If you wanted CouchDB, but your data changes too much, filling up disks.
For example:For all things that you would do with MySQL or PostgreSQL, but having predefinedcolumns really holds you back.
Cassandra


  • Written in:Java
  • Main point:Best of BigTable and Dynamo
  • License:Apache
  • Protocol:Custom, binary (Thrift)
  • Tunable trade-offs for distribution and replication (N,R,W)
  • Querying by column, range of keys
  • BigTable-like features: columns, column families
  • Writes are much faster than reads (!)
  • Map/reduce possible with Apache Hadoop
  • I admit being a bit biased against it, because of the bloat and complexity it has partly because of Java (configuration, seeing exceptions, etc)
Best used:When you write more than you read (logging). If every component of the system mustbe in Java. (“No one gets fired for choosing Apache’s stuff.”)
For example:Banking, financial industry (though not necessarily for financial transactions,but these industries are much bigger than that.) Writes are faster than reads, so one natural niche is real time data analysis.
Riak


  • Written in:Erlang & C, some Javascript
  • Main point:Fault tolerance
  • License:Apache
  • Protocol:HTTP/REST
  • Tunable trade-offs for distribution and replication (N,R,W)
  • Pre- and post-commit hooks,
  • for validation and security.
  • Built-in full-text search
  • Map/reduce in javascript or Erlang
  • Comes in “open source” and “enterprise” editions
Best used:If you want something Cassandra-like (Dynamo-like), but no way you’re gonna deal withthe bloat and complexity. If you need very good single-site scalability, availability and fault-tolerance, but you’re ready to pay for multi-site replication.
For example:Point-of-sales data collection. Factory control systems. Places where even secondsof downtime hurt.
HBase


  • Written in:Java
  • Main point:Billions of rows X millions of columns
  • License:Apache
  • Protocol:HTTP/REST (also Thrift)
  • Modeled after BigTable
  • Map/reduce with Hadoop
  • Query predicate push down via server side scan and get filters
  • Optimizations for real time queries
  • A high performance Thrift gateway
  • HTTP supports XML, Protobuf, and binary
  • Cascading, hive, and pig source and sink modules
  • Jruby-based (JIRB) shell
  • No single point of failure
  • Rolling restart for configuration changes and minor upgrades
  • Random access performance is like MySQL
Best used:If you’re in love with BigTable. DSC0000.gif Andwhen you need random, realtime read/write access to your Big Data.
For example:Facebook Messaging Database (more general example coming soon)
原文链接:Cassandravs MongoDB vs CouchDB vs Redis vs Riak vs HBase comparison

  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-317060-1-1.html 上篇帖子: jedis(redis)事物、管道问题(事物、管道中不能穿插非事物,非管道操作) 下篇帖子: 用redis实现仿新浪微博“查看会话”功能
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表