1.4 数据库系统的结构与组成
数据库系统这个术语指的是在一个数据库环境下,用来定义和控制数据的收集、存储、管理和使用的各个成分的总和。
考察数据库系统的结构可以有多种不同的角度:从数据库最终用户的角度看,数据库系统的结构分为单用户结构、主从式结构、分布式结构、客户-服务器、浏览器/应用服务器/数据库服务器多层结构等,这是数据系统外部的体系结构;从数据库管理系统的角度看,数据库系统通常采用三级模型结构,这是数据库管理系统内部的系统结构。
1.4.1 数据库系统的体系结构
目前,常用的数据库系统的体系结构主要有客户-服务器(C/S)结构和浏览器/服务器(B/S)结构两种。
(1)客户-服务器结构
客户-服务器(C/S,Client/Server)结构是目前流行的数据库系统结构。在这种结构中,客户机提出请求,服务器对客户机的请求做出回应。C/S结构的本质在于通过对服务功能的分布,实现分工服务。每一个服务器都为整个局域网系统提供共享服务,供所有客户机共享;客户机上的应用程序借助于服务器的服务功能以实现复杂的应用功能。在C/S结构中,数据存储层处于服务器上,应用层和用户界面层处于客户机上。客户机负责管理用户界面,接收用户数据,处理应用逻辑,生成数据库服务请求,将该请求发送给服务器,同时接收服务器返回的结果,并将结果按一定格式显示给用户。
(2)浏览器-服务器结构
浏览器-服务器(Browser/Server,B/S)结构是针对C/S的不足而提出的。在B/S结构中,客户机端仅安装通用的浏览器软件,实现用户的输入/输出,而应用程序不再是安装在客户机端,而是在服务器端安装与运行。在服务器端,除了要有数据库服务器保存数据并执行基本的数据库操作外,还要有另外的称为应用服务器的服务器处理客户端提交的处理要求。也就是说,C/S结构中客户端运行的程序已转移到应用服务器中,此时的客户机可称为“瘦客户”。应用服务器充当了客户机与数据库服务器的中介,架起了用户界面与数据库之间的桥梁,所以也称为三层结构。
1.4.2 数据库系统的模式结构
早在1971年,由数据系统语言会议(CODASYL,1971)任命的DBTG(数据库任务组),提出了关于数据库系统的标准术语和一般体系结构的规范。DBTG认为需要一个两层的方法,即从系统角度看的模式(schema)和从用户角度看的子模式(subschema)。美国国家标准化协会(ANSI)标准规划和需求委员会(SPARC)在1975年提出了一个类似的术语和体系结构,ANSI/X3/SPARC。ANSI-SPARC提出了带系统目录的三层方法。
为此,在以后的报告中首先标识三层抽象,即描述数据的三个不同层次。这些层次形成了一个三层体系结构,包括外部层、概念层和内部层。这些分层方法能够实现以下3个特点:
① 程序与数据分离(程序与数据独立性和程序与操作独立性)。
② 支持多用户视图。
③ 使用编目存储数据库描述(模式)。三层体系结构实现用户的数据库视图与数据库的物理描述分离。
分层的原因是:
① 每个用户应该能够访问相同的数据,但用各自自定义的数据视图。每一个用户都应该能够改变数据视图,但这些改变不应该影响其他的用户。
② 不应该要求用户直接处理数据库物理存储的细节,例如索引。
③ 数据库管理员(DBA)应该能够在不影响用户视图的情况下,修改数据库存储结构。
下面讨论数据库系统三层模式体系结构(three-schema architecture),三层体系结构对实现上述特点非常重要。
1.模式的概念
在数据模型中有“型”和“值”的概念。型是指对某一类数据的结构和属性的说明,值是型的一个具体赋值。例如,医生记录定义为(医生编号,姓名,性别,年龄,技术职称)这样的记录型,而(161,刘景,男,66,主任医师)则是该记录型的一个记录值。
所谓模式,是数据库中全体数据的逻辑结构和特征的描述,它仅仅涉及型的描述,不涉及具体的值。模式的一个具体值称为模式的一个实例。同一个模式可以有很多实例。
模式是相对稳定的,而实例是相对变动的,因为数据库中的数据是在不断更新。模式反映的是数据的结构及联系,而实例反映的是数据库某一时刻的状态。
2.三层模式结构
如图1.4所示,三层模式体系结构的目的是将用户与物理数据库分离开来。在这个体系结构中,可以将模式分为如下3个层次。
(1)内部层有一个内模式(Internal Schema),它描述的是数据库的物理存储结构。
图1.4 三层模式体系结构
内模式也称存储模式,一个数据库只有一个内模式。它使用一个物理数据模型,全面描述数据库中数据存储的全部细节和存取路径。它与操作系统接口,以便将数据存放到存储设备上,建立索引、检索数据等。内部层与以下工作相关:
- 数据和索引的存储空间分配;
- 用于数据存储的记录描述;
- 记录放置;
- 数据压缩和数据加密技术。
内部层之下是物理层,物理层可能在DBMS的指导下受操作系统的控制。然而,DBMS和操作系统在物理层上的功能分割并不是十分清晰,并且因系统而异。一些DBMS充分利用操作系统的访问方法,而另外一些只使用一些最基本的功能,然后创建他们自己的文件组织机制。处于DBMS之下的物理层所包含的内容只有操作系统掌握。
(2)概念层有一个概念模式(Conceptual Schema),它为用户群体描述了整个数据库的结构。
概念模式也简称模式或逻辑模式,它隐藏了物理存储结构的细节,并重点描述实体、数据类型、关系、用户操作和约束。通常,实现了一个数据库系统之后,会使用一个表示数据模型来描述概念模式。这种概念模式通常以高级数据模型中的一个概念模式设计为基础。概念层描述如下:
- 所有的实体、实体的属性和实体间的联系;
- 数据的约束;
- 数据的语义信息;
- 安全性和完整性信息。
概念层支持所有外部视图,只要对用户可访问的数据包含在概念层或者由概念层可导出。然而,这层一定不能包括任何依赖于存储的详细信息。例如,对于实体的描述只能包括属性的数据类型(如整型、实型、字符型等)及它们的长度(如字符或者数字的最大位数),但是不能包括任何与存储相关的信息。
(3)外部层包括许多外模式(External Schema)。
外模式也称子模式。每个外模式描述的是一个特定用户组所感兴趣的那部分数据库,而对该用户组隐藏了数据库的其他部分。各个外模式通常都用一个表示数据模型实现,并且可能以高级数据模型的一个外模式设计为基础。
对于同一个数据,不同的视图可能会有不同的表达方式。例如,一些用户可能是以日、月、年的形式查看日期,而另外一些用户可能是以年、月、日的形式查看日期。一些视图可能包含导出的或者通过计算得到的数据,数据实际上没有存储到数据库中,而是当需要时才产生的。
三层模式体系结构是一个非常方便的工具,通过这个结构,用户就可以直观地了解数据库系统中的模式层次。大多数DBMS并不是将这三层模式完全分离开来,而只是在一定程度上支持三层模式体系结构。有些DBMS可能在概念模式中还包括一些物理层的细节。在大多数支持用户视图的DBMS中,外模式也是用描述概念层信息的同一数据模型来指定的。
3.模式间的映射与数据独立性
数据库管理系统负责三类模式之间的映射,同时检查模式以确保一致性。DBMS必须检查每个外模式都由概念模式导出,并且它必须使用概念模式中的信息,以完成内、外模式的映射。概念模式通过概念层到内部层的映射与内部模式相联系。这样,DBMS就能在物理存储中找出构成概念模式中逻辑记录的实际记录或者记录的组合,以及对逻辑记录进行操作过程中应执行的约束。它还允许两类模式在实体名称、属性名称、属性顺序、数据类型等方面存在不同。最后,每一个外部模式通过外部层到概念层的映射与概念模式相联系。这就允许DBMS将用户视图中的名称映射到概念模式中相应的部分。图1.5给出了一个不同层的例子。存储两个不同的关于医生详细信息的外部视图:一个包含医生编号(Sno)、名字(Sname)、性别(Dsex)和年龄(Dage),另一个包含医生编号(Dno)、所在部门编号(Ddeptno)、技术级别(Dlevel)和工资(Dsalary)。这些外部视图归并为一个概念视图。此归并的主要不同之处是将Sno和Sname映射为Dno和Dname。DBMS维护外部视图到概念层的映射。概念层则被映射到内部层,在内部层中包含对于概念记录结构的一个物理描述。在这一层,可以看到一个用高级语言定义的结构。这个结构包含一个指针next,靠这个指针医生记录在物理上连接成一条链。DBMS同样要维护概念层到内部层的映射。
区分数据库的描述和数据库本身是很重要的。数据库的描述是数据库模式。这个模式是在数据库设计过程中指定的,并且不会经常改变。然而,数据库中的实际数据可以经常改变。例如,每次插入一个医生或病人信息时,它都会发生改变。
三层体系结构的一个主要目的是保证数据的独立性,这意味着对较低层的修改不会对较高层造成影响。数据的独立性分为逻辑独立性和物理独立性两类。
① 逻辑数据独立性是指外部模式不受概念模式变化影响。对概念模式的修改,例如新实体、属性或者联系的添加或删除,应该不影响已存在的外部模式,也不需要重新编写应用程序。显然,重要的修改只应由相关的用户知道,其他的用户不必知道。
② 物理数据独立性是指概念模式不受内部模式变化的影响。对内部模式的修改,例如使用不同的文件组织方式或者存储结构,使用不同的存储设备,修改索引或散列算法,应该不影响概念模式和外部模式。对用户来讲,唯一要注意的是对性能的影响。实际上,性能变坏是改变内部模式最常见的原因。
图1.5 三个层次的不同之处
1.4.3 数据库系统的一般组成
如图1.6所示,数据库系统由五部分组成:硬件系统、数据库集合、数据库管理系统及相关软件、数据库管理员和用户。
1.硬件系统
运行数据库系统的计算机需要有足够大的内存、足够大容量的磁盘等联机直接存取设备和较高的通道能力,以及支持对外存的频繁访问,还需要足够数量的脱机存储介质,如软盘、光盘、磁带等存放数据库的备份。
2.数据库集合
系统包括若干个设计合理、满足应用需要的数据库。
3.系统软件
软件指的是数据库系统中被计算机使用的程序的集合。需要三种类型的软件来实现数据库系统的全部功能:操作系统、DBMS软件和应用程序。
图1.6 数据库系统的组成
① 操作系统软件管理所有的硬件并确保所有的其他软件能够在计算机上运行。操作系统软件的实例包括微机上运行的磁盘操作系统(DOS)、OS/2和WINDOWS,小型机上运行的UNIX和VMS,IBM大型机上运行的Z/OS。
② DBMS软件管理在数据库系统范围内的数据库。一些DBMS软件包括微软公司的Access和SQL Server、Oracle公司的Oracle、IBM公司的DB2等。
③ 应用程序用来访问和操作DBMS里的数据,并且管理对数据访问和操作的计算机环境。应用程序大多数用来访问从数据库中获取的数据,生成报告、表格和其他辅助决策的信息。
4.数据库管理员(DBA,Database Administrator)
数据库管理系统一般需要专人来对数据库进行管理,这个人称为数据库管理员(DBA)。数据库管理员负责数据库系统建立、维护和管理。数据库管理员的职责包括:定义并存储数据库的内容、监督和控制数据库的使用、负责数据库的日常维护,必要时重组或改进数据库。
5.用户
数据库系统必然涉及不同的用户。数据库的用户分为两类:一类是最终用户,主要对数据库进行联机查询或者通过数据库应用系统提供的界面来使用数据库。这些界面包括菜单、表格、图形和报表。另一类是专业用户,即应用程序员,他们负责设计应用系统的程序模块,对数据库进行操作。