By Yaniv Yehuda
For database administrators and managers, a primary daily concern is managing the company’s data effectively and efficiently. It is up to the DBA to prepare for and deal with any potential problems that arise within the database, which generally occurs when and where change occurs.
The DBA must employ efficient database management practices and prevent issues from arising before they happen. In this article, I’ll take a look at some vulnerable areas of the database where the DBA must prevent costly delays, unwanted downtime, and conflict between teams.
What is Database Change Management?
Anytime changes are made to the database, the DBA runs a higher risk of productivity-destroying downtime. Large systems are extremely complex because of the amount of data they are handling and processing. Therefore, implementing small changes are a risky maneuver because they are not always tested to ensure they run smoothly across the system. As such, it is imperative to execute proper database change management to ensure that transitions and revisions occur without causing damage.
Three of the common challenges to look out for when implementing database changes are:
- The inability to accurately capture all configuration changes
- Having too many errors in deployment or production
- Inability to rollback
The DBA needs to keep in mind that many tools in the development ecosystem were originally created to handle a system implementing 2-3 sets of changes per year using the waterfall methodology, instead of weekly changes in an agile system. To make sure agile expedites instead of complicating the change processes, the DBA must test and implement clear tagging during each change cycle.
Database change management presents a perfect environment for development and operations to come together and practice DevOps for the database. Before DevOps, developers had the ability to implement changes rapidly, while operations needed time to monitor and manage changes before they were published and deployed. To solve this issue, DevOps brought development and operations together as a single team, allowing things to move from development to operations smoothly and efficiently, deploying and monitoring every change, and avoiding costly errors.
Database Branch Management
Branches are generally used in code or schema changes to identify, isolate, and fix bugs. It is an offline environment where modifications are made, checked, and then incorporated into the current version branch. If the code is not integrated correctly, it could stop applications from working altogether, with devastating results. It’s important therefore, that for smooth and seamless database change management, a fully-automated, end to end generation of database branches must be designed for testing and development.
Database Merge Management
In today’s agile environment, the merging of code from multiple teams happens daily. Teams work together on integration points between code during the merge, and when there is an error, the blame game could get ugly, which wastes time, energy, and money. In an agile environment, it’s usually not a problem to review changes implemented by each team to determine how best to merge, discover conflicts, and assess changes. The task of code merging is not as easy when dealing with the database as it is with native code and therefore, most of the time and effort spent during the integration cycle is dedicated to preparing the database migration script.
Weekly tinkering of the database causes a much higher risk for errors and conflicts. Being able to detect and respond to requested changes is the best way to protect from database breaches and system shutdowns. An impact analysis provides a valuable alternative to damage control, as it compares objects between environments and generates the proper commands to reflect changes. A three-way, Baseline-Aware Analysis, exceeds the capabilities of standard compare-and-sync tools to identify a configuration drift, where the changes originate, and whether changes are safe to deploy, minimizing risk for DBA managers.
This snapshot of the database allows DBA’s to find content both before and after version rollouts, acting as a baseline when generating the next release’s database build script.
Managing the different areas where database change occurs is the most efficient way to govern database schema, data, and metadata for database applications. Managing database transitions correctly will allow you to spend less time retracing steps while boosting productivity, creating a competitive advantage and a shorter time to market.
Yaniv Yehuda is the co-founder and CTO of DBmaestro, an enterprise software development company focusing on database development and deployment technologies. Yaniv is a DevOps expert who spent the last couple of years raising awareness about the challenges surrounding database development and deployment, and how to support database Continuous Delivery.