1
.前言
随着传统的数据库、计算机网络和数字通信技术的快速发展,以数据分布存储和分布处理为主要特征的分布式数据库系统的研究和开发越来越受到人们的关注。如何在一个数据库系统中实现一个分布式数据库,在实现分布是数据库中采用何种策略以及有那些需要注意的问题,这一直是数据库研究和应用相关领域人员非常关心的问题。本文就在
Microsoft SQL
系列数据库系统中分布式数据的具体实现进行了阐述,并对相关问题进行深入的分析。
2
.分布式数据库简介
分布式数据库系统是在集中式数据库系统的基础上发展起来的,由分布式数据库管理系统和分布式数据库组成,是数据库技术与计算机网络技术的产物。分布式数据库管理系统是具有管理分布数据库功能的计算机系统,分布式数据库则是一组逻辑上属同一系统
,
但物理上分布在计算机网络的不同结点的结构化数据的集合,由分布于计算机网络上的多个逻辑相关的数据库组成。网络中的每个结点(场地)具有独立处理的能力(称为本地自治),可执行局部应用,同时,每个结点通过网络通讯系统也能执行全局应用。所谓局部应用
即仅对本结点的数据库执行某些应用。所谓全局应用(或分布应用)是指对两个以上结点的数据库执行某些应用。支持全局应用的系统才能称为分布式数据库系统。对用户来说,一个分布式数据库系统逻辑上看如同集中式数据库系统一样,用户可在任何一个场地执行全局应用。分布式数据库系统的特点是:
(
1
)物理分布性:分布式数据库系统中的数据不是存储在一个站点上,而是分散存储在由计算机网络联结起来的多个站点上。
(
2
)逻辑整体性:分布式数据库系统中的数据物理上是分散在各个站点中,但这些分散的数据逻辑上却是一个整体,它们被分布式数据库系统的所有用户(全局用户)共享,并由一个分布式数据库管理系统统一管理。
(
3
)站点自治性:站点自治性也称场地自治性,每个站点上的数据由本地的
DBMS
管理,具有自治处理能力,完成本站点的局部应用。
分布式数据库系统适合于单位分散的部门,系统的结点可反映公司的逻辑组织,允许各部门将其常用数据存贮在本地,实施就地存放就地使用,降低通讯费用,并可提高响应速度。分布式数据库可将数据分布在多个结点上,增加适当的冗余,可提高系统的可靠性,只要一个数据库和网络可用,那么全局数据库可一部分可用。不会因一个数据库的故障而停止全部操作或引起性能瓶颈。故障恢复通常在单个结点上进行。结点可独立地升级软件。每个局部数据库存在一个数据字典。由于分布式数据库系统结构的特点,它和集中式数据库系统相比具有以下优点:
1)
可靠性高,个别场地发生故障,不致引起整个系统的瘫痪
2)
可扩展性,为扩展系统的处理能力提供了较好的途径。
3)
均衡负载,可避免临界瓶颈
目前,随着计算机体系结构和数据库技术的发展,分布式数据库系统技术已经有了长足发展。基于关系数据模型的分布式数据库技术在商业处理的应用方面已非常成功,如
Oracle
、
MS SQL SERVER
、
Sybase
、
IBM DB2
等数据库平台,其分布式处理技术能很好地满足大型数据库管理的需要,并能实现一定的分布式实时分析处理和数据更新,能够满足各种不同类型用户对不同数据库功能的要求。但不同的数据库产品在价格、性能、稳定性等方面有着不小的差异,在对分布式数据库理论的支持程度、分布式实现的具体方式也都有各自的特点,用户应当根据各自的实际情况选用合适的数据库产品。
3
.
分布式数据库的具体实现
3
.
1
实现的理论准备
3
.
1
.
1
实现流程
由于以上集中式数据库所不能替代的特点,分布式数据库的使用已经越来越成为当前数据库使用的主流。同时如何根据实际情况实现一个架构可靠、运行稳定的分布式数据库也成为许多数据库使用者所面临的问题。综合来讲,设计并实现一个分布式数据库主要有以下几个步骤:
1)
掌握分布式数据库的基本原理。
2)
根据需求和实际情况选取一种合适的分布式数据库系统。
3)
了解在该数据库系统中分布式数据库的实现方式。
4)
在系统中的具体实现。
本文已经就以上几点分别做了简单阐述。下面将集中探讨一下在
MS SQL 2000
数据库系统中实现分布式数据库的方式。
3
.
1
.
2 MS SQL 2000
数据库简介
MS SQL 2000
数据库系统是微软公司的主流数据库产品,其工作效率、稳定性等指标都非常出色,且在具有友好、简单的操作方式的同时,对分布式数据库的实现有着完整的理论支持。且对不同类型的分布式数据库应用需求都提出了完善的解决方案。所以对
MS SQL 2000
数据库中分布式数据库实现的掌握对分布式数据库的实际设计以及在其它数据库平台上的实现都有很大的参考作
3
.
1
.
3
"复制"技术与分布式事务处理
设计一个分布式计算解决方案首先需要考虑的问题就是应用的完整性、复杂性、性能和可用性以及响应时间等,同时还需要考虑的是对于不同的应用需求是采用实时存取远程数据(分布式事务处理)还是采用延迟存取远程数据("复制")。
MS SQL 2000
数据库中的分布式事务处理即通过事务处理机制采用实时数据存取,能够保证数据的一致性。是一种实时远程存取和实时更新数据的技术。这种技术可以保证应用的完整性并降低了应用的复杂性,但是如果系统存在网络存取速度很慢这样的问题,相应响应时间就会很慢。这是一种同步分发数据库技术。
"复制",顾名思义就是将数据库中的数据拷贝到不同物理地点的数据库中以支持分布式应用,它是整个分布式计算解决方案的一个重要组成部分。这里针对
"
复制
"
也存在同步"复制"和异步"复制"的问题。同步"复制",复制数据在任何时间在任何复制节点均保持一致。如果复制环境中的任何一个节点的复制数据发生了更新操作,这种变化会立刻反映到其他所有的复制节点。这种技术适用于那些对于实时性要求较高的商业应用中。异步"复制",所有复制节点的数据在一定时间内是不同步的。如果复制环境中的其中的一个节点的复制数据发生了更新操作,这种改变将在不同的事务中被传播和应用到其他所有复制节点。这些不同的事务间可以间隔几秒,几分种,几小时,也可以是几天之后。复制节点之间的数据是不同步的,但传播最终将保证所有复制节点间的数据一致。这是一种延迟远程存取和延迟传播对数据更新的技术,有很高的可用性和很短的响应时间,相比同步分发数据库技术就显得复杂一些,为了确保应用的完整性需要仔细考虑和设计。
对于实际的商业问题,必须权衡这两种技术的利弊最终选择最佳的解决方案,有些问题选用分布式事务处理比较适合,也有一些问题采用
"
复制
"
是比较好的解决方案,还有一些问题必须综合这两种技术。
3
.
1
.
4
"发行-分布-订阅"结构
MS SQL 2000
数据库系统中分布式数据库的具体实现采用"发行-分布-订阅"结构。具体来讲就是将实现分布式数据的角色分为三种,即发行者、分布者、订阅者。这三中角色在数据的分布中其着不同的作用:
1)
发行者:是发行项目的集合。发行项目也就是数据库中表、存储过程或特定的行或列等我们要作为分布式数据的这部分内容。
2)
订阅者:从发行者上进行数据的订阅,即按照需求使用发行者上的数据更新自己本地的数据。其订阅方式包括推出式订阅(属于主动式发布,发行者主动将数据传送到订阅者处)、引进式订阅(属于被动式发布,即当订阅者需要更新数据时再向发行者请求进行更新)
3)
发布者:负责管理,将发行者上发行的数据安计划传送到订阅者处。
通过采用"发行-分布-订阅"结构,分布式数据库中每一个角色的功能更加明确。同时应该注意的是,三种角色指的是再分布式数据实现中所起到的作用,并不是指具体的计算机。同一台计算机可能扮演多种角色,即一台主机在分布式数据库中有可能即使发行者,也是订阅者,或者三种都是。
3
.
2
"复制"策略的选择
MS SQL 2000
数据库采用的"复制"方式有快照复制(
Snapshot Replication
)、事务复制(
transaction replication
)和合并复制
(merge replication)
三种,三者都是按照实现制定的"复制"策略,在一定的时间,按照一定的规则进行一定数量发布内容的复制,三者的具体差别及特点如下:
1)
快照复制:在复制时将所有发布数据全部重新传送一遍。此方法的特点是具有周期性、进行批量复制处理、高延迟、高度自治。但由于一次传送数据较多,灵活性差,故不适宜大型数据库。但同时此方法不需持续监控,故代价较低。
2)
事务复制:属于增量复制,即在复制时仅复制增减或变更的内容,特点是低延迟、低度自治,适宜大型数据库。但此方法需要持续监控,故代价较高。另外,此方法复制的方式也可设置为即时更新。
3)
合并复制:复制时即根据发行者上的数据,也根据订阅者上来进行更新。此方法高度自治,在过程中使用使用触发器,但由于其自身的实现方式,故不能保证数据一致性
不同的"复制"策略适用于不同的分布式数据库实现要求,我们可以根据延迟、站点自治、事务一致性、数据更新冲突、"复制"发生的频率需求和网络特性的各方面的实际情况来决定使用那一种或那几种"复制"策略。
3
.
3
"复制"的实现
在决定好"复制"的策略后,要在系统中进行具体的实现。其主要步骤包括:
3
.
3
.
1
调整、设定发行者和分布者
通过对预发布的数据的了解和对接受数据者的判断等,我们已经确定了"复制"的策略,这一步我们就需要确定"复制"发生的频率需求并根据网络特性,如拓扑结构、"复制"类型的影响、空间需求等对发行者的发行内容和分布者的分布策略进行具体的设置。
3
.
3
.
2
设置订阅者
通过分布式数据的要求和订阅者特征决定订阅者的属性,如选择订阅方式是"推出式订阅"还是"引进式订阅"等,此属性为最重要的内容。然后进行其他订阅服务属性设置。
3
.
3
.
3
设定代理服务
分布式数据库中的代理服务是进行"复制"管理的核心,它是一种始终运行的服务,负责全部"复制"任务的控制和管理。这些服务中主要包括:快照代理、分布代理、日志代理和合并代理等。每一种"复制"方法都需要一种或集中代理服务的配合。
通过以上几部分内容的设置,我们就可以建立并运行起一个完整、可行的分布式数据库。但经管这个数据库能够正确的实现并运行,并不一定意味者其"复制"机制能够始终保持稳定并一直符合我们的要求,所以,我们还需要对"复制"服务进行有效的管理。这就包括使用服务器的"复制"服务监视工具来对"复制"服务的维护,并在"复制"服务发生故障时进行的问题解决。
4
.
MS SQL 2000
数据库对异类数据库"复制"的支持
MS SQL 2000
数据库可以与其他异类数据库实现数据直接"复制",包括
Microsoft Access
数据库、
Oracle
系列数据库、
IBM DB2
数据库以及其他支持
SQL Server ODBC
接口标准的数据库。这些异类数据库可以通过"复制"代理直接连接起来,组成一个大的分布式数据库,自由进行分布式数据的"复制"处理。
5
.小结
分布式数据库以其高度的可扩展性和可伸缩性,同时由于资源共享提高了系统的性价比,已经得到广泛的研究和应用。本文就在
MS SQL 2000
数据库中实现分布式数据库的策略与具体方式做了详细的分析。
MS SQL 2000
数据库是一款常用的数据库产品,其分布式数据功能针对各种实际情况都有着完善的解决方案。通过对其分布式数据库实现策略、方法和特点的学习,可以加深我们对分布式数据库理论的认识,加强我们通过具体途径,解决实际问题的能力。
参考文献
[1]http://www.microst.com Microsoft SQL Server 2000 System Administration
[2]http://www.microst.com Microsoft SQL Server 2000 Database Implementation
[3]
王奇成 优化分布式数据库的结构计算机世界报 2005
年07
月25
日 第29期 C11
[4]
刘爽英,张静 基于SQLServer2000的数据仓库和数据挖掘 华北工学院学报 2004年第25卷第5期
[5]
李雄飞,李军 数据挖掘与知识发现高等教育出版社 2003年
[6]
萨师煊,王珊 数据库系统概论(第三版) 高等教育出版社 2004年2月 数据挖掘概念与技术,机械工业出版社,