在多用户环境中,一个数据库可能由多个用户使用。在多用户应用程序中,数据库复本可以改善用户共享数据库的途径。用数据库复本可以重新产生一个数据库,使两个或多个用户同时使用自己的数据库复本。尽管各个复本放置在不同的计算机上,但它们是保持同步的。
数据库复本及其拓扑结构
一个数据库的两个或多个以上的复本组成一个复本集,每个复本都是复本集的一部分。在复本集中含有数据库的若干复本和设计原版(Design Master),其中设计原版是唯一能够对数据库进行设计修改的复本。同一个复本集中的复本可以相互交换数据后复制对象的更新,这种交换称为同步。
1.数据库复本的用途
按照传统的做法,在多用户数据库应用程序中,通常将表从数据库的其它对象中分离出来,使得数据能够驻留在网络服务器上,而查询、窗体、报表、宏以及模块则驻留在用户的计算机上。当需要检索或更新数据库中的信息时,必须先登录到网络上,然后打开计算机上的数据库,再打开服务器上相应的数据库。如果使用数据库复本技术,则可以建立既包含数据又包含对象的单一数据库。
在下列情况下,应该使用数据库复本:
(1)需要在各办公室中共享数据。可以用数据库复本建立一个单位的数据库的拷贝,然后将其发送给每个相关的办公室。用户在每个办公室把数据输入到自己的复本中,并使所有的远程复本都与单位的复本同步。下属的各级复本能够维护本地表,在该表中含有其它复本中的信息。
(2)需要在分散的用户之间共享数据。各终端用户在办公室以外输入到数据库中的新信息,可以在终端与单位的网络建立起电子连接的任何时候被同步。在日常工作中,终端用户可以拨入网络,使复本同步,使用数据库的当前最新版本。由于在同步期间只传输新增的更改,因此可以便维持数据更新所花费的时间和费用减到最小。此外,也可使用部分复本(partia1 replicas),只同步部分数据。
(3)需要提高服务器数据的可访问性。如果应用程序不需要立即更新数据,则可以在主服务器上用数据库复本来减少网络加载。而用服务器本身的数据库拷贝来引入第二服务器,则可以改善响应时间。
(4)需要发布应用程序的更新。复制应用程序时,不仅自动复制表中的数据,还要复制应用程序的对象。如果对数据库的设计作了更改,则Microsoft Jet数据库引擎将在下一次同步期间传输这些更改,不必发布软件的新版本。
(5)需要防止全部数据遗失。数据库复本发布跨越多个数据库的数据,因此,当原始数据库被破坏时,可以用复本数据库中的某个数据库来恢复数据。
虽然数据库复本可以解决分布式数据库处理中固有的许多问题,但是在下列情况下,复本仍然达不到理想要求:
1.)需要更新多个复本中的大量记录。对于那些需要对不同复本中的现存记录进行频繁更新的应用程序,可能会比简单地往数据库中插入新记录的应用程序产生更多的记录冲突。当位于不同地点的用户同时对同一个记录进行修改时,将会发生记录冲突。应用程序的记录冲突越多,需要的处理时间就越多,因为这些冲突只能通过手工解决。
2.)对数据一致性的要求非常严格。对于诸如资金过户、航班机票的预订以及包裹装运的跟踪之类的事务处理应用程序,要求ffnu时候的信息不能有半点差错。如果能在一个复本内处理事务,就不要在几个复本中处理。在同步期间,各复本间交换的信息,是事务的结果,而不是事务本身。
2.复本集拓朴结构
复本集拓扑结构定xT复本集中各复本间的通信以及tonp同步的逻辑。复本集的拓扑结构可以有各种不同的形式,但是对大多数的应用程序来说,较好的拓扑结构有两种,即星型结构和完全连接结构。
星型拓扑结构有一个集线器(Hub),该集线器定期与每个卫星复本同步。在这种拓扑结构中,所有数据通过单个集中化数据库在各复本之间共享。由于数据在与其它复本同步时至多只需两步“跳跃”,所以星型拓扑结构可以降低数据在各复本中的等待时间。
在同步期间,如果交换的平均数据量相对较小,则对大多数应用程序来说,星型拓扑结构可能是最有效的解决方案。它的实现相当简单,而且既有效又可靠。如果是第一次实现复本,则最好使用星型拓扑结构。
如果把星型拓扑结构中的每个复本都变成一个集线器(Hub),就可以变为完全连接的拓扑结构。在完全连接的拓扑结构中,每个复本与复本集中的其它所有复本同步。完全拓扑结构一个最重要的好处是数据传播的等待时间小。因为每个复本与其它所有复本同步,数据可以直接发送给所有复本,而不必经过一系列复本来间接传播。
(出处:ChinaAsp )