Liquibase uses a changelog to explicitly list database changes in order. The changelog acts as a ledger of changes and contains a list of changesets (units of change) that Liquibase can execute on a database.

View documentation about the database changelog file and changeset tag for more information.

Tracking tables

Liquibase tracks which changesets have or have not been deployed in a tracking table called a DATABASECHANGELOG. If your database does not already contain a tracking table, Liquibase will create it for you.

All together now

Liquibase prevents conflicts from different developers’ updates on a secondary table called DATABASECHANGELOGLOCK.

View the documentation on DATABASECHANGELOG tables and DATABASECHANGELOCK tables for more information.

Together, changelogs and tracking tables allow Liquibase to:

  • Track and version database changes
    Users know which changes have been deployed to the database and which changes have not yet been deployed.
  • Deploy changes
    Liquibase compares the changelog against the tracking table and only deploys changes that have not been deployed to the database.

Liquibase also has advanced features such as contexts, labels, and preconditions to precisely control when and where a changeset is deployed.