数据库管理成熟度模型
Ver 1.1
作者: Thomas
B. Cox
翻译: 崔晓波(local0)
目录
¨
数据库管理成熟度模型
¨
数据管理员、数据库管理员和数据设计者的区别
¨
任务性质的区别
¨
数据库生命周期
¨
数据库设计者和数据库管理员
¨
数据库生命周期中的任务
¨
数据库生命周期和DBA的任务
¨
DBA任务流程(对于成熟数据库)
¨
SLA协议样本
一、
数据库管理成熟度模型
DBA MM:Database Administration
Maturity Model
本文档讨论了数据库管理,勾画出ORACLE数据库管理员在开发阶段和维护产品
阶段应该执行的任务。
DBA MM分为5个级别
|
级别 |
焦点 |
关键处理域 |
|
初步(INITIAL) |
关注:没有 工具:个人发挥(HEROISM) |
u 成功是偶尔发生的和不可重复的 u 工作表现为:紧急应对、救火、个人发挥 |
|
可重复(REPEATABLE) |
关注:可重复的DBA过程 工具:DBA 日常检查列表 |
u 项目计划(DBA项目、DBA开发支持) u 项目跟踪、勘漏(DBA项目) u 子项目管理(DBA项目外包或子项目) u 配置管理(数据库软件、DBA工具、变更管理) |
|
定义(DEFINED) |
关注:将DBA处理工作定义化、文档化 工具:DBA培训 |
u 需求管理(服务级别) u 质量保证(DBA任务) u 最佳的实践被明确化并可传播(培训) u 工作被明确定义,任务执行情况可以被确切的度量 |
|
管理(MANAGED) |
关注:过程控制,即DBA处理流程是稳定的和可度量的,所有的变化及其起因都被记录和标注。 工具: |
u 所有变化都能可控的记录下来,并在变化的之前和之后进行度量,以确认变化是否有效。 |
|
优化(OPTIMIZING) |
连续的过程优化: 首先要可重复才能提高 首先要可定义才能度量 首先要可度量才能管理 |
u 管理实践中得到提高,技巧得到提炼 u 变化的因素得到系统的控制,教训学习中得到更大的提高 |
二、
数据管理员、数据库管理员和数据设计者的区别
根据数据库使用过程中任务的不同,划分为3个任务集合:
(1)
数据管理任务
(2)
数据设计任务
(3)
数据库管理任务
可能会一人同时担当多个角色,但是3类角色的任务是不同的,表现在:一方面任务的性质是不一样的,另外一方面,不同的任务出现在数据库生命周期的不同阶段。
三、
任务性质的区别
1、数据设计
数据设计关注数据的逻辑、物理模型的建立,这些模型之后会作为对象存储在数据库中。
为解决特定的商业问题,在应用所涉及的范围中,建立这些模型,顺序是:
应用范围 à 商业需求 à 数据逻辑模型 à 数据物理模型
数据设计负责以下具体方面:
u
建立的模型能够充分满足商业问题的需要。
u
确保模型在构建在应用领域之内(通常模型涵盖的范围略大于应用所需,这是为了将来应用系统与其他系统接口,但是模型不能过大的脱离实际应用)
u
建立一个用户可以接受的物理模型(影响性能提高的主要因素是应用的编码,数据设计者应该尽可能的提高性能,而不是破坏它)
2、数据管理
数据管理负责制定访问策略:谁拥有什么数据、谁能创建、改变、删除什么数据,
数据管理者必须跟踪控制数据元素的所有权,这项工作与数据的设计无关,也和数据的
存放细节(DBA)无关。具体而言:
u
谁拥有数据
u
谁拥有数据的定义
u
在数据的生存周期中,如果需要变更所有权,什么时候、如何改变(如销售人员拥有定单一直到定单提交,发货人员接着拥有它一直到货物发出,然后由财务人员拥有,直到受到货款)
3、数据库管理
数据库管理员负责维护数据库的物理运行(如将数据存放在某个磁盘上),DBA负责:
u
维护数据库,使它运行在数据库开发者要求的状态下。
u
进行调优、分担负载、打PATCH、升级、备份、恢复等
u
除了逻辑访问(应用级)以外的数据库所有方面。
特别注意,DBA的职责中没有写SQL应用,写SQL应用是开发者的工作,如果DBA承担
这项任务,他就成为开发人员,不是DBA。
四、
数据库生命周期
一个新的数据库诞生,通常是为了满足新的应用(或需要在老的数据库上无法做大量的改变),为合理的构建数据库,必须有人分析应用,设计合适的表结构(使用E-R模型,而后影射为数据表,也可以直接设计数据表)。设计表应先于其他的阶段。
设计表主要由数据设计者完成,除了设计表之外,数据设计人员还负责影响分析,这发生在应用需求变化时,决定需要进行哪些变更。
|
数据库生命周期 |
设计者 |
数据管理者 |
DBA |
|
1.决策、分析 |
表设计,安全设计 |
数据所有权,安全策略 |
|
|
数据库生命周期 |
设计者 |
数据管理者 |
DBA |
|
2.设计,建造 |
影响分析 |
变更管理 |
安装,生成数据文件,表、表空间建立,备份/恢复计划,安全过程 |
|
3.幼年 |
|
|
物理重组,性能调优 |
|
4.成熟 |
|
|
异常情况监控,性能监测,性能调优,执行备份/恢复,数据文件管理 |
|
A.小变更 |
影响分析 |
变更管理 |
表修改 |
|
B.大变更 |
影响分析,表重设计 |
变更管理 |
建表 |
每当应用的需求发生变化时,数据管理员都需要进行变更管理,以确保所有的数据属
于相应的用户。
在项目的后期,表的设计完成后,开始由DBA进行建表,包括空间划分,存储参数设置(根据数据设计人员的要求),分布数据以获得负载平衡。如果遵从OFA(OPTIMAL FLEXIBLE ARCHITECTURE)DBA必须按照OFA的要求进行数据文件划分。
五、
数据库设计者和数据库管理员
区分数据设计者和DBA,关键的一点不同是:
Ø
数据设计人员的工作在于数据库的逻辑构建(实体、关系、表设计)
Ø
数据库管理员的工作在于物理问题的解决(数据文件、磁盘负载分担、备份、恢复)
这种观点有其正确性,但是如果严格按照这种分法,也存在潜在的问题。让数据设计人员有数据库物理构建方面的知识,是一种很好的方法,这使数据的设计可以方便的实现和维护。在汽车制造行业,类似的行为称为“为制造而设计”。设想设计人员面临两个选择,它们在功能上完全一样,但其一的制造很廉价,如果设计者没有生产方面的知识,他将不知道哪个方案更廉价、更容易实现。
另外曲解这一观点的做法是:让DBA负责数据库设计。有些人的确这样做,他们通常进行设计仅仅考虑如何易于维护,而忽略了应用的要求,这样的设计通常以失败告终。
以下是根据任务的不同,列出数据库生命周期的任务分布:
|
执行者 |
任务 |
频率 |
生命周期的阶段 |
描述 |
|
设计者 |
表设计 |
一次 |
1 , B |
设计符合应用要求的表结构,当需求改变时,做相应的调整 |
|
执行者 |
任务 |
频率 |
生命周期 |
描述 |
|
设计者 |
安全设计 |
一次 |
1 |
确保数据库的设计满足应用的安全性要求 |
|
|
影响分析 |
根据需要 |
2,A,B |
当应用改变时,审视数据库设计的那些方面需要相应的调整。 |
|
数据管理者 |
数据所有权 |
一次 |
1 |
确认谁拥有哪些数据,并对之进行维护。 |
|
|
安全策略 |
一次 |
1 |
决定谁可以授权访问数据,谁可以在什么时候将那些数据共享给别人 |
|
|
变更管理 |
根据需要 |
2,A,B |
当应用或其数据发生变化时,确保所有数据保持清晰的所有关系,通知相关需要改变的用户 |
|
DBA |
安装 |
一次 |
2 |
安装数据库 |
|
|
创建数据文件 |
一次 |
2 |
为特定的表空间创建数据文件,减少磁盘访问冲突,根据设计使用OFA。 |
|
|
制定备份/恢复方案 |
一次 |
2 |
建立备份恢复方案,并进行测试 |
|
|
安全措施 |
一次 |
2 |
创建role,分配数据访问权限,系统权限,创建用户,初始化审计功能。 |
|
|
表-表空间映射 |
一次 |
2 |
根据OFA或其他的准则,创建表-表空间对应关系,并向使用文档纪录 |
|
|
创建表 |
一次 |
2,B |
在相应的表空间上创建表 |
|
|
物理重构 |
根据需要 |
3 |
在表空间内重构表,创建/改变索引,创建/改变簇, |
|
|
性能调优 |
根据需要 |
3,4 |
起初查找物理配置的严重问题,如索引没有建等。当数据库建成后,通过性能监测任务,对需要调整的部分进行调优。 |
|
|
异常监测 |
每天 |
2,3,4 |
通过LOG,TRACE等日志检查异常情况,通过EMAIL接受用户的问题报告。 |
|
|
性能监测 |
每周 |
4 |
根据事前定义的SLA等,对数据库的性能进行检查。 |
|
|
数据文件管理 |
根据需要 |
4 |
根据需要分布数据文件,扩展数据表空间 |
|
执行者 |
任务 |
频率 |
生命周期 |
描述 |
|
DBA |
执行备份/恢复 |
每天 |
4 |
执行在线、离线、日志等备份,需要时进行恢复。 |
|
|
表修改 |
根据需要 |
A |
当应用发生小的改动需要变动表时,DBA必须在保证已有数据可靠性前提下进行修改。 |
六、 数据库生命周期中的任务