从数据库设计的角度如何扩展一个既存数据库应用,同时尽可能小的减少变更及测试工作量

很多时候,当我们要对既存系统进行改造的时候,会遇到改造和测试工作量的评估问题,特别是测试工作量。对于一个规模比较大的,10万行以上的已经上线运行很长时间的系统,如何能够保证改造对既有功能尽可能小的影响,不会产生regression bug,是一个非常严峻的问题。

比如既有的一个表,有三个字段,主键nid,字段A,B,现在我们想多储存一些信息,需要增加对C,D信息的保存时,一种策略是直接在原表基础上追加字段,但是这会造成表的索引,查询计划优化等等一系列信息的变更,对已有的SQL查询造成很大的影响,导致我们的测试工作量极大的增加。还有一种做法就是,追加一个新表,该表的主键nid,和原表是一致的,同时追加C,D字段。当需要对新表做变更的时候,追加对新表的增删改,但是原有的表的SQL处理可以尽可能的减少,这样做的好处是灵活,对既有系统的侵入性小,可以减少我们的测试工作量。