快照复制就是在某一时刻对出版数据进行一次“照相”,生成一个描述出版数据库中数据瞬时状态的静态文件,最后在规定时间将其复制到订购者数据库。
产品特点
快照复制并不像
事务复制那样要不断地监视、跟踪在
出版数据库中发生的数据变化,它所复制的内容不是 INSERT、 UPDATE、 DELETE 语句(事务复制的特征),也不是仅限于那些被修改数据(
合并复制的特征)。它实际上是对订购数据库进行一次阶段性的表刷新,把所有出版数据库中的数据从源数据库送至目标数据库,而不仅仅是那些发生了变化的数据。如果论文很大,那么要复制的数据就很多,因此对
网络资源需求较高,不仅要有较快的传输速度,而且要保证传输的可靠性。
快照复制是最为简单的一种
复制类型,能够在出版者和订购者之间保证事务的潜在一致性。快照复制通常使用在以下场合:不需要实时数据时,如在进行决策支持、查询静态表信息时;只读订购者(订购者不对出版数据进行修改),并且不需要最近的数据;使用立即更新订购者时对数据库的修改次数和数据量较少。
工作机制
1、发布服务器,将要发布的数据库整个做一个快照,
2、订阅服务器的快照代理程序把发布服务器的快照读取过来,放在本地的快照文件夹内
3、订阅服务器的发布代理程序把快照文件夹中的快照发布到订阅服务器上。历史记录和快照记录在分发服务器中。
适用条件
当符合以下一个或多个条件时,使用快照复制本身是最合适的:
1.很少更改数据。
2.在一段时间内允许具有相对发布服务器已过时的数据副本。
3.复制少量数据。
4.在短期内出现大量更改。
在数据更改量很大,但很少发生时,快照复制是最合适的。例如,如果某销售组织维护一个产品价格列表且这些价格每年要在固定时间进行一两次完全更新,那么建议在数据更改后复制完整的数据快照。对于给定的某些类型的数据,更频繁的快照可能也比较适合。例如,如果一天中在发布服务器上更新相对小的表,但可以接受一定的滞后时间,则可以在夜间以快照形式传递更改。
发布
服务器上快照复制的连续开销低于事务性复制的开销,因为不用跟踪增量更改。但是,如果要复制的数据集非常大,那么若要生成和应用快照,将需要使用大量资源。评估是否使用快照复制时,需要考虑整个数据集的大小以及数据的更改频率。
执行操作
快照复制的执行仅需要快照代理和分发代理。快照代理准备快照文件(包括出版表的数据文件和描述文件)并将其存储在分发者的快照文件夹中,除此之外快照代理还要在分发者的分发数据库中跟踪同步作业。分发代理将在分发数据库中的快照作业分发至订购者服务器的目的表中。分发数据库仅用于复制而不包括任何用户表。
快照代理
(1)从分发者到出版者的连接并在出版物论文中的所有表上加了共享锁。共享锁是为了确保快照数据的一致性,因为共享锁将防止所有的其它用户对表进行修改。快照代理应该被安排在数据库活动较少期间执行。
(2) 快照代理又建立从出版者到分发者的连接,并将每一个表的表描述拷贝至分发者上的一个.sch 文件中,该文件存储在分发数据库工作目录下的一个子目录。如果出版物中包括索引和声明的参考完整性,则快照代理将所有被选择的索引写入分发者的.idx 文件中。
(3) 快照代理对出版者的出版表的数据执行一次快照,并把这些数据写入分发者上的一文件当中。该文件存储在分发数据库的工作目录下的一个子目录中,如果订购者有SQL Server, 则快照被做为.bcp 文件存储;如果一个或多个订购者是异构数据库源,则快照被做为字符模式的.txt 文本文件存储同步集合包括.sch 和.bcp 文件,出版物中每一篇论文都有一个同步集合。
(4) 快照代理向分发数据库的Msrepl_commands 和Msrepl_trnsactions 表中插入新行。Msrepl_command 表中的每个记录是指明同步集合和出版者等位置的命令,Msrepl_trnsactions 表中的每条记录是引用订购者同步任务的命令。
(5) 快照代理最后释放在每一个论文上的共享锁。
分发代理
(1) 分发代理从其所在的服务器向分发者服务器建立连接,对于推订购,分发代理位于分发者服务器上;对于拉订购,分发代理位于订购者上。
(2) 分发代理检查分发者的分发数据库中的Msrepl_commands 和Msrepl_trnsactions 表从第一个表,读取同步集合的位置并从这两个表读取订购者的同步任务。
(3) 分发代理将在订购数据库中应用在分发数据库的Msrepl_commands 和Msrepl _trnsactions 表中发现的命令,从而将数据文件和描述文件复制到订购者服务器上。如果订购者不是SQL Server 数据库,则分发代理将按要求转换数据类型。在出版物中的所有论文都将被同步并在各表中保持事务和参考完整性。
当有很多的订购者时,应让分发代理运行在订购者服务器上,即使用拉订购。这样可以减轻分发者负载,提高其性能。如果使用推订购,只要订购者订购出版物或在出版物创建时所规划的时间来临,快照代理都会被执行。但是在快照代理执行的规划时间来临时,只有那些没有被同步的订购者才会被同步。