Thursday, December 26, 2013

Database build and versioning - part I

Database versioning is quite a difficult tasks. It become even more difficult when You need to upgrade database from one version to newer one and usually that newer version is several releases far.
I have been thinking and working in that field for several years and aquire and developed several possible solutions, and I am sure that there are more good solutions to be found.
The first thing is a need to have automatic database scripts build. Before that, company should have developed "nightbuild" system, but as the speed of development increase, "nightbuild" could be run several times a day.
During that "nightbuild" process, database scripts are built.
Another process which creates software installation picks these files and include them into installation.
As a part of software installation, these database scripts should be somehow executed in order to have database installed.
Every of these actions requires some attention and appropriate approach to be solved and developed.

I have experienced three types of database files:
1. database scripts in form of SQL
2. database backup
3. Microsoft database project.

All approaches were very interesting to develop and all they have some good parts and some bad parts. When I have been creating them I have always been asking myself - how easy they are going to be deployed and how I am going to take care what is deployed on some project and what on another, and how I am going to solve a problem of database versioning.

It is also good thing to be noted that the methodology how database installation files should be created should be distinguished of the process of installation.

For all these approaches process needs to be designed which needs to take into account the current company processes and to create database build process which is going to be somehow included in existing process, but the most important thing is that You need to have database files. In first instance, You can create them manually, but the process of installation build must pick something from some location. And the process of installation should install something. When the process is designed like that, in the time it will grow into more sophisticated, more automatic and will have bigger quality.


No comments:

Post a Comment