话说,尽管 SQL 数据库一直是我们IT行业中最有用的工具,然而,它们这样在行业中超过15年以上的“转正”终于就要寿终正寝了。现在,虽然关系型数据库仍然无所不在,但它越来越不能满足我们的需要了。NoSQL成为了业界的新宠。
但是,各种 "NoSQL" 数据库之间的差异比当年众多关系型数据库之间的差异要大许多。这就加大了人们在建设自己的应用是选择合适的数据库的难度。
在这篇汇总的PK中,我们对 Cassandra, Mongodb, CouchDB, Redis, Riak 和 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算法
- 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++
- Main point: Retains some friendly properties of SQL. 保留类似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
- Main point: 大表模型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
- 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 内置全文本搜索
- 在 Javascript 中Map/reduce 或 Erlang 支持
- Comes in "open source" and "enterprise" editions 有两个版本
适用: 如果你希望有类似Cassandra-like (Dynamo-like)风格, 但是你不想处理器复杂性和膨胀性。单服务器有良好可伸缩性scalability, 可用性availability 和容错性 fault-tolerance, 采取是昂贵的多站点复制multi-site replication.
举例: 销售点数据收集,工厂控制系统,那些不能允许几秒当机的场合。
HBase
(With the help of ghshephard)
- Written in: Java
- Main point: 十亿级别的行 X 百万级别的列 大容量
- License: Apache
- Protocol: HTTP/REST (also Thrift)
- Modeled after BigTable 大表模型
- Map/reduce with Hadoop 内置Map/reduce
- Query predicate push down via server side scan and get filters
- Optimizations for real time queries 能够实时获得基于查询的优化
- A high performance Thrift gateway 高性能的Thrift型网关
- 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 随机访问的性能类似MySQL
适用: 如果你喜欢大表模型BigTable. :) 你需要随机 实时的读写操作
举例: Facebook 消息数据库
当然,所有这些数据库系统都有比列在这里多得多的功能特性。我这里仅仅依据我个人认识列出一些关键特性,并且这些项目的开发也很活跃,我将尽力保持更新。
-- Kristof
来源:http://kkovacs.eu/cassandra-vs-mongodb-vs-couchdb-vs-redis
相关推荐
《NoSQL数据库原理与应用案例教程》PPT课件(共9单元)第4章 HBase原理实现.pdf《NoSQL数据库原理与应用案例教程》PPT课件(共9单元)第4章 HBase原理实现.pdf《NoSQL数据库原理与应用案例教程》PPT课件(共9单元)第4章 ...
本书从NoSQL的相关理论开始,深入浅出地探讨了NoSQL最核心的架构模式、解决方案和一些高级主题,内容循序渐进,从理论回归于实践。 全书分为4个部分。第一部分介绍NoSQL的相关理论,如CAP理论、BASE理论、一致性...
A.4实验四:NoSQL和关系数据库的操作比较 本实验对应第6章的内容。 A.4.1实验目的 (1)理解4种数据库(MySQL、HBase,Redis和 MongoDB)的概念及不同点。(2)熟练使用4种数据库操作常用的 Shell命令。 (3)熟悉4种...
nosqlbooster4mongo-4.5.4 NoSQL Manager for MongoDB Pro
本书由浅入深,全面系统地介绍了NoSQL系统。本书既对NoSQL系统的理论进行了深入浅出的分析,又介绍了每一种NoSQL数据库在业界广泛应用的一个具体系统,理论与实战并重。 本书共分5篇,12章。涵盖的内容有:NoSQL与...
NoSQL数据库 14信管一班2组23殷月园 NoSQL数据库PPT全文共20页,当前为第1页。 内容大纲 定义 产生 共同特征 分类 适用场景 发展现状 7 挑战 NoSQL数据库PPT全文共20页,当前为第2页。 一.什么是NoSQL数据库? NoSQL...
NoSQL(中文版)
日前国内没有一套比较完整的NoSQL数据库资料,有很多先驱整理发表了很多,但不是很系统。不材 尝试着将各家的资料整合一下,并书写了一些自己的见解。 本书写了一些目前的NoSql的一些主要技术,算法和思想。同时列举...
NoSQLBooster 管理MongoDB的工具。这个工具还有个曾用名--mongobooster
This easy to read guide to NoSQL databases provides the type of no-nonsense overview and analysis that you need to learn, including what NoSQL is and which database is right for you. Featuring ...
nosql的发展历史到现在的特殊领域的应用
随着越来越多的与大数据相关的应用程序系统的开发,NoSQL(不仅SQL)数据库系统变得越来越流行。 为了为某些NoSQL数据库系统添加事务功能,许多学者尝试了不同的技术。 不幸的是,在现有文献中缺乏对Redis交易的研究...
主要内容 Nosql概述 什么是NoSQL NoSQL的优势和不足 NoSQL的CAP理论实现 NoSQL数据模型及分类 大数据与NOSql概述全文共23页,当前为第3页。 大数据的定义 大数据(big data),指无法在一定时间范围内用常规软件...
NoSQL是什么? 为什么使用NoSQL? 为什么使用NoSQL? NoSQL的分类 NoSQL有什么特点? NoSQL有什么特点? NoSQL是否完美? NoSQL的一些概念——CAP NoSQL的一些概念——ACID NoSQL的一些概念——BASE NoSQL的一些概念...
《Oracle NoSQL数据库:实时大数据管理》讲述如何全面运用Oracle NoSQL数据库这个经济实惠的解决方案来存储、检索和更新海量的非结构化数据。本书在紧贴实用的示例的引导下,介绍Oracle NoSQL数据库的安装、配置、...
《大数据挑战与NoSQL数据库技术》共分为三部分。理论篇重点介绍大数据时代下数据处理的基本理论及相关处理技术,并引入NoSQL数据库;系统篇主要介绍了各种类型NoSQL数据库的基本知识;应用篇对国内外几家知名公司在...
破解步骤: 1、hosts添加127.0.0.1 nosqlbooster.com、127.0.0.1 www.nosqlbooster.com 2、覆盖resources文件 3、输入License
1.原本程序请从https://nosqlbooster.com/downloads下载; 2.此工具仅针对原始下载程序直接解压试用,非安装在默认路径下的,如安装在默认路径下,则会清理安装信息,请注意; 3.对于4.X及以下版本,可每30天清理...
nosqlbooster4mongo-6.1.3.exe