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 数据库,包括基本概念、使用场景、主要特点。

关注公众号

相关文章