Liquibase

From Wikipedia, the free encyclopedia
Jump to: navigation, search
Liquibase
Developer(s) Nathan Voxland
Stable release 3.2.2 / July 23, 2014 (2014-07-23)[1]
Development status Active
Written in Java
Operating system Cross-platform
Type Software development
License Apache License 2.0
Website http://www.liquibase.org/

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

Overview[edit]

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 is 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.

Automatically creates DatabaseChangeLog Table and DatabaseChangeLogLock Table when you first execute a changeLog File.

Major functionality[edit]

  • 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, Apache Ant, Apache Maven, servlet container, or Spring Framework.
  • Support for 10 database systems

Commercial Version[edit]

Datical is a commercial product which provides the core Liquibase functionality plus additional features to remove complexity, simplify deployment and bridge the gap between development and operations.[2]

  • Compare Databases enables you to compare two database schemas to identify change and easily move it to your change log.
  • Change Forecasting: Forecast upcoming changes to be executed before they are run to determine how those changes will impact your data.
  • Change Set Wizard to easily define and capture database changes in a database neutral manner.
  • Deployment Plan Wizard for modeling and managing your logical deployment workflow
  • Plug-ins to Jenkins, Bamboo, UrbanCode, CA Release Automation (Nolio), Serena Release Automation, BMC Bladelogic, Puppet, Chef,[3] as well all popular source control systems like SVN, Git, TFS, CVS, etc.

Datical is a significant contributor to Liquibase and Liquibase developer, Nathan Voxland, is an executive at Datical.

Sample Liquibase ChangeLog file[edit]

<?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="cpa" 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>

References[edit]

External links[edit]

Related tools[edit]