# Definitive Guide to Database Version Control: Part IV

> Date: December 20, 2016 | Author: Yaniv Yehuda | Category: Database Source Control, Database Version Control

Part IV: Utilizing a Changelog Activities Tracking System XML files make for another common approach to managing database changes.  XML files use an abstract language to reflect changes and track their execution. The most common open source solution for this is Liquibase. With the XML files, Liquibase separates the logical change from the physical change, and allows […]

Part IV: Utilizing a Changelog Activities Tracking System


XML files make for another common approach to managing database changes.  XML files use an abstract language to reflect changes and track their execution. The most common open source solution for this is Liquibase.

With the XML files, Liquibase separates the logical change from the physical change, and allows the developer to write the change without knowing the database-specific command. At execution time, Liquibase converts the XML to the specific RDBMS language to perform the change. Changes are grouped into a changelog and can be stored in a single XML file or ordered via a major file that refers to many smaller XML files.


The XML files can be saved using the existing file-based version control, which offers the same benefits as the basic approach. In addition, based on the Liquibase execution track, it knows which changelog(s) already have been deployed and shouldn't run again, and which were not been deployed yet and should be deployed.
The Changelogging Checklist


Let's see if Liquibase answers the challenges:

X  Ensures all database code is covered –

Managing changes to reference content is not supported in the XML files used by Liquibase, and must be handled as an external addition, which can result in changes being forgotten.

X  Ensures the version control repository can act as the single source of truth –

Liquibase doesn't have any version control functionality. It depends on third-party version control tools to manage the XML files, so you have the same challenges when it comes to making sure the file-based version control repository reflects the version that was tested.

The process that will ensure the database version control repository can be the single source of truth requires developers to check-in changes in order to test them. This can result in work-in-progress changes being deployed to next environment.

X  Ensures the deployment script being executed is aware of the environment status when executing –

Liquibase knows which changelogs have been deployed and will not execute them again. However, if the logical change is to add a date column and the column exists in varchar format, then the deployment will fail. Also, overrides of out-of-process changes cannot be prevented.

X  Ensures the deployment script handles conflicts and merges them –

Any change being made to the database outside of Liquibase can cause a conflict, which will not be handled by Liquibase.
[Out of process changes are not handled]
X  Generates deployment scripts for only relevant changes –

Changes can be skipped at the changelog level, but breaking a changelog into several changelogs requires writing a new XML file, which creates the need for more tests.

X  Ensures the deployment script is aware of the database dependencies –

The order of the changes is maintained manually during the development of the changelog XML.
Bottom Line


Using a system that tracks change execution does not address the challenges associated with database development and, as a result, does not meet the best practice deployment requirements.

## End-to-end database CI/CD, governed and audited.

See how DBmaestro accelerates your release pipeline while keeping every change secure.

[Book a demo](https://www.dbmaestro.com/schedule-demo/) | [Guided Tour](https://demo.dbmaestro.com/demo/cmdeiq2j900lvvm0ibx1296yt)

## Related Articles

### [Database Source Control Best Practices for Seamless Collaboration](https://www.dbmaestro.com/blog/database-release-automation/the-database-change-management-process-a-step-by-step-guide-for-it-teams/)

Effective database management stands as a cornerstone for maintaining high-quality applications and ensuring seamless operational performance. As we begin 2025, the importance of database source control continues to grow, becoming an indispensable part of modern DevOps practices. This article will explore the best practices for implementing database source control, helping teams collaborate seamlessly and boost […]

### [How to Implement Effective Database Change Management in Your Organization](https://www.dbmaestro.com/blog/database-source-control/how-to-implement-effective-database-change-management-in-your-organization/)

The rules are clear: organizations must adapt quickly to remain competitive. This often involves making frequent changes to their databases, which can be a complex and risky process if not managed properly. Implementing effective database change management (DCM) is crucial for maintaining data integrity, ensuring system stability, and facilitating smooth operations. In this comprehensive guide, […]

### [What Is Database Source Control and Why Does It Matter?](https://www.dbmaestro.com/blog/database-source-control/what-is-database-source-control-and-why-does-it-matter/)

Managing database changes effectively is crucial for maintaining data integrity, enhancing collaboration, and ensuring smooth deployments. Database source control has emerged as a vital practice for organizations seeking to streamline their database management processes and align them with modern DevOps principles. This comprehensive guide explores the concept of database source control, its benefits, best practices, […]

---
Canonical URL: https://www.dbmaestro.com/blog/database-version-control/database-version-control-5/
