·天新网首页·加入收藏·设为首页·网站导航
数码笔记本手机摄像机相机MP3MP4GPS
硬件台式机网络服务器主板CPU硬盘显卡
办公投影打印传真
家电电视影院空调
游戏网游单机动漫
汽车新车购车试驾
下载驱动源码
学院开发设计
考试公务员高考考研
业界互联网通信探索
解析数据库设计中的敏捷方法
http://www.21tx.com 2005年08月26日 CSDN Friecin

上一页 1 2 3 4 下一页

  2、测试数据库的迁移

  除了测试代码之外,样本测试数据允许我们测试数据库的迁移,当改变了数据库的计划后,我们还必须保证所有的计划变更也能够处理样本数据。

  在大多数项目中这些样本数据是虚构的。然而在某些项目中人们使用实际数据作为例子。在这些情况下,数据从先前由自动化数据迁移代码的系统中提取出来。很明显不能马上迁移所有的数据,因为在早期迭代中数据库只有小部分建立起来。但是我们希望当应用和数据库发展时,改变迁移代码。这样不仅能够尽早解决迁移问题,也使行业专家易于处理这个正在开发的系统。因为有他们熟悉的数据,所以他们会指出可能给数据库和应用设计带来问题的地方。因此我们建议在项目的早期迭代中引入实际数据。

  3.5所有的变化应该数据库重构

  重构技术就是应用所有可控技术来改变现有的代码基础。与此类似我们定义了数据库重构也给数据库的改变提供了类似的控制。

  数据库重构的不同之处在于它必须将三种不同的变化同时完成:

   改变数据库计划

   进行数据迁移

   改变数据库存取代码

  于是当描述数据库重构时,我们必须描述变化的三个方面,并确保在应用另一个重构之前完成了这三种变化。

  我们必须文档化不同的数据库重构,因此我们还不能详细描述他们。然而这里有几点需要指出:像代码重构一样,数据库重构非常微小。概念链一系列微小的变化,数据库和代码很相似。变化的三个属性使保持小的变化更加重要。

  许多数据库重构,如增加一个字段,可以不必更新所有存取系统的代码来完成。但是如果在使用新计划之前并不了解它,该字段将会无用,因为新计划不知道其变化之处。许多变化,没有考虑整个系统计划,我们称之为破坏性变化,如将一个已经存在的空值列设置为非空。破坏性变化需要多加留心,留心的程度依赖于包含破坏性的程度。一个小破坏性的例子是将一个已经存在的空值列设置为非空,在这种情况下你可以蒙着头做。

  而重构将考虑数据库中空值数据。开发人员将更新数据库映射代码,因此更新不会破坏其它人的代码;如果偶然会破坏,开发人员将在建立和使用测试时发现问题。

  将一个经常使用的表分成两个是一种更复杂的破坏。在这种情况中提前让所有人知道变化到来很重要,这样他们可以有所准备。此外应该在一个更安全的时刻来实施变化。

  这里面很重要的一点是选择适用于你做出的变化的过程。

  3.6自动重构

  在代码世界中许多语言能够实现自动重构。在计划变化和数据迁移过程中,这种自动化对于数据库也非常重要。因此每个数据库重构都可以通过编写SQL DDL(对于计划变化)和DML(对于数据迁移)来完成。这些变化不是通过手工实现,而是通过一些SQL语句来自动实现变化。

  一旦完成代码,我们保存这些代码文件来产生数据库变化的完整的变化记录,作为数据库重构的结果。我们于是可以更新任何实例到最新的主数据库,通过运行在我们拷贝主数据库来产生更早的数据库实例的变化记录。

  自动化变化的序列化是对于持续集成和迁移产品数据库的一个基本功能。

  为了最后产品数据库我们并不在常规迭代周期中实施变化。我们在每一个发布之间建立完整的数据库重构变化日志。毫无疑问,这是一个巨大的变化,我们必须离线实施该变化。在实际应用之前先测试迁移计划绝对是明智之举。迄今为止,这项技术相当管用。通过将大变化分解为小的简单的变化,我们可以对产品数据进行大的变化,同时又不会给我们太多的麻烦。套用兵法中的一句话,就是"化整为零"。

  除了自动化向前的变化,我们也要考虑重构时向后的变化。如果能够做到这样就可以回到以前的数据库状态。在我们的项目中并没有这样做,因为没有这个需求,但这同样是很重要的基本原则。

  3.7自动地更新所有开发人员的数据库

  人们变化和更新主数据库,但是如何发现主数据库已经发生变化?在传统的持续集成有源代码的环境中,开发人员在提交变化之前先更新主数据库。这样他们就可以在提交变化给共享主数据库之前,解决他们自己的机器上的问题。

  每次主数据库发生改变时,我们都要更新开发人员的数据库。当主数据库发生变化时,我们自动化更新所有项目成员的数据库。相同的重构代码更新主数据库上的同时,自动更新成员数据库。也许有人认为在开发人员不知情的情况下,更新开发人员数据库会产生很多问题,但在实践中我们没发现什么问题。当然,这只在人们联网时管用。所以当开发人员离线时,必须尽快与主数据库重新保持同步。

上一篇: 如何提高软件项目成功率
下一篇: 影响SQL Server性能的设计关键

上一页 1 2 3 4 下一页

关于我们 | 联系我们 | 加入我们 | 广告服务 | 投诉意见 | 网站导航
Copyright © 2000-2011 21tx.com, All Rights Reserved.
晨新科技 版权所有 Created by TXSite.net