HBase、Cassandra、MongoDB、Redis 简介
一、NoSQL 介绍
NoSQL(Not only SQL)数据库,可以理解为区别于关系型数据库如mysql、oracle等的非关系型数据库。
聊到NoSQL不得不提的CAP理论,全称 Consistency Available and Partition tolerance,即一致性(C)、可用性(A)与分区容错性(P),这是 Eric Brewer 教授提出的分布式系统设计理念,并给出了定论:任何分布式系统只能同时满足其中二点,无法做到三者兼顾。这可以说是 NoSQL 数据库的理论基石,至今 NoSQL 领域也称得上是百花齐放了,一直也没有哪一款 NoSQL 同时兼顾着这三点特性。
如上图,NoSQL 必须要在一致性、可用性与分区容错性之间做出取舍,目前而言,几乎所有的 NoSQL 都是在保有分区容错性的基础上选择一致性或可用性,例如 HBase 就是牺牲了部分可用性换取了完全的一致性,与 HBase 类似的 Cassandra 则是牺牲了强一致性换来了可用性的保证。
二、NoSQL 应用场景
NoSQL 作为分布式系统的实现,海量数据性存储、非结构化数据存储、超大规模数据高效读写、超强水平扩展能力等这些特征让 NoSQL 得到了广泛应用。
三、NoSQL 不足之处
事务支持、关联特性,甚至于 SQL 查询,这些却是 NoSQL 的短板,也决定了 NoSQL 尚且取代不了关系型数据库。
四、NoSQL 分类
通常情况下,我们将 NoSQL 按功能特性不同分为4大类,即键值型、面向列族存储、文档型以及图数据库,参考下面表格:
五、常见 NoSQL 介绍
以下四种 NoSQL 是常使用的:
- Redis:基于内存、支持持久化的键值型数据库
- HBase:面向列、高效随机读写的 NoSQL
- Cassandra:面向列、写入优化的 NoSQL
- MongoDB:查询高效、支持多索引的文档型数据库。
1、Redis:
Redis 是一个高性能、Key-Value的 NoSQL 数据库,内存访问,支持持久化磁盘,支持多种数据结构和算法(string,hash,list,set,zset,Bitmaps,HyperLogLog等)。主要应用在缓存场景。
主要特点:
- 高性能
- 纯内存访问(非数据同步无需读取磁盘)
- 单线程
- 非阻塞多路IO复用
2、HBase:
HBase 是一个分布式、面向列的 NoSQL 数据库,是 Google Bigtable 的开源实现,底层存储基于 HDFS,原生支持 MapReduce 计算框架。主要应用在海量数据存储、超大规模随机读写访问的场景。
主要特点:
- 随机读写访问
- 分布式、面向列
- 强一致性
- 底层数据存储在 HDFS 之上
3、Cassandra:
Cassandra 是一个分布式、无中心、弹性可扩展的 NoSQL 数据库,基于 Amazon Dynamo 的分布式设计和 Google Bigtable 的数据模型。Cassandra 为优异的写吞吐做了特别优化,因此通常应用在写大于读的场景。
主要特点:
- 分布式、去中心化
- 弹性可扩展
- 可调一致性(consistency level)
- 高性能
4、MongoDB:
MongoDB 是一个分布式、面向文档的 NoSQL 数据库,用于大容量数据存储,提供统一的数据格式(bson),支持不同类型的索引。适用于存放对象或Json格式数据、追求高性能的业务场景。
主要特点:
- 面向文档,非常灵活
- 支持各种类型的索引
- 复制和故障切换,实现高可用性
- 自动分片,易于扩展
本文介绍了 NoSQL 基本概念,CAP 理论,NoSQL 的分类,重点讲解了大数据存储常用的几种 NoSQL 数据库,包括基本概念、使用场景、主要特点。
相关文章