前段时间考过了这个(ps:等级考试对本专业的学生貌似一点帮助都没有)
想把自己写好的笔记发出来,因为我是跟着题库一点一点补全的,比较零碎,但如果能全背下来,那么你的客观题正确率一定可以在80~90以上
废话不说上笔记!
项目规划包括:
确定项目的目标和范围,根据系统规划与定义的工作内容,具体说明项目的最终产品以及期望时间、成本、质量目标
根据DBAS软件开发模型,分解和定义整个项目包括的工作活动和任务
估算完成该项目的规模及所需各种资源
制定合理的DBAS项目计划,包括进度、成本、质量等方面的预测和控制方案
DFD方法(结构化分析)的四种基本元素:数据流(箭头)、处理(矩形框)、数据存储(圆角矩形框)、外部项(圆角框或平行四边形框)
需求分析过程:标识问题、建立需求模型、描述需求、确认需求
DFD、IFEF0(系统模拟,建立动态模型)可用于建立需求模型
在数据流程图中,一个处理至少有一个输入流和一个输出流
数据需求分析:
数据处理需求分析:从对数据组成与存储的设计角度,辨识应用领域所管理的各类数据项和数据结构,与数据处理需求分析结果在一起,组成数据字典,形成“数据规范说明书”
功能需求分析(数据处理需求分析与业务规则需求分析):主要针对DBAS应具有的功能进行分析,是DBAS需求分析的核心环节,总体上可分为数据处理需求分析与业务规则需求分析。数据处理需求分析从数据访问和处理的角度,明确对各数据项所需要进行的数据访问操作。在系统规划与分析阶段DBAS开发者已经明确了各类用户视图。因此数据处理需求分析阶段可以从这戏视图出发,针对每个用户视图进行数据处理需求分析,然后汇总各个视图的分析结果得到对系统的完整分析结果。
性能需求分析:性能需求则描述了系统应当做到什么程度,分析DBAS应具有的性能指标
其他需求分析:存储需求、安全性需求
数据库应用系统需求建模:DFD、IDEF0(箭头、活动)、UML
DBAS的性能指标:数据操作响应时间、系统吞吐量、允许并发访问最大用户数、每TPS代价值
数据库系统设计6个阶段:需求分析、概念结构设计、逻辑结构设计、物理结构设计等
IDEF1X建模方法:实体集(独立实体集「直角矩形框」、从属实体集「圆角矩形框」)、联系(标定型联系、非标定型联系、分类联系、非确定联系)
非标定型联系:在一个“确定型联系”中,如果子女实体集中的每一个实例都能够被唯一地确认而无需了解与之相联系的双亲实体集的实例(一对多,不产生从属实体集)
建立索引的原则:
经常在查询中作为条件被使用的列
频繁进行分组(group by)或排序(order by)
一个列的值域很大
待排序的列有多个,应在这些列建立复合索引
可以使用系统工具来检查索引的完整性,必要时进行修复
数据分布式任务体现方面:不同类型数据的物理分布、应用数据的划分与分布、派生属性数据分布、关系模式的去规范化
数据库物理设计阶段:数据库逻辑设计、选择或配置基本关系表的文件组织形式,为基本关系表设计数据存取方式或存取路径、数据分布设计、安全模式设计、确定系统配置、物理模式评估
物理设计阶段主要活动有:确定存储结构、存取路径的选择和调整、确定数据存放位置和确定存储分配
表示层详细设计:采用原型迭代法:初步设计、用户界面细节设计、原型设计及改进(详细设计)
数据安全设计:安全性保护、完整性保护、并发性控制、数据备份与恢复、数据加密传输
数据库备份与恢复策略:双机热备、数据转储、数据加密存储
数据加密传输:数字安全证书、对称密钥加密、数字签名、数字信封
环境安全设计:定期查找漏洞更新补丁;杀毒软件、实时监控;防火墙、入侵检测系统、网络隔离(逻辑隔离与物理隔离);物理环境安全(防盗设施、UPS、温湿度报警器)
DBAS实施:创建数据库;数据装载;编写与调试应用程序;数据库系统试运行
数据约束类型:主键约束、外键约束、唯一性约束、缺省约束、检查约束
事务概要设计:事务名称、事务所访问的关系表及关系属性、事务处理逻辑、事务用户(指使用、启动、调用该事务的软件模块或系统)
UML组成:元元模型、元模型、模型层、用户模型
UML5种视图(DBAS宏观):结构、行为、实现、环境、用例
结构图
类图:展现一组类、接口和协作以及之间的关系的静态视图,主要用于表达问题领域的概念模型,除了表达抽象概念的名称外,还需要表达抽象概念的属性和方法
对象图
复合结构图
包图:表示包及包之间的关系的类图
组件图:显示系统中软件对其他软件组件的依赖关系,它可以在一个非常高的层次上显示,从而仅显示粗粒度的组件,也可以在组件包层次上显示,对源代码、可执行程序的发布等进行系统建模
部署图(配置图):描述系统中硬件和软件的物理配置情况和系统体系结构
行为图
用例图:功能建模,由用例(功能模块,系统内部,椭圆形,包括扩展、使用、组合)、角色、系统组成(用例视图),动态结构,表达系统功能需求,非DBAS系统内部结构
交互图
顺序图:用于描述系统内对象之间的消息发送和接受序列,纵向表示时间的持续过程,横向表示对象,描述对象自身以及对象间信息传递的视图
通信图(协作图):用于描述对象在空间中如何交互,它也直接描述了对象是如何连接在一起的。在图中没有时间轴,而是将消息按序编号,一系列的对对象之间的联系以及对象间发送和接收消息,系统内对象之间的关系,并不强调交互顺序
交互概述图
状态图:描述一个实体在发生一些时间时的状态变化情况,一个起始,可以有多个结束
活动图:用于描述系统、用例、程序模块中的逻辑流程执行次序,陈述活动与活动之间的流程控制的转移,一个起始点,多个结束点
DBAS微观设计
状态机图:
对象图:
时间图:当状态的转移与时间密切相关时,同时强调时间因子在状态转移过程中的重要作用
UML的状态机图中,状态之间的转移由事件驱动
用例模型通过对系统参与者及其重要行为的描述,表达系统功能的需求
聚集是一种特殊形式的关联,表示类之间是整体与部分的关系
功能角度数据库应用系统划分为4层次:
表示层负责所有与用户的交互的功能,对用户对数据库应用系统的最直观感受均在则层实现
业务逻辑层负责跟进业务逻辑需要将表示层获取的数据进行组织后,传递给数据访问层,或将数据访问层获取的数据进行相应的加工处理后,传递给表示层用于展示
数据访问层负责与DBMS系统进行交互,提取或存入应用系统所需的数据
数据持久层负责保存和管理应用系统数据。根据事务-基本表交叉引用矩阵来调整数据文件的组织结构,涉及到应用系统数据的变化,建立合适的索引
数据库完整性约束条件的作用对象:列、元组、关系或表
业务逻辑层概要设计原则:
构建本身应由相关性很强的代码组成,一个构件或一个模块只负责完成一项任务
组件系统业务逻辑层的各个构件应具备独立的功能,并且最大限度地减少与其他构建功能重叠
构件之间的接口应尽量简单明确
如果两个构件间关系复杂,应考虑进一步进行模块划分
如果构件过于复杂,可以将其细分
提高事务吞吐量:
按同一顺序访问资源
避免事务中的用户交互
采用小事务模式,尽量缩短事务的长度,减少占有锁的时间
尽量使用记录级别的锁,少用表级别锁
使用绑定连接,使同一应用程序所打开的两个或多个连接可以相互合作
从数据存储安全角度出发:
安全性保护
用户身份鉴别
权限控制
视图控制
完整性保护
并发控制
数据库的备份与恢复
数据加密传输
环境安全设计:漏洞和补丁、计算机病毒防护、网络环境安全、物理环境安全
降低事务隔离级别:提高事务吞吐量、提高活锁的可能性、降低死锁、阻塞的发生可能性
物理设计:
数据库物理结构设计
数据库逻辑模式调整
文件组织与存取设计
数据分布设计
安全模式设计
确定系统配置
物理模式评估
数据库事务详细设计
应用程序物理结构设计
封锁粒度越大、并发度越小,系统开销越小;封锁粒度越小,并发度越大,系统开销越大
完整性约束的作用对象:
列:对其值类型、范围、精度、排序等
元组:对记录中的各个属性之间的联系等
关系:对若干记录间、关系集合上、关系之间联系的约束条件
两段锁协议(保证事务调度的可串行性):
在对任何数据进行读、写操作之前,要申请并获得对该数据的封锁
在释放一个封锁之后,事务不在申请和获得任何其他的封锁
数据库完整性:
实体完整性
create table 中的 primary key
参照完整性
create table 中的 foreign key
用户自定义完整性
not null、unique、check
系统总体设计:确定DBAS体系结构、软硬件选型、配置设计、应用软件总体设计、业务规划初步设计
SQL server系统数据库:
master:记录了SQL Server实例的所有系统级信息
msdb:存储SQL Server实例的作业信息,作业是SQL Server中定义的自动执行的一系列操作的集合,作业的执行不需要任何人工干预
tempdb:每次启动SQL Server都会重新创建tempdb
model:对model数据库的修改将应用于以后创建的所有用户数据库
resource:
数据库三级模式:内模式(存储模式或物理模式,最底层,唯一)、模式(逻辑模式)、外模式(子模式或用户模式,可多个)
一页数据8KB,一行数据xKB,共n行数据,储存空间=8*(8//x)*n,空间利用率=(8//x)*x/8
DBAS系统实现与部署表达
系统实现与组件图
系统实现与部署图
数据库应用系统实现与部署内容包括
建立数据库结构
数据加载
事务和应用程序的编码及测试
系统集成、测试与试运行
系统部署
RecordSet
AddNew,创建一条新记录
Cancel,撤销一次执行
Close,关闭一个RecordSet
Delete,删除一条或一组记录
MoveNext,把记录指针移动到下一条记录
UML微观设计:对象图、状态机图、时间图
类图表示
空心三角实线:类,继承关系
空心三角虚线:接口,实现关系
空心菱形实线:聚集,弱拥有关系,A对象包含B,B对象不是A的一部分
实心菱形实线:合成,强拥有关系,整体与部分的关系
select[distinct][top n] select_list
[into new_table]
[from table_source]
[where search_conditition]
[groupby group_by_expression]
[having search_condition]
[orderby order_expression [ASC|DESC]]
[compute expression]
into:将查询结果保存到对应的位置
from:查询哪张表
where:查询条件
group by:对查询结果进行分组的条件
having:指定进行聚合查询的条件
order by:对查询结果进行排序;asc升序,desc降序
compute:在结果集的末尾生成汇总数据行
top n[percent][with ties]:查询的前几条记录/n%的记录
n:前几行
[percent]:前n%行
[with ties]:包括最后一行取值
分布透明性(级别大到小,分片——位置——局部):
分片透明性:最高层次,指的是用户或应用程序只对全局关系进行操作而不必考虑关系分片情况
位置透明性:下一层次,指用户或应用程序只需要了解数据分片晴空,而不必了解片段的存储场地
局部数据模型透明性:用户或应用程序不必了解局部场地上使用的是哪种数据模型,但必须了解全局数据的分片晴空,还需了解各片段的副本复制情况及各片段和它们副本的场地位置分配情况
支持度:
s=(a,b同时存在的情况)/总情况
置信度:
c=支持度/支持计数(前者出现的次数)
元数据是关于数据的数据,或叫做描述数据的数据。元数据描述了数据的结构、内容、链、索引
关系数据库中的视图提供了逻辑数据独立型
用于判断游标数据提取状态的全局变量是@@FETCH_STATUS
集合操作包括:UNION、INTERSECT(交)、EXCEPT(差)
计算两个日期之差的函数是dayediff()
只具有修改数据库中全部用户表数据权限的系统角色是db_datawriter
只复制最近一次数据库完全转储以来发生变化的数据的转储方式称为差量转储
在分布式数据库中,采用半连接操作可以减少场地之间的数据传输量
在进行多维分析时,如果将年销售额投影到每个月上来进行观察,这种分析动作称为钻取
钻取操作:在多维数据分析中,从高粒度级数据视图切换到低粒度级数据视图
在数据仓库中,元数据主要分为技术元数据和业务元数据两类
模式/内模式保证数据库中数据与应用程序间的物理独立性
外模式/模式保证了数据与应用程序间的逻辑独立性
数据库应用系统设计:
概念设计:采用自上而下的ER设计
逻辑设计:设计视图和关系模式的完整性约束
物理设计:将关系模式转换为具体DBMS平台支持的关系表
数据库应用系统逻辑设计工作内容分为三部分:
数据库逻辑结构设计
数据库事务概要设计
应用程序概要设计
数据库应用系统的需求:
数据需求分析:从用户视图出发,分析与辨别应用领域所管理的各类数据项和数据结构,形成数据字典的主要内容
数据处理需求分析
业务需求分析
在其性能、存储、安全、备份和恢复等方面的要求
在保证数据库一致性的前提下,将频繁操作的多个可分割的处理过程放在多个存储过程中,这样可以大大提高系统的响应速度
使用游标会占用较多的系统资源,尤其对于大规模并发量的情况下,很容易使得系统志愿耗尽而崩溃
使用临时表能够加快查询,相关子查询不能加快
创建索引
nonclustered:非聚集索引(默认)
clustered:聚集索引
unique:合并
create[unique][nonclustered]index<索引名>
on<表名>(<列名>[<次序>],<列名>[<次序>],) include(属性名)where 约束条件
创建索引视图步骤:
使用schemabinding子句来创建一个视图。这个视图必须符合许多要求,例如,只能引用同一数据库中的基表,而不能是其他标准视图。所有引用的函数必须是确定性的,行集函数、派生表和子查询都不能在索引视图中使用
在视图上创建一个唯一索引。这个索引的叶子级由视图的完整结果集组成
在聚集索引的基础上根据需求创建非聚集索引。非聚集索引可以按平常的方式创建
创建并使用索引视图
为数据库添加一个新的数据文件
alterdatabaseadd file(
name=,
filename='<文件存储路径全称[D:\DB1\filex.ndf]>',
[filegrowth=[XX%]])
修改数据文件大小
alterdatabase<数据库名>modify file (name=<数据文件名>, size=<文件容量,必须大于原有>)
索引视图可以提高:
处理大量行的联接和聚合
许多查询经常执行联接和聚合操作
决策支持工作负荷
索引视图通常不会提高:
具有大量写操作的OLTP系统
具有大量更新的数据库
不涉及聚合或联接的查询
GROUP BY键具有高基数度的数据聚合。高基数度表示列包含许多不同的值。当GROUP BY后跟的列值包含许多不同的值,导致视图图和表的行数相等,那么该列使用索引视图并不能提高查询效率
一个数据库包含只一个主要数据文件(推荐使用.mdf),多个次要数据文件(推荐使用.ndf),至少一个日志文件。日志文件不包括在文件组内。一个文件不可以是多个文件组的成员,
分离数据库
分离数据库时不仅分离数据文件,还要分离日志文件
进行分离数据库操作时不能停止SQL Server服务
分离数据库前必须断开所有用户与该数据库的连接
附加数据库时文件存储位置可以与分离数据库时文件所处的存储位置不同
附加数据库名可以与分离的数据库名不同
分区表的本质是把符合不同标准的数据子集存储在某个数据库的一个或多个文件组中,通过元数据来表述数据存储的逻辑地址
文件组
一个数据库可以包含多个文件组
一个文件组可以包含多个数据文件
一个数据文件不能是多个文件组的成员
主文件组是系统定义好的文件组,它包含主要数据文件和任何没有明确分配给其他文件组的其他数据文件。如果次要数据文件没有分配给其他文件组,也可以存放在主文件组中
分区表
分区表机制将一个表的数据依据一定的条件水平划分为多个数据子集
合理使用分区表技术可以提高数据库整体性能
分区表机制是从物理上将一个表划分为若干个分区
是否创建分区表主要取决于表当前的数据量大小以及将来的数据量大小,同时还取决于对表中的数据如何进行操作
如果表中的数据量巨大同时数据是分段的,则此表比较适合分区
创建分区方案时指定的文件组数不得少于分区函数生成的分区数,否则就会返回错误信息
用户在使用分区表时不需要考虑操作的是哪个表分区,分区对用户是透明的
创建分区函数的目的是告诉数据库管理系统以什么方式对表进行分区
视图
视图对应数据库的外模式,因此可以提供一定程度的逻辑独立性
视图是虚表,其数据并不实际保存在数据库中
通过视图进行数据查询时,最终都会转化成对基本表的查询
可以在视图上定义视图(因为视图返回的结果级的格式与基本表相同)
查询处理器和存储管理器
查询处理器的DML编译器会对用户提交的DML语句进行优化,并将其转换为能够执行的底层数据库操作指令
查询处理器中最主要的模块是查询编译器和查询执行器,负责DML语句解析和执行
存储管理器中的缓冲区管理器负责将从磁盘读出的数据块放入内存缓冲区,同时也负责对缓冲区中的数据块进行维护
查询处理器中的DDL编译器编译或解释用户提交的DDL语句,并将生产的元数据存储在数据库的数据字典中
多表连接
left join(左联接):返回包括左表中的所有记录和右表中联结字段相等的记录
right join(右联接):返回包括右表中的所有记录和左表中联结字段相等的记录
inner join(等值联接):只返回两个表中联结字段相等的行
游标
每个游标都有一个当前行指针,当游标打开后,当前行指针自动指向结果集的第一行数据
如果在声明游标时未指定INSENSITIVE选项,则已提交的对基表的更新都会反映在后面的提取操作中
关闭游标之后,可以通过OPEN再次打开游标
游标由游标结果集和游标当前行指针两部分组成
如果未在声明游标时指定SCROLL,则NEXT是唯一支持的提取选项
在对游标进行FETCH操作后,可以使用@@FETCH_STATUS变量判断数据提取状态,当“@@FETCH_STATUS=0时,表示FETCH语句成功,-1为失败或不在结果集中,-2为提取的行不存在
当使用CLOSE语句关闭游标后,需使用DEALLOCATE命令释放系统为游标分配的资源
NEXT:跟进当前行返回结果行,并且当前行递增为返回行
PRIOR:搜索返回紧邻当前行前面的结果行并且当前行递减为返回行
FIRST:返回游标中的第一行并将其作为当前行
LASR:返回游标中的最后一行将其作为当前行搜索
ABSOLUTE n|@nvar:n为正,则返回从与游标头开始向后第n行,并返回行变成新的当前行。如果n为负,则返回从游标末尾开始向前第n行,并将返回行变成新的当前行。如果n为0,则不返回。n必须是整数常量,且@nvar数据类型必须为smallint、tinyint、int
RELATIVE n|@nvar:n为正,则返回从与游标头开始向后第n行,并返回行变成新的当前行。如果n为负,则返回从游标末尾开始向前第n行,并将返回行变成新的当前行。如果n为0,则返回当前行。在对游标进行第一次提取时,如果在将n或@nvar设置为负数或0的情况下指定FETCH RELATIVE,则不返回行,n必须是整数常量,且@nvar数据类型必须为smallint、tinyint、int
声明游标
DECLARE<游标名>cursorFOR
內联表值函数
內联表值函数中,没有相关联的返回变量
內联表值函数通过SELECT语句填充函数返回的表值
内联表值函数的作用类似于带参数的视图
调用內联表值函数时,只能将內联表值函数放置在FROM子句中
触发器
可以实现负责的完整性约束
对DML型触发器,引发触发器执行的操作只能是INSERT、DELETE、UPDATE(或者说三种类型)
使用触发器实现数据完整性的效率通常低于CHECK约束
一张表可以建立多个后触发器,但只能建立一个前触发器
DELETED表用于存储DELETE和UPDATE语句所影响的行的副本;INSERTED表用于存储INSERT和UPDATE语句所影响的行的副本
在触发器执行时并非会同时生成DELETED表和INSERTED表
INSTEAD OF:前触发器
语法
CreateTRIGGER trigger_name
ON{table|view}{
{{FOR|AFTER|INSTEAD OF}{[INSERT][,][UPDATE]}}
AS
[{IFUPDATE(column)
[AND|or]}UPDATE(column)]
[...n]
|IF(COLUMNS_Updated(){bitwise_operator}update_bitmask)
{comparison_operator}column_bitmask[...n]
}]
sql_statement[...n]
}
}
授权语句
GRANT{ALL[PRIVILEGES]}
| permission [(column[,...n])][,...n]
[ON [class::] securable]TO principal [,...n]]
[WITHGRANTOPTION][AS principal]
数据库强制存取控制方法规则:
仅当主体的许可证级别大于或等于客体的密级时,主体才能读取响应的客体
仅当主体的许可证级别小于或等于客体的密级时,主体才能写相应的客体
安全管理
SQL Server 2008支持两种身份验证模式:Windows身份验证模式、混合身份验证模式
在“混合身份验证模式”,允许Windows用户和非Windows用户登录到SQL Server
Windows用户只有系统管理组成员才有权限登录到SQL Server
只有在“混合身份验证模式”,sa才能登录到SQL Server
sa是SQL Server默认的系统管理员,不是Windows用户
SQL Server固定数据库角色 |
权限 |
db_owner |
具有在数据库中进行全部操作的权限,包括配置、维护、删除数据库 |
db_accessadmin |
可以添加或删除数据库用户的权限 |
db_securityadmin |
具有管理数据库角色、角色成员、数据库中的语句和对象的权限 |
db_ddladmin |
具有执行数据定义语言(DDL)的权限 |
db_backupoperator |
具有备份数据库、备份日志的权限 |
db_datareader |
具有查询数据库中所有用户数据的权限 |
db_datawriter |
具有插入、删除、更新数据库中所有用户数据的权限 |
db_denydatareader |
不允许具有查询数据库中所有用户数据的权限,等同于对所有的视图和表授予了DENY SELECT权限 |
db_denydatawriter |
不允许具有INSERT、DELETE、UPDATE数据库中所有用户数据的权限 |
四类安全等级
A类提供验证保护
B类提供强制保护
C类提供自主保护
D类提供最小保护
数据库用户可分为:系统管理员、对象拥有者、普通用户
索引
在多数属性索引中,索引属性的顺序是按照其区分度进行排序
散列索引根据HASH算法构件索引,索引检索速度快,但不能用于范围查询
稀疏索引:如果索引文件只包含了数据文件中的部分查找码
数据库管理员日常管理工作:
系统监控与分析
系统性能优化调整
系统升级
并发控制
储存空间管理
安全性维护
完整性维护
备份与恢复
数据转储:静态、动态、完全、差量、增量
在静态转储过程中,数据库不能运行其他事务,不允许有任何的修改活动
仅使用完全转储会产生大量数据传输,占用时间和空间都较多,甚至可能会影响业务系统的正常运行
增量转储只能和完全转储配合才能进行数据库恢复,增量转储的数据恢复时间比仅用完全转储时间长
差量转储是对最近一次数据库完全转储以来发生的数据变化进行转储。差量转储和完全转储相比速度快,占用较小的空间。增量转储只复制上次转储后发生变化的文件或数据块
在制定备份策略时,除考虑使用备份恢复时丢失的数据量外,还需考虑数据库备份所需的时间。
检查点技术大幅度减少了数据库完全恢复时所必须执行的日志部分
静态转储虽然保证了数据的有效性,但是却是以降低数据库的可用性为代价;动态转储虽然提高了数据库的可用性,但数据的有效性却可能得不到保障。
差量转储和增量转储相比,速度慢,占用空间多,但恢复速度比增量转储快
差量转储比完全转储恢复时间长
检查点
记录内容包括:建立检查点时刻所有正在执行的事务清单,这些食物最近日志记录的地址
恢复子系统可以不定期或定期地建立检查点来保存数据库状态
系统在恢复时,如果事务在故障发生时未完成,应当UNDO
如果事务在检查点之后才提交,它们对数据库所做的修改在故障发生时还可能在缓冲区中,尚未写入数据库,所以要REDO
如果事务在检查点之前进行提交,所以以不必执行REDO操作
检查点校验了日志有效性,日志发生损坏时可以在一定程度上对日志进行修复
检查点保证了数据库恢复时REDO和UNDO两种操作可并发执行
数据库管理员应定时建立检查点,保证数据库系统出现故障时可以快速恢复
检查点记录的内容包括建立检查点时正在执行的事务清单和这些事务最近一个日志记录的地址
在建立检查点的同时,数据库管理系统会将当前数据缓冲区中的所有数据记录到数据库中
检查点应当有数据库恢复子系统自动的定期或不定期的建立,而不应当由数据库管理员手动建立
使用检查点进行恢复时需要从“重新开始文件”中找到最后一个检查点记录在日志文件中的地址。
主-备方式(Active-Standby方式)即指的是一台服务器处于某种业务的激活状态(即Active状态),另一台服务器处于该业务的备用状态(Standby状态)。该方式的特点是当Active状态服务器出现故障时,通过软件诊断将Standby机器激活,保证系统在最短时间内恢复使用。
数据库的恢复顺序
还原最新完整数据库备份而不恢复数据库
如果存在差异备份,则还原最新的差异备份而不恢复数据库
从最后一次还原备份后创建第一个事务日志开始,使用NORECOVERY选项依次还原日志
还原数据库,此步骤也可以与还原上一次日志备份结合使用
备份语句
BACKUP DATABASE 数据库名 TO MyBK_1 WITH DIFFERENTIAL,NOINIT
DIFFERENTIAL:表示进行数据库差异备份
NOINIT:表示将该次备份内容追加到制定的媒体集上,以保留原有的备份集
SQL Server 2008支持三种恢复模式
简单恢复模式:只用于测试和开发数据库,或用于主要包含只读数据的数据库(如数据仓库),这种模式并不适合生产系统,无日志备份,自动回收日志空间以减少空间需求,实际上不再需要管理事务日志空间。最新备份之后的更改不受保护。在灾难发生时,这些更改必须重做。只能恢复到备份的结尾
完整恢复模式:系统数据量很大,但数据变化量较小。需要日志备份。数据丢失或损毁不会导致丢失工作。可以恢复到任意时点(例如应用程序或用户错误之前)
大容量日志恢复模式:一般只作为完整恢复模式的附加模式,该模式不支持时点恢复。需要日志备份。执行高性能的大容量复制操作。通过使用最小方式记录大多数大容量操作,减少日志空间使用量
数据库恢复
在进行数据库整体还原和恢复的过程中,此数据库处于脱机状态
在还原数据库之前,如果数据库的日志没有损坏,为了减少数据丢失可以进行一次尾部日志备份
在进行数据库还原的过程中,可以将数据库移动到其他位置
SQL Server支持对数据库中的一个数据文件进行还原操作,在还原过程中数据库自动处于脱机状态,其他文件都不能进行读写操作,因此将受到一定的影响
备份
完整备份:第一次数据库备份要求完整备份,是将数据库的全部内容备份下来
差异备份:备份数据库相对最近的完整备份之后对数据库的修改部分
日志备份:备份自前一次备份之后的日志内容,不能还原数据库的物理损坏情况,每个事务日志备份的序列都必须在执行完整备份或差异备份之后启动
备份设备可以是磁盘、磁带
备份设备可以是本地设备、远程网络设备
两种备份方式
建立备份设备,然后将数据库备份到备份设备上(永久备份设备)
直接将数据库备份到物理文件上(临时备份设备)
创建备份设备的T-SQL存储过程为sp_addumpdevice
事务日志备份仅用于完整恢复和大容量日志恢复,它并不备份数据库本身,只备份日志记录,而且只备份从上次备份之后到当前备份时间发生变化的日志记录。但不允许对大容量操作日志备份进行时点恢复。
结尾日志备份发生故障时进行,用于防止丢失数据,可以包含纯日志记录或大容量操作日志记录
分布式数据库采用数据分片对数据进行管理:
完整性原则:即全局关系的所有数据项必须包含在某个片段中 ,否则将导致数据库不完整,造成某些片段数据丢失
重构性原则:即所有片段必须能够还原全局关系
不相交原则(对垂直分片的主键除外):对于一个全局关系,要保证数据不丢失,则必须要属于某个片段,即不允许不属于任何片段,也不允许一个全局的某些数据即属于该全局关系的某些片段又属于该全局关系的另一个片段(垂直关系中的码属性除外)
在分布式数据库中,使用分配模式来描述各片段到物理存放场地的映像
分配模式:
集中式:把所有数据片段都安排在一个场地
分割式:所有全局数据有且只有一份,被分割成若干片段,每个片段被分配到一个特定场地
全复制式:全局数据有多个副本,每个场地都有一个完整副本
混合式:全局数据被分为若干个数据子集,每个子集被安排在一个或多个不同的场地,每个场地未必保存所有数据
分布式数据库分片类型:
混合分片:是其余三种的混合,先后顺序不同,结果不同
水平分片:按一定的条件把全局关系的所有元组划分成若干不相交的子集,每个子集都是关系的一个片段
垂直分片:把一个全局关系的属性集分成若干子集,并在这些子集上作投影运算
导出分片:又称为导出水平分片,即水平分片的条件不是本关系属性的条件,而是其他关系属性的条件
分布式数据要达到的目标时:本地自治、非集中式管理、高可用性、位置独立性、数据分片独立性、数据复制独立性、分布式查询处理、分布式事务管理、硬件独立性、操作系统独立性、网络独立性、数据库管理系统独立性
并行数据库的目标是高性能和高可用性,通过处理多个处理节点并行执行数据库任务,提高整个数据库系统的性能和可用性
SQL Server2008权限层次:
GRANT:允许一个数据库用户或角色执行所授权制定的操作
DENY:拒绝一个数据库用户或角色的特定权限,并且阻止它们从其他角色中继承这个权限
REVOKE:回收已经授予的权限
在数据仓库设计和建设过程中,设计者需要调查用户的决策或数据处理需求,并将功能相近且需要相关联数据支持的需求进行归类,得到不同的需求集合,并在企业数据模型中寻找能够满足各个需求集合的数据集合,然后针对各个数据集合展开数据仓库模型的设计,这种设计方法称为“面向主题”的设计方法
OLAP的实现技术主要分为三类
基于关系型数据库(ROLAP)
基于多维数据库(MOLAP)
混合型(HOLAP)
ODS是数据仓库体系结构中的一个可选部分,ODS具备数据仓库的部分特征和OLTP系统的部分特征,它是“面向主题的、集成的、当前或接近当前的、不断变化的”数据。
第一类ODS,更新频率是秒级
第二类ODS,更新频率是小时级
第三类ODS,更新频率是天级
ODSIV,第四类ODS是根据数据来源方向和类型划分的
在并行数据库中,最适合整表扫描操作的数据划分方式是轮转法
Google的云数据库是一个分布式的结构化数据存储系统,称作Big table
知识发现主要由三个步骤组成,数据准备、数据挖掘、结果的解释评估
在分布式数据库中,如果用户编写程序时不必了解数据分片在各个场地的分配情况,则称该分布式数据库系统具有位置透明性
SQL中的集合操作符
IN,确定给定的值是否与子查询列表中的值相匹配,使其得以选择与列表中任意一个值匹配的行
EXCEPT,指在第一个集合中存在、但是第二个集合中不存在的数据
INTERSECT,是指两个集合中都存在的数据
UNION,操作符用于合并两个或多个SELECT语句的结果集,对于UNION操作符,内部的SELECT语句必须拥有相同数量的列,列也不必须拥有相似的数据类型。合并两个或多个查询语句的结果集,并且自动删除合并后结果集中的重复记录,水平分割使用
删除用户自定义的函数使用DROP FUNCTION语句来实现
DROPFUNCTION{[schema_name.] function_name}[,...n]
CREATE FUNCTION:定义一个新函数
ALTER FUNCTION:修改一个函数的定义
分区表的本质是把符合不同标准的数据子集存储在某个数据库的一个或多个文件组中,通过元数据来表述数据存储的逻辑地址
数据仓库数据维护策略:
快照:该方法通过对当前数据表进行“照相”,记录当前数据表信息“相片”,然后将当前的”相片“与以前的数据表”相片“进行比较,如果不一致将通过一定的方式传到数据仓库,从而实现数据的一致性,这种方式适合于更新频率较低的数据表,触发条件是时间
实时维护:数据源发生变化,立即更新数据仓库,触发条件是数据的更新操作
延时维护:不是在数据源更新事务中完成,在数据仓库的视图被查询时完成更新,触发条件时用户对数据源更新之后首次查询数据仓库
有学生表(学号,姓名,所在系)和选课表(学号,课程号,成绩),现要利用开窗函数查询每个学生的姓名、所在系、选课门数(不包括没选课的学生)
SELECTDISTINCT 姓名,所在系,COUNT(*) OVER (PARTITIONBY T1.学号)AS 选课门数 FROM 学生表 T1 JOIN 选课表 T2 ON T1.学号=T2.学号
(PARTITION BY T1.学号)
在T表的c1列上定义唯一非聚集索引(所以名为idx1)的SQL语句
CREATEUNIQUE NONCLUSTERED INDEX idx1 ON T(c1)
UNIQUE NONCLUSTERED
范围划分法按照关系中某个属性的取值范围将数据文件划分为n部分,分别放在磁盘上,该方法适合于范围查询以及点查询
运行管理与维护
日常维护,数据库管理员的职责(数据库维护的主要内容):
数据库的转储与恢复
作为数据库管理员,应该针对各种数据制定合理的转储计划,定期对数据库和日志文件进行备份,保证数据库一旦出现故障,也有能力恢复到正常状态
数据库安全性、完整性控制
新建数据库用户
数据库的完整性约束条件会发生变化,需要数据库管理员不断修正,以满足用户的需求
数据库性能检测和改善
数据库管理员应该经常检测数据库系统的运行,观察数据库的动态变化情况,以便于在数据库出现故障时能够及时恢复或采用其他有效措施保护数据库
数据库的重组和重构
重构:调整磁盘分区
重组
数据库管理员应该定期对数据库进行重组,即按照系统设计要求对数据库存储空间进行全面调整,如调整磁盘分区方法和储存空间、重新安排数据的存储
监控与分析:管理员借助工具监测DBMS的运行状况
基准程序评估(评估DBMS整体运行状态)
掌握系统当前或遗忘的负荷、配置、应用等信息
分析监测数据的性能参数和环境信息
性能优化调整
系统升级
事务内部故障可以分为预期、非预期,运算溢出故障属于非预期的事务内部故障
在并行数据库中,无共享结构被认为是支持并行数据库系统最好的并行结构,适用于银行出纳之类的应用
with grant option:如果要使某位用户可以将授予他的权限在转授给其他用户
除了删除索引或创建索引,以及非聚集索引和聚集索引的相互转换外,通过重建索引可以改进系统的性能
登录账户来源有两种:
SQL Server自身负责身份验证的登录用户
登录到SQL Server的Windows网络用户,可以是组账户或用户账户
建表SQL模版
createtable<表名>
(<字段名><数据类型>primarykey,
<字段名><数据类型>,
...
foreignkey<外键字段名>references<目标表明>(<目标字段名>)
);
事务规范:事务名称、事务描述、事务所访问的数据项、事务用户
exists:当子查询中有满足条件的数据时,exists返回真值,否则返回假值
派生性冗余列:指表中增加的列由表中的一些数据项经过计算生成。它的作用是在查询时减少连接操作,避免使用聚合函数。
数据库创建后,可以手工扩大数据文件和日志文件的空间
统计列取值不同的值的个数:COUNNT(DISTINCT C1)
查询结果没选中XXX的数据记录:NOT EXISTS
数据库镜像分为:高可用操作模式、高保护操作模式、高性能操作模式
并行数据库有多种体系结构
共享内存结构:所有处理机通过网络共享一个公用的主存储器的结构
共享磁盘结构
无共享结构:高功能计算机由多个较小的系统代替,站点之间要实现全局数据目录,每个站点都有独立的内存和磁盘对应站点的服务器
层次结构:分为两层,顶层是无共享结构,底层是共享内存或共享磁盘结构
数据仓库,根据数据源的变化量在维护对象原有数据的基础上对数据进行维护的方法称为增量维护法
云计算通过集中所有的计算资源,采用硬件虚拟技术,为提供者提供强大的计算能力、存储和宽带等资源
一维数据划分
散列划分的结果适合于点查询与顺序扫描
相对于轮转法,范围划分和散列划分都更适合于点查询
范围划分虽然可能会引起数据分布的不均匀,但非常有利于范围查询及点查询
为了进行有效的数据库文件组织和存取路径设计,必须分析和理解数据库事务的数据访问特性,事务分析可以按照:
使用事务-基本表交叉引用矩阵
估计各事务执行频率(单位时间内事务执行次数)
对每张基本表,汇总所有作用于该表上的各事务的操作频率信息
定义存储过程
CREATE PROC <名称>
@aint, @<参数名称><数据类型> <[是否是输出,是为output,否不写]>
存储过程
允许有默认值
允许有多个输入参数
能以输入参数的形式将多个值返回给调用者
向调用者返回执行是否成功的状态
日志文件不包括在文件组内,日志空间与数据空间是分开管理的
分区函数
CREATEPARTITIONFUNCTION(input_parma_type)
ASRANGE[LEFT|RIGHT]#边界值,右-右侧数值取不到
FORVALUES([boundary_value[,...n]])
[;]
其中n制定boundaryValue提供的值的数目,n小于999。所创建的分区数=n+1。
分割表
水平分割:是根据数据行的使用特点进行分割,分割之后所得到的所有表的结构都相同,存储的数据不同。会增加应用的复杂度,特别在查询所有数据是需要添加Union并操作
垂直分割:是根据列的特点进行分割,分割之后所得的所有表中除了都含有主码列外,其余列都不同,查询时会减少I/O次数,但缺点是查询所有数据时需要Join连接操作
事务故障表明事务没有提交或撤销就结束了,数据库可能处于不准确状态。所以恢复程序必须强行回滚,保证事务对其他事物没有影响的条件下,利用日志文件撤销其对数据库的修改,使数据库恢复到该事务运行之前的状态
备份策略的制定
定义备份的类型和频率
备份所需硬件的特性和速度
备份的测试方法
备份媒体的存储位置和方法
分布式数据库的查询代价由I/O代价、CPU代价和通信代价来衡量。首要目标时通信代价
集中式数据库的查询代价由I/O代价、CPU代价来衡量
一维数据划分根据关系的某一个属性的值来划分整个关系,该属性称之为划分属性。一维数据划分包括轮转法、范围划分、散列划分。
多维数据划分解决一维数据划分存在的问题,多维数据划分将关系R的属性分为主划分属性和辅助划分属性。
Big Table数据模型
不仅可以随意增减行的数量,同在一定的约束条件下,还可以对列的数量进行扩展
每个单元引入一个时间标签,可以存储多个不同时间版本的不同数据
表中每个数据行都有且仅有一个主键和任意多的列
表中的每行数据的列都可能不是相同的
每个单元由行关键字、列关键字和时间戳共同定位
select中,进行连接的子句:
左外连接:LEFT OUTER JOIN
右外连接:RIGHT OUTER JOIN
全外连接:FULL OUTER JOIN
分布式数据库查询中,导致数据传输量大的主要原因是:连接操作、并操作
有监督学习包括:支持向量机、朴素贝叶斯、k—近邻等
ETL工具:Extarct Transform Load,是实现数据集成的主要技术,抽取,转换,加载
数据库应用系统的生命周期:项目规划、需求分析、系统设计、实现与部署、运行与维护
监控机制
对数据库架构体系监控:监控空间基本信息、空间使用率、剩余空间大小
对数据库性能的监控主要监控内容包括:数据缓冲区的命中率、库缓冲、用户锁、锁与等待、回滚段、临时段使用情况、索引使用情况、等待事件、共享池
数据库恢复涉及如何建立冗余数据和如何利用这些冗余数据,建立数据库冗余技术有:数据备份、登录日志文件、数据库复制、数据库镜像
数据库自动恢复使用数据库日志文件
云计算与云数据库:
云计算平台的一个定位在于设法为应用系统提供近乎无限的计算资源
云计算具有为用户提供短期使用资源的灵活性
MapReduce运算是在应用层上提供了一套大规模集群基础上编写大型分布式应用程序的机制
云数据库架构通过计算迁移而不是数据迁移减少了分布式系统的节点之间的通信量
备份类型包括:数据库备份、文件备份、事务日志备份
混合型OLAP是指将基于多维数据库的OLAP和基于关系数据库的OLAP结合起来
数据库应用系统生命周期,数据库应用系统设计包括:
概念设计
梳理和设计业务ER图
分析整理数据字典和数据流图
明确建模目标
定义实体集
定义实体集间的关联关系
逻辑设计
从数据库的概念模型出发,设计表示为逻辑模式的数据库逻辑结构
对模式进行垂直或水平分解
将ER图转换为关系模式
对关系模式进行规范化
设计关系表结构
物理设计
确定数据存放位置
ER图向关系模式转换
实体的转换
在ER图转换为关系模式时,一个实体就转换成一个关系模式,实体的属性就是关系模式的属性,实体的键就是关系的键
实体间联系的转换
实体间存在三种联系
1:1(一对一)
1:n(一对多),非标定型联系
n:m(多对多),非确定型联系
事务日志文件推荐扩展名为.ldf,用于存放恢复数据库的所有日志文件。每个数据库必须至少有一个日志文件,也可以有多个。日志文件存放位置没有限制,另外日志文件可以设置自动增长,对日志文件没有大小限制
Server数据库服务器的用户账户。如果未指定有效登录ID,则用户不能连接到SQL Server数据库服务器,所有新建数据库用户都要有对应的登录名。一个数据库用户可以对应一个登录名,不能添加到固定的服务器角色中,需要对数据库用户授权后,才能具备相应的权限
DBAS生命周期中,规划与分析的主要工作内容包括
系统规划与定义
任务陈述
确定任务目标
确定系统范围和边界
确定用户视图
项目规划
可行性分析
在企业信息系统的应用类型中,OLAP应用指的是联机分析处理应用
聚类就是将一组数据对象采用一定的方法划分为若干组,并使组内数据对象尽可能相视,组间对象尽可能不同(K-means算法)
分类器
统计方法
贝叶斯法
非参数法
机器学习方法
决策树法
规则归纳法
神经网络方法
BP算法
数据库管理系统一般通过周期性检查事务等待图来实现死锁检测
当用户的权限与所在的角色的权限发生冲突时,以角色的权限为准
数据库管理系统中的加锁协议规定了事务的加锁事件、持续时间和释放锁事件,其中三级加锁协议可以完全保证并发事务数据的一致性
并行数据库中的数据划分与并行算法
聚类函数SUM、MIN、MAX的计算一般都可以通过“先分后合”的方式实现并行化
如果关系按照范围划分的方法进行划分,且排序属性恰好为划分属性,则可以直接将各个划分的排序结果串接起来,得到完全排序好的关系
用轮转法对数据进行划分最适合于需扫描整个关系的应用,对这种应用可以更好地实现负载均衡,充分发挥并行性
在并行数据库中的数据划分与并行算法中,范围划分会引起数据分布不均匀,导致并行处理能力下降
Oracle的安全控制机制可分为
数据库级的安全控制:通过对用户的身份认证和授权用户相应系统权限来保证
表级的安全控制:通过授予或回收对象特权保证
行级的安全控制:通过授予或回收对象特权保证
列级的安全控制:通过授予或回收对象特权保证
Oracle数据库中的用户按其操作权限大小可分为DBA用户、普通用户
SQL Server 2008支持数据库、数据文件两个级别的数据恢复
4个排名函数
DENSE_RANK:返回结果集分区中行的排名
RANK:返回结果集的分区内每行的排名
ROW_NUMBER:返回结果集分区内行的序列号
NTILE:将有序分区中的行分发到制定数目的足中