|
Cassandra |
Mongodb |
CouchDB |
Redis |
开发语言 |
JAVA |
C++ |
Erlang |
C/C++ |
特点 |
分布式与复制的权衡 根据列和键范围进行查询 BigTable类似的功能:列,列族 写比读快很多 |
主从复制 查询利用javascript表达式 比CouchDB更容易就地升级 内置Sharding 数据存储使用的是内存映射文件 数据库崩溃后需要对表进行修复 持久性更好 |
双向复制 主主复制(master-masterreplication) 冲突检测 多版本并发控制,写操作不会阻塞读取 通用的技术文档 只崩溃设计Crash-only 需要经常压缩 视图:嵌入式map/reduce 格式化视图:lists&shows 服务器端文档验证可行 身份验证可行 通过_changes实时更新 附件处理 |
内存数据库 主从复制 简单的Key-Value 操作符较为复杂,如 ZREVRANGEBYS COREINCR&co (有利于速率限制和统计) 有集合 (union/diff/inter) 有列表 (aqueue;blockingpop) 有散列(多字段对象) |
证书 |
Apache |
Apache |
Apache |
BSD |
协议 |
自定义/Thrift |
自定义/BSON |
HTTP/REST |
Telnet-Like |
最佳适用 |
基于JAVA,写操作较多,读少 |
动态的查询,定义索引而非map/reduce。数据变化快,磁盘不够用,可以使用MongoDB |
有大量数据,但更新不大,需要预先定义查询 |
|
应用场景 |
银行,金融行业。数据分析 |
Postgresql 的替代品 |
CRM、CMS系统 |
股价系统,数据分析,实时数据采集以及实时通信场景 |
Riak |
HBase |
Erlang/C/JAVASCRIPT |
JAVA |
分布式与复制的权衡post-commit和pre-commithooks 安全性验证 内置的全文检索 Javascript或 ErlangMap/reduce |
分布式与复制的权衡 模仿BigTable Map/reduceHadoop 优化的实时查询 高性能Thrift网关 HTTP支持XML、Protobuf和二进制 Cascading、hive、 pigsource和sink模块 基于Jruby的shell 无单点故障 |
Apache |
Apache |
HTTP/REST |
HTTP/REST/Thrift |
简单的类似Cassandra 或Dynamo的功能,较强的单点容错性和扩展性 |
随机数据、实时读取海量数据 |
销售点数据采集。工厂控制系统。需要零停机时间的场景 |
喜欢bigTable,需要随即、实时的读写大数据(BigData) |