因为分布式数据库克服了集中式数据库的许多缺点,而且天然地适应于许多单位地理上分散而逻辑上统一的组织结构,所以,20多年以来从理论到实践都获得了迅速发展,并取得了决定性成果。程序员
分布式数据库结构算法
分布式数据库的典型定义是:分布式数据库是一个数据集合,这些数据在逻辑上属于同一个系统,但物理上却分散在计算机网络的若干站点上,而且要求网络的每一个站点具备自治的处理能力,能执行本地的应用。每一个站点的计算机还至少参与一个全局应用的执行。数据库
所谓全局应用,要求使用通信子系统在几个站点存取数据。这个定义强调了分布式数据库的两个重要特色:分布性和逻辑相关性。安全
图1给出了典型的分布式数据库系统(DDBS)的物理结构。其中在不一样地域的3台计算机分别控制本地数据库及各终端用户T;每台计算机及其本地数据库组成了此分布式数据库的一个站点,各站点用通信网络链接起来,能够是局域网或广域网。网络
图1 DDBS的物理结构图并发
图2给出了分布式数据库的逻辑结构。其中,DDBMS是分布式数据库管理系统,用来支持分布式数据库的创建和维护。LDBMS是局部数据库管理系统,也就是一般的集中式数据库管理系统,用来管理本站的数据。分布式
图2 DDBS的逻辑结构优化
DDBS的工做原理计算机网络
DDBMS是分布式数据库系统的核心部分,就其性质可分为匀质和异质两种。若每一个站点的LDBMS相同,则是匀质的;若至少有两个LDBMS不一样,则是异质的。翻译
异质DDBMS要在不一样LDBMS的不一样数据模型间进行转换,于是比匀质DDBMS更复杂。通常来讲,若从头开始研制一个DDBS,则选择匀质较方便,且一般都选用关系模型。这是因为关系模型易于分布管理,但若DDBS是创建在已有的若干数据库之上,则这些数据库极可能有的是基于关系模型的,有的是基于层次或网络模型的,即它们是不一样质的,所以要创建异质的DDBMS。
图3给出了分布式数据库管理系统DDBMS的工做原理的参考模型。
图3 DDBMS工做原理参考模型
用户处理器根据外模式和概念模式把用户命令翻译成格式更适合于机器的规范化命令,并实施完整性约束,同时它负责将规范化格式的数据转换成用户结果格式。
数据处理器根据概念模式和内模式选择通向物理数据的最优或近乎最优的访问路径,用规范化命令翻译成物理命令,并发执行物理命令,并送回结果。它还负责将物理数据转换成规范化数据。 这一部分功能一般由LDBMS完成。
全局数据库控制和通信系统的组成如图4所示。分解器根据分布模式负责未来自用户处理器的规范化命令翻译成一个分布执行策略,指明各数据处理器应完成的命令。分布式执行监测器负责分布策略的正确执行以及保证分布环境中事务的原子性。通信子系统负责在网络的各计算面站点问传输命令和数据。局部执行监视器负责监视执行分布策略中的本地部分。合并器把来自几个数据处理器的结果组合起来,造成最终结果。
图4 DDB控制和通信系统的组成
此参考模型支持了DDBMS的4个特性:响应时间快和费用低,结构独立性,位置独立性以及并发和重复的独立性。
各站点计算机的自治程度也是分布式数据库系统的一个重要特性。它与分解器和分布执行监视器所处的位置密切相关。若分解器和分布式执行监视器处在外部模式以上,这时分布模式实际只存在于程序员的脑海之中,是一种由程序员来联系的系统。若它们处在外部模式如下概念模式以上,则是联邦式DBMS。若它们处在概念模式如下内部模式以上(如图3),则称为紧耦合的分布式DBMS。若它们在内模式如下,则是集中式DBMS的体系结构。分解器和分布式执行监视器所处的位置越往下,站点的自治能力越弱。
DDBMS技术
图5给出了DDB的参考体系结构。分布式数据库设计包括外模式、全局模式、分段模式、分配模式和各站点内模式的定义。
图5 DDB的参考体系结构
设计应考虑到下述目标:提升处理的本地性以提升响应速度和下降处理成本;提升数据的可用性和可靠性;合理地分布工做负荷以提升并行处理的能力等。
将关系分段的方法有水平分段(叉分简单水平分段和诱导水平分段),垂直分段和混合分段。设计分段时应该遵照完整性约束规则,重构性条件规则和不相交性条件规则。
复制副本的方法能够提升数据的可用性和可靠性以及处理的局部性。但对副本要加以控制,使得对用户是透明的,即对用户来讲好象只存在一个副本同样。通常来讲,查询只需对一个副本进行;而更新则要对全部副本进行,这使得更新的算法变得复杂。
目录管理
分布式数据库的目录中存放了系统为保证正确而有效地访问数据而要使用的所有信息。通常应包括各级模式的描述、访问方法的描述、关于数据库的统计数据和一致性信息等。系统根据这些信息将用户查询转换为物理数据库上的查询,并进行查询优化选择一条最佳的存取路径,进行事务管理,进行安全性和完整性检查等。
目录的管理有多种方式。最基本的3种方式是:集中式目录,只有一个站点存放目录;全复制目录,每一个站点都存放目录;局部目录,每一个站点只含有本地数据库的目录。能够把目录自己做为一个特殊的系统库来对待,则对它也有检索、更新、并发控制等访问和维护问题。
查询处理及其优化
这是分布式数据库的主要技术问题之一。相应于图5的DDB参考体系结构,图6给出了分布式查询处理模型。
图6 分布式查询处理模型
分布式查询处理负责将用户查询转换为各站点上的物理查询,并负责合并各子查询结果以获得最后结果。
查询的效率问题是个关键。所以对用户查询程序应加以优化,寻找一种使查询费用最少的执行策略,这个费用等于传输费用和局部费用之和。有时局部费用相对于传输费用能够忽略不计,如大型广域网联接的系统。但在高速的局域网中,局部费用也必须考虑。
分布式并发控制技术
事务是一个应用或一个应用的一部分,它是数据库的一致性单位,即在事务的执行先后数据库都必须是一致的。分布事务管理必须保证事务具备原子性、持久性、可串行性和隔离性。在大多数系统中是这样获得的,即在现有的本地事务管理程序上面用两阶段托付协议来得到可靠性,用两阶段锁定来进行并发控制,以及用超时来解决死锁检测。
两阶段托付协议确保同一事务的子事务所有托付或所有终止,无论有无发生故障;两阶段托付在不丢失运行记录信息的状况下可从任何故障恢复。两阶段锁定机构要求所有子事务在生长阶段得到锁定而在收缩阶段释放锁定。用于死锁检测的超时机构在那些事务可能因死锁而等待时简单地使它们终止。
并发控制是分布式事务管理的基本任务之一,其目的是保证分布式数据库系统中多个事务的并发、高效、正确执行。并发控制用来保证事务的可串行性,即事务的并发执行等价于它们按某种次序的串行执行,从而为用户提供了并发透明性。
目前已提出了大量的并发控制方法,最基本的有封锁方法、时间印方法和乐观方法等。时间印方法和乐观方法理论上研究得较多,大多数原型DDBMS和商品化DDBMS采用二段锁方法。
封锁法
对于因为共享而产生的冲突,通常可采用封锁技术。即在对数据操做以前,先向并发控制机构提出封锁申请,若是不与其余事务发生冲突,申请被批准,系统对数据加上锁标志;不然令其等待,直至其余事务释放对此数据的封锁。
封锁方法中的一个重要问题是封锁粒度的选择。理想的状况是只封锁与操做有关的数据集,一般称为完整性相关域。为了保持数据完整性,至少应封锁完整性相关域中的数据,从而使其中任何施加于现有数据集合的操做所影响的数据都置于封锁之中。封锁分为读锁和写锁,也称共享锁和排它锁。当事务出现冲突操做时,经过加锁原则及锁的相容性机制实现。
冲突操做的可串行化调度:当数据共享时,事务并行执行;当数据排它时事务串行执行。使用锁模型实现并发的最著名的算法是两段锁协议。其基本方法是任何事务对数据项操做以前先加锁。加锁的方法是,在事务中的所有加锁操做在第一次解锁操做前完成。锁方式中要进行死锁消除、预防、检测处理。在集中式数据库管理系统中经过两段锁协议能够破坏死锁的造成条件,以保证事务调度的正确性。
可是,在分布式数据库管理系统中,要对各自分散而又有共享要求的数据进行集中统一的管理,并用统一的描述使分散在各地的应用数据在用户看来全局统一在一个数据库中,这给事务的并发控制提出了更高要求。
在分布式环境下,若是在分布式数据库系统中没有重复存储的数据,可使用分布式锁技术。其实现方法是,对每一个结点保留一个局部锁管理器,处理对存储在本地的数据加锁和释放锁的请求。当分布式数据库系统中有多处重复存储的数据时,可采用集中式锁技术,即仅有一个锁管理器,该管理器放在唯一一个结点上,全部的加锁和释放锁的请求都在该结点上处理。此外,在分布式环境下的锁方法,还有混合锁技术、主副本锁协议等。
封锁法实现了一种并发控制,能够知足通常数据库应用对并发控制的要求,可是也有自身的缺点,那就是开销大。事务加锁都有必定的开销,还会下降事务的并发性。以锁为基础的并发控制算法在实际DDBMS中应用较为普遍,例如,在Oracle系统中并发控制的实现就是采用锁方法。
时间印法
所谓时间印法就是在每一个事务启动运行时,并发控制机制赋予其唯一一个时间印(一般为事务的启动时间),以实现多事务的可串行性。后继事务有较大的时间印,事务的时间印一直保持到事务结束。
此外,每一个数据实体都有时间印,分为读时间印和写时间印。读时间印即数据上一次被读出的时间,写时间印即数据最近被写入的时间。只有当时间印比数据项上的时间印大或者至关的事务才能执行对数据的操做并在操做完成后置数据项的时间印为事务和数据项时间印的最大值,不然拒绝令操做重启。这种方法使事务的并行等价于特定的串行序列,即按时间印递增的序列,通常不会产生死锁。
在分布式环境下,若是可以解决全部事务生成唯一时间印的策略,集中式时间印技术就能够直接应用于分布式数据库管理系统。实际上,在分布式策略中,每一个结点都使用本地的逻辑计数器或时钟产生局部的时间印,全局的时间印经过在局部的时间印前加上各结点的标识符来得到,这样得到的时间印是唯一的,如图7所示。
图7 产生唯一时间印的分布策略
唯一时间印
采用时间印的并行控制算法主要有两种:基本时间印法和保守时间印法。主要缺点是使事务从新启动的次数较多。为解决这个问题,提出保守时间印法,该方法的主要特色是不会拒绝任何操做,从而不会重启事务。
处理方法是当出现冲突操做时,把年轻的缓冲起来,等待年老的操做执行完成后再执行被缓冲起来的操做。这就须要肯定什么时候全部的事务操做均已执行完。但这可能引起死锁的状况,也可能出现某一场地被阻断的状况。事实上,避免死锁的唯一方法是超时后发送一个空操做。
在分布式数据库管理系统中,数据的可用性和可靠性从某种角度看是矛盾的。对于可用性和可靠性要求较高的应用,能够采用封锁和时间印相结合的方法,能够避免错误、避免死锁,必要时要考虑采用容错和重构技术来提升可靠性。