第 14章 分布式数据库与分布数据管理
?什么是分布式数据库?
?分布式数据库的数据分布方式
?分布式数据库的特点和目标
?SQL Server的分布数据管理
什么是分布式数据库?
? 分布式数据库是一个物理上分布于计算机
网络的不同地点、而逻辑上又属于同一系
统的数据集合。网络上每个地点的数据库
都有自治能力,能够完成局部应用;同时
每个地点的数据库又属于整个系统,通过
网络也可以完成全局应用。
分布式数据库的示意图
分散式数据库和分布式数据库
分布式数据库的特点
? 数据的物理分布性
? 数据的逻辑整体性
? 数据的分布透明性
? 场地自治和协调工作
? 数据冗余
分布式数据库的数据分布方式
? 集中式,即所有数据安排在一台服务器上,这是
一种特殊情况,实质上是集中数据库管理方式。
? 分割式,即将全部数据分割成若干部分,分别存
放在若干场地的计算机上,或者说是将一个整体
数据库分成若干子集,每个子集放在一个数据库
服务器上。
? 复制式,即将一个数据库复制多个副本,在每个
数据库服务器上都有一个完整的数据库副本。
? 混合式,即分割式与复制式的混合。
数据分片
? 水平分片,即通过关系代数的选择操作,按一定
的条件将全局关系划分成若干个子集,每个子集
可以看作是一个数据分片。
? 垂直分片,即通过关系代数的投影操作将关系按
属性划分成若干个子集,同样,每个子集也可以
看作是一个数据分片。
? 混合型分片,即先按水平分片再按垂直分片,或
先按垂直分片再按水平分片,依此种方法可以将
一个全局关系划分成若干子集,或从一个全局关
系划分出若干子集。
分布式数据库的特点和目标
? 本地自治 ( local autonomy)
? 不依赖中心场地 ( no reliance on a central site)
? 可连续操作性 ( continuous operation)
? 位置独立性 ( location independence)
? 分片独立性 ( fragmentation independence)
? 复制独立性 ( replication independence)
? 分布式查询处理 ( distributed query processing)
? 分布式事务管理 ( distributed transaction management)
? 硬件独立性 ( hardware independence)
? 操作系统独立性 ( operating system independence)
? 网络独立性 ( network independence)
? DBMS独立性 ( DBMS independence)
本地自治
? 即分布式系统中的每个场地的系统都是一
个独立、可以自治的系统,可以独立完成
本地的操作 —— 即使其他场地的计算机发
生死机也不受影响。本地自治还意味着本
地数据都是本地拥有和管理的,包括数据
的安全性、完整性和存储形式等等都在本
地的控制和管辖之下。
不依赖中心场地
? 不依赖中心场地和本地自治实际是相类似
的目标。本地自治本身就意味着不过分依
赖其他场地,意味着所有场地是“平等”
的。反之,依赖中心场地则意味着非中心
场地不能自治。
可连续操作性
? 可连续操作性意味着分布式系统可以提供
更高的可用性和可靠性,这个目标得益于
前两个目标:
? 可靠性:某个场地出现故障不会影响整个系统
的连续操作(可能降低了应用水平)。
? 可用性:分布式系统具有数据复制的功能,所
以某个场地的故障可能对整个系统的连续操作
没有任何影响。
位置独立性
? 位置独立性也称作位置透明性,即用户不
需要知道数据物理存储在什么位置。对用
户来讲,分布式系统中的所有数据都“逻
辑存储在本地”。位置独立性简化了用户
程序和终端的操作,即便存储的数据在场
地之间物理迁移也不会影响用户程序和终
端的正常操作。
分片独立性
? 分片独立性和位置独立性的目标是一致的。
分片独立性使用户感到数据就像没有被分
片,由系统来确定所访问的分片存储在什
么地方。实际上,分片独立性意味着用户
将使用一个视图,这个视图中的数据是各
个分片通过适当的连接和集合的并操作逻
辑地组合在一起。
复制独立性
? 复制独立性的含义是用户并没有感觉到复
制的存在,用户访问的是哪个副本是由系
统确定的,这意味着即便某个场地的副本
被损坏了,也不会影响系统的操作。
更新传播
? 复制独立性带来的主要问题是更新传播,即如果
一个复制的副本更新了,则所有的副本都必须得
到同步的更新。解决更新传播问题的常用方法是:
? 将复制的副本分为主副本和从副本,被复制的对象有
一个被指定为主副本,其他均为从副本;
? 不同数据对象的主副本存储在不同的场地;
? 更新总是首先作用在主副本上;
? 一旦完成了对主副本的更新,则由主副本所在的场地
负责将更新传播到所有从副本上;
? 为了保证事务的 ACID性质,只有所有的副本都完成
了更新,事务才算完成。
分布式查询处理
? 用户可能在一个场地提出查询要求,而所
要求查询的数据存储在另一个场地。一个
分布式系统可能含有分片式分布和复制式
分布,系统应该找到一个最优的途径、以
最优的方式完成分布式查询处理。
? 影响分布式查询效率的主要因素是网络的
数据传输速度,所以分布式查询优化的一
个目标就是降低网络数据的传输数量。
目录表管理
分布式事务管理
? 事务管理主要包括并发控制和恢复控制两
个方面,在分布式系统中它们将更复杂。
? 在分布式系统中,一个事务可能会操作不
同场地的数据。为此在分布式事务管理中
引入了一个代理的概念,所谓代理是指在
一个场地代表一个事务执行的进程。
硬件独立性
? 所谓硬件独立性是指不同场地的计算机不
必是一样的,有些场地使用 IBM的机器,
另外一些场地则可以使用联想的机器等。
操作系统独立性
? 每个场地不必使用统一的操作系统,有些
场地可能使用 Windows 2000/NT,而另
外一些场地可以使用 Unix等。
网络独立性
? 一个系统支持多个场地,这些场地可以使
用不同的计算机硬件、运行不同的操作系
统,当然也可以支持不同的网络通讯系统。
DBMS独立性
? 不同的场地可以在不同的计算机上运行不
同的数据库管理系统,也就是说分布式系
统还应该支持 DBMS独立性。
SQL Server的分布数据管理
? SQL Server提供了复制式分布策略的功
能来支持分布数据的管理,通过服务器之
间的数据复制来实现数据的分布式管理。
复制技术
? SQL Server专门用于分布式数据管理的
是复制( Replication) 技术。为了方便理
解数据复制技术的概念和过程,在 SQL
Server中使用了出版 —— 发行 —— 订阅这
样的术语。 SQL Server通过数据出版产
生数据的副本,通过数据发行传送数据的
副本,通过订阅获得数据的副本。
基于事务的复制
? 显然不可能在每次数据更新时都传送数据
的副本,这样的开销太大了。所以,SQL
Server提供了基于事务的复制,即在复制
的开始传送一次副本,使相关数据库服务
器上的数据同步,然后通过传送和执行事
务使分布的数据保持一致。
紧凑一致和松散一致
? 紧凑一致( tight consistency) —— 保证所有的拷
贝与源数据内容在任何时刻都完全一致
? 松散一致( loose consistency) —— 允许在源数据
的改变与目标数据的更新之间有一个时间延迟
两阶段提交
? 所谓两阶段提交就是在多个数据库上连续
地修改同一数据库的副本,如果在一个服
务器上事务提交失败了,则已经提交事务
的也必须撤消事务(第一阶段);只有所
有的数据库的(第一阶段)事务提交都成
功了,才最后确认事务成功(第二阶段)。
复制的过程
? 在复制开始之前,首先将要分布在各个服务器上
的共享数据制作一个相同的副本,并把它存放在
各个服务器上,我们把这个过程称作同步。在此
之后复制开始,复制拷贝的不是数据,而是影响
数据的事务。事务是从数据库的事务日志中记录
下来的,被标明用作复制。这些事务随后会被拷
贝到目标数据库(不在一台服务器上),并作用
于目标数据库。如果目标数据库开始就与源数据
库的数据相同,那么在拷贝的事务发挥作用之后,
两个数据库中的数据就应该完全相同。这就是复
制的概念。
出版、订阅和发行
? 在 SQL Server的复制技术中,使用出版
( Publication),发行( Distribution)
和订阅( Subscription) 这样的术语。由
此也就有了出版数据库、发行数据库、订
阅数据库以及出版服务器、发行服务器和
订阅服务器的概念。
? 复制的源数据就是出版数据,而目标数据
就是订阅数据,从源数据到目标数据的过
程则是发行。
出版服务器与出版物
? 出版服务器可以定义为存放被复制数据的
源服务器。在一个出版服务器上可以有一
个或多个出版数据库作为数据源。在一个
出版数据库中可以建立一个或多个出版物,
每个出版物由若干文章( Article) 构成。
一“篇”文章是根据一个表进行选择、投
影或选择和投影的混合运算产生的结果。
订阅服务器
? 订阅服务器与出版服务器相对应,是存放
复制数据的目标服务器。在订阅服务器上
有订阅数据库,它从一个或多个服务器上
订阅出版物。
发行服务器
? 发行服务器扮演的是“存储和转发”的角
色,在发行服务器上有发行数据库,它存
储来自出版服务器的出版数据,并将这些
数据转发到订阅服务器。发行数据库只在
复制时使用,不包含任何用户表。它的内
容是由出版数据库提供的。
出版与订阅
? 从出版的角度,可以选择垂直分片出版、
水平分片出版或混合分片出版。从订阅的
角度,可以选择垂直分片订阅、水平分片
订阅或混合分片订阅。即可以根据实际情
况来选择复制的数据集。
推订阅和拉订阅
? 订阅的行为可以发生在出版服务器上,也
可以发生在订阅服务器上。
? 当订阅行为发生在出版服务器时称为推订
阅。
? 当订阅行为发生在订阅服务器时称为拉订
阅。
复制模型 1
复制模型 2
复制模型 3
复制模型 4
复制的类型
? SQL Server用于分布式应用的复制类型
有 快照复制, 事务复制 和 合并复制 。快照
复制是事务复制和合并复制的基础。快照
复制也可以单独使用。
快照复制
? 快照复制可以简单的理解为将某一时刻的
数据的副本传送到订阅服务器上。快照复
制是特定时刻的拷贝,它不监视对数据的
更新。
如下情况可以使用快照复制
? 主要是静态数据,不经常更改;当数据确
实发生更改时,将一个完全新的副本传送
到订阅服务器。
? 一个时期内允许有已过时的数据复本。
? 复制少量数据(在整个数据刷新为合理的
情况下)。
快照复制是通过 快照代理程序 和 发行代理程序 实现的
? 快照代理程
序将根据出
版数据库创
建模式和数
据文件,并
将它们存储
在快照文件
夹中,然后
由发行代理
程序将它们
传送到订阅
服务器。
快照代理程序的执行步骤:
? 建立从发行服务器到出版服务器的连接,并在出版所包
含的所有表上设置共享锁,以保证数据快照的一致性。
这些共享锁将阻止所有其他用户更新这些表。
? 建立从出版服务器到发行服务器的连接,并将每个项目
的表模式等复制到特定的文件 。
? 在出版服务器上复制已出版表中的数据,并将这些数据
写入快照文件夹。
? 向发行数据库的有关目录表追加行(指出同步集位置的
命令,以及引用订阅服务器同步任务的命令)。
? 释放所有已出版表的共享锁,完成日志表的写入。
发行代理程序的执行步骤:
? 建立从代理程序所在服务器到发行服务器的连接,
如果是推订阅,发行代理程序通常在发行服务器
上运行,如果是拉订阅,发行代理程序通常在订
阅服务器上运行。
? 检查发行服务器上发行数据库中的相关目录表,
代理程序从中读取同步集的位置和订阅服务器的
同步命令。
? 将读到的结果应用到订阅数据库。
事务复制
? 在订阅服务器上应用快照复制后,使得在多台计
算机上有了同一数据的副本,这一过程也可以称
为初始同步。以后则可以通过事务复制使得分布
式数据库中的各个复制副本保持一致。
? 事务复制用事务日志捕获已出版数据中发生的修
改,即监视 INSERT,UPDATE和 DELETE语句
或其它数据修改,并将这些修改存储到发行数据
库中,然后再将这些修改传播到订阅服务器上。
? 当出版服务器的数据更改希望及时传播到订阅服
务器上时应该使用事务复制。
事务复制
? 事务复制是
由快照代理
程序、日志
读取器代理
程序和发行
代理程序实
现的。
快照代理程序准备快照文件,其中包含了已出版表和数据库对象的模式和数
据,然后将这些文件存储在快照文件夹中,并在发行服务器上的发行数据库中记
录同步作业。
日志读取器代理程序监视已为事务复制配置的每个数据库的事务日志,并将
已设复制标记的事务从事务日志复制到发行数据库中。
发行代理程序将保存在发行数据库表中的事务和初始快照作业
移动到订阅服务器上。
事务复制
? 日志读取器代理程序监视源数据库的事务日志,
该事务日志记载了对出版表的修改,当一个事务
发生在出版的表上时,就被“刻上”复制标志,
并最终被送到订阅服务器,订阅服务器根据这些
事务日志来更新订阅的表。
? 在出版服务器和订阅服务器之间建立复制关系以
后,复制是自动的,不需要人工干涉。只要有事
务提交,就会使出版表和目标表都被更新,只不
过出版表和目标表的更新会有一段时间延迟。这
是因为要经过日志阅读过程和发行过程才能把事
务传送到订阅服务器。
合并复制
? 合并复制使许多不同的站点可以自主工作,然后在稍晚
的适当时候再将更新合并成一个统一的结果。
? 为此,需要首先在订阅服务器上应用初始快照,然后
SQL Server在出版服务器上和订阅服务器上跟踪已出版
数据的更改。数据或是连续地、或是按调度时间或是按
需在服务器之间同步。
? 由于更新是在多个服务器上进行的,所以同一数据可能
由出版服务器或者由多个订阅服务器进行了更新。于是,
合并更新时就可能出现冲突。当冲突发生时,合并代理
程序唤醒调用一个冲突解决程序,并决定接受哪个站点
的更新。
当有如下应用需求时应该使用合并复制
? 多个订阅服务器需要在不同时刻更新数据
并将这些更改传播到出版服务器和其它订
阅服务器。
? 订阅服务器需要接收数据,脱机更改数据,
然后将更改同步到出版服务器和其它订阅
服务器。
合并复制
? 合并复制是由快照代理程序和合并代理程序实现的。
? 快照代理程序准备快照文件,其中包含已出版表的模式
和数据,然后将这些文件存储在快照文件夹中,并在出
版数据库中插入同步作业。
? 合并复制代理程序将保存在出版数据库表中的初始快照
作业应用到订阅服务器上。该代理程序也合并那些创建
初始快照之后在出版服务器或订阅服务器上发生的增量
数据更改,并根据配置的规则或者使用创建的自定义冲
突解决程序协调冲突。
合并复制的过程
一旦在订阅服务
器上应用了快照复制,
SQL Server即开始跟
踪在出版服务器和订
阅服务器上执行的
INSERT,UPDATE和
DELETE语句,并将参
与合并复制的每个表
的更新操作都记录在
特定的系统表中(不
管出版服务器和订阅
服务器当时是否建立
了连接)。
当出版服务器和订阅服务器建立连接、并运行合并代理程序时,合并代理程
序将所有未提交的行更改收集到一个或多个组中,并依据指定的策略协调更新冲
突,最后将合并的结果传播到有关的服务器上(数据从更改发生处流向需要更新
或同步处理的站点)。
【本章小节】 勇于探索 ……
本章介绍了分布式
数据库的一般概念以
及分布式数据库的目
标,并且以 SQL
Server作为实例介绍
了在一个具体的数据
库管理系统上实现分
布数据管理的一般技
术和方法。