# 绪论

数据库管理经历了人工管理、文件系统、数据库系统三个阶段。

人工管理阶段和文件系统阶段的数据共享性差、冗余度高,数据库系统的出现解决了这两个问题。

因为互联网的发展,数据库系统管理的数据及其应用环境发生了很大的变化,主要表示为应用领域越来越广泛,数据种类越来越复杂 和多样,并且数据量剧增,传统的关系型数据库已经无法满足用户需求了,所以 NoSQL 就诞生了。

数据库根据不同的逻辑模型可以分成三种:层次型、网状型和关系型

层次型数据库

数据模型采用了树形 (层次) 结构的数据库。在这种属性结构中,数据按自然的层次关系组织起来,以反映数据之间的隶属关系。

层次数据模型就是的图形表示就是一个倒立生长的树,由基本数据结构中的树(或者二叉树)的定义可知,每棵树都有且仅有一个根节点,其余的节点都是非根节点。每个节点表示一个记录类型对应与实体的概念,记录类型的各个字段对应实体的各个属性。各个记录类型及其字段都必须记录。

由于层次型数据库的结构简单,会导致数据冗余度过高。

网状型数据库

采用网状型数据模型的数据库称为网状型数据库,通过网络结构表示数据与数据间的联系。

各个节点没有明确的从属关系,一个节点可以与其他多个节点建立联系,即节点之间的联系是任意的。

由于应用范围的扩展,网状结构会变得越来越复杂,不利于用户掌握。

关系型数据库

满足一定条件的二维表格来表示实体集合以及实体间联系的一种数据模型,使用灵活方便,适应面广


# 数据库管理系统

数据库管理系统 (Database Management System) 是一种操纵和管理数据库的大型软件,用于建立、使用和维护数据库,简称 DBMS

它对数据库进行统一的管理和控制,以保证数据库的安全性和完整性。用户通过 DBMS 访问数据库中的数据,数据库管理员也通过 DBMS 进行数据库的维护工作。它可以支持多个应用程序和用户用不同的方法在同时或不同时刻去建立,修改和询问数据库。大部分 DBMS 提供数据定义语言 DDL(Data Definition Language)和数据操作语言 DML(Data Manipulation Language),供用户定义数据库的模式结构与权限约束,实现对数据的追加、删除等操作。

DBMS 的主要功能:

  • 数据定义
  • 数据操作
  • 数据库的运行管理
  • 数据组织、存储和管理
  • 数据库的维护
  • 通信
详细说明
  1. 数据定义:DBMS 提供数据定义语言 DDL(Data Definition Language),供用户定义数据库的三级模式结构、两级映像以及完整性约束和保密限制等约束。DDL 主要用于建立、修改数据库的库结构。DDL 所描述的库结构仅仅给出了数据库的框架,数据库的框架信息被存放在数据字典(Data Dictionary)中。
  2. 数据操作:DBMS 提供数据操作语言 DML(Data Manipulation Language),供用户实现对数据的追加、删除、更新、查询等操作。
  3. 数据库的运行管理:数据库的运行管理功能是 DBMS 的运行控制、管理功能,包括多用户环境下的并发控制、安全性检查和存取限制控制、完整性检查和执行、运行日志的组织管理、事务的管理和自动恢复,即保证事务的原子性。这些功能保证了数据库系统的正常运行。
  4. 数据组织、存储与管理:DBMS 要分类组织、存储和管理各种数据,包括数据字典、用户数据、存取路径等,需确定以何种文件结构和存取方式在存储级上组织这些数据,如何实现数据之间的联系。数据组织和存储的基本目标是提高存储空间利用率,选择合适的存取方法提高存取效率。
  5. 数据库的保护:数据库中的数据是信息社会的战略资源,所以数据的保护至关重要。DBMS 对数据库的保护通过 4 个方面来实现:数据库的恢复、数据库的并发控制、数据库的完整性控制、数据库安全性控制。DBMS 的其他保护功能还有系统缓冲区的管理以及数据存储的某些自适应调节机制等。
  6. 数据库的维护:这一部分包括数据库的数据载入、转换、转储、数据库的重组合重构以及性能监控等功能,这些功能分别由各个使用程序来完成。
  7. 通信:DBMS 具有与操作系统的联机处理、分时系统及远程作业输入的相关接口,负责处理数据的传送。对网络环境下的数据库系统,还应该包括 DBMS 与网络中其他软件系统的通信功能以及数据库之间的互操作功能。

来自百度百科

DBMS 是数据库系统的核心,是管理数据库的软件

# 关系型数据库

  • 二维表:也称关系,它是一系列二维数组的集合,用来代表与存储对消之间的关系。
  • 行:也叫元组或记录,代表一个实体
  • 列:也叫字段或属性。
  • 主属性:关系中的某一属性组,若他们的值能唯一的标识一个记录,则称该属性组为主属性或者主键

# 结构化查询语言

关系型数据库的核心是其结构化查询语言(Structured Query Language,SQL)

# 数据定义语言 DDL

包括:CREATE(创建)、DROP(删除)、ALTER(数据库对象的修改)

# 数据查询语言 DQL:select

# 数据操纵语言 DML

INSERT(插入)、UPDATE(更新)、DELETE(删除)

# 关系型数据库优缺点

# 优点

  • 容易理解
  • 使用方便
  • 易于维护

# 缺点

  • 高并发读写能力差
  • 对海量数据的读写效率低
  • 扩展性差

# NoSQL 数据库的特点

  • 灵活的数据模型
  • 可伸缩性强
  • 自动分片
  • 自动复制
CAP理论
  • C(一致性):所有的节点上的数据时刻保持同步
  • A(可用性):每个请求都能接受到一个响应,无论响应成功或失败
  • P(分区容错):系统应该能持续提供服务,即使系统内部有消息丢失(分区)

CAP 理论认为分布式系统最多只能兼顾其中两个特性

由于数据是海量的,而且是不允许丢失的,因此需要采用分布式、多福本的方式进行存储,分区容错性是很多 NoSQL 数据库必须兼备的,那么就要在一致性和可用性进行权衡,于是出现了 BASE 理论,给出了一种权衡 A 与 C 的可行方案。

BASE理论
  • 基本可用 (Basically Available): 基本可用是指分布式系统在出现故障的时候,允许损失部分可用性,即保证核心可用。电商大促时,为了应对访问量激增,部分用户可能会被引导到降级页面,服务层也可能只提供降级服务。这就是损失部分可用性的体现。
  • 软状态 (Soft State)软状态是指允许系统存在中间状态,而该中间状态不会影响系统整体可用性。分布式存储中一般一份数据至少会有三个副本允许不同节点间副本同步的延时就是软状态的体现。MySQL Replication 的异步复制也是一种体现。
  • 最终一致性 (Eventual Consistency)最终一致性是指系统中的所有数据副本经过一定时间后,最终能够达到一致的状态。弱一致性和强一致性相反,最终一致性是弱一致性的一种特殊情况。

最终一致性是 BASE 的核心,也是 NoSQL 的主要特点

# NoSQL 数据库分类

典型的 NoSQL 划分为 4 种类型,分别是键值数据库列式数据库文档数据库图形数据库


# 键值数据库

它使用一个哈希表表中的 Key(键)用来定位 Value(值),即存储和检索具体的 Value。数据库不能对 Value 进行索引和查询,只能通过 Key 进行查询。Value 可以用来存储任意类型的数据,包括整型、字符型、数组、对象等。


# 列族数据库

通常用来应对分布式存储的海量数据。键依然存在,但是它们指向多列

每一行都有关键字 row key 。


# 文档数据库

文档数据库是通过键来定位一个文档的,所以是键值数据库的一种衍生品。在文档数据库中,文档是数据库的最小单位。文档数据库可以使用模式来指定某个文档结构。

文档数据库是 NoSQL 数据库类型中出现得最自然的类型,因为它们是按照日常文档的存储来设计的,并且允许对这些数据进行复杂的查询和计算。


# 图形数据库

图形数据库以图论为基础,用图来表示一个对象集合,包括顶点及连接顶点的边。

图形数据库使用图作为数据模型来存储数据,可以高效地存储不同顶点之间的关系。

图形数据库是 NoSQL 数据库类型中最复杂的一个,旨在以高效的方式存储实体之间的关系。

图形数据库适用于高度相互关联的数据,可以高效地处理实体间的关系,尤其适合于社交网络、依赖分析、模式识别、推荐系统、路径寻找、科学论文引用,以及资本资产集群等场景。