一、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大类,即键值型、面向列族存储、文档型以及图数据库,参考下面表格:
类型 |
特点 |
应用 |
案例 |
键值型 |
简单数据存储形式,通过键来访问值 |
图像存储 |
Redis MemcacheDB Berkeley DB |
可以通过key快速查询到其value |
基于键的文件系统 |
||
一般来说,存储不管value的格式,照单全收 |
设计为可扩展系统 |
||
列族 |
稀疏矩阵存储形式,通过行列作为键 |
网络爬虫结果存储 |
Hbase Cassandra Accumulo |
方便存储结构化和半结构化数据 |
大数据交互式查询 |
||
方便数据压缩提供数据查询IO优势 |
软一致性 |
||
文档型 |
讲层次化的数据结构存储形式 |
文档搜索 |
MongoDB CouchDB Couchbase |
文档存储一般用类似json的格式存储 |
互联网内容管理 |
||
对某些字段建立索引以实现关系型数据库的某些功能 |
高度变化的数据 |
||
图存储 |
适用于关联性要求高的问题 |
社交网络 |
Neo4j FlockDB InfiniteGraph |
图形关系的最佳存储 |
欺诈侦测 |
||
使用传统关系数据库来解决的话性能低下,而且设计使用不方便 |
强关联的数据 |
五、常见 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 数据库,包括基本概念、使用场景、主要特点。
【转】https://mp.weixin.qq.com/s/0LtaqbQl__u4PbiKs5iz5A