浅谈数据库生命周期

最近在读一本《数据库系统 设计、实现与管理》的书,其中的数据库设计部分写的挺好的,另外在本书中也讲到了数据库生命周期的概念,我觉得有所收益,特写下此博文!

在软件开发中,我们经常会提到软件系统开发的生命周期,大致分为:计划、分析、设计、实现、运维几个阶段,整体流程和动作如下图所示:


而针对数据库建模和数据库应用开发来说,也有其自己的“数据库生命周期”,database life cycle,简称DBLC。DBLC大致上分为6个阶段:数据库初始研究,数据库设计,实现和装载,测试和评价,运行,维护和演化。其对于的生命周期图为:


也许作为一个数据库模型设计人员或者开发人员来说,只关心参与3个阶段,但是其实每个阶段都应该参与其中,毕竟这6个阶段是不断迭代的过程。

下面我们来分别说明一下这6个阶段。

1.数据库初步研究

简单的说就是前期的需求调研阶段,只不过软件开发中的需求调研是站在软件的角度,而数据库设计人员则应该站在数据库的角度分析用户的需求,主要做到以下目标:

  • 分析公司的状况。
  • 定义问题和约束。
  • 定义目标。
  • 定义范围和边界。

2.数据库设计

这是数据库生命周期中最重要的环节,也是最烧脑细胞的环节。这个环节工作的好坏直接关系到最终软件是否满足用户和系统的需求。数据库设计又进一步划分为几个阶段:概念设计、DBMS的选择、逻辑设计、物理设计。


概念设计

概念设计阶段需要根据用户和系统的需求,设计出实体关系模型ERM,所以这个阶段的产出是一个ERM。至于怎么分析用户需求后定义实体,定义关系,定义属性,范式化与反范式化,以及对概念模型的验证,那都是很深的学问,都可以单独写一本书了。我在之前的博客中粗略的讲解了如何进行概念模型的设计,可以参考:http://www.cnblogs.com/studyzy/category/466850.html

尤其是其中一篇(分析与设计数据库模型的简单过程)把ERM的建模过程演示了一遍。

而对概念模型的验证,一方面需要检查用户需求中的对象和属性是否都在概念模型中,其次,检查CRUD在模型上的操作是否会造成异常,另外也需要从报表的角度考虑,是否能够写出对应的报表的查询,查询效率是否可接受。在整个模型验证过程中,可能把一些属性独立出来成新的实体,也可能把关系从一对多改为多对多,也可能出于性能上的考虑,对一些表进行反范式化处理。对概念模型的验证一般以模块为单位进行验证,而且概念模型的定义是独立于硬件和软件的,保证了模型的简洁。

DBMS的选择

目前市面上的DBMS可选择性并不是很大,企业级DBMS就是Oracle,IBM DB2和SQL Server,这些DBMS功能强大完备,但是价格昂贵,而免费开源的有MySQL,PostgreSQL,这都是很流行的开源数据库,而如果系统小而简单的话,还可以考虑Sqlite,Access等单机数据库。这前面说的都是RDBMS,也就是关系型的数据库,还有其他对象数据库,文档数据库,层次数据库如果需要也可进行选择,尤其是随着互联网的兴起,现在NoSQL非常火,也增加了DBMS的选择范围。

不管怎么说,DBMS的选择主要还是考虑以下几个方面:

  • 开销/预算。这里除了软件和硬件本身的采购价格,还需要包括学习成本,运维开销,转换成本等。
  • DBMS的特征和工具。如关注系统的可用性,安全性,扩展性等。
  • 基础模型。是关系型的还是对象型的,或者文档型。
  • 便利性。DBMS可以便利的在不同平台,系统,语言之间进行移植。
  • 硬件要求。

逻辑设计

逻辑模型就是将概念模型转换为特定DBMS支持的模型,所以逻辑模型是与软件相关的。逻辑模型中的表、外键是可以通过概念模型的实体、关系转换而来,但是对于视图、存储过程、函数、用户等,都需要在逻辑模型中设计。

物理设计

物理模型是与具体的物理硬件相关,可以通过逻辑模型转换而来。在物理设计中,需要考虑具体的数据存储,数据分布等,在物理模型中要求设计师充分了解软件和硬件环境,充分发挥软件和硬件的特性。

3.实现和装载

常用的数据库建模工具如PowerDesigner或者ERWin都可以将物理模型生成对应的SQL语句,然后我们在DBMS中运行SQL,便可实现我们设计的数据库模型。在实现了数据库模型后,我们还需要进一步研究其性能,安全,备份与恢复,以及完整性和公司标准。这些一般都是由DBMS提供的工具支持的。

4.测试和评价

数据一旦装载到数据库后,DBA就要对数据库的性能,完整性,并发访问和安全约束进行测试和优化。这个测试和评价阶段是与软件开发并行进行的。如果测试和评价结果不满足要求,就需要对系统和模型进行调整。其中包括:

调整DBMS的配置参数,修改物理设计(比如索引和分区的修改),修改逻辑设计(比如增加冗余字段),更新或者更换DBMS的软硬件平台。

5.运行

数据库通过了评测阶段,就认为是可运行的了。在实际生产环境的运行过程中,产生了真实的数据,一些在测试阶段无法预见的问题可能会被遇到,比如查询缓慢,数据不一致,死锁等问题都可能遇到。棘手的问题需要紧急补丁,而一些小Bug则可能在下一个版本中修正,而这些在运行中对数据库的补丁和修改,就是一个维护和演化的过程。

6.维护和演化

数据库的日常维护工作包括备份与恢复,用户权限分配,系统监控,系统定期安全审计等。对于系统补丁和新版本开发,则是对模型的演化,需要在更新生产系统数据库时对数据库模型进行同步的更新,这便进入了数据库生命周期的迭代过程。

时间: 2024-11-08 20:20:14

浅谈数据库生命周期的相关文章

浅谈Java生命周期管理机制_java

先扯再说 最近一直在研究某个国产开源的MySQL数据库中间件,拉下其最新版的代码到eclipse后,启动起来,然后做各种测试和代码追踪:用完想要关闭它时,拉出它的STOP类想要运行时,发现这个类里赫然只写以下几行代码,于是我感觉瞬间受到了很多伤害. public static void main(String[] args) { System.out.println(new Date() + ",server shutdown!"); } 这个中间件启动和运行的时候,开启了监听,启动着

浅谈数据库设计技巧(上)

技巧|设计|数据|数据库|数据库设计 说到数据库,我认为不能不先谈数据结构.1996年,在我初入大学学习计算机编程时,当时的老师就告诉我们说:计算机程序=数据结构+算法.尽管现在的程序开发已由面向过程为主逐步过渡到面向对象为主,但我还是深深赞同8年前老师的告诉我们的公式:计算机程序=数据结构+算法.面向对象的程序开发,要做的第一件事就是,先分析整个程序中需处理的数据,从中提取出抽象模板,以这个抽象模板设计类,再在其中逐步添加处理其数据的函数(即算法),最后,再给类中的数据成员和函数划分访问权限,

浅谈数据库设计技巧

说到数据库,我认为不能不先谈数据结构.1996年,在我初入大学学习计算机编程时,当时的老师就告诉我们说:计算机程序=数据结构+算法.尽管现在的程序开发已由面向过程为主逐步过渡到面向对象为主,但我还是深深赞同8年前老师的告诉我们的公式:计算机程序=数据结构+算法.面向对象的程序开发,要做的第一件事就是,先分析整个程序中需处理的数据,从中提取出抽象模板,以这个抽象模板设计类,再在其中逐步添加处理其数据的函数(即算法),最后,再给类中的数据成员和函数划分访问权限,从而实现封装. 数据库的最初雏形据说源

浅谈数据库设计技巧(上)(转)

转一篇他人写的数据库设计技巧,感觉也不一定都正确,开拓一下思路吧. 说到数据库,我认为不能不先谈数据结构.1996年,在我初入大学学习计算机编程时,当时的老师就告诉我们说:计算机程序=数据结构+算法.尽管现在的程序开发已由面向过程为主逐步过渡到面向对象为主,但我还是深深赞同8年前老师的告诉我们的公式:计算机程序=数据结构+算法.面向对象的程序开发,要做的第一件事就是,先分析整个程序中需处理的数据,从中提取出抽象模板,以这个抽象模板设计类,再在其中逐步添加处理其数据的函数(即算法),最后,再给类中

浅谈数据库设计技巧(下).txt

技巧|设计|数据|数据库|数据库设计 三.多用户及其权限管理的设计 开发数据库管理类的软件,不可能不考虑多用户和用户权限设置的问题.尽管目前市面上的大.中型的后台数据库系统软件都提供了多用户,以及细至某个数据库内某张表的权限设置的功能,我个人建议:一套成熟的数据库管理软件,还是应该自行设计用户管理这块功能,原因有二: 1.那些大.中型后台数据库系统软件所提供的多用户及其权限设置都是针对数据库的共有属性,并不一定能完全满足某些特例的需求: 2.不要过多的依赖后台数据库系统软件的某些特殊功能,多种大

浅谈数据库设计技巧(下)

技巧|设计|数据|数据库|数据库设计 三.多用户及其权限管理的设计 开发数据库管理类的软件,不可能不考虑多用户和用户权限设置的问题.尽管目前市面上的大.中型的后台数据库系统软件都提供了多用户,以及细至某个数据库内某张表的权限设置的功能,我个人建议:一套成熟的数据库管理软件,还是应该自行设计用户管理这块功能,原因有二: 1.那些大.中型后台数据库系统软件所提供的多用户及其权限设置都是针对数据库的共有属性,并不一定能完全满足某些特例的需求: 2.不要过多的依赖后台数据库系统软件的某些特殊功能,多种大

浅谈数据库管理系统在近些年内的发展趋势

数据库管理系统在近些年内的发展趋势: 1. 用户界面的改进.这方面,也许MS依靠自己操作系统的优势,做得最让普通用户能够接受.但是,别的商用数据库,真的让人不敢苟同.目前,DB2, Oracle, Sybase都在用户界面上下了不少功夫. 2. 特色化发展.以Sybase为例,它将IQ剥离出来,专门用做智能型数据仓库应用,无论是性能还是价格都占了很大的优势.DB2则走的是融合的路子,将XMLDB的引擎直接合入到DB2 V9里边.即同时支持两种存储引擎. 3.超微型发展.手持设备上的数据库(移动数

浅谈数据库资源使用的按需分配方法

SQL Server资源调节器的作用 如果有5个业务都很繁忙的数据库需要部署在一台服务器上,为了避免相互的资源抢占,我们通常会在服务器上安装5个SQL Server实例来分别承载这5个数据库,然后分别设置每个实例的最大和最小内存.CPU掩码等,用以s控制这5个业务数据库的资源分配. 笔者的公司曾经就有这样的案例.这种方式的缺点显而易见:首先是授权,在上述例子中,5个SQL Server实例的费用应该是比1个要高:其次是管理成本提高,DBA不得不安装和维护5个实例.那么,有没有更好的方法呢? 其实

浅谈数据库优化方案_MsSql

本文为大家分享了数据库优化方案,供大家参考,具体内容如下 1. 利用表分区 分区将数据在物理上分隔开,不同分区的数据可以制定保存在处于不同磁盘上的数据文件里.这样,当对这个表进行查询时,只需要在表分区中进行扫描,而不必进行全表扫描,明显缩短了查询时间,另外处于不同磁盘的分区也将对这个表的数据传输分散在不同的磁盘I/O,一个精心设置的分区可以将数据传输对磁盘I/O竞争均匀地分散开.对数据量大的时时表可采取此方法.可按月自动建表分区. 2. 别名的使用  别名是大型数据库的应用技巧,就是表名.列名在