双重数据库的维护

【双重数据库的维护】本RFC文档讨论在一个类似ARPANET的网络上维护双重数据库的问题 。它简明地提
出了双重数据库的问题 , 并且具体描述了某一特定类型的双重数据库的解决方法 。这些概念
用来设计用于TIP用户认证和账户系统的用户标识数据库 。我们相信这些概念对一般分布式
数据库问题也是适用的 。
介绍
有许多的动机来维护数据库在分布式数据库网络环境下的冗余的双重拷贝 。其中的两个
重要的动机如下:
--增加数据存取的可靠性
在冗余维护方法下 , 要害数据的存取必然会增加 。用于TIP登陆和账号治理的数据库通
过冗余分布来获得高可靠性 。
--确保数据存取的效率
数据当离存取过程很近时 , 能够快速高效的存取 。用于TIP用户标识数据库在支持TIP
登陆服务的每一个站点都保存一份拷贝能够确保快速高效的存取 。(可靠性考虑表明这个数
据库是冗余的 , 高效性考虑表明在每个许可的站点都存有一份拷贝 。)
冗余的双重数据库系统的设计是一个带有挑战性的工作 , 因为需要处理在数据库拷贝之
间相互通信的延迟 , 现实世界中系统发生意外的局限 , 错误的操作 , 通信的失败 , 等等问题 。
本文将讨论我们在设计这样一个系统的时候碰到的一些问题 , 和描述如何设计一个特定类型
的数据库系统来解决这些问题 。
模型
一个支持双重拷贝的数据库系统可以借助于一群独立的数据库治理处理器(DBMPs) , 每
个处理器保存它自己的数据库拷贝这种方式来进行模拟 。这些处理器在网络通道上相互通
信 。每个处理器DBMP对属于它的数据库拷贝完全控制 , 处理所有的用于响应其它处理器
的数据库存取和修改操作 。虽然处理器DBMP只是对请求进行处理 , 但是随后我们经常可
以看到它们实际上是引起修改操作的 。
一个重要的设计问题就是要考虑在处理器DBMP之间的通信通道发生错误 。因而 , 一
个处理器DBMP可以使得它和其它的处理器DBMP之间的交互中断 , 或者必须等待直到它
和其它的处理器DBMP通信的通道重新建立才能进行通信 。本文对通信通道作了一个假设 ,
即从一个处理器的信息以发送顺序相同的顺序传递到另一个过程:ARPANET满足这个条
件 , 对于没有这种保证的网络 , 可以利用在处理器DBMP之间的通信协议来正确地排列信
息 。
为了进一步讨论 , 有必要确定双重数据库和对其进行的操作的性质 。一个极端是 , 对于
一个稳定的只读的数据库则处理器DBMP的任务比较简单 , 它们简单地响应数值的搜索请
求 。另一个极端是 , 一个共享的数据库答应处理例如X:=f(X,Y,Z)函数的修改请求 , 且/或
有必要在进行修改时对存取入口完全限制 。在这种情况下 , 在单机系统上所有的数据库共享
问题都出现了(例如 , 需要同步机制 , 潜在的死锁问题) , 同样在独立的计算机上分别有多
个数据库拷贝的问题也出现了 。例如 , 一个一般的系统必须处理通信失败而导致网络分割成
两个或多个子网的可能性;同步修改时依靠锁住数据库单元的解决方法必须处理在没有通信
的子网中的处理器试图锁住同一个单元的可能性 , 或者它们都可以这样做 , (但这违反锁定
规则) , 或者它们必须等待直到分割结束(但这可能花很长时间) , 或者使用集中或分层控制
(但这导致一些处理器DBMP在修改和存取数据时对其它处理器DBMP的依靠性) 。

推荐阅读