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