[返回]
中国计算机报2000年第90期数据库的新生代
深入介绍sql server 2000的新特性(三)金智利 吕 科
sql server 2000(以下简称sql 2000)包括了许多新特性,这些特性扩展了sql 2000 作为一种具有丰富开发环境的高性能相关数据库系统的能力,同时对程序设计者和数据库管理者而言,也是必须要了解的。
■分布式分区视图
通过对sql server的数据进行水平分区,分布式分区视图(distributed partitioned views )特性可以让一组服务共同承担数据处理负荷。这些服务器共同管理分区数据,但其运行是自主的。数据分区对于访问数据库的应用程序是透明的。应用程序可以“看到”所有的表,而无论它访问了组中的哪台服务器。所有服务器都接受连接并处理查询和更新,同时按照需要分发扫描和更新。
分布式分区视图通过无共享群集技术实现。因为不会发生由共享资源导致的单点故障和瓶颈,所以无共享群集方法通常被认为优于共享磁盘方法。在sql 2000中,无共享群集的实现形式为一组独立管理的服务器,这些服务器协同处理工作负荷。这是向具有相同性能的集中管理无共享产品迈出的一大步。
■增强的索引
sql 2000在索引中增加了一些新功能,除了可以给视图加索引,还有就是可以给计算列(computed columns)加索引。
现在虽然可以给计算列加索引了,但是还是受到一些限制的。比如说,像avg、sum这样的和整张表都有关的计算值就不可以加索引,另外,具有不确定计算值的也不可以加索引,表达式中使用的字段也必须是这张表中的字段。
sql 2000对索引做了一些优化,比如在多cpu机器上建立索引的时候可以使用平行多线程来扫描和分类数据。sql服务器在建立索引之前首先对表做一个快速随机扫描,把数据按照设置的平行度分为几块,然后每个线程利用过滤器对基表进行查询,分别建立索引结构,每个线程都完成之后再把这些索引连接起来。
■联合服务器
可能大家都听说过集群服务器clustered server,但是在sql 2000里面我却惊奇地发现,集群服务器不见了!取而代之的是一个叫联合服务器的名词。
sql 2000的数据库能够被分散在一组独立的数据库服务器上以支持大规模的web站点的访问需求和企业级的数据处理系统。
sql 2000利用可更新的分布式视图来水平地将数据分割在一组服务器上。这使得用户可以把一个数据库服务器添加到一组数据库服务器中,这些数据库相互合作,以提供和集群数据库服务器相同的性能标准。虽然它们合作管理这些数据,但是它们之间是独立运作的。每个服务器有独立的管理界面,也有各自的运作规则,可以有其他的数据和进程,只是在联合起来处理一个工作的时候才联合在一起。
sql 2000现在在多cpu的系统上可以有非常优异的性能(可以有8个或者更多的cpu),但是使用联合服务器,你几乎可以处理无限的负载。
数据库服务器和商业逻辑服务器不一样,运行商业逻辑的时候每个服务器都可以完成相同的工作,即使一台服务器down了也不会对系统有什么影响。而数据库就不一样,你必须把数据分散在不同的服务器上,否则对性能就没有什么提高了。而在这样的情况下,如果数据库服务器不能用于处理独自的事务,就显得有些浪费。那么,我们如何使用联合服务器呢?
1.建立linked server
打开你的enterprise manager→security→linked servers,点击右键选择new linked server,其中server type选sql server,然后填上用户名以及口令。
2.在每个服务器上建立表
-- on server1:
create table table_1_to_30000
(id int primary key
check (id between 1 and 29999),
... other fields
)
-- on server2:
create table table_30000_to_60000
(id int primary key
check (id between 30000 and 59999),
... other fields
)
-- on server3:
create table table_60000_to
(id int primary key
check (id 〉 60000),
... other fields
)
3.在每个服务器上建立视图
create view partitioned_views as
select from mydatabase.dbo.table_1_to_30000
union all
select from server2.mydatabase.dbo.table_30000_to_60000
union all
select from server3.mydatabase.dbo.table_60000_to
现在你只要简单地使用这个视图就可以了,服务器自己知道把数据放到该放的地方去,查询的时候也知道该从哪里去取数据,非常方便。
■新版本数据转换服务(dts)
dts特性简化了将使用ole db、odbc(开放式数据库连接)或文本文件的异类数据提取、转换和加载到任意受支持的ole db数据库或多维存储中的操作。dts还允许用户定期导入或变换数据,以实现数据转换的自动化。
与上一个版本相比,dts在可用性和可编程性方面得到了改善。通过一些允许程序在数据转换过程中以多点方式进行交互的接口,开发人员可以访问并操纵多相数据提取(pump)的操作。多相数据提取实现了转换和错误/故障处理的灵活性。dts还允许用户利用新的参数化源选择语句和改良的错误日志将“重新启动”内建在dts程序包中。
dts程序包现在可以保存为基于visual basic的代码,这就简化了通过编程接口开发dts程序包的工作。此外,在与visual sourcesafe版本控制系统组合使用时,dts还提供了程序包版本控制和备份的替代方法。因为程序包现在可以在执行时调用其他程序包,所以您可以在重用现有程序包方面得到更大的灵活性。新的任务和定制转换特性扩展了数据操作的功能、性能、灵活性,以及dts与来自其他厂商产品的集成性。
sql 2000还有很多新特性,这些特性使得它相比sql server 7.0有了质的飞跃,如果你是数据库开发者或管理者,那么sql 2000的确不容你错过。(全文完)