LiquiBase

From Wikipedia, the free encyclopedia

LiquiBase
Latest release 1.5 / January 2008
OS Cross-platform
Genre Software development
License GNU Lesser General Public License
Website liquibase.org

LiquiBase is an open source database-independent library for tracking, managing and applying database changes. It was started in 2006 to allow easier tracking of database changes, especially in an agile software development environment.

Contents

[edit] Overview

All changes to the database are stored in XML files and identified by a combination of an "id" and "author" tag as well as the name of the file itself. A list of all applied changes are stored in each database which is consulted on all database updates to determine what new changes need to be applied. As a result, there is no database version number but this approach allows it to work in environments with multiple developers and code branches.

[edit] Major Functionality

  • Over 30 built-in database refactorings
  • Extensibility to create custom changes
  • Update database to current version
  • Rollback last X changes to database
  • Rollback database changes to particular date/time
  • Rollback database to "tag"
  • SQL for Database Updates and Rollbacks can be saved for manual review
  • Stand-alone IDE and Eclipse plug-in
  • "Contexts" for including/excluding change sets to execute
  • Database diff report
  • Database diff changelog generation
  • Ability to create changelog to generate an existing database
  • Database change documentation generation
  • DBMS Check, user check, and SQL check preconditions
  • Ability to split change log into multiple files for easier management
  • Executable via command line, Ant, Maven, Servlet container, or Spring
  • Support for 10 database systems

[edit] Sample Change Log File

<?xml version="1.0" encoding="UTF-8"?>

<databaseChangeLog
        xmlns="http://www.liquibase.org/xml/ns/dbchangelog/1.3"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog/1.3
        http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-1.3.xsd">
    <preConditions>
            <dbms type="oracle"/>
    </preConditions>

    <changeSet id="1" author="alice">
        <createTable tableName="news">
            <column name="id" type="int">
                <constraints primaryKey="true" nullable="false"/>
            </column>
            <column name="title" type="varchar(50)"/>
        </createTable>
    </changeSet>

    <changeSet id="12" author="bob">
        <createSequence sequenceName="seq_news"/>
    </changeSet>

    <changeSet id="2" author="bob" context="test">
        <insert tableName="news">
            <column name="id" value="1"/>
            <column name="title" value="Liquibase 0.8 Released"/>
        </insert>
        <insert tableName="news">
            <column name="id" value="2"/>
            <column name="title" value="Liquibase 0.9 Released"/>
        </insert>
    </changeSet>
</databaseChangeLog>

[edit] External links