`
420189155
  • 浏览: 54654 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

NOSQL数据库大比拼:Cassandra vs MongoDB vs CouchDB vs Redis vs Riak vs HBase

 
阅读更多

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事件触发数据变化。

适合: 在可以控制的数据库大小情况下(放得下整个内存),快速改变数据,快速写数据。
案例:股票价格系统 分析,实时数据收集,联系等等。

 

MongoDB

Written in: C++
关键点: 保留类似SQL风格. (Query, index)
License: AGPL (Drivers: Apache)
Protocol: Custom, binary (BSON)
Master/slave replication主从复制(分布式状态集群 方式)
Queries are javascript expressions查询是javascript表达式
Run arbitrary javascript functions server-side
Better update-in-place than CouchDB比CouchDB更好地就地更新
Sharding built-in 内置分片碎片
Uses memory mapped files for data storage 使用内存对应文件方式实现数据存储
Performance over features
After crash, it needs to repair tables 当崩溃后,需要修复表。

适合: 需要动态查询. 愿意事先定义索引indexes, 不需要 map/reduce 功能. 你需要巨大的数据库有良好性能,你需要CouchDB但是你数据变化改变很频繁,需要频繁写。 

案例:适合所有MySQL 或者 PostgreSQL场合,它也适合

Cassandra

Written in: Java
关键点: 大表模型BigTable 和 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
部分复杂性可能由于Java自身原因(如配置configuration, seeing exceptions, etc)

适合: 当写操作多于读操作 (如日子logging).
案例:: 银行Banking, 金融系统,写必须快于都的场合,实时的数据分析等.

 

Riak

Written in: Erlang & C, some Javascript
关键点: 容错性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 Map/reduce支持
Comes in "open source" and "enterprise" editions 有两个版本

适合: 如果你希望有类似Cassandra-like (Dynamo-like)风格, 但是你不想处理器复杂性和膨胀性。单服务器有良好可伸缩性 scalability, 可用性availability 和容错性 fault-tolerance, 采取是昂贵的多站点复制multi-site replication.

案例:销售点数据收集,工厂控制系统,那些不能允许几秒当机的场合。

 

HBase

Written in: Java
关键点: 十亿级别的行 X 百万级别的列 大容量
License: Apache
Protocol: HTTP/REST (also Thrift)
Modeled after BigTable大表模型
Map/reduce with Hadoop 内置Map/reduce 
能够实时获得基于查询的优化
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 REST art for configuration changes and minor upgrades
Random access performance is like MySQL 随机访问的性能类似MySQL

适合: 如果你喜欢大表模型BigTable. :) 你需要随机 实时的读写操作

案例:: Facebook 消息数据库

分享到:
评论

相关推荐

    nosql数据库简介.pptx

    2. 列存储数据库:如HBase、Riak和Cassandra,适合分布式文件系统和海量数据存储,具备优秀的扩展性和查找速度。 3. 图形数据库:如Neo4j,适用于社交网络和推荐系统,利用图结构算法处理复杂关系。 4. 文档型...

    8种Nosql数据库系统对比

    在本文中,我们将对比分析八种常见的NoSQL数据库系统:Cassandra、MongoDB、CouchDB、Redis、Riak、Membase、Neo4j和HBase。每种数据库都有其独特的特性和适用场景。 1. **CouchDB**:基于Erlang开发,它强调数据的...

    大数据技术原理与应用之NoSQL数据库.pptx

    列族数据库将数据存储在列族中,例如HBase和Cassandra。文档数据库将数据存储在文档中,例如MongoDB和CouchDB。图形数据库将数据存储在图形中,例如Neo4j和OrientDB。 5.5 NoSQL的三大基石 NoSQL数据库的三大基石...

    NoSQL数据库学习教程.pdf

    CAP定律是NoSQL数据库存在的三大基石之一,CAP定律是指在分布式系统中,无法同时满足一致性、可用性和分区容忍性这三个属性。其中,一致性是指所有节点在同一时间看到相同的数据;可用性是指每个请求都能收到响应,...

    NoSQL数据库详细介绍入门经典

    - **Facebook之Cassandra**:一个分布式、去中心化的NoSQL数据库系统。 - **特点**:支持高并发、高可用性、数据分布均匀。 - **数据模型**:由keyspace、column family等组成。 - **Google之BigTable**:Google...

    redis数据库

    2. **列存储数据库**:例如Cassandra、HBase、Riak等。这类数据库通常用于分布式文件系统,具有快速查找速度和强大的可扩展性。 3. **文档型数据库**:如CouchDB、MongoDB等。这些数据库适合Web应用,其数据模型由一...

    MongoDB面试专题及答案.pdf

    NoSQL 数据库有多种类型,例如:MongoDB, Cassandra, CouchDB, Hypertable, Redis, Riak, Neo4j, HBASE, Couchbase, MemcacheDB, RevenDB, Voldemort 等。 MongoDB 与 RDBMS 的差别 MongoDB 和 RDBMS 都是免费开源...

    NoSQL精粹.pdf

    - 大数据分析:NoSQL数据库的高扩展性和高性能适合进行大数据分析和存储。 - 高流量网站:对于需要处理高并发访问的网站,NoSQL数据库能够提供更快的读写速度。 - 实时应用:许多NoSQL数据库具有低延迟的特性,适合...

    Redis安装与配置文档

    例如:Cassandra, HBase, Riak。 3. 文档型数据库:文档型数据库的灵感是来自于Lotus Notes办公软件的,而且它同第一种键值存储相类似。该类型的数据模型是版本化的文档,半结构化的文档以特定的格式存储。例如:...

    MongoDB面试专题.pdf

    NoSQL数据库通常更容易水平扩展,适合处理大规模数据和高并发读写场景,但它们一般不支持复杂的事务处理和关联查询。 NoSQL数据库有多种类型,其中包括但不限于: - 文档存储:如MongoDB - 键值存储:如Redis、Riak...

    《10天掌握MongoDB》2012翻新完整版

    代表性产品包括 Cassandra、HBase 和 Riak。 - **文档型数据库:**使用键值对的形式,但其中的值是结构化的文档数据。代表性产品包括 CouchDB 和 MongoDB。 - **图结构数据库:**以图形的方式组织数据,适合处理复杂...

    NoSQL数据库笔谈

    - **CouchDB**、**Riak**、**MongoDB**等:文档存储型NoSQL数据库,支持JSON格式存储。 - **SimpleDB**、**Redis**、**Scalaris**等:键值/元组存储,提供高性能的键值操作。 - **Dynamo**、**BeansDB**、**...

    10天掌握MongoDB 2012翻新完整版

    - 示例产品:Cassandra、HBase、Riak。 - **文档型数据库**: - 特点:以文档形式存储数据,支持嵌套结构。 - 示例产品:CouchDB、MongoDB。 - **图数据库**: - 特点:以节点、边和属性的形式表示数据之间的...

    NoSQL简介.pdf

    这类数据库如Cassandra、HBase和Riak,适合大数据分析和实时数据处理。 3. 文档型数据库:文档型数据库以版本化文档(如JSON)存储半结构化数据,提供比键值数据库更复杂的查询能力。MongoDB和CouchDB是代表,...

    大数据常用数据库汇总.pdf

    3. **文档数据库**:如MongoDB、CouchDB、Perservere、Terrastore、RavenDB等,它们以文档为中心,便于处理半结构化数据。例如: - **MongoDB** 是目前最受欢迎的NoSQL文档数据库,支持JSON格式。 - **CouchDB** ...

    Redis的使用

    - **列存储数据库**:如Cassandra、HBase、Riak。这类数据库适合用于分布式文件系统。 - **文档型数据库**:如CouchDB、MongoDB。这类数据库非常适合Web应用,可以突破传统关系型数据库的结构限制,提供更加灵活的...

    redis笔记.docx

    2. **列存储数据库**:此类数据库将相同类型的列数据存储在一起,例如 Cassandra、HBase 和 Riak 等。它们的优势在于查找速度快,易于进行分布式扩展,适合用于分布式文件系统等场景。 3. **文档型数据库**:此类...

Global site tag (gtag.js) - Google Analytics