NoSQL

目录

[1.1 什么是NoSQL](#1.1 什么是NoSQL)

[1.2 NoSQL的类别](#1.2 NoSQL的类别)

键值(key-value)存储数据库

说明

应用

产品

优势

劣势

列存储数据库

说明

应用

产品

优势

劣势

文档数据库

说明

应用

产品

优势

劣势

图像数据库

说明

应用

产品

优势

劣势

[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)

CAP理论

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 |

它的思想是通过让系统放松对某一时刻数据一致性的要求来换取系统整个伸缩性和性能上改观

相关推荐
Karoku06626 分钟前
【企业级分布式系统】ELK优化
运维·服务器·数据库·elk·elasticsearch
小技与小术2 小时前
数据库表设计范式
数据库·mysql
安迁岚2 小时前
【SQL Server】华中农业大学空间数据库实验报告 实验三 数据操作
运维·服务器·数据库·sql·mysql
安迁岚2 小时前
【SQL Server】华中农业大学空间数据库实验报告 实验九 触发器
数据库·sql·mysql·oracle·实验报告
Loganer2 小时前
MongoDB分片集群搭建
数据库·mongodb
LKID体2 小时前
Python操作neo4j库py2neo使用之创建和查询(二)
数据库·python·neo4j
刘大浪2 小时前
后端数据增删改查基于Springboot+mybatis mysql 时间根据当时时间自动填充,数据库连接查询不一致,mysql数据库连接不好用
数据库·spring boot·mybatis
一只爱撸猫的程序猿2 小时前
简单实现一个系统升级过程中的数据平滑迁移的场景实例
数据库·spring boot·程序员
无敌岩雀2 小时前
MySQL中的索引
数据库·mysql
a_安徒生3 小时前
linux安装TDengine
linux·数据库·tdengine