NOSQL数据库大比拼:Cassandra vs MongoDB vs CouchDB vs Redis vs Riak vs HBase
Cassandra vs MongoDB vs CouchDB vs Redis vs Riak vs HBase comparison :: KKovacs
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 内部嵌入Hadoop之类map/reduce算法
Formatting views: lists & shows
Server-side document validation possible
Authentication possible
Real-time updates via _changes (!)实时更新
Attachment handling
thus, CouchApps (standalone js apps)
jQuery library included
适合: 累计 堆积计算, 偶尔改变数据, 预先定义的查询. 非常注重版本控制的场合.
举例:: CRM, CMS系统. 主-主复制是其特别亮点,可以易于多个站点部署。
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.但是从2.0开始直接交换到磁盘。
Master-slave replication主-从复制
Simple keys and values,简单的key-value形式
but complex operations like ZREVRANGEBYSCORE但是复杂操作类似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 (!)在这些数据库中,只有Redis有事务机制。
Values can be set to expire (as in a cache)如同缓存一样,值能被设置为超过一定时间过期失效。
Sorted sets (high score table, good for range queries)有排序的sets,善于range查询。
Pub/Sub and WATCH on data changes (!)采取Pub/Sub 和观察者WATCH事件触发数据变化。
适合: 在可以控制的数据库大小情况下(放得下整个内存),快速改变数据,快速写数据。
案例:股票价格系统 分析,实时数据收集,联系等等。
[该贴被banq于2011-01-07 11:31修改过]