Manage The Workflow Of Database Modifications

Why we do not have tools to ManageTheWorkflowOfDatabaseModifications? I mean, of course Oracle and SqlServer give you tool to manage the database, but they make it work for experts in the field (DBA), and provide almost no help for the expert:

What do I mean by integrated support for a modification process?

Well I mean a tool that deals with database management as something that most be controlled over time, not something that plain has to be restricted to privileged few. Database management tools a great for projects where you have a really small number of DBAs and you don't want anyone modifying your database, but.. is that really the way the world works? do databases really need to evolve that slow? or is it because we have really bad tools to deal with database model refactoring and change control? Managing a database is really a job for only one person? shouln't we create tools to make it easier for a team to evolve a database? why none of the big database vendors (or database tool vendors) offer a tool like this?

I have seen tools for precisely this, though they've never achieved much popularity. Perhaps this is because database development is traditionally a single-person effort for all but the largest projects, and works quite well that way. I've personally managed a 170 table schema deployed in 70 locations, in addition to developing client-side software at the same time.

Yes, and imagine the nightmare it could have been for another DBA/Developer, if, for example you would have gotten sick (or resigned) when things were only 50% done.

Managing the database installations was the least of my challenges, and I personally find database administration tools of any kind more of a hindrance than a help. I usually wind up writing little utilities to do admin tasks, change tracking, update deployment, etc., as needed. Change tracking and deployment, for example, is almost trivial.

I guess it was a almost trivial because you didn't work with a team.Even with relatively small teams (around 3 persons) it becomes IMO a hindrance to keep in sync with the changes everyone makes. (It is just too easy to overwrite someone else's stored procedure, change to a table, or trigger, and unless you keep a lot of discipline by manually backuping before every modification you will have conflicts between the changes of the people of your team (or wasted time because of excessive serialization)

Once you've written a splot of SQL to implement a schema change, it's only a small step to plunk it into a deployment tool that invokes the appropriate SQL statements based on a current version number.

[And what prevents you from making a mistake when writing the splot of SQL to implement a schema change? Wouldn't it be better if the tool could do that for you? It is easy for errors to happen, specially if you need to merge the changes of several developers]

The SQL is tested before being deployed, as with all components of the application, and there was no need to merge database changes from several developers because database changes were made by the DBA. While I can see some negligible gain in having a tool automatically record 'ALTER TABLE Customers ADD Blah VARCHAR2(20)' when I make mouse clicks, as opposed to just typing 'ALTER TABLE Customers ADD Blah VARCHAR(20)', I'm not sure it would warrant the training/maintenance/licensing/etc. costs of such a tool considering such changes are a very small percentage of the overall application development/maintenance effort. Feel free to write such a tool, however. I'll be happy to test it for you.

Hmm we should KeepAnOpenMind.. databases become corrupted and if you keep backing up the database every day, all your backups may be corrupted... a version control system of some form and better management tools could be useful.. maybe even storing the binary database storage files (or whatever medium they use) on SVN or a similar source control itself.


MarchZeroEight


EditText of this page (last edited May 23, 2008) or FindPage with title or text search