Propagating Changes to Live Databases with SSW Data Renovator

Keeping your live production database up to date with the latest structural changes is an ongoing problem for developers. The database needs to be taken offline quickly to make structural changes and convert data but this can be tricky when people are relying on the system. The data conversion can also take time as new fields and relationships might have been added.

Different Methods of Updating a Database

The following examples assume that the database is in Microsoft Access format and has the data in a separate database to the forms, reports and code. The client or live production database is named DBDATAv1.mdb and the development team has made changes to the structure of this database, which is now called DBDATAv2.mdb.

No Method Develop On Additional Development Downtime for Client Comments
1. Database Offline(Cannot be used during development) Master copy of Application and Data (DBDATAv None. As long as development takes (days to weeks) Can work for small, quick changes
2. Database Online Manual Updates Master copy of Application Copy of production database None. Keep a record of structural changes As long as it takes to make changes manually (a few hours) Works for small changes. Chance that some changes will be missed on larger jobs
3. Database Online Write Queries to move data from development to production Master copy of Application Copy of production database Writing and testing update Queries at the end of development As long as it takes to run the queries and convert data (a few hours) Allocate lots of time at the end of development to write and test the update queries.
4. Client Online Write DAO Code to change structure of production database Master copy of Application Copy of production database Code and interface to store and make the changes to live data As long as it takes to run the code (a few minutes) Good if the database has a large amount of data and few structural changes

Issues of Converting Live Data

Assuming you have ruled out the first option Database Offline for anything other than small changes, the following issues need to be considered:

Tracking Structural Changes

As development is being done on a copy of the live database that will be synchronized with the live database at the end of development, all changes to the schema must be tracked. Tracking changes is especially important when using methods 2, 3 and 4.

SSW Data Renovator compares two databases and reports any differences in the structure.

Making Structural Changes

If the old database will have its structure changed instead of transferring all data into the new database, structural changes need to be made either manually or through code. Methods 2 and 4 work this way.

Another SSW Product SSW Data PRO! can be used to automatically make structural changes to databases on-site

Removing all test data from the new structure

Using Methods 2 and 3, the developer makes a copy of the master data database that has the new structure, clears all test data out of this database then transfers the data from the live database into the development database. Clearing test data can be a painstaking task if the database is large and referential integrity is enforced, as the data must be deleted from tables in the correct order from the child tables upwards.

SSW Data Renovator can remove all data from a database in the correct order according to the relationships defined in the database.

Converting the Data from the old data structure to the new

Once development has finished, either the production database must have its structure changed to match the changes made in development or the data must be transferred to an empty copy of the development database. This can be complicated when new fields have been added which cannot be empty, new relationships have been defined and field properties have been changed.

SSW Data Renovator reports differences between tables and fields as well as indexes, relationships or properties.

Making structural changes to the database works when the database is very large and only a small number of changes have been made, alternatively the data is transferred from the old version to the new. This ensures that none of the changes made in development are lost and the data is valid.  

SSW Data Renovator performs data transfer from one database to another without any changes to the old database. Tables and Fields can even be renamed and transferred without renaming the fields in the old database.

Checking all data has been transferred correctly

After the data has been transferred, checks are needed to ensure that all the records have been transferred correctly. Usually this consists of counting the records in the tables before and after the transfer.

SSW Data Renovator automatically displays a list of tables and the number of records before and after the transfer.

The history behind SSW Data Renovator why it was developed

At SSW the common scenario when the client requested changes to an existing application was that:

  • While the changes are made the client continued to use the database system in their offices
  • The developers worked on the Application Database and made structural changes to a copy of the Data Database.
  • Changes to the Data Database were tracked and either Update Queries or DAO code was written to make the update.
After development was finished, a visit was made to the clients offices and the database was taken offline while changes were made manually to the Data database. This was time consuming and expensive for the client, there had to be a better way

Using SSW Data Renovator

So we developed SSW Data Renovator. This allows us to do the development in a similar way but when we come to update the data at the clients offices we use SSW Data Renovator. We compare the version that the Client has been using against the version that has just come out of development. The changes are checked and confirmed and all reports are printed. The data is then transferred into a clean copy of the new database structure and the number of records transferred is checked from within the SSW Data Renovator interface. The downtime of the clients database system is shortened and the possibility of mistakes is reduced.

Note: If the client is not accessible we use Data PRO! Which uses a different approach in that it records changes to the data database and replicates at the client site i.e. perform changes to database structure remotely without user intervention.

More Information

SSW Data Renovator Home Page
http://www.ssw.com.au/DataRenovator/

SSW Data PRO! Home Page
http://www.ssw.com.au/DataPRO/

SSW Home Page
/ssw/

Email SSW
Ross Donald