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 |

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

相关推荐
镜舟科技24 分钟前
NoSQL 与 NewSQL 全面对比:如何选择适合你的数据库方案?
数据库·starrocks·nosql·newsql·技术架构·实时数据分析
TDengine (老段)30 分钟前
TDengine 语言连接器(Node.js)
大数据·c语言·数据库·物联网·node.js·时序数据库·tdengine
Sunlight_7771 小时前
第五章 SQLite数据库:3、SQLite 常用语法及使用案例
jvm·数据库·sqlite
数据库砖家2 小时前
YashanDB|虚拟内存高出实际内存十几G?原因不只是“占用大”这么简单
数据库
郭源潮12 小时前
《MySQL:MySQL表结构的基本操作》
数据库·mysql
火龙谷3 小时前
【hive】Hive对数据库,对表的操作(一)
数据库·hive·hadoop
西门吹雪@1323 小时前
redis 配置日志和数据存储位置
数据库·redis·缓存
一只栖枝3 小时前
OCP证书有效期是永久,但需要更新
数据库·开闭原则·ocp·oracle认证·ocp培训·ocp证书
王会举5 小时前
让SQL飞起来:搭建企业AI应用的SQL性能优化实战
数据库·人工智能·ai·性能优化