We use cookies to improve your experience. No personal information is gathered and we don't serve ads. Cookies Policy.

ExpressionEngine Logo ExpressionEngine
Features Pricing Support Find A Developer
Partners Upgrades
Blog Add-Ons Learn
Docs Forums University
Log In or Sign Up
Log In Sign Up
ExpressionEngine Logo
Features Pro new Support Find A Developer
Partners Upgrades
Blog Add-Ons Learn
Docs Forums University Blog
  • Home
  • Forums

Database Version Control help needed.

Development and Programming

amimpact's avatar
amimpact
11 posts
13 years ago
amimpact's avatar amimpact

Hello everyone, i wonder how you all deal with this challenge and if someone has a smart solution.

Here is the case:

You got site A live. Then the customer wants some massive changes, so you make a copy of Site A and its database in a test environment.

After doing all the modifications (new add-ons, new custom stuff, etc) you want to update site A again.

The scripts are no problem, they are in GIT and we can merge them. A bigger problem is the database, and especially the metadata which is stored in the records itself.

How can you manage this in a way the client can keep his site live and that upgrading to the new version doesn’t give to much headaches.

Some solutions we thought of: - A diff tool like Navicat (problem with that is that it drops and inserts a table, when you only renamed it). - A tool which records all queries on the test database in a file (or table), so you can run those queries as soon as you update the live environment. We haven’t found a good tool yet. Liquibase (http://www.liquibase.org/) is a step in the right direction, only the script with queries should populate itself.

Suggestions are more then welcome. 😊

Thanks for any suggestion in the right direction.

       
Steven Grant's avatar
Steven Grant
894 posts
13 years ago
Steven Grant's avatar Steven Grant

the elephant in the room. The person that solves this issue will do well. It’s not unique to EE but the same for all relational dbs.

I’ve found http://schemasync.org/ there was another tool that did something else but was never able to get at their beta to test it.

       
UriMargalit's avatar
UriMargalit
1 posts
13 years ago
UriMargalit's avatar UriMargalit

Hi,

I recommend you to look on dbMaestro TeamWork (http://www.dbmaestro.com).

dbMaestro TeamWork is a DCM solution. DCM - Database Change Management, which allow you to control table structure, database code and content of lookup tables.

You start with document all your changes in the database in your development environment using database version control. Then you generate the deploy script based on analysis of the history and the target environment (the customer site). The deploy engine uses 3-way analysis which tell you the source of the change.

Let’s review your requirements: 1. Change the database structure, code and lookup tables as part of the next release development. 2. Chaneg the database structure, code and lookup tables as customer customization.

Well, this is exactly what dbMaestro TeamWork does: 1. Any change in the development is document using the SCM methods (Check-Out / Check-In). 2. When you customize your database structure, you need to create a branch of the database (copy the database) - in order to develop / test / etc… dbMaestro TeamWork support database branching and the continue of the development. 3. Deploy the main release to the customer while not revert any customized objects. dbMaestro TeamWork Deployment Engine uses 3-way analysis, which compares the source (development), target (customer site) and baseline (a previously archived version of the database) and recommends what to do with the changes. for example:

Source Target Action vs. vs. Baseline Baseline = = no action <> = Promote the change = <> Ignore the change (this happens for customized code) <> <> Merge the conflict code

  1. Control Who can do What, When, Where and Why
  2. Have reports
  • Disclosure - I work in the dbMaestro
       
Steven Grant's avatar
Steven Grant
894 posts
13 years ago
Steven Grant's avatar Steven Grant

isn’t this only for Oracle DB?

       
amimpact's avatar
amimpact
11 posts
13 years ago
amimpact's avatar amimpact

It is only for Oracle DB’s. But if EE would only change database structures this would not have been a problem. The difficulty is that EE stores metadata within a table that can change all the time.

I have found a few tools that can see changes to database structures but non of them can see the changes made in tables.

Is there a change in a next release of EE this problem will be solved?

       
amimpact's avatar
amimpact
11 posts
13 years ago
amimpact's avatar amimpact

Thanks for your replies,

@Steven: Does schemasync als sync the metadata which is stored as records in the EE db? @UriMargalit: Thanks, i’m gonna check it out. COuld you give me an indication about pricing for 10 developers?

       

Reply

Sign In To Reply

ExpressionEngine Home Features Pro Contact Version Support
Learn Docs University Forums
Resources Support Add-Ons Partners Blog
Privacy Terms Trademark Use License

Packet Tide owns and develops ExpressionEngine. © Packet Tide, All Rights Reserved.