Database Version Control Tools
A couple of years ago I wrote a blog post about Database Versioning and how it was ignored over source code versioning. Originally posted on my other website , it got quite a bit of attention and sparked some very interesting discussion. As a result of the discussions, I got to know quite a bit about database versioning tools. After about two years I thought I would visit the topic again and see what new tools and methods are available for versioning databases. Judging from the speed at which technology moves, I was expecting a very different landscape from where I had left off. To my surprise, there has not been much new developments in this field at all.
Why Database Versioning ?
Versioning your database is different than simply checking in the scripts that make changes to your database to version control. The theory is that every change made to your database, specifically a DDL change but perhaps a DML change too, assigns a version number to your database thus allowing you to roll forward or backwards to a specific version safely. Just like you would with source code. For a full argument read the article above. Such versioning could go hand in hand with your code release or could go out all by itself. This makes changes to your database more manageable, reproducible and portable. Below I have compiled a list of tools that allow you to version your database
Commercial Tools
1) Red Gate
Red Gate Database Lifecycle Management is available for mysql, Oracle, and Azure. It is an integrated tool set that helps with Version Control, Continuous Integration,Release Management and Monitoring of all database changes. Each process can be used individually or can be chained together in your DevOps toolchain. What I like about Red Gate toolkit is their support for and excellent GUI as well as good command line client.
2) DBMaestro
DBMaestro Teamwork is available for Oracle and MSSql. DBMaestro Teamwork positions itself as DevOps for databases with rich feature set which includes and IDE, audit trail, permissions management, object locking prevention etc. DBMaestro will also perform an intelligent 3 way, baseline aware analysis of your database against any code dump you may have to figure out where configuration drift has occurred so you can get your automation under way in the right manner.
You can read the full post here Database Version Control Tools
Software Engineer at OTS.
9 年Completely agree... anything that can... should be versioned. At my current company, we use a homegrown process - db change files in SVN. A script to bring a db up-to-date with all those change files. The company has built processes around it, and it works pretty well...