Flyway - first impressions
What is Flyway?
Flyway is a "agile database migration framework for Java".
- it uses SQL as its primary "language" for patches (no XML awkwardness)
- we do not have nor a very complicated DB schema neither a complicated development/branching/whatever process,
- we do not plan to migrate to another database (BTW. I have been in enough projects where we did things because maybe/baby one day we need to change our DB server to something else, and guess what? we never did!)
- it looks simple, and it does not try to do too much
- it supports PostgreSQL
First of all, the learning curve is flat (comparing to Liquibase). Flyway is simple to use. The documentation is really helpful. There is not much you have to do to have it up and running.
In our scenario we run Flyway programmaticaly (as a part of a larger deployment task). In general I can say it was pretty simple to start using it. The only thing that is a real PITA is the idea of Flyway looking for SQL migration files on the classpath. I do not say it is bad, but it would be so much nicer to be also able to specify that the patches should be searched for in /home/user/patches. I opened an issue for this http://code.google.com/p/flyway/issues/detail?id=247
It is easy to configure Flyway, so for example we use patches with different prefix for schema (which is used to populate production DB) and for data (which are used only for the convenience of developers so the system on local machines starts with some reasonable data).
Not sure if my opinion of Flyway will be the same in few months, but right now I'm very happy with it. :) At least it suits me much better than Liquibase (which I had used a little bit in previous projects).