一、数据库基本概述和模型系统
(1)数据库概念
1.数据 (Data) 是数据库中存储的基本对象,是描述事物的符号记录。数据的种类:文本、图形、图像、音频、视频等。
2.数据库 (Database, DB). 数据库是统一管理的、长期储存在计算机内的,有组织的相关数据的集合。数据库的基本特征:
① 数据按一定的数据模型组织、描述和储存
② 数据间联系密切、冗余度较小
③ 数据独立性较高
④ 易扩展
⑤ 可为各种用户共享
3.数据库管理系统 (DBMS)
DBMS 是数据库系统的核心软件,是由一组相互关联的数据集合和一组用以访问这些数据的软件组成。它是一种解决如何科学地组织和储存数据如何高效地获取和维护数据的系统软件。
主要功能包括:数据定义功能 (DDL)、数据操纵功能 (DML)、数据库的运行管理、数据库的建立与维护。
(2)数据模型
数据模型是数据特征的抽象,它从抽象层次上描述了系统的静态特征、动态行为和约束条件,为数据库系统的信息表示与操作提供一个抽象的框架。数据模型的三要素:
① 数据结构:对象类型的集合,是对系统静态特性的描述。
② 数据操作:对数据库中各种对象的实例(值)允许执行的操作集合,包括操作及操作规则。如检索、插入、删除和修改,操作规则有优先级等。
③ 数据的约束条件:一组完整性规则的集合。对具体的应用数据必须遵循特定的语义约束条件。
常见的基本数据模型:
① 层次模型:用树形结构表示数据与数据间的联系。
② 网状模型:采用网络结构表示数据间联系的数据模型。
③ 关系模型:二维表。
④ 面向对象数据模型(第三代数据库系统)
(3)数据库管理系统
DBMS功能主要包括数据定义,数据库操作,数据库运行管理,数据组织、存储和管理,数据库的建立和维护。
(1)数据定义
DBMS提供数据定义语言(DDL),可以对数据库的结构进行描述,包括 外模式、模式和内模式的定义;数据库的完整性定义;安全保密定义,如口令、级别和存取权限等。这些定义存储在数据字典中,是DBMS运行的基本依据。
(2)数据库操作
DBMS向用户提供数据操纵语言(DML),实现对数据库中数据的基本操作,如 检索、插入、修改和删除。
(3)数据库运行管理。
数据库在运行期间,多用户环境下的并发控制、安全性检查和存取控制、完整性检查和执行、运行日志的组织管理、事务管理和自动恢复等都是DBMS的重要组成部分。这些功能可以保证数据库系统的正常运行。
(4)数据组织、存储和管理。
(5)数据库的建立和维护。
数据库的建立和维护,包括数据库的初始建立、数据的转换、数据库的转储和恢复、数据库的重组和重构、性能监测和分析等。
(6)其他功能。
如DBMS与网络中其他软件系统的通信功能,一个DBMS与另一个DBMS或文件系统的数据转换功能等。
DBMS的特点:
(1) 数据结构化且统一管理。
(2) 有较高的数据独立性。
(3) 数据控制功能。DBMS提供了数据控制功能,以适应共享数据的环境。数据控制功能包括对数据库中数据的安全性、完整性、并发和恢复的控制。可分为:
① 数据库的安全性(Security)是指保护数据库以防止不合法的使用所造成的数据泄露、更改或破坏。这样,用户只能按规定对数据进行处理,例如,划分了不同的权限,有的用户只有读数据的权限,有的用户有修改数据的权限,用户只能在规定的权限范围内操纵数据库。
② 数据的完整性(Integral仰(应为"完整性",此处表述有误))是指数据库正确性和相容性,是防止合法用户使用数据库时向数据库加入不符合语义的数据。保证数据库中数据是正确的,避免非法的更新。
③ 并发控制(concurrency control)是指在多用户共享的系统中,许多用户可能同时对同一数据进行操作。DBMS的并发控制子系统负责协调并发事务的执行,保证数据库的完整性不受破坏,避免用户得到不正确的数据。
④ 故障恢复(recovery from failure)。数据库中的常见故障是事务内部故障、系统故障、介质故障及计算机病毒等。故障恢复主要是指恢复数据库本身,即在故障导致数据库状态不一致时,将数据库恢复到某个正确状态或一致状态。恢复的原理非常简单,就是要建立冗余(redundancy)数据。换句话说,确定数据库是否可恢复的方法就是其包含的每一条信息是否都可以利用冗余的存储在别处的信息重构。
(4)三级模式两级映像

| 概念模式 | 外模式 | 内模式 | |
|---|---|---|---|
| 定义 | 数据库中全体数据的逻辑结构和特征的描述,是所有用户的公共数据视图 | 外模式(子模式、用户模式)用以描述用户看到或使用的哪部分数据的逻辑结构 | 内模式定义的是存储记录的类型、存储域的表示以及存储记录的物理顺序、指引元、索引和存储路径等数据的存储组织 |
| 数量 | 一个数据库只有一个概念模式 | 用户根据外模式用数据操作语句或应用程序去操作数据库中的数据(数量依具体情况而定) | 一个数据库只有一个内模式 |
A. 逻辑独立性:当模式改变时(例如增加新的关系,新的属性,改变属性的数据类型等),由数据库管理员对各个外模式/模式的映像做相应的改变,可以使外模式保持不变。应用程序是依据数据的外模式编写的,从而应用程序不必修改,保证了数据与程序的逻辑独立性,简称数据的逻辑独立性。
B. 物理独立性:当数据库的存储结构改变了,由数据库管理员对模式/内模式映像做响应的改变,可以使模式保持不变,从而应用程序也不必改变,保证了数据与程序的物理独立性,简称数据的物理独立性。
(5)关系表类型
| 关系表类型 | 要点 |
|---|---|
| 基本关系(基本表或基表) | 实际存在的表,实际存储数据的逻辑表示。 |
| 查询表 | 查询结果对应的表。 |
| 视图表 | 由基表或其他视图表导出的表,本身不独立存储,数据库只存放它的定义,常称为虚表。 |
1.视图
①定义 :是一个虚拟表,内容由查询定义(仅保存SQL查询语句),与真实表一样有一系列行列数据,但不真正存储数据,而是通过查询原始表动态生成所需数据。
②优点 :简化用户操作;使用户能以多种视角看待同一数据;对重构数据库提供一定逻辑独立性;可对机密数据提供安全保护。
2.物化视图 :并非传统意义的虚拟表,是实体化视图,本身存储数据,原始数据更新时物化视图也会更新,常用于一些频繁使用的表。
(6)关系的基本术语

①属性 (Attribute):描述一个事物常常取若干特征来表示。这些特征称为属性(列)。
②域 (Domain):每个属性的取值范围对应一个值的集合,称为该属性的域。所有的域都应是原子数据。
③目或度 (Degree):指一个关系中属性的个数。
④候选码 (Candidate Key):若关系中的某一属性或属性组的值能唯一的标识一个元组称该属性或属性组为候选码。
⑤主码 (Primary Key):或称主键,若一个关系有多个候选码,则选定其中一个作为主码。
⑥主属性 (PrimeAttribute):包含在任何候选码中的属性称为主属性。不包含在任何候选码中的属性称为非主属性。
⑦外码 (Foreign Key):如果关系中的一个属性是另外一个关系中的主码,则这个属性为外码也叫外键。
⑧全码 (All-key):关系模型的所有属性组是这个关系模式的候选码,称为全码。
关系数据库模式:关系的描述称为关系模式,关系模式是一个五元组,形式化地表示为:R (U, D, DOM, F)
-
R:关系名
-
U:组成该关系的属性名集合
-
D:属性组U中属性所来自的域
-
DOM:属性向域的映象集合
-
F:属性间的数据依赖关系集合
通常简记为R(A1, A2, ... , An)。R为关系名,A1, A2....为属性名。
(7)完整性约束
☆ 数据的约束条件:实体完整性 :实体完整性是指实体的主属性不能取空值(唯一非空)。

☆ 参照完整性 :在关系数据库中主要是值外键参照的完整性。若A关系中的某个或者某些属性参照B或其他几个关系中的属性,那么在关系A中该属性要么为空,要么必须出现B或者其他的关系的对应属性中。

☆ 用户定义完整性:用户定义完整性反映的某一个具体应用所对应的数据必须满足一定的约束条件。如(社保上下限、男女)年龄(1 - 50)等。

①触发器 :在用户关系表上的一类由事件驱动的特殊过程,可以进行更为复杂的检查和操作,具有更精细和更强大的数据控制能力。(只有增删改能激活触发器,select无法激活触发器,激活后由数据库服务器自动执行)触发器中不包括事务控制语句。
②存储过程 :将具有特定功能的一段SQL语句(多于一条)在数据库服务器上进行预先定义并编译,以供应用程序调用,该段SQL程序可被定义为存储过程。存储过程里可以包含流程控制。被编译后存在数据库中。组上筛选为:HAVING子句,可以用于聚集函数。
二、关系代数
| 集合运算符 | 含义 | 名词解释 |
|---|---|---|
| ∪ | 并 | 关系R与S的并是由属于R或属于S的元组构成的集合。 |
| - | 差 | 关系R与S的差是由属于R但不属于S的元组构成的集合。 |
| ∩ | 交 | 关系R与S的交是由属于R同时又属于S的元组构成的集合。 |
| × | 笛卡尔积 | 两个元组分别为n目和m目的关系R和S的笛卡尔积是一个(n + m)列的元组的集合。元组的前n列是关系R的一个元组,后m列是关系S的一个元组。 |

例题:

运算符:
| 运算符 | 含义 | 名词解释 |
|---|---|---|
| σ | 选择 | 取得关系R中符合条件的行 |
| π | 投影 | 取得关系R中符合条件的列 |
| = ⋈ | 连接(等值连接与自然连接) | - 等值连接 :关系R、S,取两者笛卡尔积中属性值相等的元组。 - 自然连接 :一种特殊的等值连接,它要求比较的属性列必须是相同的属性组,并且把结果中重复属性去掉。注意与笛卡尔积的区别。 |


外连接:
(1)左外连接:R和S进行自然连接时,只把R中舍弃的元组放到新关系中。
(2)右外连接:R和S进行自然连接时,只把S中舍弃的元组放到新关系中。
(3)完全外连接:R和S进行自然连接时,只把R和S中舍弃的元组都放到新关系中。


例题:

三、规范化理论
X →Y ,Y 不⊆X ,则称X →Y是非平凡的函数依赖。
X →Y ,但Y ⊆X ,则称X →Y是平凡的函数依赖。

Armstrong公理:从已知的一些函数依赖,可以推导出另外一些函数依赖,这就需要一系列推理规则,这些规则常被称作"Armstrong 公理"。 设关系式R(U,F),U是关系模式R的属性集,F是U上一组函数依赖,则有以下三条推理规则:
- A1自反律:若Y⊆X⊆U,则X→Y为F所蕴含;
- A2增广律:若X→Y为F所蕴含,且Z⊆U,则XZ→YZ为F所蕴含;
- A3传递律:若X→Y,Y→Z为F所蕴含,则X→Z为F所蕴含。
根据上面三条推理规则,又可推出下面三条推理规则:
①合并规则:若X→Y,X→Z,则X→YZ为F所蕴含;
②伪传递规则:若X→Y,WY→Z,则XW→Z为F所蕴含;
③分解规则:若X→Y,Z⊆Y,则X→Z为F所蕴含。
例题:

(1)不规范化带来的四大问题
设有一个关系模式R(SNAME,CNAME,TNAME TADDRESS),其属性分别表示学生姓名、选修的课程名、任课教师姓名和任课教师地址。仔细分析一下,就会发现这个模式存在下列存储异常的问题:
(1)数据冗余:数据被重复存储,如某门课程有100个学生选修,那么在R的关系中就要出现100个元组,这门课程的任课教师姓名和地址也随之重复出现100次。
(2)修改异常:修改导致数据不一致,如由于上述冗余问题,当需要修改这个教师的地址时,就要修改100个元组中的地址值,否则就会出现地址值不一致的现象。
(3)插入异常:插入时异常,如不知道听课学生名单,这个教师的任课情况和家庭地址就无法进入数据库;否则就要在学生姓名处插入空值。
(4)删除异常:删除了不该删除的数据,如当只有一条记录时,要删除这个学生选课信息,会将课程名、教师名和教师地址都给删除了。
(2)范式(NF)
第一范式(1NF)
若关系模式R的每一个分量是不可再分的数据项,则关系模式R属于第一范式。如下图不属于第一范式。(简单属性和复合属性)、单值属性和多值属性、NULL属性、派生属性。

第二范式(2NF)
若关系模式R∈1NF,且每一个非主属性完全依赖主键时,则关系式R是2NF(第二范式)。


第三范式(3NF)
即当2NF消除了非主属性对码的传递函数依赖,则称为3NF

BC范式(BCNF)
R是一个关系模式,F是它的依赖集,R属于BCNF当且仅当其F中每个依赖的决定因素必定包含R的某个候选码。



例题:

例题:

例题:


例题:


四、数据库设计
(1)数据库设计的各个阶段

| 阶段 | 概念 | 可交付成果 |
|---|---|---|
| 需求分析 | 目标是通过调查研究,了解用户的数据和处理要求,并按照一定格式整理成需求规格说明书。 | 数据流图及数据字典的内容:数据项、数据流、数据存储、数据加工(处理过程)从而确定系统边界。 |
| 概念结构设计 | 在需求分析阶段产生的需求说明书的基础上,按照特定的方法将它们抽象为一个不依赖于任何 DBMS 的数据模型,即概念模型。 | 1. 抽象数据★ 2. 设计局部E-R图(局部视图---识别实体及其标识---确定实体间的联系---分配实体及联系的属性) E-R模型(实体关系模型) 3. 合并取消冲突,设计初步E-R模式 4. 修改重构消除冗余生成基本E-R图 |
| 逻辑结构设计 | 将概念模型转化为某个特定的 DBMS 上的逻辑模型(层次模型、网状模型、关系模型)。 | ● 转换为数据模型 ● 关系规范化 ● 模式优化 ● 设计用户子模式★ 关系模式 |
| 物理设计 | ①设计存储记录结构,包括记录的组成、数据项的类型和长度,以及逻辑记录到存储记录的映射。 ②确定数据存储安排。 ③设计访问方法,为存储在物理设备上的数据提供存储和检索的能力。 ④进行完整性和安全性的分析与设计。 ⑤数据库程序设计。 |
集成的方法: ① 多个局部E-R图一次性集成 ② 逐步集成,用累加的方式一次性集成两个局部的E-R图。
属性冲突: --属性域冲突:不同学校编码方式不同 --属性值冲突:重量采用千克、磅
结构冲突: --同一对象在不同应用中的抽象不同:职工在某一应用中是实体,在另一应用中是属性。 --同一实体在不同ER图中属性个数和排列次序不同
命名冲突: --同名异义 --异名同义
例题:

➢ 一个实体型必须转换为一个关系模式。
➢ 联系转关系模式有以下几种方式:

1.联系的属性,1:1的联系:

2.联系的属性,1:n的联系:

3.联系的属性,n:m的联系:

4.联系的属性,多元的联系:

1、用户视图的确定
根据数据流图及用户信息建立视图模式,提高数据的安全性和独立性。
-
根据数据流图确定处理过程使用的视图
-
根据用户类别确定不同用户使用的视图
2、反规范化
反规范化是加速读操作性能(数据检索)的方法,通过有选择地在数据结构标准化后添加特定的冗余数据来增加查询效率。
常见的反规范化操作有:冗余列、派生列、表重组和表分割,其中表分割又分为水平分割和垂直分割。
反规范化会带来冗余数据不一致问题,常采用数据同步的方法来解决。
方法有:应用程序同步、批量处理同步和触发器同步等。
3、物理结构设计
物理结构设计就是为逻辑数据模型选取一个最适合应用环境的物理结构(包括存储结构和存取方法)。
物理结构设计的主要工作步骤:
① 确定数据分布
② 存储结构
③ 访问方式
(2)数据库实施
运用DBMS提供的数据库语言(如SQL)及宿主语言,根据逻辑设计和物理设计的结果,在计算机上建立起实际的数据库结构,数据加载(装入),进行试运行和评价的过程,叫数据库的实施(实现)。包括以下三个步骤:
① 建立数据库结构
② 数据加载(组织数据入库)
③ 试运行和评价
(3)数据库运行维护
数据库维护工作的主要内容:
① 数据库性能的监测和改善
② 数据库备份及故障恢复
③ 数据库重组和重构
(4)数据库备份
数据库备份及故障恢复
数据备份是指为防止系统出现操作失误或系统故障导致数据丢失,而将全部或部分数据集合从应用主机的硬盘或阵列复制到其它的存储介质的过程。备份可分为:
① 冷备份(静态备份)是在数据库正常关闭的情况下进行的,所以备份过程中不允许对数据库进行任何存取、修改活动。
② 热备份(动态备份)热备份是指备份期间允许对数据库进行存取或修改,即备份和用户事务可以并发执行。
按备份的内容分类:
① 完全备份:备份全部文件,并不依赖文件的存档属性来确定备份那些文件。
② 差分备份:备份自上一次完全备份以来变化过的文件。
③ 增量备份:备份上一次备份后(无论是哪种备份),所有发生变化的文件。
(5)应用程序与数据库的交互方式
应用系统中,用户不能直接访问后台的数据库,需要高级程序语言来完成与用户之间的交互,因此数据库管理系统需要提供程序级别的接口来访问数据。常见的应用程序与数据库的交互方式:
✓库函数,如Oracle的OCI(Oracle调用接口)。
✓嵌入式SQL,将SQL语句直接写入某种高级程序语言。
✓通用数据接口标准,如ODBC、JDBC、DAO、RDO、ADO等。
✓对象关系映射(ORM),是一种为了解决面向对象与关系数据库不匹配的技术。就是将Java中的对象与数据库中的表关联对应起来。
①Hibernate:全自动的框架,强大、复杂、笨重、学习成本较高。
②Mybatis:半自动的框架(常用MyBatis-Plus)。
③JPA(Java Persistence API):JPA JDK 5.0注解或XML描述对象-关系表的映射关系,是Java自带的框架。
五、NOSQL概述
常见的NoSQL数据库按存储方式,可分为文档存储、键值存储、列存储和图存储。
| 分类 | 典型产品 | 应用场景 | 优点 | 缺点 |
|---|---|---|---|---|
| 文档存储 | MongoDB、CouchDB | Web应用,存储面向文档和半结构化数据 | 结构灵活,可以根据value构建索引 | 缺乏统一的查询语法;无事务处理能力 |
| 键值存储 | Memcached、Redis | 内容缓存,如会话、配置文件、参数等 | 扩展性好,灵活性强,大量操作时性能高 | 数据无结构化,通常被当成字符串或者二进制数据,通过键查询值 |
| 列存储 | Bigtable、HBase、Cassandra | 分布式数据存储和管理 | 可扩展性强,查找速度快,复杂性低 | 功能局限;不支持事务的强一致性 |
| 图存储 | Neo4j、OrientDB | 社交网络、推荐系统、专注于构建系统图谱 | 支持复杂的图形算法 | 复杂性高,只能支持一定的数据规模 |
(1)NOSQL框架
NOSQL整体框架分为4层,由下至上分为数据持久层(Data Persistence)、数据分布层、数据逻辑模型层(Data Logical Model)和接口层(Interface),层次之间相辅相成,协调工作。
① 数据持久层 定义了数据的存储形式,主要包括基于内存、硬盘、内存和硬盘接口、订制可插拔4种形式。基于内存形式的数据存取速度最快,但可能会造成数据丢失;基于硬盘的数据存储可能保存很久,但存取速度慢于基于内存形式的数据;内存和硬盘相结合的形式,结合了前两种形式的优点,既保证了速度,又保证了数据不丢失;订制可插拔则保证了数据存取具有较高的灵活性。
② 数据分布层 定义了数据是如何分布的,相对于关系型数据库,NOSQL可选的机制比较多,主要有3种形式:一是CAP支持,可用于水平扩展;二是多数据中心支持,可以保证在横跨多数据中心时也能够平稳运行;三是动态部署支持,可以在运行着的集群中动态地添加或除结点。
③ 数据逻辑层 表述了数据的逻辑表现形式。
④ 接口层 为上层应用提供了方便的数据调用接口,提供的选择远多于关系型数据库。接口层提供了5种选择:Rest、Thrift、Map/Reduce、Get/Put、特定语言API,使得应用程序和数据库的交互更加方便。
NOSQL分层架构并不代表每个产品在每一层只有一种选择。相反,这种分层设计提供了很大的灵活性和兼容性,每种数据库在不同层面可以支持多种特性。
(2)NoSQL数据库适用情况
-
数据模型比较简单;
-
需要灵活性更强的IT系统;
-
对数据库性能要求较高;
-
不需要高度的数据一致性。
六、事务管理
(1)事务的ACID属性
数据库系统运行的基本工作单位是事务,事务相当于操作系统中的进程,是用户定义的一个数据库操作序列,这些操作序列要么全做要么全不做,是一个不可分割的工作单位。

(2)并发问题
事务通常以 BEGIN TRANSACTION(事务开始)语句开始,以 COMMIT 或 ROLLBACK 语句结束。COMMIT 称为"事务提交语句",表示事务执行成功的结束。ROLLBACK 称为"事务回退语句",表示事务执行不成功的结束。从终端用户来看,事务是一个原子,是不可分割的操作序列。事务中包括的所有操作要么都做,要么都不做(就效果而言)。事务不应该丢失或被分割地完成。

| 问题类型 | 触发条件 | 隔离级别解决方案 | 典型场景 |
|---|---|---|---|
| 丢失更新 | 两个事务同时修改同一数据 | 排他锁、乐观锁 | 转账、库存扣减 |
| 不可重复读 | 事务内多次读取同一数据被修改 | REPEATABLE READ |
报表统计、复杂计算 |
| 读脏数据 | 读取未提交的数据 | READ COMMITTED |
实时监控、高并发读 |
| 幻读 | 事务内查询结果集被其他事务增删 | SERIALIZABLE 或间隙锁 |
分页查询、范围条件操作 |
(3)封锁技术
处理并发控制的主要方法是采用封锁技术。它有两种类型:排他型封锁(X 封锁)和共享型封锁(S 封锁),分别介绍如下:
①排他型封锁 (简称 X 封锁)。如果事务 T 对数据 A(可以是数据项、记录、数据集,乃至整个数据库)实现了 X 封锁,那么只允许事务 T 读取和修改数据 A,其他事务要等事务 T 解除 X 封锁以后,才能对数据 A 实现任何类型的封锁。可见 X 封锁只允许一个事务独锁某个数据,具有排他性。
②共享型封锁 (简称 S 封锁)。X 封锁只允许一个事务独锁和使用数据,要求太严。需要适当放宽,例如可以允许并发读,但不允许修改,这就产生了 S 封锁概念。S 封锁的含义是:如果事务 T 对数据 A 实现了 S 封锁,那么允许事务 T 读取数据 A,但不能修改数据 A,在所有 S 封锁解除之前绝不允许任何事务对数据 A 实现 X 封锁。
封锁协议:


(4)封锁协议
运用封锁方法时,对数据对象加锁时需要约定一些规则,如何时申请加锁?持锁时间?何时释放封锁?
理论上证明使用两段锁协议产生的是可串行化调度,事务必须分两个阶段对数据进行加锁和解锁。但是不能保证产生死锁。
①第一阶段是:获得封锁,也称扩展阶段:事务可以申请获得任何数据项上的任何类型的锁,但是不能释放任和锁。
②第二阶段:释放封锁,也称收缩阶段:事务可以释放任何数据项上的任何类型的锁,但是不能再申请任和锁。

例题:

(5)事务故障与修复
| 故障关系 | 故障原因 | 解决办法 |
|---|---|---|
| 事务本身的可预期故障 | 本身逻辑 | 在程序中预先设置Rollback语句 |
| 事务本身的不可预期故障 | 算术溢出、违反存储保护 | 由DBMS的恢复子系统通过日志,撤销事务对数据库的修改,回退到事务初始状态 |
| 系统故障 | 系统停止运转 | 通过使用检查点法,系统重启时自动完成 |
| 介质故障 | 外存被破坏 | 一般使用日志重新做业务 |
撤销事务(UNDO):故障发生时未完成的事务,放入Undo撤销。
重做事务(REDO):故障发生前已提交的事务,放入Redo重做。
七、分布式数据库
分布式数据库系统:物理上分散逻辑相关的数据库系统,系统的数据分布存放在计算机网络的不同场地的计算机,每一个场地都有自治处理(独立处理)能力并可完成局部应用,而每一个场地也参与全局应用,程序通过网络通信子系统执行全局应用。

(1)分布式数据库管理系统组成
LDBMS(局部数据库管理系统)、GDBMS(全局数据库管理系统)、全局数据字典、通信管理(CM)
✔ 分布式数据库管理系统-结构
✔ 全局控制集中的DDBMS
✔ 全局控制分散的DDBMS
✔ 全局控制部分分散的DDBMS
分布式数据库系统的模式结构有6个层次:

例题:

(2)分布透明性
分布透明性包括:分片透明性、位置透明性和局部数据模型透明性。

(1) 分片透明性是分布透明性的最高层次。所谓分片透明性是指用户或应用程序只对全局关系进行操作而不必考虑数据的分片。
(2) 位置透明性是分布透明性的下一层次。所谓位置透明性是指用户或应用程序应当了解分片情况,但不必了解片段的存储场地。
(3) 局部数据模型(逻辑透明)最低层次的透明性,指的是提供数据到局部数据库的映像,即用户不必关心局部DBMS支持哪种数据模型、使用哪种数据操纵语言,用户模型和操纵语言的转换由系统完成的。因此局部映像透明性对异构型和同构异质的分布式数据库系统是非常重要的。
(3)提交协议
两阶段提交协议2PC协议把数据提交分成两个阶段:
-
表决阶段 :协调者发布"准备提交"指令,所有参与者进行表决,具有一票否决权,目的是形成一个共同的决定。
-
执行阶段 :根据协调者的指令,参与者提交或撤销事务,并给协调者发送确认信息,目的是实现这个协调者的决定。
规则:只要有一个参与者撤销事务,协调者就必须做出全局撤销的决定。
只有所有参与者都同意提交事务,协调者才能做出全局提交的决定。

三阶段提交协议3PC协议把数据提交分成三个阶段:
-
第一阶段:协调者向所有参与者发布"准备提交"指令,所有参与者进行表决,只有所有参与者都投票"建议提交",才会进入第二阶段。
-
第二阶段:协调者向所有参与者发"全局预提交",只有所有参与者都提交"准备就绪"才能进入第三阶段。
-
第三阶段:协调者向所有的参与者发布"全局提交"报文。