水木资本 李瑶:SQL Server2000数据库体系结构浅析

来源:百度文库 编辑:中财网 时间:2024/05/06 08:10:54
SQL Server2000数据库体系结构浅析2008-04-12 00:31 A.M.

附录:

[gain 发表于 2006-10-20 2:09:00]

SQL Server2000数据库体系结构浅析
摘要:

本文将对SQL Server2000数据库管理系统的体系结构及其特征进行具体分析。关键字:

SQL Server2000 体系结构 数据库逻辑结构 数据库物理结构

1. SQL Server 2000系统结构综述
从不同的应用和功能角度出发,SQL Server 2000具有不同的系统结构分类。具体可以划分为以下几种。

客户机/服务器体系结构:主要应用于客户端可视化操作、服务器端功能配置以及客户端和服务器端的通信。

数据库体系结构:又划分为数据库逻辑结构和数据库物理结构。数据库逻辑结构主要应用于面向用户的数据组织和管理,如数据库的表、视图、约束、用户权限等;数据库物理结构主要应用于面向计算机的数据组织和管理,如数据文件、表和视图的数据组织方式、磁盘空间的利用和回收、文本和图形数据的有效存储等。

关系数据库引擎体系结构:主要应用于服务器端的高级优化,如查询服务器(Queryl Processor)的查询过程、线程和任务的处理、数据在内存的组织和管理等。——《SQL Server数据库开发经典案例解析》

本文将主要分析SQL Server 2000数据库的体系结构

2. SQL Server 2000的数据体系结构

2.1 数据库体系结构

一般而言,数据库的体系结构可以分为两层或三层。

区别在于应用程序是否被分离出一部分留在客户机上,客户端能否直接进行数据库调用。SQL数据库系统应用中,客户端通过窗口界面与某应用服务器进行通信(通常为表格形式),然后应用服务器与数据库通信访问数据。

2.2 传统数据库管理系统模式结构

传统数据库管理系统的三级模式结构由外模式、模式和内模式组成。

外模式,又称子模式,或用户模式,是指数据库用户所看到的数据结构,是用户看到的数据视图。

模式,又称逻辑模式,是数据库中对全体数据的逻辑结构和特性的描述,是所有用户所见到的数据视图的总和。外模式是模式的一部分。

内模式,又称存储模式,或物理模式,是指数据在数据库系统内的存储介质上的表示,描述数据的物理结构和存取方式。

2.3 SQL数据库的基本体系结构

2.3.1 客户机/服务器体系结构

SQL Server2000是一个客户机/服务器关系型数据库管理系统:

1) 从硬件角度看,客户/服务器体系结构是指将某项任务在两台或多台机器之间进行分配,其中 Client 端用来运行提供用户接口和前端处理的应用程序,Server 端提供客户机使用的各种资源和服务。

2) 从软件角度看,客户/服务器是把Application按逻辑功能划分为客户软件部分和服务器软件部分。客户软件部分负责数据的表示和应用,用户界面处理,接收用户的数据处理请求并将之转换为对服务器的请求,要求服务器为其提供数据的存储和检索服务;服务器端软件负责接收客户端软件发来的请求并提供相应服务。

客户/服务器体系结构融合了大型机的强大功能和中央控制以及PC机的低成本和较好的处理平衡。客户/服务器体系结构为任务的集中/局部分布提供了一种新的方法,这种体系使用户对数据完整性、管理和安全性进行集中控制。在缓解网络交通和主机负荷以及满足用户需要方面,客户/服务器体系结构提供了良好的解决方案。

3) 总之,客户/服务器体系结构的工作模式是:客户与服务器之间采用网络协议(如TCP/IP、IPX/SPX)进行连接和通讯,由客户端向服务器发出请求,服务器端响应请求,并进行相应服务。SQL Server2000是一个客户机/服务器关系型数据库管理系统(RDBMS),它使用事务SQL在客户机和SQL服务器间传送请求。

SQL Server2000的客户/服务器体系结构支持三层:

服务器:数据项和支持对象的汇集,这些对象是有组织的,并随时准备提交,以便数据的搜索、分类、重组、检索、更新和分析之类的服务提供。数据库由数据的物理存储器和数据库服务组成。所有的数据访问都通过服务器进行,客户机一概不能直接访问物理数据。

客户机:运行软件程序,该程序由个人交互使用或者是一个自动进程。其中包括从数据库请求数据,或向数据库送数的与服务器交互作用的所有软件,例如管理实用程序、特别查询和报告软件、客户应用程序、现货应用程序和基于Web服务器的应用程序。

客户机和服务器之间的通信:客户机和服务器之间的通信在很大程度上取决于客户和服务器是如何实现的。通信的物理层和逻辑层可能是一样的。

SQL Server应用软件分为三个组件:

用户接口层:提供给用户运行在用户的桌面计算机上的服务软件;

业务逻辑层:运行在服务器上,支持业务服务软件;
数据层:运行在另一台服务器上,支持数据服务软件。

2.3.2 数据库体系结构
在SQL Server 2000 中,数据库由存储特定结构化数据集的表集合组成。表中包含行(元组)和列(属性)的集合。表中的每一列存储某种类型的信息。约束、规则、触发器、默认值和自定义用户数据类型等用于确保数据的有效性。有主键,利用主键可以标识并快速地找到行。可将声明引用完整性约束添加到表上,以确保不同表中相互关联的数据保持一致。还可以存储过程,如存储对表数据提供自定义访问的视图。

1) 数据库逻辑结构

数据库逻辑结构主要应用于面向用户的数据组织和管理,如数据库的表、视图、约束、用户权限等。

与传统关系模型术语相比,在SQL中,视图对应外模式,基本表对应模式,存储文件对应内模式。

SQL数据库的数据体系结构基本上也是三级结构。

2) 数据库物理结构
数据库物理结构主要应用于面向计算机的数据组织和管理,如数据文件、表和视图的数据组织方式、磁盘空间的利用和回收、文本和图形数据的有效存储等。

2.1)文件

SQL Server 2000使用一组文件映射数据库。数据库中的所有数据和对象(如表、存储过程、触发器和视图)都存储在下列文件中。

主要数据文件:包含数据库的启动信息,并用于存储数据。每个数据库都有一个主要数据文件。

次要数据文件:含有不能置于主要数据文件中的所有数据。如果主要数据文件可以包含数据库中的所有数据,那么数据库就不需要次要数据文件。有些数据库可能足够大,故需要多个次要数据文件,或使用位于不同磁盘驱动器上的辅助文件将数据扩展到多个磁盘。

事务日志文件:包含用于恢复数据库的日志信息。每个数据库都必须至少有一个日志文件。

文件组允许对文件进行分组,以便于管理数据的分配和放置,因此多个数据文件可以放置在不同磁盘上。但是同个数据文件不能为多个数据库所使用。

由上面可知的是,一个数据库至少有一个数据文件和一个日志文件。

2.2)表

表是包含数据库中所有数据的数据库对象,是列的集合。

2.3)索引(主键/外键/候选键)

索引使数据库程序无须对整个表进行扫描,就可以在其中找到所需数据。它是一个表中所包含的值的列表,其中注明了表中包含各个值的行所在的存储位置。索引仅包含一个条目,但该条目可以来自表中每一行的一个(主键)或多个列(外键或候选键)。

SQL Server 2000为某些类型的约束(如PRIMARY KEY和UNIQUE约束)自动创建索引。

2.4)视图

视图是一个虚拟表,其内容由查询定义。它包含一系列带有名称的列和行数据,但并不在数据库中以存储的数据值集形式存在。其行和列数据来自由定义视图的查询所引用的表,并且在引用视图时动态生成。

视图通常用来集中、简化和自定义每个用户对数据库的不同认识;可用作安全机制,通过不授予用户直接访问视图基础表的权限;复制数据时也可使用视图来提高性能并分区数据;简化用户操作数据的方式,将经常使用的联接、投影、联合查询和选择查询定义为视图,这样,用户每次对特定的数据执行进一步操作时,不必指定所有条件和限定;简化对数据的访问,因为每次生成报表时无需写或提交基础查询,而是查询视图;允许用户以不同的方式查看数据,即使他们同时使用相同的数据时也如此。

2.5)磁盘空间的利用和回收

一个数据库中必须存在两个系统基本的表空间,分别是系统编目表空间与系统临时表空间。

若用户需要创建表,则需要创建用户表空间,若需要使用临时表,则需要创建用户临时表空间。在数据库中创建的任何对象都以在系统编目表空间中增加记录的方式体现,对于临时表空间,其占用磁盘大小是根据使用情况动态伸缩的,即仅在需要时才分配磁盘空间,并在使用后进行回收。

2.6)文本和图形数据的有效存储

从理论上说,SQL SERVER 能访问所有格式化的数据,要求文本文件有一定格式。l

通过Microsoft.Jet.OLEDB.4.0连接成一个SERVER,再象访问一般连接数据库一样用SQL语句访问。[见SQL SERVER帮助
]
用1法建立的连接SERVER,也可以通过OPENQUERY访问,具体可以看SQL SERVER的帮助。

非格式化的一些数据可以用xp_cmdshell调用DOS命令来写入文本文件。

使用 ActiveX 数据对象 (ADO) 2.5l 中引入的stream对象可以大大简化访问和修改 SQL Server 数据库中的二进制大对象 (BLOB) 数据需要编写的代码。

由于SQL数据库存储二进制大对象相对而言比较麻烦,所以推荐使用存储图像的链接。

3)SQL数据库的体系结构特征:

一个SQL Schema是表和约束的集合。

一个表(Table)是行(Row)的集合,每行是列(Column)的序列,每列对应一个数据项。

—个表可以是一个基本表,也可以是一个视图。区别在于基本表是实际存储在数据库中的表。视图是从基本表或其他视图中导出的表,它本身不独立存储在数据库中,在数据库中只存放视图的定义而不存放视图的数据,只是一个虚表。

一个基本表可以跨一个或多个存储文件,一个存储文件也可存放一个或多个基本表,一个表可以带若干索引,索引也存放在存储文件中。每个存储文件与外部存储器上一个物理文件对应。存储文件的逻辑结构组成了关系数据库的内模式。

用户可以用SQL语句对视图和基本表进行查询等操作。在用户看来,视图和基本表是一样的,都是关系(即表格)。

用户可以是应用程序,也可为终端用户。SQL语句一方面可嵌入在宿主语言的程序中使用;另一方面也能作为独立的用户接口,供交互环境下的终端用户使用。

总结:
本文对SQL Server2000数据库管理系统的体系结构就不同角度进行了相对完整的分析,但仍有许多地方分析得略浅需要补足,未能深入讨论。