Agile Database deployment for Java and .NET
(This post was originally hosted at http://www.dbdeploy.net)
DbDeploy is an implementation of the ActiveRecord Migrations pattern. DbDeploy.NET is the .NET port of DebDeploy. Both DbDeploys are projects initiated by ThoughtWorks. ActiveRecord comes to us via DHH.
Why would I use it?
When you’re developing software that hasn’t been released, the database is easy: you can tear it down and rebuild it at will. Once you have production data that people are using it, what do you do? How do you manage the change? The Migrations pattern allows you to make bite-sized changes to your database, and test it. It works very well with Continuous Integration.
What else is out there?
- Tarantino – for Sql Server
- Rik Migrations for Sql Server
- Migrator.NET for many databases
- Machine Migrations for Sql Server
- SubSonic Migrations for Sql Server
- DbMaintain for JDBC databases
When should I use this pattern?
It’s ideal for greenfield agile projects where you are using Continuous Integration and want to make sure that changes to the database schema will be applied to integration tests. You can use other approaches if you have an ORM and you haven’t released to production yet.
When shouldn’t I use this pattern?
- When you have a huge legacy database
- When you’re trying to put data into a database and not schema changes
- When you don’t use source control
The Migrations pattern is a really helpful way to manage database change; It’s not a silver bullet though. You need to have discipline and a good test regime. It works well with Continuous Integration.
Update: Gregg Jensen got in touch with a new URL for DbDeploy.Net