This is part seven of a seven part series on database version control. In Part one, two, three, four, five, and six we reviewed how the methods for creating software evolved into Agile and DevOps, what separates the database from application code and the challenges that must be addressed when managing database changes.
We then went through the most popular methods being used and the shortfalls of each, and revealed the correct way to practice database version control in order to maximize value and eliminate risk to the organization.
Using manual processes for database changes means a substantial risk to the database and the valuable data it holds. Two of the most popular methods provide no automation at all and leave the database far behind.
Utilizing simple compare and sync to manage database changes also does not answer many of the specific challenges of the database because it does not utilize the version control repository when performing the compare and generating the DDL script. For that reason the version control repository does not act as the single source of truth.
Another problem that simple compare and sync runs into is, that because the information is stored in the ALM, CMS, or version control repository, which is external to the compare & sync tool, it compares the entire database and shows the differences, generating relevant and irrelevant deployment scripts.
Most critically, simple compare and sync does not ensure the deployment script handles conflicts and merges them.
Database enforced change management, on the other hand, combines enforcement of version control processes on the database objects with generation of the deployment script when required, based on the version control repository and the structure of the environment at that time.
This approach uses “build and deploy on-demand,” meaning the deploy script is built (generated) when needed, not as part of development. This allows for efficient handling of conflicts, merges, and out-of-process changes.
The database component has special requirements, and therefore creates a real challenge for automation processes. In the old days, when there were only a few releases per year, it was common and understandable to invest time manually reviewing and maintaining the database deployment scripts. Today, with the growing need to be agile and provide releases faster, the database must be part of the automation process. Developing SQL scripts, developing XML scripts, or using simple compare & sync are either inefficient and/or risky approaches when it comes to automation. The most effective method is to implement database enforce change management.
To see how Database Enforced Change Management can enables agile development, Continuous Integration and Delivery for the Database, schedule a free demo now.