开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第12天
一、本篇笔记重点内容:
- NoSQL简介
- CAP
- ACID
- NoSQL的四大类型
二、 详细知识点介绍
NOSQL简介
1.1 NoSQL简介
NoSQL是一种不同于关系数据库的数据库管理系统设计方式,是对非关系型数据库的统称。NoSQL所采用的数据模型并非传统关系数据库的关系模型,而是类似键值、列族、文档等非关系模型。NoSQL数据库没有固定的表结构,通常也不存在连接操作,也没有严格遵守ACID约束。因此,与关系数据库相比,NoSQL具有灵活的水平可扩展性,可以支持少量数据存储。引外,NoSQL数据库魂MapReduce风格的编程,可以较好地应用于大数据时代的各种数据管理。NoSQL数据库的出现,一方面弥补了关系数据库在当前商业应用中存在的各种缺陷,另一方面也撼动了关系数据库的传统垄断地位。
- 通常NoSQL数据库具有以下3个特点:
1、灵活的可扩展性
NoSQL数据库在设计之初就是为了满足“横向扩展”的需求,因此天生具备良好的水平扩展能力。
2、灵活的数据模型
NoSQL数据库天生就旨在摆脱关系数据库的各种束缚条件,摈弃了流行多年的关系数据模型,转而采用键值、列族等非关系模型,允许在一个数据元素里存储不同类型的数据。
3、与云计算紧密融合
NoSQL数据库可以凭借自身良好的横向扩展能力,充分自由利用云计算基础设施,很好地融入到云计算环境中,构建基于NoSQL的云数据库服务。
CAP
所谓的CAP指的是:
l C(Consistency):
一致性,是指任何一个读操作总是能够读到之前完成的写操作的结果,也就是在分布式环境中,多点的数据是一致的,或者说,所有节点在同一时间具有相同的数据
l A:(Availability):
可用性,是指快速获取数据,可以在确定的时间内返回操作结果,保证每个请求不管成功或者失败都有响应;
l P(Tolerance of Network Partition):
分区容忍性,是指当出现网络分区的情况时(即系统中的一部分节点无法和其他节点进行通信),分离的系统也能够正常运行,也就是说,系统中任意信息的丢失或失败不会影响系统的继续运作。
l CA:也就是强调一致性(C)和可用性(A),放弃分区容忍性(P),最简单的做法是把所有与事务相关的内容都放到同一台机器上。很显然,这种做法会严重影响系统的可扩展性。传统的关系数据库(MySQL、SQL Server和PostgreSQL),都采用了这种设计原则,因此,扩展性都比较差
l CP:也就是强调一致性(C)和分区容忍性(P),放弃可用性(A),当出现网络分区的情况时,受影响的服务需要等待数据一致,因此在等待期间就无法对外提供服务
l AP:也就是强调可用性(A)和分区容忍性(P),放弃一致性(C),允许系统返回不一致的数据
ACID
一个数据库事务具有ACID四性:
l A(Atomicity):原子性,是指事务必须是原子工作单元,对于其数据修改,要么全都执行,要么全都不执行
l C(Consistency):一致性,是指事务在完成时,必须使所有的数据都保持一致状态
l I(Isolation):隔离性,是指由并发事务所做的修改必须与任何其它并发事务所做的修改隔离
l D(Durability):持久性,是指事务完成之后,它对于系统的影响是永久性的,该修改即使出现致命的系统故障也将一直保持
NoSQL的四大类型
NoSQL数据库数量众多,但是归结起来,典型的NoSQL数据库通常包括键值数据库、列族数据库、文档数据库和图数据库,如下图所示: