数据库原理及应用:SQL Server 2016
上QQ阅读APP看书,第一时间看更新

3.3 SQL Server 2016体系结构和文件

对于通常的数据库系统的体系结构和模式结构在第1章中已介绍过,在此主要概述数据库管理系统SQL Server 2016的体系结构、模式结构、组成结构和文件种类及特点等。

3.3.1 SQL Server 2016的体系结构

1.客户机/服务器体系结构

SQL Server 2016的客户机/服务器(C/S)体系结构主要体现在:由客户机负责与用户的交互和数据显示,服务器负责数据的存取、调用和管理,客户机向服务器发出各种操作请求(语句命令或界面菜单操作指令),服务器验证权限后根据用户请求处理数据,并将结果返回客户机,如图3-1所示。

2.数据库的三级模式结构

SQL Server 2016支持数据库共有的三级模式结构,其中外模式对应视图,模式对应基本表,内模式对应存储文件,如图3-2所示。

图3-1 SQL客户机/服务器结构

图3-2 SQL的三级模式结构

(1)基本表

基本表(Base Table)也称基表,是实际存储在数据库中的数据表,是独立存在的,并非由其他表导出的表。一个基本表对应一个实际存在的关系。关系模型中的数据(记录)为基本表的行,属性为列。

(2)视图

视图(View)是查看数据的一种方式,是从表或其他视图导出的数据并按需要做成的虚表(如网页中的图书,只是其局部信息)。视图只在刚刚打开的一瞬间,通过定义从对应的基本表中搜集并调用数据,展现给用户的是数据库外模式(可见的部分数据形式)。用户可以通过视图(如网页)调用数据库中对应基本表的数据。视图以一种逻辑定义形式保存在数据字典中。当基本表中的数据发生变化时,从视图中查询的数据也将相应地发生改变。在第5章中将对视图进行具体介绍。

视图和基本表的主要区别如下。

1)视图是已经编译好的SQL语句,而基本表不是。

2)视图没有实际的物理记录,而基本表有具体数据(记录)。

3)基本表是具体的数据结构及内容,视图是可见的窗口。

4)基本表占用物理(存储)空间而视图不占用,视图只以逻辑概念(定义)存在;基本表可以及时进行修改,视图只能用创建的语句修改。

5)基本表是内模式(存储在计算机中),视图是外模式。

6)视图是查看数据表的一种方法,可以查询数据表中某些字段构成的数据,只是一些SQL语句的集合。从安全的角度来说,视图可以避免用户接触数据表,从而不知道表结构。

7)基本表属于全局模式中的表(结构及数据),是实表;视图属于局部模式的表(部分数据),是虚表。

8)视图的建立和删除只影响视图本身,不影响对应的基本表。

(3)存储文件

存储文件是数据库内模式(内部存储方式及逻辑结构)的基本单位,其逻辑结构构成了关系数据库的内模式。物理结构(如存取路径及索引)可由需要而定。存储文件的存储结构对用户很明确,各存储文件与外存设备上的物理文件对应。基本表和存储文件的关系如下。

1)每个基本表可以对应一个或几个存储文件(如索引文件)。

2)每个存储文件可以存放一个或几个基本表。

3)每个基本表可以有多个索引,索引存放在存储文件中。

(4)SQL用户

SQL用户主要是指利用终端对数据库系统及应用程序进行操作的操作者,包括终端用户、数据库管理员和数据库应用程序员。通常,各种用户可以利用SQL依其具体使用权限,通过网络应用系统的界面对视图和基本表进行业务数据的操作如网上购物、网银操作等。

3.SQL Server 2016的组成结构

(1)SQL Server总体结构和组件

SQL Server 2016的组件主要包括:数据库引擎(Database Engine)、分析服务(Analysis Services)、集成服务(Integration Services)、报表服务(Reporting Services),以及主数据服务(Master Data Services)组件等。SQL Server 2016各组件的组成结构如图3-3所示。

用于操作、管理和控制的数据库引擎是整个系统的主要核心,其他所有组件都与其有着密不可分的联系。SQL Server数据库引擎有四大组件:协议(Protocol)、查询引擎(Query Compilation and Execution Engine)、存储引擎(Storage Engine)和SQLOS(User Mode Operating System)。各客户端提交的操作指令都与这4个组件交互。SQL Server 2016主要组件间的关系如图3-4所示。

图3-3 SQL Server 2016的组成结构

图3-4 SQL Server各组件间的关系

SQL Server 2016中,常用的五大服务器组件及其对应的主要功能如表3-3所示。

表3-3 SQL Server 2016服务器组件

SQL Server 2016的服务器组件及功能主要如下。

1)数据库引擎(Database Engine,DE)。是系统的最核心的组件,主要用于业务数据的存储、处理、查询和安全管理等操作。包括创建数据库和表、执行各种数据查询,以及访问数据库等,常用于调用数据库系统及有关操作。

2)分析服务(Analysis Services,AS)。具有提供商务智能解决方案,以及多维分析(也称为联机分析处理OLAP)和数据挖掘功能,支持用户建立数据仓库和商业智能分析。由数据库引擎负责多维分析,利用AS服务,设计、创建和管理包含其他数据源数据的多维结构,通过对多维数据多角度分析,可支持对业务数据的更全面的理解。还可完成数据挖掘模型的构造和应用,实现知识发现、表示、管理和共享。

3)报表服务(Reporting Services,RS)。利用提供基于服务器的报表平台,为各种数据源提供支持Web的企业级的报表功能。用户可方便地定义和发布满足需求的报表,可轻松实现报表的布局格式及数据源,可极大地方便用户高效规范的管理需求。例如,在航空公司的机票销售信息系统中,用SQL Server提供的RS服务可方便地生成Word、PDF、Excel和XML等格式的报表。

4)集成服务(Integration Services,IS)。是用于生成企业级数据集成和数据转换解决方案的平台,是从原来的数据转换服务派生并重新以.NET改写而成的。可实现有关数据的提取、转换和加载等。例如,对于分析服务,数据库引擎是一个重要的数据源,将其中的数据适当处理加载到分析服务中可进行各种分析处理。IS服务可高效地处理各种类型的数据源,包括处理Oracle、Excel、XML文档和文本文件等数据源中的数据。

5)主数据服务(Master Data Services,MDS)。针对主数据管理解决方案,可配置其管理任何领域(产品、客户和账户),可包括层次结构、各种级别的安全性、事务、数据版本控制和业务规则,也可用于管理数据的处理Excel的外接程序。包括复制服务、服务代理、通知服务和全文检索服务等功能组件,共同构成完整的服务架构。

(2)SQL Server 2016主要管理工具

在实际应用中,经常使用SQL Server 2016的管理工具,其主要管理工具如表3-4所示。

表3-4 SQL Server 2016主要管理工具

4.数据库存储结构及文件种类

(1)数据库的存储结构

数据库的存储结构包括两种:数据库的逻辑结构和物理结构。

1)数据库的逻辑结构。表示数据库中各数据之间的逻辑关系,数据库由多个用户界面可视对象构成,主要包括数据库对象,如数据表、视图、约束、规则、默认和索引等。

2)数据库的物理结构。数据库中数据的存储方式和方法(存储如路径及索引方式),主要描述数据存储的实际位置,对应一系列的物理文件,一个数据库由一个或多个文件组成。

(2)数据库文件

常用的数据库文件主要有3种,包括主数据文件、次要数据文件和事务日志文件。

1)主数据文件。数据库的起点,指向数据库中文件的其他部分,记录数据库所拥有的文件指针。每个数据库有且只有一个主数据文件,默认扩展名为mdf。

2)次要数据文件。也称为辅助数据文件,包含除主要数据文件外的所有数据文件。有些数据库可能无次要数据文件,而有些数据库可能有多个,不是数据库所必需的文件,默认扩展名是ndf。

3)事务日志文件。简称日志文件,是包含用于恢复数据库所需的所有操作日志信息的文件。每个数据库必须至少有一个日志文件,默认扩展名是ldf。

建议使用这些扩展名,这样有助于标识文件的用途,但SQL Serve不强制使用mdf、ndf和ldf文件扩展名。一个数据库文件组织的案例如图3-5所示。

图3-5 数据库文件组织案例

(3)数据库文件组

为了便于管理和分配数据,SQL Server将多个数据库文件组成一个组。数据库文件组是数据文件的逻辑组合,主要包括以下3类。

1)主文件组。包含主数据文件和未指明组的其他文件。如在创建数据库时,未指定其他数据文件所属的文件组。数据库的所有系统表都被分配到(包含在)主文件组中。当主文件组的存储空间用完之后,将无法向系统表中添加新的目录信息,一个数据库有一个主文件组。

2)次文件组:也称用户自定义文件组,是由用户首次创建或修改数据库时自定义的,其目的在于数据分配,以提高数据表的读写效率。

3)默认文件组。各数据库都有一个被指定的默认文件组。若在数据库中创建对象时没有指定其所属的文件组,则将被分配给默认文件组。

数据库文件和文件组遵循的规则为:一个文件或文件组只能被一个数据库使用;一个文件只能属于一个文件组;日志文件不能属于文件组。

注意:为了提高使用效率,使用数据文件和文件组时应注意以下几点。

1)在创建数据库时,需要考虑数据文件可能会出现自动增长的情况,应当设置上限,以免占满磁盘。

2)主文件组可以容纳各系统表。当容量不足时,以后更新的数据可能无法添加到系统表中,数据库也可能无法进行追加或修改等操作。

3)建议将频繁查询或频繁修改的文件分放在不同的文件组中。

4)将索引、大型的文本文件和图像文件放到专门的文件组中。

3.3.2 数据库的种类及文件

1.SQL Server数据库的种类和特点

数据库对象是指数据库中的数据在逻辑上被组成一系列对象(数据库的组成部分),当一个用户连接到数据库后,所看到的是逻辑对象,而不是物理的数据库文件。如在“对象资源管理器”中可以查看的(数据)表、索引和视图等。数据库对象的类型如图3-6所示。

图3-6 数据库对象的类型

数据库是存放各种对象(表、视图、约束、规则和索引等)的逻辑实体。逻辑上表现(界面中看到的)为数据库对象,物理上表现为数据库文件(主数据文件、次要数据文件或事务日志文件)。

SQL Server数据库的种类分为3种:系统数据库、用户数据库和示例数据库。

(1)系统数据库

系统数据库是存储SQL Server系统的系统级信息数据库,如系统配置、数据库的属性、登录账户、数据库文件、数据库备份、警报和作业等信息。SQL Server 2016在安装时创建了5种系统数据库:Master数据库、MSDB数据库、Model数据库、Resource数据库和TempDB数据库,具体如表3-5所示。

表3-5 SQL Server的系统数据库

1)Master数据库。为SQL Server系统最重要的数据库,主要存储所有的系统信息。包括登录信息、系统配置信息、SQL Server的初始化信息、其他系统数据库及用户数据库的相关信息。含有数据库所用的磁盘空间、文件分配、空间使用率、系统级的配置设置、登录账户密码和存储位置等。需要定期备份,不可人为修改。

2)Model数据库。是建立和存储新数据库结构特点的模板,对其修改可用于以后创建相同或相似结构特点的新数据库,还可对数据库进行局部更新或修改。如数据库大小、排序规则、恢复模式和其他选项等。新建数据库时,可利用模板构成新数据库结构的基础,将后面初始化为空,以备存放数据,同时将系统表复制到新建数据库。禁止删除此模板数据库,以免SQL Server无法使用。

3)MSDB数据库。代理服务数据库,是SQL Server Agent服务所使用的数据库,用于提供任务调度、管理报警和记录操作员的操作等存储空间。主要执行一些事先安排好的任务,常用于复制、作业调度和管理报警等。若不用,可忽略此数据库。

4)Resource数据库。只读数据库,用于保存数据库系统对象,如表、视图等。支持升级到新版本所需的系统对象。包含SQL Server 2016系统对象,在物理上保存在Resource数据库中,而在逻辑上出现在各数据库的SYS架构中。

5)TempDB数据库。临时数据库,用于为所有的临时表、临时存储过程及其他临时操作提供存储空间,每当SQL Server重新启动后刷新。

系统数据库及数据库对象、数据表和记录的位置如图3-7所示。

图3-7 系统数据库及数据库对象等的位置

(2)用户数据库

用户数据库是指由用户建立并使用的数据库,用于存储用户使用的数据信息。

用户数据库由用户建立,且由永久存储表和索引等数据库对象的磁盘空间构成,空间被分配在操作系统文件上。系统数据库与用户数据库结构如图3-8所示。用户数据库和系统数据库一样,也被划分成许多逻辑页,通过指定数据库ID、文件ID和页号,可引用任何一页。当扩大文件时,新空间被追加到文件末尾。

(3)示例数据库

示例数据库是一种实用的学习数据库的范例,安装SQL Server 2016时,在默认情况下不能自动安装,需要单独安装和设置。

2.数据库逻辑组件

数据库(空间)的存储(安排),实际上是按物理方式在磁盘上以多个文件方式进行实现的。用户使用数据库时调用的主要是逻辑组件,如图3-9所示。

通常,每个SQL Server实例包括4个系统数据库(Master、Model、Tempdb和MSDB),以及用户数据库。

图3-8 系统数据库与用户数据库结构

图3-9 使用数据库时调用的逻辑组件

讨论思考:

1)请解释SQL Server 2016的体系结构。

2)数据库文件的种类具体有哪些?

3)SQL Server数据库和系统数据库有哪几种?