用SQL实现分布式数据复制

2016-01-29 18:06 2 1 收藏

用SQL实现分布式数据复制,用SQL实现分布式数据复制

【 tulaoshi.com - ASP 】

  复制的概念

  复制作为一个重要并且强大的技术,为分布式数据的存储和处理提供了有力支持。微软公司的SQL Server可以生成数
据的拷贝,并能把这些数据的拷贝分发到不同的地方,自动进行数据的同步,保持所有的数据拷贝具有相同的数据。SQL
Server采用一种称为“松散一致”的复制模式在两个数据库之间进行复制。这两个数据库既可以在同一台计算机上,也可
以在不同的计算机上,彼此通过局域网(LAN)、广域网(WAN)进行连接。

  我们公司在开发“西安市国家税务局内部网络信息系统”中,正是利用了SQL Server的复制功能,实现全西安市分布
的税收数据的复制同步。西安市国家税局包括市局机关和下属的18个基层征管分局,分布于西安市不同的地理位置,彼此通
过DDN专线或X.25专线连接,构成了西安国税局广域网。市局信息中心用Windows NT Server4.0 构建一个Windows NT的单
主域网络环境,下属每个分局有一台运行Windows NT Server 4.0或Windows NT Server 3.51的服务器,通过广域网加入到
单主域的环境中作为一台独立的服务器运行。各分局建有本分局的局域网,网络环境为Novell和Windows NT的混合网络环
境。

  全西安市所有的纳税人,均到指定的征管分局进行纳税登记、纳税申报。国税局用FoxPro开发了基于Novell网络环境
的税收征管软件,在各分局征收大厅由Novell的无盘工作站负责税收数据的录入,写入到Novell服务器上的数个DBF文件
中。由于税收征管数据分布在全市不同的征管分局,为全市范围纳税信息的检索和分析带来困难。

  新系统的开发,在原有基础上,编制专门的数据转换程序,把存储于Novell服务器上的DBF文件转换到本分局Windows
NT上的SQL Server数据库中。每个分局的SQL Server数据库与市局信息中心的SQL Server数据库进行复制,及时把最新的
税收数据传递到市局信息中心。这样在市局信息中心,就有了全市所有税收征管数据。信息中心建立Intranet Web站点,
用户的计算机只要连上各分局的局域网,或者通过Modem拨号到信息中心的RAS服务器,就可以用IE浏览器访问IIS服务器,
由IIS服务器向SQL Server服务器发出数据请求并把结果按HTML格式返回给用户浏览器。

  系统的设计采用客户浏览/服务器的多层结构方式,客户端采用标准的浏览器访问方式。用户在自己的计算机上安装IE
浏览器(WIN98、WINNT4.0中已内置IE4浏览器),输入Web 站点地址,就可以进入该系统。

  在中间层,由Internet Information Server完成大多数的用户业务规则的实现,例如对用户权限的限制、数据请求的
生成等。IIS会根据不同的用户所拥有的不同的权限,生成不同的页面。将来当业务规则发生变化时,只需要在Internet
Information Server上进行相应的更改,这种更改就会在系统的每一个用户下次访问系统时得到体现。

  在系统的最低层,由SQL Server大型关系数据库作为支撑。西安全市的税务数据是一个以GB为单位的大型数据库,纳
税数据表中的数据记录超过数百万条,在如此大量的数据中进行快速的数据检索和数据分析,一般的数据库软件是难以完
成的。SQL Server关系型数据库,较好地完成了用户提出的各种数据的检索要求,同时也正是利用了SQL Server的数据复
制技术,把近二十个分局的数据通过广域网复制到信息中心来,使用户能快速获取全市的纳税信息。

  该系统实现的一个重要部分就是各分局税收征管数据的复制。SQL Server的复制有以下几个特点:

  1.基于事务

  有复制标志的事务从源数据库的事务日志读出,并送到目的数据库。例如执行了一条Insert语句使源数据库的数据发
生变化,这条Insert语句会被写入到一个数据库中,我们称之为发布数据库(Distrbution)。在适当的时候,这条Insert
语句会送到复制的目的数据库并执行该Insert语句,以此保证两端的数据保持同步。

  2.以三种不同的方式使用服务器

  (1)出版(Publication):作为源数据服务器(在本系统中是各分局的SQL Server服务器),当标志复制的表
(Table)的数据发生变化时,产生该变化的事务被刻上复制标志,由日志阅读器(LogReader)把该事务送入分发数据库
(Distribution Database)。这些事务寄存在分发数据库中直到被传送到目的服务器。

  (2)分发(Distribution):包含有分发数据库。分发服务器接受出版服务器的更改事务,并保存到分发数据库中。在
适当的时候,把这些事务送入订阅服务器。缺省情况下,分发服务器与出版服务器为同一台计算机,当然也可以是不同的
计算机。

  (3)订阅(Subscription):接受出版服务器的出版数据。

  3.使用专用的SQL Server数据库作为复制数据的可靠队列

  SQL Server的复制采用“松散一致”复制模式,其特征是源数据与拷贝数据之间并不是在任何时刻都保持完全一致,
它们之间有一个延时。源数据库的变化,不是立刻反应到订阅数据库中,而是

来源:https://www.tulaoshi.com/n/20160129/1504369.html

延伸阅读
如果所有组件都在同一台计算机的同一个Java虚拟机的同一个堆空间上执行是最简单的,但实际中我们面对的往往不是如此单一的情况,如果用户端只是个能够执行Java的装置怎么办?如果为了安全性的理由只能让服务器上的程序存取数据库怎么办? 我们知道,大多数情况下,方法的调用都是发生在相同堆上的两个对象之间,如果要调用不同机器上的对象的方法呢?...
SQL Server 2008数据库复制是通过发布/订阅的机制进行多台服务器之间的数据同步,我们把它用于数据库的同步备份。这里的同步备份指的是备份服务器与主服务器进行实时数据同步,正常情况下只使用主数据库服务器,备份服务器只在主服务器出现故障时投入使用。它是一种优于文件备份的数据库备份解决方案。 在选择数据库同步备份解决方案时,我们...
标签: Web开发
经常在网页上看见复制本页网址,给你的朋友分享之类的话,点按钮,在IE下能复制成功,而在firefox和opera等其他浏览器就不行。 下面的例子使用js+flash(as)实现了在不同浏览器里复制的功能,这样做的好处就是规避了浏览器兼容的问题。也就是说支持firefox,IE,OPERA 怎样使用? 1.先下载这个FLASH文件:文章末尾处链接地址可...
摘要 远程执行是C#中一种使开发人员能够使用远程对象的基础架构。远程对象是一种位于调用者应用域之外的对象。本文中的例子说明了如何使用二种远程对象访问机制(值传递和地址传递),它还通过一个简单的、功能强大的任务服务器的实现说明了分布式计算中远程对象的强大功能。 任务服务器能够接受所有能实现ITask界面的对象,并在...
标签: SQLServer
  在开发分布式数据库软件时,经常碰到下面的错误: 服务器: 消息 7391,级别 16,状态 1,行 6 该操作未能执行,因为 OLE DB 提供程序 'SQLOLEDB' 无法启动分 布式事务。 [OLE/DB provider returned message: 不能在指定的事务处理器中 获得新事务。] ----------------------------------------- 服务器: 消息 8520,级别 20,状态 1,...

经验教程

635

收藏

42
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部