views:

89

answers:

3

I am curious if there are any solutions out there, preferably free, that can have a central database to publish data to in a versioned manner.

For example,

Client 1 decides to edit a persons profile so it gets a local copy on its machine to make changes to. When they are happy with there edit they publish the results to the central database. Just like how you would do a submit in perforce.

Client 2 tries to edit the same local copy but when they go to submit they have to resolve conflicts.

The central database must store compressed differences between versions of the data.

At any point someone can look at all versions of the data submitted.

A: 

What database server are you using? If you are using MySQL and PHP, Doctrine (http://doctrine-project.org/) has 'Versionable' behaviour which can be applied to a model.

The documentation on this behaviour is here: http://www.doctrine-project.org/projects/orm/1.2/docs/manual/behaviors/en#core-behaviors:versionable

Symen Timmermans
+1  A: 

"Version control of databases" is a bit ambiguous for a title, because you are actually asking for a VCS using a database as repository "data store".

Subversion has such a model (either Berkeley DB or filesystem-based).
It also has a Copy-Modify-Merge model which is similar to the kind of locking mechanism you are describing.

alt text alt text

VonC
+1  A: 

The sql tools from redgate sort of offer some of this functionality, but not implemented in a way you describe. For example, sql data compare can compare the differences between data in 2 databases, and sql source control can be used as well.

However, getting a copy of the database on a local machine, making changes and resubmitting would be more of a manual process.

David_001
If you're considering the Red Gate solution for data versioning, click "How to source control your data" linked from:http://www.red-gate.com/products/sql_source_control/evaluation_center/index.htm
David Atkinson