📜  分布式DBMS-复制控制

📅  最后修改于: 2021-01-07 05:30:19             🧑  作者: Mango


本章介绍复制控制,这是维护所有站点中一致的数据所必需的。我们将研究复制控制技术和复制控制所需的算法。

如前所述,复制是一种在分布式数据库中用于在不同站点存储数据表的多个副本的技术。在多个站点中具有多个副本的问题是维护数据一致性的开销,尤其是在更新操作期间。

为了在所有站点中保持相互一致的数据,需要采用复制控制技术。复制控制有两种方法,即-

  • 同步复制控制
  • 异步复制控制

同步复制控制

在同步复制方法中,数据库是同步的,因此所有复制始终具有相同的值。请求数据项的事务将有权访问所有站点中的相同值。为了确保这种一致性,扩展了更新数据项的事务,以便在数据项的所有副本中进行更新。通常,为此目的使用两阶段提交协议。

例如,让我们考虑一个数据表PROJECT(PId,PName,PLocation)。如果PLocation为“孟买”,我们需要运行事务T1将PLocation更新为“孟买”。如果没有复制,则事务T1中的操作将为-

Begin T1: 
   Update PROJECT Set PLocation = 'Mumbai' 
   Where PLocation = 'Bombay'; 
End T1;

如果数据表在站点A和站点B中具有两个副本,则T1需要生成与这两个站点相对应的两个子项T1A和T1B。扩展的事务T1将为-

Begin T1: 
   Begin T1A : 
      Update PROJECT Set PLocation = 'Mumbai' 
      Where PLocation = 'Bombay'; 
   End T1A;  
    
   Begin T2A : 
      Update PROJECT Set PLocation = 'Mumbai'
      Where PLocation = 'Bombay'; 
   End T2A; 
    
End T1;

异步复制控制

在异步复制方法中,副本并不总是保持相同的值。一个或多个副本可能存储过时的值,而事务可以看到不同的值。将所有副本恢复为当前值的过程称为同步

流行的同步方法是存储转发方法。在这种方法中,一个站点被指定为主站点,其他站点为辅助站点。主站点始终包含更新的值。所有交易首先进入主站点。然后将这些事务排队等待在辅助站点中进行应用。仅当计划在其上执行事务时,才使用发布方法更新辅助站点。

复制控制算法

一些复制控制算法是-

  • 主从复制控制算法。
  • 分布式投票算法。
  • 多数共识算法。
  • 循环令牌算法。

主从复制控制算法

有一个主站点和“ N”个从站点。主算法在主站点上运行以检测冲突。从属算法的副本在每个从属站点上运行。总体算法在以下两个阶段执行-

  • 事务接受/拒绝阶段-事务进入从属站点的事务监视器时,从属站点将请求发送到主站点。主站点检查冲突。如果没有任何冲突,则主服务器向从站点发送“ ACK +”消息,然后从站点开始事务应用程序阶段。否则,主机向从机发送“ ACK-”消息,然后从机拒绝该交易。

  • 事务应用阶段-进入此阶段后,已进入事务的从站点向所有从设备广播请求以执行事务。接收到请求后,对等从站将执行事务,并在完成后向请求的从站发送“ ACK”。在发出请求的从属服务器从其所有对等方收到“ ACK”消息之后,它将“ DONE”消息发送到主站点。主服务器了解事务已完成,并将其从挂起队列中删除。

分布式投票算法

它由“ N”个对等站点组成,所有对等站点都必须在开始执行之前“确定”交易。以下是该算法的两个阶段-

  • 分布式事务接受阶段-当事务进入站点的事务管理器时,它将事务请求发送到所有其他站点。在收到请求后,对等站点会使用基于优先级的投票规则来解决冲突。如果所有对等站点的事务都“正常”,则请求站点开始应用程序阶段。如果任何对等站点都不“确定”交易,则请求站点拒绝该交易。

  • 分布式交易应用阶段-进入该阶段后,交易已进入的站点向所有从属广播请求以执行交易。接收到请求后,对等从站将执行事务,并在完成后向请求从站发送“ ACK”消息。在发出请求的从属服务器从其所有对等方接收到“ ACK”消息后,它将使事务管理器知道事务已完成。

多数共识算法

这是分布式投票算法的变体,在分布式投票算法中,当大多数对等点“确定”交易时,才允许执行交易。这分为三个阶段-

  • 投票阶段-交易进入站点的交易管理器时,它将交易请求发送到所有其他站点。在收到请求后,对等站点将使用投票规则测试冲突,并将冲突的事务(如有)保持在待处理队列中。然后,它发送“ OK”或“ NOT OK”消息。

  • 交易接受/拒绝阶段-如果请求站点在交易中获得多数“ OK”,则它接受交易并向所有站点广播“ ACCEPT”。否则,它将向所有站点广播“拒绝”并拒绝交易。

  • 交易应用阶段-当对等站点接收到“拒绝”消息时,它将从其挂起的列表中删除该交易并重新考虑所有延迟的交易。当对等站点收到“ ACCEPT”消息时,它将应用事务并拒绝与该事务冲突的挂起队列中的所有延迟事务。完成后,它将“ ACK”发送到发出请求的从站。

循环令牌算法

在这种方法中,系统中的事务使用循环令牌进行序列化,并针对数据库的每个副本相应地执行。因此,所有交易都被接受,即没有交易被拒绝。这有两个阶段-

  • 事务序列化阶段-在此阶段,所有事务均按序列化顺序运行。每个站点中的每笔交易都分配有一系列顺序的唯一票据,表明交易的顺序。为交易分配票证后,会将其广播到所有站点。

  • 交易申请阶段-站点在接收到交易及其票证的同时,将根据其票证放置交易以执行。交易完成执行后,此站点将广播一条适当的消息。事务在所有站点中均已完成执行后结束。