目录
[1.1 什么是NoSQL](#1.1 什么是NoSQL)
[1.2 NoSQL的类别](#1.2 NoSQL的类别)
[1.3 NoSQL适应场景](#1.3 NoSQL适应场景)
[1.4 在分布式数据库中CAP原理](#1.4 在分布式数据库中CAP原理)
[1.4.1 传统的ACID是什么](#1.4.1 传统的ACID是什么)
[1.4.2 CAP](#1.4.2 CAP)
[1.5 什么是BASE](#1.5 什么是BASE)
1.1 什么是NoSQL
NoSQL(Not Only SQL),即不仅仅是SQL,泛指非关系型的数据库,它可以作为关系型数据库的良好补充。随着互联网web2.0网站的兴起,非关系型的数据库现在成为了一个及其热门的新领域,非关系数据库产品的发展非常迅速
1.2 NoSQL的类别
键值(key-value)存储数据库
说明
这一类数据库主要会用到一个哈希表,这个表中有一个特定的键和一个指针指向特定的数据
Key/Value 模型对于 IT 系统来说,优势在于简单、易部署
应用
内容缓存,主要用于处理大量数据的高访问负载
产品
Tokyo Cabinet/Tyrant、==Redis==、Voldemort、Berkeley DB
优势
快速查询
劣势
存储数据的结构化较低
列存储数据库
说明
这部分数据库通常是用来应对分布式存储的海量数据,键仍然存在,但是它们的特点是指向了多个列,这些列是由列家族来安排的
应用
分布式文件系统
产品
Cassandra、==HBase==、Riak
优势
查找速度快、可扩展性强、更容易进行分布式扩展
劣势
功能较低,具有局限性
文档数据库
说明
该类型的数据模型,是版本化的文档,半结构化的文档以特点的格式存储,如SON,文档型数据库可以看作是键值数据库的升级版,允许之间嵌套键值,而且文档型数据库比键值数据库的查询效率更高
应用
Web应用
产品
CouchDB、==MongoDB==
优势
查询效率高
劣势
数据结构复杂,缺乏统一查询语法
图像数据库
说明
图形结构的数据库同其他行列以及刚性结构的SQL数据库不同,它是使用灵活的图形模型,并且能够扩展到多个服务器上。NoSQL数据库没有标准的查询语句(SQL),因此进行数据库查询需要制定数据模型,许多NoSQL数据库都有REST格式的数据接口或者查询API
应用
社交网络
产品
==Neo4j==、InfoGrid、Infinite Graph
优势
利用图结构相关算法
劣势
需要对整个图做计算才能得出结果,不容易做分布式的集群方案
1.3 NoSQL适应场景
|--------------------------|
| 数据模型比较简单 |
| 需要灵活性更强的IT系统 |
| 对数据库性能要求较高 |
| 不需要高度的数据一致性 |
| 对于给定的key,比较容易映射出复杂的关系和环境 |
| 取最新的数据(排行) |
| 数据缓存 |
1.4 在分布式数据库中CAP原理
1.4.1 传统的ACID是什么
关系型数据库遵循==ACID==规则,事务在英文中是transaction,和现实中的交易很类似,它有着以下
四个特性
|-------------------|-----------------------------------------------------------------------|
| A(Atomicity)原子性 | 指事务里的所有操作,要么都成功要么都失败。事务成功的条件是事务里的所有操作都成功,只要有一个操作失败,整个事务就失败,需要回滚 |
| C(Consistency)一致性 | 指数据库要一直处于一致的状态,事务的运行不会改变数据库原本的一致性约束 |
| I(Isolation)隔离性 | 指并发的事务之间不会相互影响,如果一个事务要访问的数据正在被另外一个事务修改,只要另外一个事务未提交,它所访问的数据就不受未提交事务的影响 |
| D(Durability)持久性 | 是指一旦事务提交后,它所做的修改将会永久的保存在数据库中,即使出现宕机也不会丢失 |
1.4.2 CAP
|---|-------|
| C | 强一致性 |
| A | 可用性 |
| P | 分区容错性 |
CAP理论
指在分布式存储系统中,最多只能实现上述两点
由于当前的网络硬件存在延迟丢包等问题,所以分区容忍性是我们必须要实现的,所以我们只能在一致性和可用性之间进行权衡,没有任何的SQL系统能兼容这三点
|----|------------|
| CA | 传统的SQL数据库 |
| AP | 大多数网站架构的选择 |
| CP | NoSQL数据库 |
注意:
在做分布式架构的时候必须做出取舍
一致性和可用性之间取一个平衡
对于大多数web应用,其实并不需要强一致性,因此牺牲C换取P,这是目前分布式数据库产品的方向
CAP理论的核心
一个分布式系统不可能同时很好的满足一致性,可用性和分区容错性这三个需求,最多只能同时较好的满足两个
因此,根据CAP原理将 NoSQL数据库分成了,满足 CA原则、满足CP原则和满足AP原则三大类
|----|--------------------------------|
| CA | 单点集群,满足一致性,可用性的系统,通常在可扩展性上不太强大 |
| CP | 满足一致性,分区容忍性的系统,通常性能不是特别高 |
| AP | 满足可用性,分区容忍性的系统,通常可能对一致性要求低一些 |
1.5 什么是BASE
BASE是为了解决关系型数据库强一致性引起的问题而导致可用性降低二提出的解决方案
|------|-----------------------------|
| 基本可用 | ==B==asically ==A==vailable |
| 软状态 | ==S==oft state |
| 最终一致 | ==E==ventually consistent |
它的思想是通过让系统放松对某一时刻数据一致性的要求来换取系统整个伸缩性和性能上改观