浅谈数据库生命周期

简介:

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

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

系统开发生命周期

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

DBLC

也许作为一个数据库模型设计人员或者开发人员来说,只关心参与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.维护和演化

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

本文转自深蓝居博客园博客,原文链接:http://www.cnblogs.com/studyzy/p/4883356.html,如需转载请自行联系原作者

相关文章
|
5月前
|
存储 监控 安全
【计算机三级数据库技术】第1章 数据库应用系统生命周期下知识体系--附思维导图
本文提供了数据库应用系统生命周期下的知识体系概述,并附有思维导图,帮助读者更好地理解数据库技术及应用的第一章内容,涵盖了数据库系统的规划、分析、设计、实现、测试、运行和维护等各个阶段。
80 12
|
3天前
|
缓存 关系型数据库 MySQL
【深入了解MySQL】优化查询性能与数据库设计的深度总结
本文详细介绍了MySQL查询优化和数据库设计技巧,涵盖基础优化、高级技巧及性能监控。
42 0
|
30天前
|
存储 Oracle 关系型数据库
数据库传奇:MySQL创世之父的两千金My、Maria
《数据库传奇:MySQL创世之父的两千金My、Maria》介绍了MySQL的发展历程及其分支MariaDB。MySQL由Michael Widenius等人于1994年创建,现归Oracle所有,广泛应用于阿里巴巴、腾讯等企业。2009年,Widenius因担心Oracle收购影响MySQL的开源性,创建了MariaDB,提供额外功能和改进。维基百科、Google等已逐步替换为MariaDB,以确保更好的性能和社区支持。掌握MariaDB作为备用方案,对未来发展至关重要。
60 3
|
30天前
|
安全 关系型数据库 MySQL
MySQL崩溃保险箱:探秘Redo/Undo日志确保数据库安全无忧!
《MySQL崩溃保险箱:探秘Redo/Undo日志确保数据库安全无忧!》介绍了MySQL中的三种关键日志:二进制日志(Binary Log)、重做日志(Redo Log)和撤销日志(Undo Log)。这些日志确保了数据库的ACID特性,即原子性、一致性、隔离性和持久性。Redo Log记录数据页的物理修改,保证事务持久性;Undo Log记录事务的逆操作,支持回滚和多版本并发控制(MVCC)。文章还详细对比了InnoDB和MyISAM存储引擎在事务支持、锁定机制、并发性等方面的差异,强调了InnoDB在高并发和事务处理中的优势。通过这些机制,MySQL能够在事务执行、崩溃和恢复过程中保持
76 3
|
30天前
|
SQL 关系型数据库 MySQL
数据库灾难应对:MySQL误删除数据的救赎之道,技巧get起来!之binlog
《数据库灾难应对:MySQL误删除数据的救赎之道,技巧get起来!之binlog》介绍了如何利用MySQL的二进制日志(Binlog)恢复误删除的数据。主要内容包括: 1. **启用二进制日志**:在`my.cnf`中配置`log-bin`并重启MySQL服务。 2. **查看二进制日志文件**:使用`SHOW VARIABLES LIKE 'log_%';`和`SHOW MASTER STATUS;`命令获取当前日志文件及位置。 3. **创建数据备份**:确保在恢复前已有备份,以防意外。 4. **导出二进制日志为SQL语句**:使用`mysqlbinlog`
91 2
|
1月前
|
关系型数据库 MySQL 数据库
Python处理数据库:MySQL与SQLite详解 | python小知识
本文详细介绍了如何使用Python操作MySQL和SQLite数据库,包括安装必要的库、连接数据库、执行增删改查等基本操作,适合初学者快速上手。
269 15
|
1月前
|
SQL 关系型数据库 MySQL
数据库数据恢复—Mysql数据库表记录丢失的数据恢复方案
Mysql数据库故障: Mysql数据库表记录丢失。 Mysql数据库故障表现: 1、Mysql数据库表中无任何数据或只有部分数据。 2、客户端无法查询到完整的信息。
|
1月前
|
关系型数据库 MySQL 数据库
数据库数据恢复—MYSQL数据库文件损坏的数据恢复案例
mysql数据库文件ibdata1、MYI、MYD损坏。 故障表现:1、数据库无法进行查询等操作;2、使用mysqlcheck和myisamchk无法修复数据库。
|
1月前
|
SQL 关系型数据库 MySQL
MySQL导入.sql文件后数据库乱码问题
本文分析了导入.sql文件后数据库备注出现乱码的原因,包括字符集不匹配、备注内容编码问题及MySQL版本或配置问题,并提供了详细的解决步骤,如检查和统一字符集设置、修改客户端连接方式、检查MySQL配置等,确保导入过程顺利。
|
2月前
|
关系型数据库 MySQL 数据库
GBase 数据库如何像MYSQL一样存放多行数据
GBase 数据库如何像MYSQL一样存放多行数据

热门文章

最新文章