欢迎关注微信公众号,大数据,分布式系统,SQL on Hadoop等多领域优质博文第一时间送达,欢迎转载转发。
一、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大类,即键值型、面向列族存储、文档型以及图数据库,参考下面表格:
类型 | 特点 | 应用 | 案例 |
---|---|---|---|
键值型 | 简单数据存储形式,通过键来访问值 | 图像存储 | RedisMemcacheDBBerkeley DB |
可以通过key快速查询到其value | 基于键的文件系统 | ||
一般来说,存储不管value的格式,照单全收 | 设计为可扩展系统 | ||
列族 | 稀疏矩阵存储形式,通过行列作为键 | 网络爬虫结果存储 | HbaseCassandraAccumulo |
方便存储结构化和半结构化数据 | 大数据交互式查询 | ||
方便数据压缩提供数据查询IO优势 | 软一致性 | ||
文档型 | 讲层次化的数据结构存储形式 | 文档搜索 | MongoDBCouchDBCouchbase |
文档存储一般用类似json的格式存储 | 互联网内容管理 | ||
对某些字段建立索引以实现关系型数据库的某些功能 | 高度变化的数据 | ||
图存储 | 适用于关联性要求高的问题 | 社交网络 | Neo4jFlockDBInfiniteGraph |
图形关系的最佳存储 | 欺诈侦测 | ||
使用传统关系数据库来解决的话性能低下,而且设计使用不方便 | 强关联的数据 |
五、常见 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 数据库,包括基本概念、使用场景、主要特点。