Database Change Management in .NET: Part 1: Overview and Resources

Posted on March 15, 2010

1


The idea of a database change management system (also known as a Database Migration system) does not hold much mindshare in the .NET development world.

Most of the projects I have encountered in my experience have not had a working process in place, and indeed many times the developers involved (myself included) did not have an understanding of the requirements or benefits such a process could bring.

On a current brownfield project I have had the opportunity to introduce a database change management process where one did not exist before.

I have documented the process, and intend to share my findings in a series of blog posts.

Since the majority of my learnings have come from the community, I hope that this will be an suitable way of giving back in appreciation.

The Historical Landscape

From what I have seen, this area has been historically neglected in the .NET scene for the following reasons:

  • The “Developer” and “Database Administrator” divide

    There has always been some kind of informal divide between the traditional developer and traditional database administrator.

    They are positions which at their extremes require different skill sets, use different tools, and in the classical development model have worked in isolation from one another.

  • The “Official Tooling” segregation

    Microsoft has had (to my knowledge) a DB dev tool since Visual Studio 2005 (Microsoft® Visual Studio® 2005 Team Edition for Database Professionals).

    In the 2005 and 2008 editions, however, this tooling was limited to the high end “Team System” enterprise SKUs, which effectively prevented non-enterprise developers access to it.

  • The “Official Tooling” quality

    I’ve been using the Database Edition of Visual Studio since the 2008 betas. Recently I’ve started to use the 2010 editions. Based on this experience, I can comfortably say that the tools have been extremely painful to use. They are buggy, slow, and buggy (did I mention they are buggy?).

    Long story short, the official tooling is still not there yet, and therefore makes their uptake even harder.

While these are certainly generalizations, each has come up in my discussions with peers about the subject.

The Changing Trends

  • The agile trend is bringing the app and database developer closer together

    As more and more large teams adopt agile development techniques, they’re finding that interaction between the app developer and database developer becomes more frequent, and the scope of the work is more incremental.

  • The agile trend is placing more requirements on the database development process

    Databse code now needs to change in unison with the application code it accompanies: quick iteration, quick deployment, and the ability to automatically spin up DB instances on the fly

  • The tooling is getting stronger

    Microsoft’s tools are picking up speed GDR after GDR, and the OSS space has a large number of tools available to facilitate the process.

    A number of these tools have been influenced by developments in other spaces/frameworks, like Ruby/Rails.

  • The tooling is getting more accessible

    The Visual Studio DB Edition has been merged into the Professional (or is it Premium?) VS SKU, and is no longer confined to the high end Team System (now defunct) SKUs.

    The OSS tools are getting better month after month, and adoption continues to increase.

  • The discussion is gaining traction

    More and more .NET developers are aware of the benefits, and are seeking solutions.

Current Community Resources

As a first part to this series, I’ve compiled a list of resources I’ve found extremely useful.

My focus has been towards the .NET space, and I have favoured SQL based tools over code based ones (more on that in a future episode), with a particular interest in Tarantino from the awesome dudes at Headspring Systems.

References: General, Process

References: Tooling

References: Tooling (Tarantino)

If you know of any others that I’ve missed, please post them in the comments!

In the next part I’ll be looking at the goals of a database management system, as well as examining the two different types of tools that exist.

Your comments are always appreciated, and I look forward to learning from them!

Hope this helps!

Advertisement
Posted in: Development