一、分布式数据库系统概述
引言和准备知识
数据库系统=DB+DBMS
模式:现实世界的信息抽象到数据库存储的数据是一个逐步抽象的过程,ANSI和SPARC(两个标准协会)根据数据的抽象级别定义了三层模式参考模型,外模式、概念模式、内模式
三个模式:外模式,如从员工表和工资表中获取工资单视图;概念模式,如员工表、工资表;内模式,物理结构和存储方式描述
关系模型:数据库数据模型之一,另外两个位层次、网状模型。关系是二维表,也称表,一行为一个元组,一列为一个属性
关系代数:5个集合运算,3个特殊运算。关系是一个集合,元素是关系的元组
集合运算
并(UNION):合并两个关系的元组
交(INTERSECT):两个关系的公共元组
差(DIFFERENCE):R-S,R有S没有的元组
乘(PRODUCT):R(m,i), S(n,j)乘后变为(m+n)个元素,i*j个元组,也称笛卡尔连接
除(DIVIDE):R/S,通过判断结果*S是否等于R确定,列举法(非官方),标准的关系代数并不直接支持除法操作
特殊运算
选择(SELECT):满足条件的元组
投影(PROJECT):满足条件的属性
连接(JOIN):按条件连接的多表
笛卡尔连接:两个关系的乘运算
等值连接和自然连接:基于共有属性的相等值连接元组
SQL:结构化查询语言,提供数据定义(增)、操作(删改查)、控制(权限)的数据库操作命令
分布库系统基本概念
概念:地理上分散而逻辑上集中的数据库系统,被连接的逻辑单位称为节点或场地,可以为单个服务器或集群。计算机网络与数据库系统结合的产物
区别:集中数据库系统、集中在某个网络节点的数据库系统、分布式数据库指分布在不同网络节点的数据库系统
组成:分布式数据库+分布式数据库管理系统,管理系统实现复杂性远高于集中式管理系统
特性:数据透明性(分布、复制、分片透明性)、场地自治性(设计、通信、执行自治性)
二、分布式数据库系统结构
体系结构:按组件、组件功能以及它们的交互作用定义系统的结构
系统结构
基于层次,客户端软件(AP应用处理器、CM通信处理器)-> 服务端软件(DP数据处理器)->DB
分类:集中库(AP->DP)、多客户/单服务器-C/S(多AP->DP)、多客户/多服务器-mc/ms、服务器结构、基于“中间件”的客户/服务器的体系结构、Browse/Server(client->web Server->Server)
模式结构
四层模式结构 :全局外层、全局概念层、局部概念层和局部内层
全局外模式(GES):全局用户视图,使用视图时,不必关心数据的分片和具体的物理分配细节
全局概念模式(GCS):分布式 数据库的整体抽象,包含了全部数据特性和逻辑结构,再经过分片模式和分配模式映射到局部模式
分片模式:描述全局数据的逻辑划分视图,根据某种条件的划分为局部数据逻辑结构,每一个逻辑划分形成一个分片
分配模式:描述局部数据逻辑的局部物理结构,即划分后的分片的物理分配视图
局部概念视图(LCS):全局概念模式的子集,用于描述局部场地上的局部数据特征和逻辑结构,当全局与局部数据模型不同,涉及数据模型转换
局部内模式:对物理数据库的描述,类似集中数据库的内层
组件结构
应用处理器(AP)功能:用户接口、语义数据控制器、全局查询处理器、全局执行监控器(全局事务管理器)
数据处理器DP功能:局部查询处理、局部恢复管理器、存储管理器、局部事务管理器、局部调度管理器
多数据库集成系统
通常分布式数据库系统是自上而下(top-down) 地设计数据库,可灵活地进行分片和分配设计,通常不多于数十个数据库组件,数据集成系统通过约束数据管理能力(只支持只读), 可将数据库组件数量扩展到数百个
在数据集成系统中, 通常数据和数据库已存在,是遵循自下而上(bottom up)地集成各局部场地上的数据
多数据库系统(MDB):在已经存在的数据库系统 (称为局部数据库系统 LDBs) 之上为用户提供一个统一的存取数据的环境
MDB:本地数据管理器(data manager)都 是完备的DBMS;每个本地数据管理器都具有 自己独立的DDL,DML和TM
DDB:只有一个数据管理器和依赖于该管理 器的存在于各局部场地上的组件数据管理器 (component-data-manager)
P2P数据库系统(P2PDBS)
定义:对等型模型,又称P2P模型,面向大范围的多数据资源点的松散耦合
特点:每个点可随时加入和退出,系统具有分散性、可扩展性;以Web上的资源为Peer点,系统部署简单,不需要复杂 的框架部署实现
分布式数据库系统分类
采用分布式数据库的三 个特性(分布性、异构性、自治性)组成的三维空间图 来描述分布式数据库的类型
异构性:系统的各组成单元是否相同,不同为异构,分为数据异构性、数据系统异构性、平台异构性
自治性:由设计自治性、通讯自治性和执行自治性三方面来描述,可分为集中式系统、联邦式 系统(Federated DB)和多数据库系统(Multi DB)
元数据的管理
数据库系统中采用数据字典存储数据库定义、管理等信息;字典信息分全局字典和局部字典, 其组织分两种方式:集中式字典和分布式字典(又分复制式分布和非复制式分布)
分布式大数据库管理系统
体系结构:Master-Slave、P2P环形
基于HDFS的分布式数据库:从GFS(google file system)到HDFS
GFS:主从式架构,定义了三种角色: client, master, chunkserver;master维护所有的元数据,期通过心跳(HeartBeat)消息与chunkserver通信;客户与master的交互只限于对元数据的操作;数据方面的通信都直接和 chunkserver联系
HDFS:取Master-Slave架构,包括 一个NameNode和众多的DataNode;NameNode节点管理整个HDFS的命 名空间和客户端对集群数据的访问;DataNode负责数据的存储和维护;NameNode依赖于每个DataNode 的定期心跳(HeartBeat)消息验证和 更新元数据
Hbase的体系结构:Master-Slave 体系结构,由HBase Master Server 和 HBase Region Server构成的服务器集群;master负责将Region分配 给RegionServer、动态加载或卸载RegionServe等;HRegionServer充当Slave 角色,负责与Client进行交互 和数据的读写操作
三、分布式数据库设计
背景:系统设计中,最基本问题就是数据的分布问题,即如何对分布式数据库进行逻辑划分和实际物理分配。数据的逻辑划分称数据 分片
设计策略:Top-Down和 Bottom-UP,Top-Down: 适于新设计一个数据库系统;Bottom-UP适用于将许多数据库系统集成为一个数据库,数据集成研究。该课程侧重 Top-Down 设计中的关键技术
Top-Down 设计过程:五步递归实现
需求分析流程
概念设计、视图集成、E-R 表示、转换到关系模式
分布设计、数据分片和分配
物理设计
性能调优
分片的定义
定义:对全局数据的划分。划分的结果称为片段,片段是分布式数据库中数据的存储单位。对片段存储场地的指定,称为分配。当片段存储在一个以上场地时,称为数据复制存储。如果每个片段只存储在一个场地,称为数据分割存储
分片的作用:减少网络传输量、增大事务处理的局部性、提高数据的可用性和查询效率、使负载均衡
分片过程:将全局数据进行逻辑划分和实际物理分配的过程。全局数据由分片模式定义分成各个片段数据,各个片段数据由分配模式定义存储在各场地上
GDB全局数据库->FDB片段数据库->PDB物理数据库
分片模式:定义从全局模式到片段模式的映射关系;分配模式:定义从片段模式到物理模式的映射关系
数据逻辑划分和分配问题:哪些数据须分布存放、哪些数据不需要分布存放、哪些 数据需要复制等
分片的原则:完备性、可重构性、不相交性
分片的种类:水平分片、垂直分片、混合分片
分布透明性:分片、分配、局部映射透明性
水平分片
定义:将关系的元组集划分成若干不相交的子集。每个水平片 段由关系中的某个属性上的条件来定义,该属性称为分片属性,该 条件称为分片条件
水平分片的表示:水平分片实际上是关系的选择操作,因此,用选择操作σ表示。选择条件为分片谓词q,则R的片段可表示为 : σq(R)
正确性判断:分片必须遵循完备性、可重构性和不相交性三个原则
垂直分片
定义:将一个关系按属性集合分成不相交的子集 (主关键字除外),属性集合称为分片属性。即垂直分片是 将关系按列纵向以属性组划分成若干片段
垂直分片的表示方法:指定属性集上的投影操作。用投影运算∏表示, 投影属性为分片属性
正确性检验:同水平分片正确性检验一样,也应满足完备性、可重构性和不相交性
设计因素
应用需求:同一垂直片段中的多个属性通常是被同一应用同时访问
设计的核心是根据用户的应用需求如何正确地划分属性组,采用属性紧密度(affinity)来度量属性间的关系
混合分片
定义:是既包括水平分片,又包括垂直分片的分片过程
表示方法:采用直观的图形表示法外,还提供了分片树表示 法
分配设计
定义:全局数据经过分片设计,得到各个划分的片段,片 段到物理场地的存储映射过程称为分配设计
分配类型:非复制分配(分割式分布、全分割式分布库)、复制分配(全复制分配、全复制分布库;部 分复制分配、部分复制分布库)
分配考虑因素
应用角度:增加事务处理的局部性、提高系统的可靠性和可用性、增加系统的并行性
系统角度:降低系统的运行和维护开销、使系统负载均衡、方便一致性维护
一般,如果存在只读查询/更新查询>>1,则定义为复制式分配好些
分配设计原则-具体因素
数据库因素(片段的大小、查询结 果的大小)
应用因素(读频度、更新频度、更新查询需访问的片段、启动场地)
场地因素(场地上存储数据、处理数据的单位代价)
网络通讯因素(网络带宽及网络延迟、场地间的通信代价、传输的数据帧大小)
分配模型
总代价=片段存储代价+查询处理代价
约束条件:响应时间、存储约束、处理约束
数据复制
优势:减少网络负载、提高系统性能、更好地均衡负载
代价:增加了数据一致性的维护代价,如同步数据时,如何有效地解决 冲突
数据复制分类:根据更新传播方式不同,分为同步复制和异步复制、根据参与复制的节点间的关系不同,分为主从复制和对等复制
复制常用方法:基于触发器法、基于日志法、基于时间戳法、基于API 法
分布式文件系统HDFS
简介:适合存储超大文件,将超大文件分割成多个块(block),block大小默认 为64MB,每一个block会在多个数据节点(DataNode)上存储多份副 本,默认是3份。采用一次写入、多次读取的流式数据访问模式
数据在HDFS文件块中的存储模式:NSM(N-ary Storage Model)、DMS (Decomposition Storage Model)、PAX (Partition Attributes Across)
HDFS块中数据存储结构:行存储模式(基于NSM模式)、列存储模式(DSM)、混合存储模式(PAX)
基于SSTable的数据存储结构:SSTable(Static Search Table),其内部提供了一 个不可变映射(MAP),每个SSTable内部包含一系列的数据块和一个数据块索引。优化存储结构-RCFile(Record Columnar File)
LSM-Tree 存储结构:对数据的增量更新暂时保存在内存中,达到指定的存储阈值后将该 批更新批量写入到磁盘、在批量写入的过程中,同已经存在的数据做合并操作、在读取数据时,同样需要合并磁盘中数据和内存中最近修改操作
存储模型:关系模型、键值模型、文档模型
数据分区策略:范围分区、一致性哈希分区
四、分布式查询处理与优化
查询处理基础
优化:寻找执行代价(费用和时间)最小的查询执 行策略
优化目标:局部执行代价和网络传输代价的和最小
局部执行代价:主要指输入/输出次数(I/O代价)及CPU 处理代价
网络传输代价:主要指传输启动代价和数据传输代价
案例:求选修2号课程的学生姓名,用到学生表S和课程表C
三种策略,策略1(S×C后选择两表相等的学生no,和2号)、策略2(S与C自然连接后,选2号)、策略3(S与已筛选2号的C自然连接),分别用时28h、3.4分钟、10s
优化内容:执行运算的次序、执行每种运算的方法、所访问的副本场地
查询转换:用户通过查询语言(通常用SQL语言)来表达全局查询,系统将其转换成等价的关系表达式内部表示(查询树)
数学基础:关系代数、等价变换
查询树:叶子表示关系,中间节点表示运算
查询处理器
影响查询处理效率的因素:网络传输代价(数据量 和延迟等)、局部I/O代价及CPU处理代价等
查询语言(SQL-元组演算语言)、元组演算、域演算
查询处理将查询转换为过程操作来访问数据,高级用户查询->查询处理器->低层数据操作请求,演算公式->查询处理器->关系代数操作
分布查询处理器还需要处理查询分解和数据局部化
集中查询处理器必须:将演算查询转换为代数操作、选择最好的执行计划。对于分布式数据库,查询处理器必须考虑通信代价和选择最佳场地
优化类型:穷举法、启发式;优化时机:静态的– 在编译时进行优化,动态的– 在执行中优化。
查询处理层次:查询分解(将演算查询分解为代数查询)、数据本地化(分布查询映射为片段查询)、全局查询优化、局部查询优化、
查询分解
输入 : 基于全局关系的演算查询
规范化:将查询转换为规范化形式
分析:检查不正确的查询、得到关系演算子集
约简:删除冗余谓词
查询重写:将演算查询转换为关系代数查询、可能得到多种转换结果、使用转换规则
全局优化:基于查询重写准则,根据分配律,将一元运算向下移。得到全局优化后的查询树
数据本地化
查询的处理过程:从全局关系到片段关系,最后 再到实际操作的副本关系
数据本地化:全局查询到片段查询的变换,利用全局关系与其片段关系的等价变换,将分布 查询中的全局关系替换为对片段关系的查询,。对应于片段查询的查询树, 称为片段查询树
片段查询树的生成步骤
将分片树的h(水平)节点转换为查询树的∪(并集)节点
将分片树的v(垂直)节点转换为查询树的∞(联接)节点
用替换后的分片树代替全局查询树中的全局关系,得到片 段查询树
片段查询优化
准则1:对于一元运算,根据一元运算的重复律,将叶子节点之 前的选择运算作用于片段,如果不满足片段的限定条 件,则置为空关系
准则2:对于联接运算的树,若联接条件不满足,则将其置为空关系
准则3:在查询树中,将联接运算(∞)下移到并运算(∪)之 前执行
准则4:消去不影响查询运算的垂直片段
MapReduce框架处理流程
1)把输入文件划分为M份(M由用户定义), 通常每份16MB到64MB,然后启动多个程序副本到集群内其它机器上
2)用户程序的副本中的一个称为master,其余称为worker,worker由master分配任务 ,包括M个Map任务和R个Reduce任务
3)被分配了Map作业的worker,读取对应输入分片的数据,Map从输入数据中抽取出键值 对。
4)缓存的中间键值对会被定期写入本地磁盘,而且通过分区函数被分为R个区,master负责 将信息转发给Reduce
5)Reduce从Map的本地磁盘读取它负责的缓存的中间键值,对它们进行排序,使得相同键 的键值对聚集在一起
6)Reduce遍历排序后的中间键值对,reduce函数产生的输出添加到该分区的输出文件中。
7)当所有的Map和Reduce作业都完成了,master唤醒用户程序,此时,MapReduce函数调用返回到用户程序代码
五、分布式查询的存取优化
基本概念
分布执行过程:从查询场地发出查询命令、从 数据源获取数据、确定最佳的执行场地和返回执行结果的过程,执行场地也称中间结果文件
关系大小=元组数*元组大小
选择不同的执行场地,传输代价差别很大。 应选择最低的传输代价。但组成系统的环境不同,优化的侧重 点也不同
优化是在片段查询的基础上进行的实际物理副本查询操作的优化
查询存取优化内容:确定片段查询需访问的物理副本、确定片段查询表达式操作执行的最优顺序、选择执行每个操作的方法
优化理论基础
代价模型:传输代价(Ccom)、I/O代价(CIO)和CPU代价(Ccpu)
查询模型:主要代价因素-中间关系大小
选择运算、投影运算、连接运算、半连接运算
并、交与差
优化方法
半联接优化方法:通过先在一个表中筛选出那些在另一个表中存在匹配的行,从而减少参与最终连接操作的数据量
枚举法优化技术:嵌套循环连接算法、归并排序连接算法、哈希连接算法、基于索引的连接算法
集中式系统中的查询优化算法:INGRES、System R
分布式查询优化问题:代价模型、大的查询集合、平衡优化代价与执行代价、优化与重优化间隔
分布式查询优化算法:Distributed INGRES、System R*
大数据库的查询处理与优化:键值二级索引、跳跃表
分布式数据库事务/恢复管理、并发/复制概述
六、事务管理
基本概念
事务:由若干个为完成某一任务而逻辑相关的操作组成 的操作序列,是保证数据库正确性的基本逻辑单元
组成:开始标识begin_transaction、数据库操作、结束标识commit或abort
基本性质:ACID,原子性、一致性、隔离性、耐久性
种类:平面事务、嵌套事务
分布式事务 :由一系列分布在多 个场地上执行的数据库操作所组成,分布式数据库应用中的事务,也 称为全局事务,典型的嵌套事务,同样具有 ACID 四个特性
子事务:一个分布式事务在执行时将被分解为若干 个场地上独立执行的操作序列
在分布式事务中,除了要考虑对数据的存取操作序列之外, 还需要涉及大量的通信原语和控制报文
通信原语:负责在进程间 进行数据传送
控制报文:负责协调各子事务操作
实现模型:一个分布式事务所要完成的任务是由分布于各个场地上的 子事务相互协调合作完成的,两种实现模型,进程模型、服务器模型
进程模型:全局事务为每一个子事务在相应的场地上创建一个代理者进程执行该场地上的有关操作,再启动一个协调者进程,进 行代理者进程间的通讯,控制和协调
服务器模型:在事务的每个执行场地上创建一个服务器进程,用于执行发生在该场地上的所有子事务
分布式事务管理的目标:使事务的执行具有较高的执行效率,具有较高的 可靠性和并发性
分布式事务的提交协议
分布式数据库中的全局事务由被分解为在各个场地上执行的子事务所组成,只有当各个场地上的子事务都正确执行后, 全局事务才可以提交
协调者:是协调者进程的执行方,即根代理;参与者:是代理者进程的执行方,即子代理;协调者和参与者都有本地日志,以进行 事务故障恢复和系统故障恢复
两阶段提交协议:简称 2PC,包括决定阶段和执行阶段
决定阶段:有协调者发送预提交命令,然后等待参与者的应答。如果所有的参与者都返回ready,提交
执行阶段:协调者把在决定阶段做出的决定发送给参与者。如果协调者向各个参与者发“提交”命 令,各个参与者执行提交,执行完毕后都要向协调者返回“确认”,执行结束
分布式事务执行的控制模型:主从控制模型、三角控制模、层次控制模型
实现模型:代理层、DTM 层、LTM 层
局部事务管理器(LTM)、局布式事务管理器(DTM)
两段提交协议(2PC)的实现方法 :集中式2PC、 分布式2PC 、分层式2PC 、线形2PC
非阻塞分布式事务提交协议
两阶段提交协议存在的问题:议执行的过程出现协调者故障或网络故障,在故障恢复前,参与者子事务所占有的系统资源也不能被释放,参与者的子事 务进入了阻塞状态
三段提交协议 (3PC) ,在一定程度上减少了事务阻塞的发生,提高了系统效率
基本思想:投票表决阶段、准备提交阶段、执行阶段
参与者的四个状态:“赞成提交”、“准备就绪”、“提交”和“废弃”
大数据库的事务管理
大数据库系统是对关系型 SQL 数据系统的 补充,是一种分布式、不保证遵循 特性的数据库设计模式
解决如下问题:高并发读写的需求、高可用性和高可扩展性的需求、高效率读写的需求
CAP 理论和BASE理论是大数据库系统设计的基石
CAP 理论:一致性、可用性、分区容忍性
BASE理论:基本可用、软状态/柔性状态、最终一致性
七、恢复管理
分布式恢复概述
数据库系统的可恢复性和高可靠性是保证各 种应用正确而可靠地运行所不可缺少的重要组成部分
可恢复性:提供恢复措施,把数据库系统从故障 状态恢复到一个已知的正确状态
高可靠性:尽量将崩溃后数据库的不可用的时间 减少到最低,并保证事务的原子性和耐久性
故障的三种形式:故障(Fault)、错误(Error)、失效(Failure)
故障模型:事务内部的故障、系统故障、存储介质故障、通信故障
数据库恢复管理器依据数据库日 志文件(log)对数据库事务进行恢复操作
恢复模型:日志文件的格式和内容、反做(undo)和重做(redo)恢复策略、故障恢复模型
集中式数据库的故障恢复
局部恢复系统的体系结构:数据库存储在永久性的外存设备上,数据库缓冲区用来存放最近执行的 事务所使用的数据,数据库缓冲区管理器负责读写数据 库及缓冲区中的数据
局部恢复管理器与缓冲区管理器之间存在两个交互接口:读取数据页(fetch)和 刷新数据页(flush)。
数据的更新策略:原地更新、异地更新(影子页面和差分文件)
缓冲区的更新策略:有固定/非固定(fix/non_fix)和刷新/非刷新(flush/no_flush)
不同的缓冲区更新策略
fix/flush:不需做任何恢复操作
fix/no_flush:已提交的事务进行重做(redo)处理
no_fix/flush:对未提交事务全部做反做(undo)处理
no_fix/no_flush:重做表和反做表、undo表、redo表
分布式事务的故障恢复
发生在各场地内部的故障称为场地故障,发生在场地间通信过程中的故障称为通信故障
通信故障有两种:报文丢失和网络分割
分布式可靠性协议:可靠性、可用性
大数据的恢复管理:支持自适应的故障检测、支持与传统恢复管理策略的兼容性、支持系统的高可用性
大数据库系统中的故障类型:事务内部的故障,系统故障,存储介质故障,通信故障
大数据库系统的故障检测技术:基于心跳机制、租约机制、Gossip协议
大数据库系统的容错技术:基于事务、基于冗余(以强一致性为目标、以最终一致性为目标)
八、并发控制
基本概念
并发:多个事务的同时执行, 并发能够提高系统的效率,但也可能会带来三种错误(丢失修改、不能重复读、读脏数据)
并发控制目的:保证事务的一致性 和隔离性,最终保证数据的一致性
并发控制:利用正确的方式调度事务中所 涉及的并发操作序列,避免造成数据的不一 致性;防止一个事务的执行受到其它事务的 干扰,保证事务并发执行的可串行性
并发控制理论基础 :通常以串行化理论来检验并发控制方法的正确性
基于锁的并发控制方法 :事务在对某一数据项操作之前,必须先申请 对该数据项加锁,申请成功后才可以对该数据项进行操 作
两段封锁协议 :数据库系统中解决并发控 制的重要方法之一,保证事务的可串行性调度,将事务中的加锁操作和解锁操作分两阶段完成
分布式数据库并发控制方法:基于锁的并发控制方法、时间戳方法、乐观方法等
分布式死锁管理 :死锁等待图、集中式死锁检测、层次死锁检测、分布式死锁检测
九、数据复制与一致性
数据复制作用
为满足可靠性和可用性,分布式数据库系统中的数据 往往使用多个副本(拷贝),这些副本存储于不同的节点
数据不一致问题:在读写操作映射过程中,由于复制协议涉及到更新的时机、内容、系统的体系结构等, 可能引起多个物理副本不一致
数据复制一致性模型:强一致性、 弱一致性、最终一致性
分布式数据库复制策略:同步复制、异步复制;实现方法:数据对象复制、事务复制;体系结构:主从式、对等式、级联式
数据复制协议 :主从复制协议和对等式复制协议
大数据库一致性协议 :Paxos协议、反熵协议、时钟向量技术
大数据库复制一致性管理:基于Paxos的复制管理技术
参考资料
人大-分布与平行数据库
于戈等,分布式数据库系统:大数据时代新型数据库技术(第2版)