Py学习  »  NoSql

NoSQL笔记——简介

开发太难我选择考研 • 3 年前 • 447 次点击  

目录

一.NoSQL的诞生

二.分布式数据管理

三.ACID/BASE

四.NoSQL数据库的分类

一. NoSQL的诞生

(1)什么是数据库?

数据库(Database)是按 照一定的 数据模型 来组织、存储和管理数据的仓库。

(2) 什么是数据模型

把现实世界中的人、物、活动、概念等用 【数据模型】 来抽象、表示 成计算机能识别和处理的数字。 数据模型是DB系统的核心和基础。

(3) 传统数据库数据模型的类型

层次型、网状型和 关系型

发展历程:

(4)什么是 关系数据模型?

关系模型有严格的数学基础,抽象级别比较高,而且简单清晰,便于 理解。很快工业界就参与进来研发关系数据库系统以及SQL。 代表产品有Oracle、IBM公司的DB2、微软公司的SQLServer 以及开 源的MySQL。

(5)关系型数据库的特点(优点)?

  1. 容易理解 :用二维表表示
  2. 使用方便 :通用的SQL语言。
  3. 易于维护 :丰富的完整性约束大大减低了数据冗余和数据不一 致的可能性。

(6)在大数据时代关系型数据库的不足

在大数据时代中, 数据量大,价值密度低,需要便宜的设备承载。 数据量达到了PB级别。

需要数据库拥有, 处理速度快,需要高并发支持及快速扩容能力。

1. 无法适应多变的数据结构

现代网络中存在大量的半结构化、非结构化数据,针对结构化数据而设计的关系 型数据库系统来说,对这些不断变化的数据结构,很难进行高效的处理。

2. 高并发读写的瓶颈

当数据量达到一定规模时由于关系型数据库的系统逻辑非常复杂,使得在并发 处理时非常容易发生死锁,导致其读写速度下滑严重。

3. 可扩展性的限制

在现代互联网环境下,应用系统可能在短时间内出现业务量和业务类型的快速变 化,而这些变化要求支撑数据库在底层硬件和数据库设计中提供极强的扩展性。由 于关系型数据库存在类似的join 操作,使得数据库在扩展方面很困难

(7)大数据背景下对数据库的要求?

  • 放松数据一致性的要求
  • 改变固定的表结构
  • 去除事务、关联等复杂操作

(8)NoSQL诞生

NoSQL即是Not only SQL,我们将他们称为分布式数据库。

(9) 分布式数据库必须具有的特征

高可扩展性 :分布式数据库必须具有高可扩展性,能够动态地增添存储节点以实现存储容量的线性扩展。

高并发性 :分布式数据库必须及时响应大规模用户的读/写请求,能对海量数据进行随机读、写。

高可用性 :分布式数据库必须提供容错机制,能够实现对数据的冗余备份,保证数据和服务的高度可靠性。

二. 分布式数据管理

(1)什么是数据库系统?

数据库系统 = 数据库管理系统 + 数据库

(2) 什么是数据库管理系 统?(DBMS)

数据库管理系统(Database Management System)是一种操纵和管理数据库的大型软件,用于建立、使用和维护数据库,简称DBMS。主要任务就是对外提供数据,对内要管理数据。

(3) 数据处理方式: 集中式VS分布式:

集中式数据库 是指数据库中的数据 集中 存储在一台计算机上,数据的处理也 集中 在一台机器上完成。

分布式数据库 是指利用高速计算机网络将 物理上分散 的多个数据存储单元连接起来组成一个 逻辑上统一 的数据库。

(4) CAP理论

一个分布式系统最多只能同时满足 一致性 (Consistency)、可用性(Availability) 和分区容错性 (Partition tolerance )这三 项中的两项。

1.一致性(consistency)(强一致性):

它是指任何一个读操作总是能够读到之前完成的写操作的结果。 所有节点在同一时间具有相同的数据。

2. 可用性(Availability)(高可用性):

每个请求都能在 确定时间 内返回一个响应,无论请求是成功或失败。

3. 分区容忍性(Partition Tolerance) :

它是指当出现网络分区情况时,即系统中的一部分节点无法和其他节点进行通信, 分离的系统也能 正常运行 。也就是说, 系统中任意信息的丢失或失败不会影响系统的继续运作。

(5) 当处理CAP的问题时,可以有几个明显的选择:

1. CA :也就是 强调一致性(C)和可用性(A),放弃分区容忍性(P) ,最简单的做法是把所有与事务相关的内容都放到同一台机器上。

2. CP :也就是 强调一致性(C)和分区容忍性(P),放弃可用性(A) ,当出现网络分区的情况时,受影响的服务需要等待数据一致,因此在等待期间就无法对外提供服务

3. AP :也就是 强调可用性(A)和分区容忍性(P),放弃一致性(C) ,允许系统返回不一致的数据

(6)CAP问题之间的取舍:

在一个允许网络发生故障的系统中,分布式系统该选择一致性C还是可用性A(P必须有!)

三. ACID/BASE

(1) ACID是什么?

数据库事务 正确执行的四个基本要素的缩写。包含: 原子性(Atomicity)、 一致性(Consistency)、隔离性(Isolation)、持久性(Durability) 。、

1.原子性: 一个事务的所有系列操作步骤被看成是一个动作,所有的步骤要么全部完成要么都不会完成。

2.一致性: 事务执行前后,数据库的状态都满足所有的完整性约束。

3.隔离性: 并发执行的事务是隔离的,保证多个事务互不影响,隔离能够确保并发执行的事务能够顺序一个接一个执行,通过隔离,一个未完成事务不会影响另外一个未完成事务。

4.持久性: 一个事务一旦提交,它对数据库中数据的改变就应该是永久性的,不会因为和其他操作冲突而取消这个事务。

(2) BASE原则是什么? (理论上)

BASE原则 = 基本可用性(Basically Available) + 软状态(Softstate) + 最终一致性(Eventuallyconsistent)

1.基本可用性:分布式系统在出现故障的时候,允许损失部分可用性,即保证核心功能或者当前最重要功能可用,但是其他功能会被削弱。

2.软状态:允许系统数据存在中间状态,但不会影响到系统的整体可用性,即允许系统在不同节点的数据副本之间进行数据同步时存在延时。

3.最终一致性:要求系统数据副本最终能够一致,而不需要实时保证数据副本一致。最终一致性是弱一致性的一种特殊情况。

(3) 为什么会有BASE原则:

CAP理论定义了分布式存储的 根本问题 ,但并没有指出 一致性和可用性 之间到底应该 如何权衡 。于是出现了BASE思想,给出了权衡A与C的一种可行方案。

ACID和BASE代表了在 一致性 -可用性 两点之间进行选择的设计哲学。

ACID强调一致性被关系数据库使用,BASE强调可用性被大多数NoSQL使用。

四.NoSQL数据库的分类

(1)NoSQL的分类:

1.键值数据库:

2.列族数据库:

3.文档数据库:

4.图形数据库:

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/100199
 
447 次点击