WEB开发网
开发学院数据库MSSQL Server 复制的概述和术语 阅读

复制的概述和术语

 2007-11-11 10:38:14 来源:WEB开发网   
核心提示: 对一个地域分散的大型企业组织来说,构建具有典型的分布式计 算特征的大型企业管理信息系统时总要解决一个很棘手的问题;如何 在多个不同数据库服务器之间保证共享数据的完整性、安全性和可用 性,复制的概述和术语,之所以引发这样的问题在于企业组织存在这样的数据处理和要求: 在不同的地点对具有相同结


  对一个地域分散的大型企业组织来说,构建具有典型的分布式计 算特征的大型企业管理信息系统时总要解决一个很棘手的问题;如何 在多个不同数据库服务器之间保证共享数据的完整性、安全性和可用 性。之所以引发这样的问题在于企业组织存在这样的数据处理和要求: 在不同的地点对具有相同结构的本地数据库进行修改;但要保证修改 后的数据库有相同的结果。其实质就是将对本地数据库的修改体现在 其它具有相同结构的远程数据库中。
  那么我们如何实现这种数据的一致性呢?答案可能有很多种,但 是包括sql server(WINDOWS平台上强大的数据库平台) 在内的大多数数据库产品都采用一种复制技术来解 决这一问题。本章的主旨就是介绍sql server(WINDOWS平台上强大的数据库平台) 的复制技术。下面让我 们从复制的概述开始。

  sql server(WINDOWS平台上强大的数据库平台) 提供了内置的复制能力,复制组件并不是附加产品而是核心引擎的一部 分。在复制这一支持分布式数据处理能力的重要技术帮助下,我们可以在跨局域网、广域 网或因特网的不同数据库服务器上维护数据的多个拷贝,从而自动地以同步或异步的方式 保证数据多个拷贝之间的数据的一致性。从本质上讲,复制就是从一个源数据库向多处目 标数据库复制数据。

16.1.1 sql server(WINDOWS平台上强大的数据库平台) 的复制模型
sql server(WINDOWS平台上强大的数据库平台) 使用“出版和订购”这一术语来描述其复制活动。所谓出版就是向其它数 据库服务器(订购者)复制数据。订购就是从另外服务器(出版者)接收复制数据。虽然 出版和订购的对象都是将复制数据,但出版和订购却并不是不同角度(出版者和订购)的 同一数据操作(复制数据),而是体现出一定的层次性和顺序性(总是先进行出版,然后 再进行订购)。sql server(WINDOWS平台上强大的数据库平台) 的复制组件有出版者、订购者、分发者、出版物与论文、推订 购和拉订购。

(1) 出版物和论文
论文(article) 是被复制的数据集合,一篇论文可以是整个表、某些列(垂直划分的 表)或某些行(水平划分的表)甚至是一些存储过程。论文是出版物的基本组成单元。 出版物是论文和集合,它可以包括一个或多个论文。订购者订购的是出版物而不是出版物 中的论文,这样可使订购更为简单。

(2) 出版者
出版者是指出版出版物的服务器。出版者服务器来维护源数据库(包含出版物)以及 有关出版物的信息,使数据可用于复制。除了决定哪些数据将被复制,外出版者要检测哪 些复制数据发生变化,并将这些变化复制到分发者的分发数据库中。

(3) 分发者
分发者是指把从出版者传递来的复制数据或事务或存储过程送至相应的订购者的服务 器,并负责维护分发数据库。

(4) 订购者
订购者是指存储复制的数据的拷贝,且接收并维护已出版的数据的服务器。订购者也 可以对出版数据进行修改,但是尽管订购者可以对数据进行修改,但它仍是一个订购者。 当然,订购者也可以作为其它订购者的出版者。

  出版者、分发者、订购者实际上并不一定指相互独立的服务器,它只是对sql server(WINDOWS平台上强大的数据库平台) 在复制过程中所扮演的不同角色的描述。sql server(WINDOWS平台上强大的数据库平台) 允许一台sql server(WINDOWS平台上强大的数据库平台) 服务器可以扮 演不同的角色。比如,一台出版者服务器既可出版出版物也可以作为分发者来存储和传送 快照复制和事务复制。当然一台订购者服务器也可以同时作为其它订购者的出版者,只不 过这种情况很少见。在实际应用中我们决定是否让一台服务器扮演一个或多个角色在很大 程度是基于复制系统性能的考虑。例如为了提高分发者从分发数据库向订购者的数据库复 制出版物的效率,降低出版者服务器的负载。我们常不允许某一sql server(WINDOWS平台上强大的数据库平台) 服务器既扮 演出版者又扮演分发者,而是让另外的服务器专门承担分发者任务从而提高了出版者和 分发者的性能。

(5) 订购类型
  在sql server(WINDOWS平台上强大的数据库平台) 中有两种订购类型:推订购和拉订购。通过使用推订购或拉订购将出 版数据库发生的变化复制到订购数据库。推订购是指由出版者将所有发生在出版数据库的 修改复制给订购者而不必订购者发出订购请求。只要出版数据库发生修改,出版者就会自 动把这种修改体现在订购者那里。在对数据同步性要求比较高的场合(如只要出版物内容 发行变化,订购数据库就要做出相应修改)最好使用推订购。拉订购是指订购者每过一段 时间就会向出版者要求复制出版数据库发生的变化。在有很多订购者场合最好使用拉订 购。因为拉订购是由订购者而不是出版者启动,所以在由订购者来决定同步出版数据库变 化的场合也最好使用拉订购。

16.1.2 sql server(WINDOWS平台上强大的数据库平台) 的复制代理
(1) 快照代理
快照代理Snapshot Agent 在分发者上创建并存储快照文件,在分发数据库中记录 出版数据库和订购数据库之间的同步信息。快照代理运行在分发者服务器上并与出版者相 连接,每一个出版物都有自己的快照代理。

(2) 日志阅读代理
日志阅读代理(Log Reader Agent) 将出版者事务日志中标有复制的事务移至分发数 据库。使用事务复制的每一个出版数据库都有自己的日志阅读代理。日志阅读代理运行在 分发者服务器上。

(3) 分发代理
分发代理(Distribution Agent) 能够将存储在分发数据库中的事务或快照分发到订购 者服务器。如果事务出版物或快照出版物被设置为只有创建了推订购即立即在出版者和订 购者之间同步,则在分发者上它们各自都会有一个分发代理;否则事务出版物和快照出版 物将共享一个分发代理。合并出版物没有分发代理。

(4) 合并代理
合并代理(Merge Agent) 被用来移动、合并在快照代理创建初始快照之后所发生的 递增修改,每一个合并出版物都有自己的合并代理。当使用推订购合并出版物时,合并代 理运行在出版者上;当使用拉订购合并出版物时,合并代理运行在订购者上。快照出版物 和事务出版物没有合并代理。

(5) 队列阅读代理
  在快照复制或事务复制时如果选择了queued updating 选项或immediate updating with queued updating as a failover 选项,则需要使用队列阅读代理。
  队列阅读代理是运行在分发者上的多线程代理,它主要负责从分发者消息队列中读到 消息并将包含在消息中的事务应用到出版者。

16.1.3 sql server(WINDOWS平台上强大的数据库平台) 的复制类型
  sql server(WINDOWS平台上强大的数据库平台) 提供了三种复制类型:快照复制(Snapshot Replication)、事务复制 (Transactional Replication)、合并复制(Merge Replication)。 可以在实际应用中使用一 种或多种复制类型。每一种复制类型都在不同程度上实现数据的一致性和节点的自主性, 因此对复制类型的选择主要依赖于应用系统对数据一致性、节点自主性的要求以及现有的 网络资源情况(如网宽和网络传输速度)。在分别介绍事务复制、快照复制和合并复制的 三节中我们将讨论如何选择合适的复制类型。下面扼要介绍一下这三种复制类型。

(1) 快照复制
  如其名字所言,快照复制意指在某一时刻给出版数据库中的出版数据照相,然后将数 据复制到订购者服务器。快照复制实现较为简单,其所复制的只是某一时刻数据库的瞬时 数据,复制的成功与否并不影响本地数据库(出版数据库或订购数据库)的一致性。在数 据变化较少的应用环境中常使用快照复制,如复制不经常被修改的静态表。

(2) 事务复制
  与快照复制不同事务日志复制的内容不是数据而是多条DELETE UPDATE INSERT 语句或存储过程。在使用事务复制时,修改总是发生在出版者上(设置了立即更新订购者 选项的事务复制可在订购者处修改复制数据),订购者只以读取数据的方式将修改反映到 订购数据库,所以能够避免复制冲突。如果数据更新频率较大且希望修改尽快复制到订购 者常使用事务复制。

(3) 合并复制
  合并复制允许订购者对出版物进行修改,并将修改合并到目标数据库(可以是出版数 据库也可以是订购数据库)。各个节点可独立工作而不必相互连接,可对出版物进行任何 操作而不必考虑事务的一致性。如果在合并修改时发生冲突,则复制按照一定的规则或自定义的冲突解决策略来对冲突进行分析并接受冲突一方的修改。

16.1.4 复制数据的一致性
  在分布式应用环境中事务处理除了满足事务的ACID 要求外,还必须满足数据的一致 性要求。在复制环境下的复制数据的一致性主要有两种类型:
事务的一致性(Transactional consistency)
数据的集中性(Data convergence)

(1) 事务的一致性(Transactional consistency)
  在复制环境下,事务的一致性主要是指所有参与复制的节点在复制结束后都必须具有 相同的数据结果集,有如发生在所有节点上的所有的事务在每个节点都被逐一地执行了一 次在sql server(WINDOWS平台上强大的数据库平台) 中对于复制数据而言有两种级别事务一致性:立即事务一致性(Immedi

Tags:复制 概述 术语

编辑录入:coldstar [复制链接] [打 印]
赞助商链接