四级数据库工程师笔记

发布时间 : 星期六 文章四级数据库工程师笔记更新完毕开始阅读

6.4 散列技术

6.4.1 散列文件

1、 散列是一种快速查找技术,它利用定义在文件记录上的查找码,通过计算一个散列函数,以散列

函数值作为记录的物理地址,实现对文件记录直接快速访问。

2、 首先指定文件记录的一个域作为查找码(散列域),然后定义一个查找码上的函数(散列函数),

函数的输入为查找码值,输出为物理地址;

3、 一般使用桶作为基本的存储单位,一个桶可存放多个文件记录,物理地址可以是记录所在的桶号,

散列函数的输出可以是桶号; 6.4.2 散列函数

1、 散列方法依赖于好的散列函数,它应该尽可能均匀地将查找码分布到各个桶中,具体要满足如下

两个条件:

(1) 地址的分布是均匀的; (2) 地址的分布是随机的; 6.4.3 桶溢出

1、 产生桶溢出的两个原因:

(1) 文件初始设计时,为文件记录预留的存储空间不足; (2) 散列函数的均匀分布性不好;

2、 设计散列函数时,应根据文件大小决定物理空间,一般应有20%余量,再设计合适的桶数目和桶

大小,尽可能留有一些空闲桶,降低桶溢出的可能性;

3、 桶溢出的现象是难免的,需要DBS采用相应的桶溢出处理机制;

4、 散列方法的缺点:为了避免桶溢出。必须选一合适的散列函数,但这比较复杂,而且不象索引文

件那样可以据数据记录变化动态调整。

6.5 数据字典

1、 数据字典(系统目录)中存储了数据库对象的各类描述信息和DBMS所需的控制信息,全称数据

库元数据;

2、 数据库对象的各类描述信息:包括外模式、模式、内模式以及它们之间的映射的描述; 3、 DBMS所需的控制信息:包括查询优化、安全性检查、用户权限验证等; 4、 数据字典主要包括:

(1) 关系模式信息;

(2) 与视图描述有关的信息;

- 29 -

(3) 关系的存储结构和存取方法信息; (4) 完整性约束信息; (5) 安全性有关信息; (6) 数据库运行统计信息;

6.6 数据库物理设计

6.6.1 设计步骤和内容

1、 数据库物理结构设计:在具体的硬件环境、OS、DBMS约束下,根据数据库逻辑设计结果,设计

合适的数据库物理结构。目标是存储空间占用少、访问效率高和维护代价低;

2、 一旦选定了硬件平台、OS和DBMS,数据库的数据存储和存取方式等可用的物理模式也就随之确

定了;

3、 数据库物理设计主要包括以下步骤:

(1) 数据库逻辑模式调整:将数据库逻辑模式及其视图转换为DBMS支持的基本表和视图,并

利用DBMS提供的完整性机制设计业务规则;

(2) 文件组织与存取设计:配置基本表的文件组织形式,据实际情况为基本表设计合适的存

取方法和路径;

(3) 数据分布设计: (4) 安全模式设计: (5) 确定系统配置: (6) 物理模式评估: 6.6.2 数据库逻辑模式调整

1、 物理数据库设计首先需要根据数据库逻辑结构信息,设计目标DBMS平台支持的基本表的模式信

息,这些模式信息代表了所要开发的具体目标数据库的结构,这个过程称为数据库逻辑模式调整,主要包括如下设计内容:

(1) 实现目标数据库基本表和视图:采用目标DBMS所支持的建表方法,设计基本表及其面向

模型的完整性约束;

(2) 设计基本表业务规则; 6.6.3 DB文件组织与存取设计 1、分析事务的数据访问特性

(1) 使用事务-基本表交叉引用矩阵,分析系统内数据库事务对各个基本表的访问情况,确定

事务访问了哪些基本表,对这些基本表执行了何种操作,并进一步分析各操作涉及到的基本表属性;

- 30 -

(2) 估计各事务的执行频率;

(3) 对每张基本表,汇总所有作用于该表上的各事务的操作频率信息; 2、 了解并选择数据库文件结构

(1) 如果数据库中的一个基本表中的数据量很少,并且插入、删除、更新等操作非常频繁,

该基本表可采用堆文件组织方式;

(2) 顺序文件支持基于查找码的顺序访问,也支持快速二分查找;

(3) 如果用户查询是基于散列域值的等值匹配,特别是如果访问顺序是随机的,散列文件比

较合适。但散列文件组织不适合以下情况:

(A) 基于散列域值的非精确查询(如模式查询、范围查询); (B) 基于非散列域进行查询时;

(4) B-树和B+树文件是实际数据库系统中使用非常广泛的索引文件结构,适合于定义在大数

据量基本表上、基于查找码的等值查询等;

(5) 如果某些重要而频繁的用户查询经常需要进行多表连接操作,可考虑将这些基本表组织

为聚集文件;

3、 设计存取路径:

(1) 为数据库文件设计合理的物理存储位置;

(2) 为基本表设计索引机制:索引可以提高文件存取速度,改善访问性能,但索引由DBMS

管理,它的建立、维护需要一定的系统开销,数据的操作会引起索引的重新调整,还占用一定的存储空间,可根据如下原则决定是否为一个基本表建立索引:

(A) 对于经常需要查询、连接、统计操作,且数据量大的基本表可考虑建立索引,而对

于经常执行插入、删除、更新操作或小数据量的基本表应尽量不建立索引;

(B) 一个基本表上除了可以建立一个聚集索引外,还可以建立多个非聚集索引,但索引

越多,对表内数据更新所需的开销越大,对于一个更新频繁的表应少建或不建索引;

(C) 索引可以由用户根据需要随时创建或删除,以提高数据查询性能; 对于基本表,下面一些属性上可考虑建立索引:

1)、表的主码。一般由DBMS自动建立索引。 2)、在WHERE查询子句中引用率较高的属性。 3)、参与了连接操作的属性。

4)、在Order By子句、Group By子句中出现的属性。

5)、在某一范围内频繁搜索的属性和按照排序顺序频繁检索的属性。

6)、在WHERE子句中包含的一个关系的多个属性,可以考虑在这些属性上建立多属性

- 31 -

索引。

此外,如果数据库文件需要频繁执行精确匹配查询(如等值查询),可考虑建立散列索引。而B+树等有序索引适合于范围查询。

6.6.4 数据分布设计 1、不同类型数据的物理分布

(1) 各种数据在系统中的作用不同,使用的频率也不一样,应根据实际使用情况放在合适的

物理介质上;

(2) 使用频率低但数据量大的,可以放在磁带中,而使用频繁,要求响应时间短的,必须放

在支持直接存取的磁盘存储介质上;

2、 应用数据的划分和分布

(1) 根据数据的使用特征划分:可将基本表划分为频繁使用分区和非频繁使用分区,分别存

放在不同的磁盘上,对前者可考虑建立B+树等多层索引,而后者不建立或只建立单层索引;

(2) 根据时间、地点划分;

(3) 分布式数据库系统中的数据划分: 3、派生属性数据分布

(1) 派生属性指该属性的取值可根据表中其他属性的取值惟一确定; (2) 对带有派生属性的基本表可采用两种实现方式:

(A) 将派生属性作为基本表内单独一列,称为派生列; (B) 派生属性不出现在基本表中;

4、 关系模式的去规范化

(1) 在数据库物理设计阶段,可以对考虑数据库中某些3NF、BCNF模式是否可以降低其规范

化程度,以提高查询效率,这称为关系模式的去规范化处理,但不满足3NF的关系模式又可能导致数据库访问异常,因此,设计基本表时,需在规范化和查询效率间权衡;

6.6.5 安全模式设计 1、系统安全设计

(1) 是指为数据库服务器合法用户分配用户名和口令,使其能够正常登录服务器访问所需的

数据,还可采用基于CA认证的系统安全控制机制;

2、 数据安全设计

(1) 是指通过数据库系统视图机制和授权机制为用户对数据库对象访问的权限;

(2) 引用数据视图机制,只给用户需求的那部分数据访问权限,防止由合法用户造成信息泄

- 32 -

联系合同范文客服:xxxxx#qq.com(#替换为@)