I was forwarded in interesting article, Developing Low-Maintenance Databases by Alex Kuznetsov, that talked about good database design and implementation practices. Many I already adhere to, such as limiting access to the database through stored procedures, views and functions. However, there was one section in the article that I found particularly intriguing, How to Refactor a Table without Downtime.
In many of the systems I work on we have many components on many servers accessing the same database, coordinating the simultaneous upgrade of those components can be tricky at best. Although in some cases access can be controlled through a web service and thus limiting upgrade points, performance factors have led us to have many of the components access the database directly.
I definitely intend on looking at incorporating Alex’s pattern into our future upgrade procedures.