Schema VC

Summary of SQL Database Version Control tools

Last updated: 25 Jun 2014

The following classifies the tools according to the main feature or mode of operation, and lists them alphabetically within each group. Except where otherwise mentioned, the tools are open source software and support Postgres. Where available, the Summary headings link to more detailed reviews in this blog.

Summary: Compares an input data dictionary to the pg_* catalogs of a connected database, and outputs SQL statements to upgrade the latter to match the former. Also provides utility to output catalog information in YAML/JSON format.

Summary: Note: Need to take a closer look. Announced in the pgsql-general mailing list. Expected to be available as open source by PGCon 2011. Similar to Liquibase (see below), but see this message for more details.

Database as VCS

Post Facto

Summary: Uses a number of Postgres databases to establish a Subversion-like repository, so that schema changes to one database can be committed to the repository, and then the changes can be propagated from the repository to other databases.

Schema Migration

There are tools that support database schema “migration”, e.g., Active Record Migrations, South and Alembic which are tied to specific programming frameworks (Ruby on Rails, Django) or ORMs (SQLAlchemy). We have chosen not to review those kinds of projects as they presuppose a particular development environment.

Other

There are other tools that may provide some of the capabilties needed for SQL database version control, but are generally broader in scope. The following have been suggested by commenters on this site or elsewhere: ChronicDB (commercial product, supports Linux–Debian and RPM packages), EMS DB Comparer for PostgreSQL (commercial product, only available for Microsoft Windows platforms), and neXtep Designer (GPL licensed, IDE based. multiple DBMS support).

If you have any corrections or updates, please let me know in the comments.