关键字:数据库设计 敏捷方法
3.7自动地更新所有开发人员的数据库
人们变化和更新主数据库,但是如何发现主数据库已经发生变化?在传统的持续集成有源代码的环境中,开发人员在提交变化之前先更新主数据库。这样他们就可以在提交变化给共享主数据库之前,解决他们自己的机器上的问题。
每次主数据库发生改变时,我们都要更新开发人员的数据库。当主数据库发生变化时,我们自动化更新所有项目成员的数据库。相同的重构代码更新主数据库上的同时,自动更新成员数据库。也许有人认为在开发人员不知情的情况下,更新开发人员数据库会产生很多问题,但在实践中我们没发现什么问题。当然,这只在人们联网时管用。所以当开发人员离线时,必须尽快与主数据库重新保持同步。
3.8清晰地分离所有的数据库获取代码
为了理解数据库重构的结果,了解应用程序如何使用数据库也非常重要。如果SQL语句分布在代码基础周围,则很难这样去做。因此一个清晰的数据库获取层很重要,它用来显示数据库如何被使用,在哪里被使用。
清晰的数据库层有很多好处。它减少了开发人员操纵数据库时需要使用SQL知识的地方,这样使对SQL语句不太熟悉的开发人员更易开发。对于DBA来说,给他提供了清晰的代码,可以清楚地了解数据库将如何使用。这也帮助准备索引、数据库优化,优化SQL语句,使DBA更好地理解数据库如何被使用。
4变化法则
如同任何实践一样,这些原则必须根据你特殊的环境变化。没有一成不变的项目,我们必须要应对变化。
4.1保持多个数据库在一个系统中
简单项目也许只需要一个主数据库。但是复杂项目需要有多个数据库,即数据库系。如果在投入生产之前数据库必须分支,那么我们可以创建新的数据库系。数据库系类似于代码的分支,需要不同测试数据集来进行测试。
当开发人员从主数据库中获取了一份拷贝,必须注册他们在修改哪个数据库系。当DBA更新主数据库某个数据库系时,同时更新了所有注册这个数据库系的开发人员的数据库。
4.2不需要专职的DBA
所有这些听上去好像需要大量的工作,但它并不需要大量的人力资源。在最大的项目中,我们有30个开发人员,项目组规模100人(包括质量评价、分析人员和管理人员),我们大概有100多个不同系列的产品分布在各工作站上。但所有这些工作只需要一个专职DBA,只有两个编程人员业余帮忙。
在小项目中甚至不需要专职DBA。当我们将这些技巧用于更小的项目—12人左右的小项目时,发现该项目不需要一个专职的DBA。与此相反,我们依靠两个对数据库感兴趣的开发人员业余处理DBA任务。
这是自动化的功劳。如果对每项任务进行自动化处理,就可以用更少的人来完成更多的工作。
5辅助工具
数据库进化需要大量的重复性工作,我们可以开发一些简单工具来帮助我们解决大量的重复性工作。
自动化的最有价值的地方就是有一个通用数据库任务简单代码集。自动化的任务包括:
*** 用户资料与现在管理员的资料一致
文章来源于领测软件测试网 https://www.ltesting.net/