发信人: chedong()
整理人: (1999-11-14 14:52:36), 站内信件
|
Tai Yee
微软公司
SQL Server 7.0 复制
你是不是曾经需要保证把你的商用数据拷贝给每个分支部门,并且在组织间保持 一致?例如,假设你公司的总部在Chicago,并且在Seattle, Phoenix, Atlanta , 和 New York City有区域性的机构。你想要保持在总部部门所售产品的主价格 列表,但是你也想每个区域部门拥有它自己价格列表拷贝。另外,每个区域部门 跟踪它们收到的定单,并且希望公司总部拥有来自每个区域部门的定单记录的主 列表。你可能会使用的一种方法是在Chicago总部保持一个价格电子表格和一个定 单记录电子表格。 你定期将价格表格拷贝给每个区域部门并利用来自每个区域站 的所有定单更新本部部门的定单记录表格。尽管这个方法达到了在每个站点保持 所有当前信息的目的,但是管理起来很困难。更好的方法是自动完成这些工作, 以便在最小的管理开销下确保信息的一致性。
如上所介绍的一种情况被称为分布式环境(distributed environment),在这种 情况中同一信息的多个拷贝存在于多个地点。这个环境可能是有意产生的,也可 能是无意的。当它不断变大,站点不断增加时,分布式环境可能会变得越来越难 于管理,保持的信息也越来越复杂。在某些情况下,你也许需要找到一个更简单 的方法来在分布式环境中管理数据。
管理分布式环境中数据的一个方法是利用Microsoft SQL Server 复制。在SQL S erver中,复制是指在数据库中从一个位置向另一个位置拷贝数据。
发行者(Publishers)和订阅者(Subscribers)
SQL Server用发行者-订阅者来比喻它的数据复制特性。发行者使信息(数据)可 用。分发者(distributor)将所有的改变转发给订阅者。订阅者接收信息。可以 考虑一下本地的报刊组织来做类似比较。新闻组织或公司是发行者,送报童是分 发者,而你是订阅者。类似地,在SQL Server复制中,发行者维护资源数据并使 它对复制可用。分发者接收数据和所有的改变,并将消息转发给订阅者,订阅者 接收数据并获得它的一个拷贝。
被复制的数据称为出版物(publication)。出版物包含一个或多个单独的文章。 一篇文章是被复制数据的一个子集。我们继续用报纸来做类似,报纸本身将是一 个出版物,例如报纸上一篇关于President's State of the Union的故事将是发 行物上的一篇文章。和报纸订阅一样,在SQL Server复制中你必须订阅一个完整 的发行物。也就是说,你不能只订阅发行物中单独的文章。
数据库中的数据被存储在表格中。当你指定一个要复制的表格时,不必发行整个 表格。例如,如果你有一个employee表格,你可以选择发行诸如雇员的姓名和地 址之类的消息而不发行薪水信息。这被称作过滤(filtering)要发行的数据。你 可以将垂直过滤器或水平过滤器(或两者)应用于一个表格。垂直过滤器允许你 选择发行表中列的一个子集,而水平过滤器允许你选择发行表格中行的一个子集 。
在SQL Server复制中,有两种类型的订阅:推(push)订阅和拉(pull)订阅。 推订阅就是通常我们所认为的订阅。发行者将订阅推向分发者,然后分发者将数 据发送给订阅者。报纸传递模式采用的是推订阅。拉订阅听起来好象有些矛盾, 因为我们往往认为在缺省情况下订阅就是推的。在拉订阅中,订阅者初始化订阅 。例如,如果你到本地的新闻站去拿报纸,这就被认为是拉订阅。
Microsoft SQL Server 7.0 复制使工作变得更轻松
复制模式:
在SQL Server中也有一些不同的复制模式。第一种模式有一个中心发行者/分发者 ,他将发行物发送给多个订阅者(这和上面所说的报纸一样)。在这个模式中, 可以建立一个服务器作为发行者和分发者。这个发行者/分发者发行并向所有的订 阅者分发数据。下图说明了这个模式:
图1.发行者/分发者复制模式
下一个模式和第一个模式相反:你有一个中心订阅者,它从多个发行者接收数据 。当你需要在一个中心站点合并数据时,这个模式就很有用了。下面是这个模式 的图示说明:
图2.中心订阅者复制模式
我们返回头看看在本文开始我们所谈到的那个例子,现在你应该知道使每个区域 站点维护产品价格列表的一个当前拷贝并且使公司总部从每个区域站点接收定单 的一个简单方法是使用SQL Server复制。你可以将Chicago总部建立为一个发行者 和分发者来将数据库的产品价格表以中心发行者模式发送给区域部门(他们将是 订阅者)。你也可以将区域部门作为到Chicago总部的发行者/分发者,Chicago总 部将是中心订阅者,多个发行者模式中所介绍那样订阅定单信息。
需要考虑的事项
当你计划要实现复制时,应该认真考虑如下问题:
你要发行什么信息?
复制将会对你的网络有影响。为了节省磁盘空间,处理时间和网络带宽,你应该 只复制必要的数据。如果你不需要复制一个表格中的所有信息,你可以利用水平 或垂直过滤器(或两者)来只复制表格的一部分。
你的数据需要新到什么程度?
例如,一些人喜欢每天收报纸,而其他人选择只接收星期天的报纸。在SQL Serv er复制中,这被称为事务密度(transactional consistency)。
订阅者需要怎样的独立性?
当你出城散心时,也许会暂时停止报纸订阅。因为订阅是通过你的网络发生的, 所以你必须考虑订阅者没有连接到网上的情况。判断一个订阅者是否总是连接到 发行者或者是否只是在一段时间内连接。也要判断订阅者是否能够在收到数据后 修改已发行的数据。这被称为订阅者自主权(autonomy)。
你想让数据以怎样的频率进行同步?
你可以安排复制在预定的时间间隔发生,或者指定复制在需要时发生。
你要使用什么类型的复制模式?
决定你是否需要一个有多个订阅者的中心发行者/分发者,一个从多个发行者接收 信息的中心订阅者,或两者都需要。
谁初始化复制?
决定你是否想让发行者/分发者自动向订阅者发送信息(推订阅),或是否想让订 阅者初始化复制(拉订阅)。
还有其他一些需要认真考虑的事项,这里没有叙述,以上这些只是帮你开了个头 。
更多信息和资源
有关SQL Server复制的更多信息,见如下文章:
SQL Server在线书籍的复制部分。你可以从SQL Server Support Highlights下载 SQL Server 7.0在线书籍
在SQL Server Support Highlights FAQ上的SQL Server 7.0复制常见问题列表
SQL Server 7.0白皮书中的复制部分.
微软知识库文章Q89937, "INF: Getting Started with Microsoft SQL Server Replication."
--
代码人生,人生代码,代码联盟让我们一起走这代码人生。
欢迎来到国内最大的计算机专业论坛,专业人士必去之处。
news://202.99.104.181
http://202.99.104.181
telnet://202.99.104.181
169用户可以用10.11.17.28来访问上述网址。
-- 如果你觉得可笑的话,那么你错了
如果你觉得不可笑的话,那么我错了
※ 来源:.月光软件站 http://www.moon-soft.com.[FROM: 202.96.31.205]
|
|