databasedatabase-versioningdailybuilds

How do you approach database versioning when doing regular builds?


I have a web application project that works with a quite large database (over 5 GB). Data in the database is partitioned by project. Each project takes approximately 1 GB, and it is a minimal set for the application to work (we do some math calculations that spread across this dataset and removing a part of the dataset is not an option).

As a part of the daily build we also deploy our app into a test environment. To do so, a builder runs a custom DB update utility that updates the current DB to the appropriate version. But we also have a requirement to keep all the daily builds so that the QA team could "go back in time" and compare calculation results from different builds. As much as we try to have a backward compatible data schema sometimes it is very challenging and time consuming. So, hence the question:

What approach to the database versioning would you use if you had a requirement to keep previous daily builds up and running and need to manage a large database whilst doing daily builds?

We use SQL Server 2005 and ColdFusion with some Java at the front-end if it makes any difference.


Solution

  • I would suggest reading Leon Bambrick's list titled 11 Tools for Database Versioning

    And I would add Visual Studio for Database Professionals to the list which can be found here

    Also Jeff Atwood has a nice blog post on the subject with links to some background reading.